Home 핵클 쿠팡 출신 개발자의 장애 리스크 없이 배포하는 방법
Post
Cancel

핵클 쿠팡 출신 개발자의 장애 리스크 없이 배포하는 방법

쿠팡 출신 개발자의 장애 리스크 없이 배포하는 방법

배포를 두려워 하는 이유

  • 영향도
  • 콜백

따라서 영향도 최소화 및 쉽고 빠른 롤백을 구축해놓는게 중요하다.

기능 플래그

  1. 점진적 전달
  2. 기능 플래그
  3. 배포와 출시의 분리
  4. 데이터 측정
  5. 사례

점진적 전달(Progressive Delivery)

  • 기능 출시를 제어
  • 일부 사용자들한테만 먼저 기능을 출시
  • 주요 지표를 측정
  • 지표에 문제가 있으면 롤백

사용자 기준

기능 플래그(Feature Flag)

  • on / off 스위치
  • Rollout
  • Targeting

배포 전략

블루 그린 배포

v1이 있을 때 v2를 배포하고, 로드밸런서로 v2를 가리키게해서 다운 없이 배포를 할 수 있다.

카나리 배포

하나 혹은 일부 서버에만 v2를 배포하고, 나머지는 기존버전으로 로드밸런싱 해놓고, 점차 늘려가는 방식.

코드배포와 기능출시가 한번에 이루어짐. 고객기준이 아닌 서버기준

기능 플래그

배포를 한 이후, 신규 기능은 적용하지 않는다. 모두 배포된 상태에서 기능을 배포할 수 있는 것이다.

배포와 출시의 분리
  • 코드를 배포해도 기능 출시는 되지 않음
  • 운영환경에서 쉽게 테스트
  • 점진적 출시를 통한 영향도 최소화
데이터 측정
  1. 코드 배포(기능출시 X)
  2. 일부 사용자 출시(버그 체크)
  3. 측정(서비스 영향도 확인)
  4. 점진적 출시
  5. 출시

배포 없이 기능을 키고, 끌 수 있다.

A/B 테스트

사용자 그룹을 A, B로 나눠서 대조를 하면서 테스트 하는 방법.

기능 플래그 + A/B 테스트

  • 배포와 출시의 분리
  • 적은 트래픽으로도 영향도를 확인 할 수 있음
  • 출시한 기능의 영향도를 파악 할 수 있다.
  • 언제든지 롤백 가능

SQS를 Kafka로 전환 하는것을 테스트 할 때 WAS에서 보내는 것을 기능 플래그를 사용하면 간단하게 변경 가능하다. 극소량만 신규로 보내서 모니터링을하고, 문제가 없다면 점진적으로 늘려나가는 것이다.

Coupang, Netflix, Uber 등 여러 회사들이 기능플래그와 A/B 테스트를 사용한다.

사용자 식별자와 기능플래그를 분류해서 사용자에게는 일관성있게 서비스한다.

Q&A

서버단에서 기능 플래그는 구현하는건가요? 프론트단에서 한다면 사용자가 조작해서 사용이 가능할것같은데 이런것에 대한 대응법은 어떤것이있나요?

모바일 또는 브라우저에서도 동작이 가능한데, 코드에서 보여줬듯이 분기문을 통해서 이미 랜더링 된 후에 사용자에게 노출되므로 관련이 없고, 분기 이후에 Api호출을 막아서 사용자가 접근하지 못하게 한다. 조심해야함.

서버의 배포룰 경우를 따지면 DB배포가 포함되는 경우는 on/off 기능을 적용하기 애해한 부분이 많습니다. 특히 DB이중화 를 이용하는 경우에는 어떻게 하나요?

DB에도 Feature flag를 달 수 있다. DB이중화를 이용해도 가능함.

This post is licensed under CC BY 4.0 by the author.