[카테고리:] 미분류

  • 보너스

    주제: “실전 체크리스트 전체 모음 + 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 스케줄