보너스

주제: “실전 체크리스트 전체 모음 + 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/image sizes 지정
    산출물
  • 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.tag PR 흐름
    산출물
  • 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/image sizes, 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일만 있다면?” 최소 코어 세트

  1. Day1: 기준선 + SLO + 대시보드 뼈대
  2. 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 스케줄

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다