1. 블루/그린 배포 (Blue-Green Deployment)
블루/그린 배포는 두 가지 환경, 즉 "Blue" 환경과 "Green" 환경을 사용하는 배포 전략입니다. 이 두 환경은 거의 동일한 환경으로 운영되며, 한쪽이 활성화된 프로덕션 환경이고 다른 쪽은 대기 중인 환경입니다.
- Blue 환경: 현재 프로덕션에서 사용되고 있는 버전.
- Green 환경: 새롭게 배포될 새로운 애플리케이션 버전이 배포된 환경.
동작 방식:
- Blue 환경에서 현재 서비스가 운영되고 있습니다.
- Green 환경에 새로운 버전의 애플리케이션을 배포하고 준비합니다.
- Green 환경에서 충분히 테스트를 거친 후, 로드 밸런서를 이용해 Green 환경으로 트래픽을 전환합니다.
- 모든 트래픽이 Green 환경으로 전환된 후 Blue 환경은 대기 상태로 전환되며, 필요 시 롤백용으로 남겨둡니다.
장점:
- 무중단 배포: 다운타임 없이 새 버전을 배포할 수 있습니다.
- 빠른 롤백: 문제가 생기면 다시 Blue 환경으로 트래픽을 전환하면 됩니다.
단점:
- 비용: 두 개의 프로덕션 환경을 동시에 운영해야 하기 때문에 비용이 많이 들 수 있습니다.
예시:
- 현재 버전(예: 1.0)이 Blue 환경에서 실행 중입니다.
- 새로운 버전(예: 2.0)을 Green 환경에 배포합니다.
- Green 환경에서 정상 동작하는 것을 확인한 후, 로드 밸런서나 DNS를 Green 환경으로 전환합니다.
- 모든 트래픽이 Green 환경으로 전환된 후 Blue 환경은 비활성화 상태로 유지합니다.
2. 카나리아 배포 (Canary Deployment)
카나리아 배포는 소프트웨어의 새로운 버전을 프로덕션 환경에 전체적으로 배포하기 전에, 일부 사용자 또는 일부 트래픽에만 점진적으로 배포하는 방식입니다. 카나리아 배포의 이름은 광산에서 카나리아 새를 사용하는 방식에서 유래되었습니다. 광부들이 카나리아를 먼저 광산에 보내어 위험 요소를 탐지하듯, 카나리아 배포는 일부 트래픽에 새로운 버전을 먼저 제공하여 문제가 없는지 확인하는 것입니다.
동작 방식:
- 새로운 버전의 애플리케이션을 프로덕션 환경에 배포합니다.
- 일부 트래픽(일반적으로 5~10%)만 새로운 버전으로 전달됩니다.
- 배포된 환경에서 문제가 없는지 모니터링합니다.
- 이상이 없으면 점차 더 많은 트래픽을 새로운 버전으로 유도합니다.
- 최종적으로 모든 트래픽이 새 버전으로 이동됩니다.
장점:
- 점진적 배포: 소수의 사용자에게만 새로운 버전을 제공하여 안정성을 먼저 확인할 수 있습니다.
- 빠른 문제 감지: 문제가 발생하면 빠르게 롤백하여 피해를 최소화할 수 있습니다.
단점:
- 복잡성: 트래픽을 점진적으로 분배하고 모니터링해야 하므로 관리가 복잡할 수 있습니다.
예시:
- 새 버전(예: 2.0)을 배포합니다.
- 트래픽의 5%만 새로운 버전(2.0)으로 라우팅합니다.
- 시스템 로그와 성능을 모니터링하면서 문제가 발생하지 않는지 확인합니다.
- 문제가 없으면 트래픽을 10%, 50%, 100% 순으로 점진적으로 늘립니다.
- 문제가 발생할 경우 즉시 롤백합니다.
3. 블루/그린 배포와 카나리아 배포의 차이점
블루/그린 배포와 카나리아 배포 예시 (AWS 환경)
1. 블루/그린 배포 (AWS Elastic Beanstalk 사용)
AWS Elastic Beanstalk에서 블루/그린 배포를 할 수 있습니다. 새 애플리케이션 버전을 새 환경에 배포하고, 정상적으로 동작하는 것을 확인한 후에 DNS 전환 또는 로드 밸런서를 통해 트래픽을 새 환경으로 전환하는 방식입니다.
# 새 버전 배포 (Green 환경)
eb deploy --env Green
# 새 버전의 Green 환경에서 모든 것이 정상 동작을 확인한 후,
# 로드 밸런서 또는 DNS를 Green 환경으로 전환
2. 카나리아 배포 (AWS CodeDeploy 사용)
AWS CodeDeploy를 사용하면 카나리아 배포를 손쉽게 구현할 수 있습니다. 일부 인스턴스에만 새 버전을 배포하고, 모니터링 후 나머지 인스턴스에 점진적으로 배포할 수 있습니다.
# appspec.yml 파일에 카나리아 배포 설정 예시
deploymentConfigName: CodeDeployDefault.LambdaCanary10Percent5Minutes
이 설정은 전체 트래픽의 10%를 새 버전으로 전환하고, 5분간 모니터링한 후 나머지 90%를 전환하는 카나리아 배포를 수행합니다.
결론
- 블루/그린 배포는 두 개의 프로덕션 환경을 사용하여 다운타임 없이 전체 트래픽을 새 환경으로 전환하는 방식으로, 빠르게 롤백할 수 있는 장점이 있지만 운영 비용이 더 높을 수 있습니다.
- 카나리아 배포는 일부 트래픽만 새 버전으로 유도한 후 점진적으로 확대하는 방식으로, 안정성을 확보하면서 위험을 최소화할 수 있는 배포 전략입니다.
두 방식 모두 배포 시 발생할 수 있는 리스크를 줄이고, 사용자가 서비스 중단을 겪지 않도록 하는 데 중요한 역할을 합니다. 상황에 맞게 적절한 배포 전략을 선택하는 것이 중요합니다.
'IT지식' 카테고리의 다른 글
Stack,Heap 개념과차이 (2) | 2024.10.15 |
---|---|
PDCA사이클(Plan, Do, Check, Act)이란? (1) | 2024.10.14 |
TDD(Test-Driven Development)의 개념 (0) | 2024.10.14 |
API와SDK의 개념과 차이 (3) | 2024.10.14 |
UUID(Universally Unique Identifier)란? (0) | 2024.10.14 |