인프라
PostgreSQL 실전 강좌 #9 백업·PITR·업그레이드: 장애 직전으로 돌아가는 기술
실전 편의 마무리로 데이터를 지키는 마지막 층을 다룹니다. pg_dump 논리 백업의 한계를 넘는 물리 백업(pg_basebackup)과 WAL 아카이빙의 조합, 원하는 시각으로 되감는 PITR(Point-In-Time Recovery)의 원리와 복구 목표 설정, "삭제 사고는 페일오버로 못 돌린다"는 복제와 백업의 역할 구분, 메이저 버전 업그레이드의 세 가지 길(pg_dump·pg_upgrade·논리 복제), 그리고 트랙 전체의 회고까지 다루겠습니다.
테라폼 실전 강좌 #1 프로젝트 설계와 부트스트랩: 전체 그림, 백엔드, 공통 태그
열 편에 걸쳐 코드로 세울 웹 서비스 인프라의 전체 아키텍처를 먼저 그리고, 실습 비용이 발생하는 지점과 관리 원칙을 정리합니다. state 버킷과 S3 백엔드 부트스트랩, provider 버전 고정, default_tags로 모든 리소스에 공통 태그를 거는 기반 작업까지 마쳐 실전 시리즈의 출발선을 만들겠습니다.
PostgreSQL 실전 강좌 #8 복제와 고가용성: 스트리밍 복제, 읽기 분산, 페일오버
DB 서버 한 대의 한계를 넘는 표준 수단인 복제를 다룹니다. WAL을 그대로 흘려보내는 스트리밍(물리) 복제의 원리, 비동기 복제의 복제 지연과 read-your-writes 문제, 동기 복제의 트레이드오프, 읽기 부하를 스탠바이로 분산할 때의 주의점, 자동 페일오버에 필요한 것들(Patroni 등)과 스플릿 브레인, 테이블 단위로 골라 보내는 논리 복제의 용도, 그리고 관리형 서비스와의 대응 관계까지 다루겠습니다.
SRE 실무 #6 토일 줄이기: 반복 수작업의 측정과 자동화, 그리고 도입 로드맵
시리즈 마지막 편으로 토일(toil)을 다룹니다. 수동·반복적·자동화 가능·전술적이라는 토일의 판별 기준, 운영 업무가 엔지니어링 시간을 잠식하는 것을 막는 50% 규칙, 빈도와 소요 시간으로 자동화 우선순위를 정하는 법, 런북에서 스크립트, 셀프서비스로 올라가는 자동화의 단계, 그리고 SLO부터 토일까지 시리즈 전체를 조직에 도입하는 현실적인 순서를 다룹니다.
테라폼 기초 강좌 #9 원격 state와 협업: S3 백엔드, 네이티브 잠금, 민감 정보 보호
로컬 state가 팀 협업에서 부딪히는 세 가지 문제를 짚고, S3 백엔드로 state를 옮기는 설정과 init의 마이그레이션 절차를 정리합니다. use_lockfile 네이티브 잠금으로 동시 실행을 막는 원리와 DynamoDB 방식이 레거시가 된 배경, state 버킷의 버저닝과 암호화, 접근 제어까지 다루고 기초 시리즈를 마무리하겠습니다.
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 플래그로 교체를 강제하는 방법까지 다루겠습니다.