#인프라
381 편의 글
PostgreSQL 실전 강좌 #7 파티셔닝: 거대 테이블을 시간 단위로 나누기
수억 행 테이블의 표준 처방인 선언적 파티셔닝을 다룹니다. 파티셔닝이 실제로 해결하는 문제(오래된 데이터 삭제가 DROP 한 방·파티션 프루닝·VACUUM 부담 분산)와 해결하지 않는 문제, RANGE 파티셔닝으로 월별 테이블을 만드는 문법, 파티션 키가 PK에 포함되어야 하는 제약, 파티션 프루닝이 적용되는 쿼리 조건, 새 파티션을 계속 만들어야 하는 운영 부담과 pg_partman, 그리고 "언제 도입하는가"의 판단 기준까지 다루겠습니다.
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까지 다루겠습니다.
SRE 실무 #4 온콜 운영: 로테이션, 에스컬레이션, 부담 관리
지속 가능한 온콜 체계를 설계하는 법을 다룹니다. 로테이션이 성립하는 최소 인원과 근무 편성 방식, 1차 대응자가 막혔을 때를 위한 에스컬레이션 체인, 교대를 넘길 때의 핸드오프 루틴, 교대당 페이지 건수로 부담을 측정하고 상한을 두는 이유, 온콜 중 발견한 문제를 갚는 후속 작업 시간 확보, 그리고 보상과 문화까지, 온콜이 번아웃 제조기가 되지 않기 위한 조건들을 다룹니다.
테라폼 기초 강좌 #7 리소스 수명주기 제어: 교체 조건, create_before_destroy, prevent_destroy
어떤 속성 변경이 update로 끝나고 어떤 변경이 리소스 교체를 강제하는지 plan에서 읽어 내는 법을 정리합니다. 교체 순서를 뒤집어 중단을 줄이는 create_before_destroy, 운영 리소스의 삭제를 막는 prevent_destroy, 코드 밖 변경을 무시하는 ignore_changes, 그리고 -replace 플래그로 교체를 강제하는 방법까지 다루겠습니다.
PostgreSQL 실전 강좌 #5 VACUUM과 autovacuum: dead tuple 청소의 원리와 튜닝
PostgreSQL 운영 지식의 한가운데인 VACUUM을 다룹니다. MVCC가 남기는 dead tuple과 VACUUM이 하는 일(공간 재사용 표시·가시성 지도 갱신·트랜잭션 ID 되감기 방지), 보통은 autovacuum에 맡기면 되는 이유와 기본 문턱의 한계(큰 테이블일수록 청소가 늦음), 테이블별 스케일 팩터 조정, 청소를 방해하는 장기 트랜잭션, 블로트 확인 쿼리, 그리고 VACUUM FULL의 위험성까지 다루겠습니다.
SRE 실무 #3 경보 설계: 증상 기반 알림과 다중 창 번 레이트
새벽에 사람을 깨울 가치가 있는 경보만 남기는 설계를 다룹니다. 원인 기반 경보(CPU 높음)가 아니라 증상 기반 경보(사용자 요청 실패)로 전환해야 하는 이유, 페이지와 티켓을 가르는 기준, 번 레이트 경보를 짧은 창과 긴 창의 조합으로 만들어 오탐과 미탐을 함께 줄이는 다중 창 구성, 경보 피로를 측정하고 줄이는 운영 루틴까지 다룹니다.
테라폼 기초 강좌 #6 의존성과 반복: depends_on, count vs for_each, dynamic 블록
참조가 곧 의존성이 되어 생성 순서가 결정되는 원리와 depends_on이 필요한 예외 상황을 정리합니다. count로 리소스를 복제할 때 리스트 중간 제거가 일으키는 재생성 함정, 키 기반이라 안전한 for_each와의 선택 기준, 그리고 중첩 블록을 반복하는 dynamic 블록까지 다루겠습니다.
PostgreSQL 실전 강좌 #4 인덱스 전략 심화: 부분·복합·커버링, 그리고 GIN·BRIN
기초 4편의 B-tree 기본기 위에 실전 전략을 쌓습니다. WHERE 조건까지 인덱스에 넣는 부분 인덱스, 테이블 접근을 생략하는 커버링 인덱스(INCLUDE)와 Index Only Scan의 조건, B-tree 밖의 선택지(GIN·GiST·BRIN)를 고르는 기준, 안 쓰는 인덱스를 pg_stat_user_indexes로 찾아 정리하는 법, 인덱스 블로트와 REINDEX CONCURRENTLY까지 다루겠습니다.
SRE 실무 #2 에러 버짓 운영: 정책 문서와 번 레이트
에러 버짓을 개념에서 운영 도구로 바꾸는 방법을 다룹니다. 버짓이 소진됐을 때 무엇을 할지 장애가 나기 전에 합의해 두는 에러 버짓 정책 문서, 피처 동결이 실제로 작동하기 위한 경영진 합의, 버짓이 줄어드는 속도를 나타내는 번 레이트의 계산, 빠른 소진과 느린 소진을 구분해서 대응하는 법, 릴리스 판단에 버짓을 연결하는 실무 패턴까지 다룹니다.
테라폼 기초 강좌 #5 state의 정체: tfstate 파일 구조와 plan이 변경을 계산하는 원리
terraform.tfstate 파일을 직접 열어 구조를 확인하고, plan이 코드, state, 실제 인프라 세 가지를 비교해 변경을 계산하는 원리를 정리합니다. state에 민감 정보가 평문으로 남는 문제와 커밋 금지 규칙, state list와 show, mv, rm 같은 조작 명령, state를 잃었을 때 일어나는 일까지 다루겠습니다.