C.W.K.
Stream
Lesson 01 of 13 · published

Deploy 전략

~13 min · strategies, rollout, rollback

Level 0Apprentice
0 XP0/101 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

Traffic 가 옛 거에서 새 거로 어떻게 이동

변경의 위험도와 실패 탐지 속도에 따라 deploy 전략 선택. 클래식 세 모양:

Recreate (downtime deploy)

  • 옛 거 멈추고 새 거 시작. 짧은 downtime.
  • 추론 가장 쉬움. 개인 프로젝트, 저트래픽 서비스의 default.
  • 나쁨: 사용자 있는 모든 것.

Rolling

  • 인스턴스 N 개씩 교체. Deploy 중간 옛 + 새 가 나란히 돔.
  • Kubernetes deployment, ECS rolling 등의 default.
  • 주의: 옛 인스턴스가 새 schema 읽는 거 (또는 반대) 깨뜨리는 schema 변경.

Blue/Green

  • Prod 의 전체 카피 두 개 (blue + green). 비활성에 deploy, smoke 돌리고 traffic flip, 옛 거 폐기.
  • Load balancer 다시 flip 하면 즉시 rollback.
  • 비용: deploy 동안 2× 인프라.

Canary

  • Traffic 의 1 → 5 → 25 → 100% 로 시간에 걸쳐 deploy.
  • 각 step 에서 error rate / latency 모니터링. 튀면 자동 rollback.
  • 금본위. 좋은 observability + feature flag 또는 weighted router 필요.

Pipeline 모양이 전략을 반영

Canary pipeline 은 rolling (큰 deploy 하나) 보다 job 더 많아 (traffic step 당 하나). 고른 전략이 YAML 모양과 rollback 의 복잡도를 결정.

Code

Canary deploy 3 traffic step·yaml
jobs:
  deploy-canary-5:
    runs-on: ubuntu-latest
    environment: production
    steps:
      - run: ./deploy.sh --weight 5
      - run: ./check-health.sh --duration 5m

  deploy-canary-25:
    needs: deploy-canary-5
    runs-on: ubuntu-latest
    environment: production
    steps:
      - run: ./deploy.sh --weight 25
      - run: ./check-health.sh --duration 10m

  deploy-full:
    needs: deploy-canary-25
    runs-on: ubuntu-latest
    environment: production
    steps:
      - run: ./deploy.sh --weight 100

  rollback-on-fail:
    needs: [deploy-canary-5, deploy-canary-25, deploy-full]
    if: failure()
    runs-on: ubuntu-latest
    steps:
      - run: ./rollback.sh

External links

Exercise

현재 deploy 전략을 한 문단으로 문서화. MTTR 포함 (언제 rollback 했고; 얼마 걸렸나?) 와 전략의 trade-off. 머무를지 업그레이드할지 결정.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.