AWS-CICD

8.9.나. AWS 배포 그룹 생성시 In-place 배포와 Blue/Green 배포의 차이점

backend 따라쟁이 2025. 3. 2. 21:03

 

AWS CodeDeploy에서 EC2 인스턴스 (또는 Auto Scaling Group) 에 애플리케이션을 배포할 때, 대표적으로 In-place 배포Blue/Green 배포 두 가지 방식이 있어. 각 방식의 차이를 비교해보겠습니다.

1️⃣ In-place 배포 (Rolling 배포)

📌 개념

  • 기존 EC2 인스턴스에서 실행 중인 애플리케이션을 중단하고 업데이트하는 방식이야.
  • CodeDeploy가 하나씩 인스턴스를 업데이트하며 애플리케이션을 배포해.
  • 기존 인스턴스를 그대로 유지하면서 업데이트하기 때문에 새로운 인프라를 만들지 않아 비용이 절감됨.

🛠 배포 과정

  1. Auto Scaling Group 내의 기존 EC2 인스턴스에서 애플리케이션을 중지.
  2. 새로운 애플리케이션 버전 배포.
  3. 배포 완료 후 서비스 재시작.
  4. 모든 인스턴스에서 배포가 완료되면 서비스가 정상 운영됨.

장점

  • 별도의 새로운 인스턴스를 생성하지 않으므로 비용이 절감됨.
  • Auto Scaling Group을 사용할 때, 현재 실행 중인 모든 인스턴스에 적용되므로 구성 변경이 필요 없음.
  • 간단한 애플리케이션 업데이트에 적합.

단점

  • 배포 중 애플리케이션이 중지되므로 서비스 중단 가능성이 있음.
  • 배포 실패 시 롤백이 어려움 (이전 버전으로 되돌리려면 다시 배포해야 함).
  • 새 버전이 정상적으로 작동하지 않을 경우, 일부 사용자에게만 영향을 주는 것이 아니라 전체 인스턴스에서 장애가 발생할 가능성이 있음.

🔥 언제 사용하면 좋을까?

  • 서비스 중단이 발생해도 크게 문제가 되지 않는 경우.
  • 배포 속도를 빠르게 해야 하는 경우.
  • 인프라 변경 없이 간단하게 배포하고 싶은 경우.

2️⃣ Blue/Green 배포

📌 개념

  • 기존 (Blue) 환경과 새로운 (Green) 환경을 별도로 운영하며, 새로운 환경에서 배포 후 트래픽을 전환하는 방식.
  • 새로운 버전의 애플리케이션을 새로운 Auto Scaling Group이나 새로운 EC2 인스턴스 (Green)에서 실행한 후, 정상 동작이 확인되면 로드 밸런서를 통해 트래픽을 새 환경으로 전환.
  • 기존 (Blue) 환경을 그대로 유지하므로, 배포 실패 시 빠르게 롤백할 수 있음.

🛠 배포 과정

  1. 기존 인스턴스(Blue)에서 애플리케이션을 운영 중.
  2. 새로운 EC2 인스턴스(Green)를 생성하여 새 버전의 애플리케이션을 배포.
  3. Green 환경에서 정상적으로 실행되는지 테스트.
  4. 로드 밸런서 (ALB 또는 ELB) 를 사용하여 트래픽을 Blue에서 Green으로 전환.
  5. 기존(Blue) 인스턴스를 유지할지 삭제할지 결정.

장점

  • 무중단 배포 가능 → 기존 인스턴스(Blue)는 그대로 둔 채 새로운 인스턴스(Green)에서 테스트 가능.
  • 빠른 롤백 가능 → 문제가 발생하면 다시 Blue로 트래픽을 전환하면 됨.
  • 배포 안정성 증가 → 새 버전이 안정적으로 동작하는지 확인한 후 트래픽을 전환할 수 있음.

단점

  • 기존 인스턴스(Blue)와 새로운 인스턴스(Green)를 동시에 운영하므로 추가 비용이 발생.
  • 인프라 구성이 더 복잡해지고 로드 밸런서 설정이 필요함.
  • 새로운 인스턴스를 실행해야 하므로 배포 속도가 다소 느릴 수 있음.

🔥 언제 사용하면 좋을까?

  • 무중단 배포가 중요한 경우 (예: 금융, 전자상거래, AI 서비스 등).
  • 배포 실패 시 빠르게 롤백이 필요한 경우.
  • 테스트 환경에서 안정성을 먼저 확인한 후 배포하고 싶은 경우.

🎯 In-place 배포 vs. Blue/Green 배포 비교 정리

배포 방식In-place 배포Blue/Green 배포

배포 방식 기존 인스턴스에서 애플리케이션을 중지하고 업데이트 새로운 인스턴스에서 배포 후 트래픽 전환
서비스 중단 발생 가능 (배포 중 일부 인스턴스에서 서비스 중단) 무중단 배포 가능
롤백 어려움 (이전 버전 재배포 필요) 빠름 (트래픽을 기존 버전으로 전환)
배포 속도 빠름 상대적으로 느림
비용 낮음 (기존 인프라 유지) 높음 (새로운 인프라 추가 필요)
운영 복잡도 쉬움 높음 (로드 밸런서 및 새 인프라 관리 필요)
추천 사용 사례 소규모 업데이트, 빠른 배포가 필요한 경우 무중단 배포가 필요하거나 안정성이 중요한 경우

🚀 결론

  • In-place 배포간단하고 비용이 적게 들지만, 서비스 중단과 롤백 어려움이 단점.
  • Blue/Green 배포무중단 배포와 빠른 롤백이 가능하지만, 비용이 높고 인프라 구성이 복잡함.

💡 만약 Auto Scaling 환경에서 무중단 배포가 필요하다면 Blue/Green 배포가 더 적합하고, 단순한 업데이트라면 In-place 배포가 적합한 방식입니다.