본문 바로가기

[배포]

[배포] 배포 방식

목차

  1. 블루 그린 배포
  2. 까나리 배포
  3. 롤링 업데이트 배포

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

블루-그린 배포는 배포 방식 중 하나로, 기존 버전(블루)과 새로운 버전(그린)을 동시에 준비해 두고, 새로운 버전이 안정적으로 동작하는 것을 확인한 후 트래픽을 새로운 버전(그린)으로 전환하는 방식이다. (블루-그린 배포에서 트래픽 전환한 번에 이루어진다. 즉, 기존 버전(블루 환경)에서 새로운 버전(그린 환경)으로 트래픽을 한 번에 전환한다. 이 방식은 트래픽을 점진적으로 나누는 것이 아니라, 새로운 버전이 안정적이라고 확인되면, 로드 밸런서나 라우팅을 통해 모든 트래픽을 새로운 버전으로 빠르게 전환하는 방식)

 

흐름

  1. 블루 환경: 현재 운영 중인 버전(기존 버전)이 블루 환경에서 서비스되고 있다.
  2. 그린 환경: 새로운 버전의 애플리케이션을 그린 환경에 배포하고 테스트를 진행한다.
  3. 트래픽 전환: 새로운 버전이 문제 없이 동작한다고 판단되면, 로드밸런서나 라우팅을 통해 트래픽을 블루 환경에서 그린 환경으로 전환한다.
  4. 구 버전 삭제: 전환 후 문제가 없다면 구 버전(블루 환경)을 삭제하고, 그린 환경을 운영 환경으로 유지한다.

장점

  • 구버전의 인스턴스가 그대로 남아있어서 손쉬운 롤백이 가능하다.
  • 운영환경에 영향을 주지 않고 새 버전 테스트 가능.
  • 트래픽 전환 과정에서 서비스 중단이 거의 없다.

단점

  • 시스템 자원이 두배로 필요하다.

2. 롤링 업데이트 배포 (Rolling Update Deployment)

롤링 업데이트 배포는 점진적으로 애플리케이션의 각 인스턴스를 새로운 버전으로 교체하는 방식이다.

이 방식은 전체 인스턴스를 한 번에 교체하지 않고, 하나씩 순차적으로 교체해 가며 배포한다.

 

흐름

  1. 애플리케이션 인스턴스 교체: 첫 번째 인스턴스를 새로운 버전으로 교체하고, 교체가 완료되면 두 번째 인스턴스를 교체한다. 이 작업을 순차적으로 진행한다.
  2. 배포 완료: 모든 인스턴스가 새로운 버전으로 교체되면 배포가 완료된다.
  3. 배포 중 서비스 유지: 각 인스턴스가 교체될 때마다 새로운 버전과 구 버전의 인스턴스가 동시에 존재하므로, 서비스가 중단되지 않는다.

장점

  • 서비스 중단 없음: 점진적으로 배포하므로 서비스 중단 없이 배포할 수 있다.
  • 배포 리스크 감소: 하나씩 교체하기 때문에 문제가 발생하면 빠르게 롤백할 수 있다.

단점

  • 사용중인 인스턴스에 트래픽이 몰릴 수 있다.
  • 여러 버전의 애플리케이션이 동시에 운영되므로 상태 관리가 어려울 수 있다.
  • 배포가 진행될때 구버전과 신버전이 공존하기에 호환성 문제가 발생할 수 있다.
    • 업데이트 된 버전2개, 안된버전 2개가 공존하므로 사용자들은 균일한 서비스를 받지 못한다.

3. 카나리 배포(Canary Deployment)

카나리 배포는 새로운 버전의 애플리케이션을 일부 사용자에게만 배포하여 점진적으로 배포하는 방식이다.

새로운 버전의 안정성을 검증한 후, 점차적으로 더 많은 사용자에게 배포를 확장하는 방식이다.

블루그린 배포와 유사하지만 블루그린처럼 트래픽을 한번에 확 바꾸는 것이 아니라 단계적으로 전환하기에 부정적 영향을 최소화하고 상황에 따라 트래픽 양을 조절하며 롤백할 수 있다.

 

흐름

  1. 일부 사용자에게 배포: 새로운 버전을 전체 서비스에 배포하지 않고, 일부 사용자에게만 배포하여 모니터링한다.
  2. 모니터링: 일부 사용자에게 배포한 후, 오류나 성능 저하가 발생하지 않는지 모니터링한다.
  3. 확대 배포: 안정성이 확인되면 점차적으로 배포 대상을 늘려가며, 최종적으로 전체 사용자에게 배포한다.

장점

  • 리스크 감소: 새로운 버전의 문제가 전체 시스템에 영향을 미치지 않도록 일부 사용자에게만 적용하므로 리스크를 줄일 수 있다.
  • 빠른 피드백: 사용자들로부터 빠르게 피드백을 받을 수 있어 문제를 조기에 발견할 수 있다.

단점

  • 배포 속도 느림: 점진적으로 배포하므로 전체 배포 시간이 오래 걸릴 수 있다.
  • 복잡한 모니터링: 사용자 그룹을 나누고 모니터링해야 하므로 관리가 복잡할 수 있다.

 

'[배포]' 카테고리의 다른 글

[DevOps] GitHub Actions  (0) 2025.01.18