본문 바로가기
클라우드/Argo

🛡️ Argo Rollouts 안전 배포의 핵심: Analysis 4종 세트 완벽 가이드

by gasbugs 2026. 1. 3.

쿠버네티스 환경에서 무중단 배포를 넘어 '안전한 배포'를 고민하신다면, Argo Rollouts의 Analysis 기능은 선택이 아닌 필수입니다.

오늘은 배포의 성패를 가르는 4가지 핵심 트리거: Pre/PostSyncAnalysisPre/PostPromotionAnalysis의 차이점을 상세히 분석하고, 어떤 상황에서 어떤 기능을 써야 하는지 완벽하게 정리해 드리겠습니다. 🚀

 

배포 버튼을 누르고 "제발 문제없어라"라고 기도하던 시대는 끝났습니다. Argo Rollouts는 배포의 각 단계마다 AnalysisRun을 실행해 메트릭(Prometheus, Datadog 등)을 체크하고, 자동으로 승인하거나 롤백합니다.

그중에서도 특히 헷갈리기 쉬운 4가지 분석 시점에 대해 깊게 파헤쳐 보겠습니다.


1. Sync와 Promotion: 용어부터 정리합시다! 💡

본격적인 비교에 앞서, 두 단어의 의미를 명확히 해야 합니다.

  • Sync (동기화): 사용자가 kubectl apply를 하거나 GitOps 도구가 새로운 상태를 클러스터에 반영하는 행위 자체를 의미합니다.
  • Promotion (승격): 카나리(Canary) 배포에서 1단계(예: 트래픽 10%)가 성공하여 다음 단계(예: 트래픽 50% 또는 전체 배포)로 넘어가는 단계를 의미합니다.

2. PreSync & PostSync Analysis: "배포의 시작과 끝을 감시하라" 🔍

이 기능들은 주로 배포 시점을 기준으로 작동합니다.

① PreSyncAnalysis (동기화 전 분석)

새로운 버전의 Pod이 생성되기 직전에 실행됩니다.

  • 언제 쓸까요?
    • 현재 클러스터의 건강 상태가 새로운 앱을 받아들일 준비가 되었는지 확인할 때.
    • 외부 의존성(DB, API 서버 등)이 활성화되어 있는지 체크할 때.
  • 특징: 여기서 실패하면 새 버전 배포 자체가 시작되지 않습니다.

② PostSyncAnalysis (동기화 후 분석)

새로운 리소스가 클러스터에 생성된 직후에 실행됩니다.

  • 언제 쓸까요?
    • 새로운 버전의 Pod이 Ready 상태가 된 직후, 아주 기본적인 헬스체크를 수행할 때.
    • 본격적인 트래픽 이동 전, 설정값들이 올바르게 반영되었는지 검증할 때.

3. PrePromotion & PostPromotion Analysis: "성공의 관문을 지켜라" 🚪

이 기능들은 배포 전략(Strategy) 내의 단계(Steps) 이동과 관련이 있습니다.

① PrePromotionAnalysis (승격 전 분석)

카나리 단계에서 트래픽을 다음 단계로 더 많이 넘기기 직전에 실행됩니다.

  • 언제 쓸까요?
    • "자, 이제 10% 트래픽에서 50%로 늘릴 건데, 지금까지 받은 10% 트래픽 데이터가 깨끗한가?"를 물어볼 때.
    • 수동 승인(Manual Pause)이 풀린 직후, 최종 확인 작업을 자동화할 때.

② PostPromotionAnalysis (승격 후 분석)

트래픽 비중을 높인 직후에 실행됩니다.

  • 언제 쓸까요?
    • 트래픽이 대폭 늘어난 직후(예: 10% -> 100%), 부하를 견디지 못해 발생하는 지연 시간(Latency)이나 에러율을 즉시 감지할 때.
    • 완전한 배포(Full Promotion) 후 일정 시간 동안 안정성을 유지하는지 지켜볼 때.

4. 코드 실전 예제: Rollout 정의하기 💻

이해를 돕기 위해 각 분석 단계가 포함된 Rollout YAML 예시를 준비했습니다. 주석을 통해 각 시점을 확인해 보세요.

YAML
 
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
  name: advanced-canary-rollout
spec:
  replicas: 5
  strategy:
    canary:
      # 1. 배포가 시작되기 전/후에 실행되는 분석 (Sync 관련)
      analysis:
        templates:
          - templateName: cluster-health-check
        # PreSync: 배포 시작 전 체크
        preSync: {}
        # PostSync: 배포 리소스 생성 후 체크
        postSync: {}

      steps:
        - setWeight: 20
        - pause: {duration: 5m}
        
        # 2. 단계 이동(Promotion) 시 실행되는 분석
        - analysis:
            templates:
              - templateName: http-error-rate
            # PrePromotion: 20% -> 50%로 넘어가기 직전에 실행
            prePromotion: {}
            # PostPromotion: 20% -> 50%로 넘어간 직후에 실행
            postPromotion: {}
            
        - setWeight: 50
        - pause: {} # 수동 승인 대기
        - setWeight: 100

5. 핵심 요약 테이블: 무엇을 선택할 것인가? 📊

기능 실행 시점 주요 목적 비유
PreSync 배포 시작 전 인프라/의존성 최종 점검 "경기장 문 열어도 될까?"
PostSync 배포 직후 초기 환경 설정 검증 "선수들 유니폼 잘 입었나?"
PrePromotion 다음 단계 이동 전 현재 트래픽 데이터 기반 합격 판정 "1세트 잘했으니 2세트 갈까?"
PostPromotion 다음 단계 이동 후 확장된 트래픽에서의 안정성 감시 "관중 늘었는데 사고 안 나나?"

6. 결론: 전략적인 분석 설계 🏁

  • 가장 중요한 것: PrePromotionAnalysis입니다. 카나리 배포의 본질인 "일부 사용자에게만 테스트"한 결과를 바탕으로 다음 단계 진행 여부를 결정하기 때문입니다.
  • 인프라가 불안정하다면: PreSyncAnalysis를 적극 활용하여 불필요한 배포 시도를 차단하세요.
  • 갑작스러운 부하가 걱정된다면: PostPromotionAnalysis를 통해 트래픽 급증 시 즉각 대응하세요.

이제 Argo Rollouts의 Analysis 기능을 활용해, 잠잘 때도 안심할 수 있는 자동화된 배포 시스템을 구축해 보세요! 🛠️


태그: ArgoRollouts, Kubernetes, GitOps, CanaryDeployment, AnalysisRun, DevOps, 무중단배포, 자동화, 클라우드네이티브, 프로메테우스