본문 바로가기
[개발] Infrastructure/Deployment

Flagger

by Devsong26 2023. 12. 5.

Flagger는 쿠버네티스(Kubernetes) 환경에서 카나리아 배포(Canary Deployment)와 관련된 프로세스를 자동화하고 관리하는 도구입니다. 이를 통해 개발자와 운영 팀은 애플리케이션의 새 버전을 점진적으로 배포하고, 실시간으로 모니터링하며, 필요에 따라 조정할 수 있습니다.

 

Flagger의 상세한 기능과 특징은 다음과 같습니다:

 


주요 기능

  • 자동화된 카나리아 배포
    • Flagger는 카나리아 배포 프로세스를 자동화합니다. 이는 새 버전의 애플리케이션을 점진적으로 소수의 사용자에게 먼저 제공하고, 문제가 없을 경우 전체 사용자에게 확대하는 방식입니다.
  • 프로모션과 롤백
    • Flagger는 성공 기준(예: 에러율, 응답 시간)을 충족시키면 자동으로 카나리아 버전을 프로덕션으로 승격시키고, 실패할 경우 자동으로 롤백합니다.
  • 메트릭 기반의 검증
    • Prometheus와 같은 모니터링 시스템과 통합하여, 실시간으로 메트릭을 수집하고 이를 바탕으로 배포의 성공 여부를 판단합니다.
  • 알림 시스템
    • 배포 상태와 중요 이벤트에 대한 알림을 Slack, Microsoft Teams 등으로 보낼 수 있습니다.

 

 

작동 원리

  • Canary Custom Resource
    • Flagger는 쿠버네티스의 Custom Resource Definition(CRD)을 사용하여 Canary라는 사용자 정의 리소스를 생성합니다.
    • 개발자는 Canary 리소스를 통해 배포할 애플리케이션의 세부 사항과 메트릭 기반의 검증 기준을 정의합니다.
  • 트래픽 관리
    • Flagger는 서비스 메시(Service Mesh) 기술을 사용하여 트래픽을 관리합니다. 예를 들어, Istio를 사용할 경우, Flagger는 Istio의 가상 서비스(VirtualService)와 목적지 규칙(DestinationRule)을 조정하여 트래픽을 분할합니다.
  • 분석과 결정
    • 설정된 메트릭 기준에 따라 Flagger는 카나리아 버전의 성능을 분석하고, 이를 기반으로 프로모션을 진행하거나 롤백을 결정합니다.

 

 

통합과 확장성

  • Flagger는 Istio, Linkerd, AWS App Mesh 등과 같은 다양한 서비스 메시와 통합됩니다.
  • 쿠버네티스 생태계와의 호환성을 통해 클라우드 및 온-프레미스 환경 모두에서 사용될 수 있습니다.

 

 

사용 사례

  • 점진적 배포
    • 새로운 기능이나 버그 수정이 포함된 애플리케이션의 업데이트를 안전하게 배포합니다.
  • 자동화된 롤아웃과 롤백
    • 성능 저하나 오류가 감지되면 자동으로 이전 버전으로 롤백합니다.
  • 실시간 모니터링과 알림
    • 배포 과정을 실시간으로 모니터링하고 상태 변화에 대해 알림을 제공합니다.

'[개발] Infrastructure > Deployment' 카테고리의 다른 글

Hystrix  (0) 2023.11.30
사가 패턴  (0) 2023.11.27
카나리아 배포  (0) 2023.11.17
Docker 블루-그린 배포  (0) 2023.11.17
MSA 통신 패턴 (동기, 비동기)과 Apache Kafka, Zookeeper  (0) 2022.02.27