배포 전략
새 버전을 배포할 때 다운타임 없이 안전하게 배포하는 방법입니다.
Blue-Green 배포
두 개의 동일한 환경(Blue/Green)을 준비하고, 트래픽을 한 번에 전환합니다.
Blue (현재)
→ 전환 → Green (새 버전)
장점: 빠른 롤백 가능 | 단점: 리소스 2배 필요
Rolling 업데이트
인스턴스를 순차적으로 교체합니다. Cloud Run의 기본 전략입니다.
v1 v1 v2 → v1 v2 v2 → v2 v2 v2
장점: 리소스 효율적 | 단점: 롤백이 새 배포와 동일
롤백 방법
터미널
# Cloud Run에서 이전 버전으로 롤백
gcloud run services update-traffic my-api \
--to-revisions=my-api-00001-abc=100 \
--region=asia-northeast3
# Cloudflare Pages 롤백 (대시보드에서)
# Deployments → 이전 배포 → Rollback to this deploy모니터링 기초
로그 수집
Cloud Run은 자동으로 Cloud Logging에 로그를 수집합니다.
main.py
# FastAPI에서 구조화된 로그 출력
import logging
import json
logger = logging.getLogger(__name__)
@app.get("/api/users/{user_id}")
def get_user(user_id: int):
logger.info(json.dumps({
"action": "get_user",
"user_id": user_id,
"status": "success"
}))
return {"id": user_id}핵심 메트릭
응답 시간
p50, p95, p99 확인
목표: p95 < 200ms
에러율
5xx 에러 비율
목표: < 0.1%
요청 수
분당/시간당 요청
트래픽 패턴 파악
리소스 사용량
CPU, 메모리
스케일링 기준
알림 설정
터미널 (예시)
# GCP에서 알림 정책 생성 (CLI)
gcloud alpha monitoring policies create \
--display-name="High Error Rate Alert" \
--condition-display-name="Error rate > 1%" \
--condition-filter='resource.type="cloud_run_revision" AND metric.type="run.googleapis.com/request_count"'알림 채널 추천
- Slack: 팀 채널로 즉시 알림
- Email: 일일 요약 리포트
- PagerDuty: 긴급 장애 시 온콜 호출
장애 대응
인시던트 대응 프로세스
1
감지
모니터링 알림 또는 사용자 신고
2
분류
심각도 판단 (Critical/High/Medium/Low)
3
완화
롤백, 스케일 업, 트래픽 차단 등
4
해결
근본 원인 파악 및 수정
5
회고
포스트모템 작성, 재발 방지책 수립
롤백 결정 기준
- 에러율이 1% 이상 증가
- p95 응답시간이 2배 이상 증가
- 핵심 기능이 5분 이상 장애
- 수정 예상 시간이 15분 이상
비용 관리
무료 티어 활용
| 서비스 | 무료 제공량 |
|---|---|
| Cloudflare Pages | 무제한 요청, 500회/월 빌드 |
| Cloud Run | 200만 요청/월, 180,000 vCPU-초/월 |
| Supabase | 500MB DB, 1GB 스토리지 |
| Neon | 0.5GB 스토리지, 191시간/월 컴퓨팅 |
비용 알림 설정
비용 알림
# GCP 예산 알림 설정 (콘솔에서)
# 1. 빌링 → 예산 및 알림 → 예산 만들기
# 2. 월 $10, $50, $100 등 임계값 설정
# 3. 50%, 90%, 100% 도달 시 이메일 알림예상치 못한 비용 주의
- 데이터 전송(Egress) 비용이 의외로 큼
- 로그 저장 비용도 무시 못 함
- 개발용 인스턴스 끄는 것 잊지 말기
운영 런북 확장
축하합니다!
모든 학습 사이클을 완료했습니다! 이제 웹 서비스를 만들고 배포하고 운영하는 기본기를 갖추었습니다. Agent Recipes를 활용해서 실제 프로젝트를 시작해보세요.