Spring & Spring Boot/Release & Deploy

[1] Application Release Model(애플리케이션 릴리스 모델)

carrotweb 2026. 10. 27. 20:10
728x90
반응형

Application Release Model(애플리케이션 릴리스 모델)

개발된 소프트웨어를 사용자에게 안전하고 효율적으로 배포하기 위한 전략을 의미합니다.

시스템 가동 중단(Downtime)을 최소화하고 리스크를 줄이기 위해 사용합니다.

 

롤링 배포 (Rolling Deployment)

구(기존) 버전으로 실행 중인 애플리케이션(또는 마이크로서비스)를 새(신규) 버전으로 하나씩 차례대로 교체하는 방식입니다.

동일한 서버에서 교체하기 때문에 인프라 추가 비용이 없습니다. 시스템 중단도 없습니다.

 

그렇지만 배포가 완전히 끝날 때까지 두 버전이 공존합니다.

신규 버전에서 계산 공식이 변경되거나 DB 테이블이 변경될 경우에는 문제가 심각해질 수 있습니다.

롤백을 할 경우에는 복구가 어렵고 시간이 많이 걸립니다.

OpenAI로 생성한 이미지입니다.

 

 

블루-그린 배포 (Blue-Green Deployment)

구(기존) 버전(Blue)과 새(신규) 버전(Green) 두 개의 환경으로 구성하고 설정 변경을 통해 트래픽을 한 번에 전환합니다.

 

문제 발생 시 설정 변경으로 즉각적인 롤백이 가능합니다. 시스템 중단도 없습니다.

 

그렇지만 두 대의 서버가 동일한 환경으로 구성하기 되어야 하기 때문에 인프라 비용이 늘어납니다. (한 대의 서버에서 실행할 경우에는 인프라 추가 비용이 없습니다.)

OpenAI로 생성한 이미지입니다.

 

 

카나리 배포 (Canary Deployment)

새(신규) 버전을 일부 사용자(5%)에게만 먼저 배포하여 문제를 검증한 후 점진적으로 배포합니다.

리스크를 최소화하며 테스트가 가능합니다. 성능 및 오류 체크에 좋습니다.

 

다만, 트래픽 분배를 잘해야 합니다.

배포가 완전히 끝날 때까지 두 버전이 공존하기 때문에 롤링 배포처럼 문제가 발생할 수 있습니다.

OpenAI로 생성한 이미지입니다.

 

 

기능 플래그(Feature Flags / Toggles)

모두 배포한 후 특정 기능의 활성화 여부를 설정으로 제어하는 방식입니다.

출시(Release) 시점을 지정할 수 있습니다.

특정 사용자 그룹을 대상으로 타겟팅할 수 있습니다.


다만, 소스 코드에 기능 활성화 코드를 추가해야 합니다.

비활성화된 기능이 많아지면 기술 부채가 쌓일 수 있습니다.

OpenAI로 생성한 이미지입니다.

 

 

상황에 따른 배포 방식 선택

  • 빠른 전체 배포와 빠른 롤백이 되어야하는 시스템은 블루-그린 배포로 하시기 바랍니다.
  • 에러를 미리 스크리닝하거나 사용자의 반응을 체크하고 싶다면 카나리 배포로 하시기 바랍니다.
  • 마케팅 일정에 맞춰 특정 기능을 오픈하거나 A/B 테스트를 하고 싶다면 기능 플래그 방식을 사용하기 바랍니다.
728x90
반응형