배포 전략과 릴리스 관리

Blue/Green, Canary, Rolling 배포 전략과 Lambda Alias 트래픽 분산을 정리합니다.

소프트웨어를 개발하고 나면 사용자에게 전달하기 위해 배포해야 합니다. 그런데 이미 많은 사람들이 사용 중인 서비스에 새 버전을 배포하는 것은 생각보다 까다롭습니다. AWS DVA-C02 시험은 이런 상황에서 어떤 배포 전략을 선택해야 하는지를 묻습니다.

 

배포 전략 비교

배포 전략이란 기존 서버에 새 버전의 소프트웨어를 어떻게 적용할지에 대한 방법입니다. 대표적인 4가지 전략을 비교해 봅시다.

All-at-once

모든 서버에 동시에 새 버전을 설치합니다. 가장 빠르게 완료되지만 배포 중 서비스가 잠깐 중단(다운타임)될 수 있습니다. 문제가 생기면 이전 버전을 다시 배포해야 합니다.

쉽게 말하면 가게 문을 닫고 리모델링을 한 뒤 다시 여는 것과 같습니다.

Rolling

서버를 소규모 그룹(배치)으로 나눠 순서대로 배포합니다. 배포 중에는 일부 서버가 구 버전, 나머지 서버가 새 버전을 동시에 실행합니다.

Blue/Green

기존 환경(Blue)을 그대로 운영하면서 새 버전을 위한 완전히 새로운 환경(Green)을 따로 구축합니다. 준비가 완료되면 트래픽을 Green으로 한 번에 전환합니다. 문제가 생기면 Blue로 즉시 되돌릴 수 있습니다. 가장 안전하지만 두 환경을 동시에 운영해야 하므로 비용이 두 배가 됩니다.

쉽게 말하면 옆에 새 가게를 완전히 차려놓고, 준비가 되면 모든 손님을 그쪽으로 안내하는 것입니다.

Canary

새 버전에 소량의 트래픽(예: 10%)만 먼저 보냅니다. 문제가 없으면 비율을 점진적으로 높여서 결국 100%로 확대합니다.

광산에서 카나리아 새를 먼저 들여보내 공기를 확인하던 것처럼, 소수에게 먼저 테스트한 후 전체로 확대하는 방식입니다.

!배포 전략 4가지: All-at-once, Rolling, Blue/Green, Canary

Lambda 배포 전략

Lambda Versions와 Alias

버전(Version): Lambda 함수의 불변 스냅샷입니다. $LATEST는 항상 가장 최근에 수정된 상태를 가리킵니다. Alias: 특정 버전을 가리키는 이름표입니다. 예를 들어 "prod" 또는 "dev"처럼 이름을 붙여 관리합니다.

버전은 사진이라고 생각하고, Alias는 그 사진에 붙이는 이름표라고 이해하면 쉽습니다.

Alias를 이용한 트래픽 분산

하나의 Alias에 두 버전을 연결하고 각각의 트래픽 비율을 설정할 수 있습니다.

예: prod Alias → 버전 1 (90%) + 버전 2 (10%) = 카나리 배포

AWS CodeDeploy와 연동하면 트래픽을 단계적으로 자동 전환할 수 있습니다. Canary10Percent5Minutes: 10%를 5분간 보낸 후 나머지를 전환 Linear10PercentEvery1Minute: 1분마다 10%씩 증가하여 100%까지 AllAtOnce: 즉시 100% 전환

 

롤백

Lambda: Alias가 가리키는 버전을 변경합니다. 거의 즉시 완료됩니다. ECS: 서비스를 이전 태스크 정의로 업데이트합니다. EC2: CodeDeploy를 통해 이전 리비전으로 롤백합니다.

 

시험 핵심 정리

"새 환경 구축 후 트래픽 전환, 즉시 롤백 가능" -- Blue/Green

"소량 트래픽으로 먼저 테스트 후 점진적 확대" -- Canary

"순차적으로 배치 배포" -- Rolling

"Lambda 버전에 이름 붙이기" -- Lambda Alias

"Lambda 트래픽을 두 버전으로 분산" -- Alias 가중치 라우팅

"10%를 5분간 보낸 후 전체 전환" -- Canary10Percent5Minutes

"매 1분마다 10%씩 증가" -- Linear10PercentEvery1Minute

"즉시 100% 전환" -- AllAtOnce

Blue/Green은 가장 안전한 전략이지만 비용이 두 배

블로그 목록으로 돌아가기