주제: “실전 체크리스트 전체 모음 + 1주 완주형 점검표”
0) 사용법 (30초 요약)
- 아래 **“1주 완주 플랜”**을 그대로 따라가면, 7일 안에 기준선 → 안정화 → 확장 준비까지 완료.
- 각 Day에 *목표/할 일/산출물/퇴근 기준(Exit)*이 있어, 진행 관리가 쉬워.
- 뒤쪽 **마스터 체크리스트(영역별)**와 템플릿은 품질 게이트로 사용.
1) 1주 완주 플랜 (Day-by-Day)
Day 1 — 기준선 & 목표 고정
목표: 수치로 현재 상태를 “고정”하고 SLO 합의.
할 일
- k6로 RPS 50~200 가짜 트래픽,
/healthz+ TOP 3 엔드포인트 기준선 수집 - RED/USE 대시보드 뼈대 생성 (요청/지연/에러, CPU/메모리/DB 등)
- 서비스별 SLO 예시 확정: API p95<350ms, 가용성 99.9%, 에러율<0.1%
산출물 baseline-YYYY-MM-DD.md(수치 표)slo.yaml(목표, 알람 임계치)
퇴근 기준- p50/p95/p99, 에러율, DB 커넥션/슬로우쿼리 표가 문서화되어 있음.
Day 2 — FastAPI 프로덕션 튜닝
목표: 동시성·타임아웃·풀링 표준화.
할 일
gunicorn -k uvicorn.workers.UvicornWorker --limit-concurrency N --keep-alive 5적용- SQLAlchemy async + asyncpg + PgBouncer(transaction pooling) 도입
- httpx
AsyncClient(limits, timeout)전역화 + 재시도/백오프
산출물 ops/profiles/api-runtime.md(실행 플래그 표)/metrics노출 + OTEL trace 수집 확인
퇴근 기준- p95 10~25% 개선 또는 동시성 2배에서 에러율<0.5% 유지.
Day 3 — 데이터 & 캐싱 & Next.js
목표: DB 병목 제거 + 캐시 적중률 끌어올리기 + ISR.
할 일
- 슬로우 쿼리 Top 10 인덱스/조인 점검,
statement_timeout=5s - Redis 캐시-어사이드 + 스탬피드 방지(락/확률갱신) 상위 3 엔드포인트 적용
- Next.js
revalidate/revalidateTag+next/imagesizes지정
산출물 cache-plan.md(키/TTL/무효화 규칙)
퇴근 기준- 캐시 히트율 ≥ 70%, DB QPS 20%↓ 또는 API p95 20%↓ 중 하나 달성.
Day 4 — 비동기·이벤트 & 게이트웨이/엣지
목표: 느린 작업은 큐로, 엣지에서 거칠게 걸러라.
할 일
- Outbox 테이블 + 퍼블리셔 워커(SKIP LOCKED) PoC → SQS/Kafka로 발행
- 게이트웨이에 레이트리밋(사용자/플랜) · 리트라이(멱등만) · 타임아웃 규칙
- BFF→API HMAC 또는 mTLS, IP allowlist
산출물 async-architecture.md(큐/재시도/DLQ/아이템포턴시 정책)
퇴근 기준- 큐 처리 성공률≥99%, 게이트웨이에서 리밋 헤더 노출 확인.
Day 5 — 가시성(OTEL/로그/메트릭) & CI/CD/IaC
목표: 보이는 만큼 고친다 + 배포 안전망.
할 일
- OTel Collector + Tail Sampling(5xx/느림=항상 보존)
- GitHub Actions: build→scan(Trivy)→SBOM(syft)→sign(cosign)→push
- GitOps(ArgoCD) 연결,
image.tagPR 흐름
산출물 observability-runbook.md/cicd-pipeline.md
퇴근 기준- 트레이스-로그 상관 보기 가능, main push시 프리뷰/배포 파이프 작동.
Day 6 — 쿠버네티스 운영(오토스케일·PDB) & DR
목표: 죽지 않고 잘 도는 클러스터 + 복구 리허설.
할 일
- HPA v2(behavior 포함) + KEDA(워커 min=0) + PDB + TopologySpread
- Route 53 Failover 레코드 초안, S3 버저닝/라이프사이클
- DB PITR 리스토어 리허설(Dev)
산출물 k8s-operational-profile.md/dr-playbook.md
퇴근 기준- PodKill/노드교체 시 사용자 영향 무(또는 미미), DR 리허설 성공.
Day 7 — 보안/컴플라이언스 & 비용 최적화
목표: 안전·합법·가성비.
할 일
- KMS Envelope로 PII 필드 암호화 PoC, 로그 마스킹, CSRF 더블 서브밋
- ISMS-P 증빙 폴더 골격 생성(evidence/12개)
- 비용 대시보드(₩/req, CDN 히트율, 전송량) + Dev 스케줄 종료 작업
산출물 security-baseline.md/finops-dashboard.json
퇴근 기준- 주요 PII 암호화 경로 동작, 비용 패널 가시화, Dev off 스케줄 배치.
2) 마스터 체크리스트 (영역별 품질 게이트)
A. FastAPI/런타임
- gunicorn+uvicorn, uvloop/httptools,
--limit-concurrency설정 - ORJSONResponse 기본, GZip/Brotli 적절
- httpx 전역 AsyncClient + 타임아웃/백오프/회로차단
- 구조화 로그(JSON) + trace_id, /metrics 노출
B. 데이터/캐싱/서치
- PgBouncer(transaction) +
statement_timeout - 슬로우 쿼리 Top 10 인덱싱/정규화
- Redis 캐시-어사이드 + 스탬피드 방지 + 버전 키
- FTS/TRGM or OpenSearch(Outbox/CDC) 경로 확보
C. 비동기/큐
- Outbox 테이블 + 퍼블리셔 워커(SKIP LOCKED)
- 소비자 디듀프 테이블/키(jti)
- DLQ/지연 큐 정책 문서화
D. 인증/인가
- OIDC Code+PKCE, BFF 세션 쿠키(HTTPOnly, SameSite=Lax)
- RT 회전 + 재사용 탐지, JWKS+키 로테이션
- RBAC 기본 + ABAC(조직/소유 일치) 가드
E. 엣지/게이트웨이
- WAF 룰: 메서드/크기/콘텐츠타입 화이트리스트
- 레이트리밋 이중화(엣지·게이트웨이), RFC9230 헤더
- BFF→API mTLS/HMAC + IP allowlist
F. Next.js at Scale
- 렌더링 전략 표(SSG/ISR/SSR) + 태그 무효화
next/imagesizes, remotePatterns- Route Handler에 ETag/Cache-Control/RateLimit
G. 가시성/SLO
- RED/USE 대시보드, Tail Sampling(느림/오류=보존)
- 버른레이트 알람(5m&1h, 1h&6h)
- 런북 링크가 알람에 연결
H. CI/CD & IaC
- Trivy/ SBOM/ cosign, GHCR/ECR push
- GitOps(ArgoCD) + Rollouts 카나리
- Terraform 원격상태 + VPC/EKS/RDS 모듈
I. K8s 운영
- HPA v2 behavior, KEDA min=0, PDB, Spread
- PriorityClass/스팟 taint, 리소스 요청 p95 기반
- Descheduler(선택), 이미지 non-root+RoFS
J. 보안/컴플라이언스
- KMS Envelope, PII 로그 마스킹, CSRF
- ISMS-P 증빙 폴더 골격(evidence/01~12)
- 침해사고 통지/권리요청 워크플로 문서화
K. DR/신뢰성
- RTO/RPO 표, DB PITR+복구 리허설
- Route53 Failover 초안, S3 버저닝/CRR(선택)
- 카오스 테스트(월1 PodKill)
L. 비용/FinOps
- ₩/req, CDN/캐시 히트율, 전송량 패널
- Dev/Preview off 스케줄, 로그 샘플링
- ARM/스팟 도입 계획, 라이프사이클 정책
3) 합격선(Threshold) 치트시트
- API p95: < 350ms (핵심 읽기), < 500ms(쓰기)
- 에러율: < 0.1% (5xx 기준)
- DB: 커넥션 사용률 < 80%, 슬로우쿼리 Top10 개선 진행 중
- 캐시 히트율: 공개 조회 ≥ 70% (목표 85%)
- CDN 히트율: 정적/공개 API ≥ 90%
- 알람: 단기 버른레이트>14.4 → Critical, 중기>6 → Warning
4) “기본값” 레퍼런스(복붙)
- Uvicorn:
--loop uvloop --http httptools --timeout-keep-alive 5 --limit-concurrency 1000 - httpx:
Limits(max_connections=200, max_keepalive_connections=50),Timeout(connect=2, read=3, write=3, pool=2) - Redis TTL: 300s 기본, SWR 20% 조기갱신, 잠금 TTL 3–5s
- HPA: CPU 60% + Memory 400Mi, scaleDown window 300s
- RateLimit(게이트웨이):
100 req/60s(기본) + 엔드포인트 가중치
5) 산출물 템플릿
A) Baseline 리포트(요약)
날짜: 2025-10-09
트래픽: RPS p50/p95, 피크 시간
지연: 엔드포인트별 p50/p95/p99
에러율: 4xx/5xx %
DB: QPS, 슬로우쿼리 Top10
캐시: 히트율, 키/TTL 정책
인프라: CPU/메모리, 스케일 이벤트
비용: 월 총비용, ₩/req, CDN 히트율
개선 후보 Top5:
1) ...
B) 런북(Incident)
증상 → 즉시 조치(롤백/리밸리데이트/리밋) → 진단(대시보드·트레이스 링크)
→ 해결(패치/인덱스/캐시) → 포스트모템(원인/영향/복구시간/액션)
C) 포스트모템(경량)
요약(1문장) / 타임라인 / 영향 / 근본원인 / 교훈 / 액션(담당·기한)
D) DR 리허설 기록
시나리오: DB 프라이머리 다운
RTO/RPO 목표: 15m / 1m
절차: 승격→시크릿 교체→롤아웃
결과: 복구 11m, 데이터 손실 0~1분
개선: ...
6) 성숙도 레벨(간단 자가진단)
- L1 기초: 헬스체크, 단일 인스턴스, 수동 배포
- L2 운영: CI/CD, 캐시 일부, 슬로우쿼리 관리, 기본 대시보드
- L3 스케일: HPA/KEDA, Outbox, 게이트웨이 리밋, ISR/태그, SLO 알람
- L4 신뢰성: DR 리허설, Tail Sampling, 카나리, 키 로테이션
- L5 엔터프라이즈: 멀티리전 워크로드, 자동분석 롤아웃, FinOps 자동화
7) 위험·트레이드오프 빠른 가이드
- 캐시 남용 ↔ 일관성: 태그/버전 키/TTL로 조율
- 재시도 ↔ 중복실행: 아이템포턴시 키/디듀프 테이블
- 샘플링 낮음 ↔ 장애 가시성: Tail Sampling 규칙으로 절충
- 스팟 ↔ 안정성: 워커/비핵심에 우선 적용 + PDB/재시도
8) “2일만 있다면?” 최소 코어 세트
- Day1: 기준선 + SLO + 대시보드 뼈대
- Day2: FastAPI 튜닝 + 캐시 상위 3 엔드포인트 + HPA + CI 파이프라인
9) Done 정의 (영역별)
- API: 프로파일 적용, /metrics/OTEL, p95 개선 수치 기록
- DB: 슬로우쿼리 표 & 인덱스 변경 PR 병행
- 캐시: 히트율 패널 + 키/TTL 문서
- 큐: Outbox→브로커→소비자 E2E 테스트
- 보안: KMS PoC, CSRF/세션 설정 검증, 감사로그 이벤트 목록
- DR: DB PITR 복구 스냅샷 성공 스크린샷
- 비용: ₩/req 패널과 Dev off 스케줄