스쿨오브웹 .net
프로그래밍과 인프라를 기초부터 실전까지 순서대로 배우는 IT 학습 블로그입니다.
시리즈 90개 · 글 867편 · 책 4권
최신 글
PostgreSQL 실전 강좌 #7 파티셔닝: 거대 테이블을 시간 단위로 나누기
수억 행 테이블의 표준 처방인 선언적 파티셔닝을 다룹니다. 파티셔닝이 실제로 해결하는 문제(오래된 데이터 삭제가 DROP 한 방·파티션 프루닝·VACUUM 부담 분산)와 해결하지 않는 문제, RANGE 파티셔닝으로 월별 테이블을 만드는 문법, 파티션 키가 PK에 포함되어야 하는 제약, 파티션 프루닝이 적용되는 쿼리 조건, 새 파티션을 계속 만들어야 하는 운영 부담과 pg_partman, 그리고 "언제 도입하는가"의 판단 기준까지 다루겠습니다.
Rust 실전 강좌 #7 릴리스 최적화와 크로스 컴파일: 작고 빠른 바이너리를 어디서나
배포 준비의 전반부입니다. [profile.release]로 조이는 최적화(lto, codegen-units, strip)와 각 옵션의 대가, panic = "abort"를 함부로 켜면 안 되는 이유, 바이너리 크기가 줄어드는 과정, 그리고 rustup target으로 하는 크로스 컴파일 — 특히 glibc 의존을 없애 오래된 서버에서도 도는 musl 정적 링크 빌드와 링커 문제를 도커로 우회하는 cross 도구까지 다루겠습니다.
SRE 실무 #5 포스트모템: 비난 없는 회고와 액션 아이템의 사후 관리
장애를 조직의 학습으로 바꾸는 포스트모템 운영을 다룹니다. 비난 없음(blameless)이 온정주의가 아니라 정보 획득 전략인 이유, 어떤 장애에 포스트모템을 쓸지 정하는 트리거 기준, 타임라인·영향·원인 분석·액션 아이템으로 이어지는 템플릿, 사람 실수에서 멈추지 않고 시스템 원인까지 내려가는 질문법, 그리고 액션 아이템이 방치되지 않게 하는 추적 규칙까지 다룹니다.
테라폼 기초 강좌 #8 모듈 기초: 리소스 묶음의 재사용과 레지스트리 모듈
모든 테라폼 디렉터리가 이미 모듈이라는 것에서 출발해, 변수를 입력으로 output을 출력으로 갖는 자식 모듈을 직접 만들고 module 블록으로 호출하는 방법을 정리합니다. 레지스트리의 검증된 모듈을 버전 고정과 함께 가져다 쓰는 법, 그리고 모듈을 나누는 기준과 과도한 분리의 경계까지 다루겠습니다.
PostgreSQL 실전 강좌 #6 잠금과 동시성: 데드락, DDL 락, SKIP LOCKED
MVCC가 다 해결해 주지 않는 영역, 잠금을 다룹니다. 행 잠금(쓰기끼리의 충돌)과 테이블 잠금(DDL)의 층위, 잠금 대기를 pg_locks와 pg_blocking_pids로 추적하는 법, 데드락이 나는 구조(교차 순서 갱신)와 예방 규칙(같은 순서로 잡기), SELECT FOR UPDATE로 읽고-판단-쓰기를 안전하게 만드는 법, 그리고 작업 큐의 표준 패턴 FOR UPDATE SKIP LOCKED까지 다루겠습니다.
Rust 실전 강좌 #6 테스트: 파서 단위 테스트에서 CLI 통합 테스트까지
loglens에 안전망을 두릅니다. 같은 파일 안에 두는 #[cfg(test)] 단위 테스트(파서의 정상·경계·실패 케이스), tests/ 디렉터리의 통합 테스트, assert_cmd와 predicates로 빌드된 바이너리를 실제로 실행해 출력과 종료 코드를 검증하는 CLI 테스트, tempfile로 만드는 임시 로그 파일, 그리고 cargo test가 테스트를 병렬 실행한다는 사실이 갖는 함의까지 다루겠습니다.
SRE 실무 #4 온콜 운영: 로테이션, 에스컬레이션, 부담 관리
지속 가능한 온콜 체계를 설계하는 법을 다룹니다. 로테이션이 성립하는 최소 인원과 근무 편성 방식, 1차 대응자가 막혔을 때를 위한 에스컬레이션 체인, 교대를 넘길 때의 핸드오프 루틴, 교대당 페이지 건수로 부담을 측정하고 상한을 두는 이유, 온콜 중 발견한 문제를 갚는 후속 작업 시간 확보, 그리고 보상과 문화까지, 온콜이 번아웃 제조기가 되지 않기 위한 조건들을 다룹니다.
테라폼 기초 강좌 #7 리소스 수명주기 제어: 교체 조건, create_before_destroy, prevent_destroy
어떤 속성 변경이 update로 끝나고 어떤 변경이 리소스 교체를 강제하는지 plan에서 읽어 내는 법을 정리합니다. 교체 순서를 뒤집어 중단을 줄이는 create_before_destroy, 운영 리소스의 삭제를 막는 prevent_destroy, 코드 밖 변경을 무시하는 ignore_changes, 그리고 -replace 플래그로 교체를 강제하는 방법까지 다루겠습니다.