본문 바로가기

DevOps

무중단 배포란 무엇인가? (롤링 배포, 블루-그린 배포, 카나리 배포)

728x90
반응형

무중단 배포(無中斷 配布, Zero-Downtime Deployment)는 소프트웨어 시스템의 업데이트나 배포 과정에서 서비스의 중단 없이 새로운 버전을 배포하는 방법을 의미합니다. 이는 사용자에게 서비스를 계속 제공하면서 시스템을 업데이트할 수 있는 방법을 제공하여 가용성과 신뢰성을 높입니다.

주요 특징

  1. 가용성 유지: 시스템이 배포되는 동안에도 사용자는 서비스를 계속 사용할 수 있습니다.
  2. 신속한 롤백: 새로운 배포가 문제가 있을 경우, 신속하게 이전 버전으로 롤백할 수 있습니다.
  3. 점진적 업데이트: 새로운 기능을 점진적으로 배포하여 문제가 발생할 가능성을 줄입니다.

대표 방법

구분 내용
롤링 배포(Rolling Deployment) 배포할 애플리케이션의 인스턴스를 순차적으로 업데이트하여 전체 시스템의 일부만 동시에 업데이트됩니다. 이를 통해 서비스 중단 없이 배포가 가능합니다.
블루-그린 배포(Blue-Green Deployment) 두 개의 동일한 환경(블루와 그린)을 준비하여 한 쪽(블루)이 현재 프로덕션 환경이고, 다른 쪽(그린)에 새로운 버전을 배포합니다. 그린 환경에서 테스트가 완료되면 트래픽을 블루에서 그린으로 전환합니다.
카나 배포(Canary Deployment) 새로운 버전을 소수의 사용자에게만 배포하여 문제 여부를 확인한 후, 점차 더 많은 사용자에게 배포하는 방법입니다.

장점

  • 높은 가용성: 서비스 중단 없이 배포할 수 있어 사용자에게 지속적인 서비스 제공이 가능합니다.
  • 위험 감소: 점진적 업데이트와 신속한 롤백으로 인해 배포 과정에서 발생할 수 있는 위험을 줄일 수 있습니다.
  • 빠른 피드백: 새로운 기능이나 버그 수정의 효과를 빠르게 확인할 수 있습니다.

무중단 배포는 클라우드 환경과 CI/CD(Continuous Integration/Continuous Deployment) 파이프라인의 발전과 함께 더욱 중요해지고 있으며, 많은 조직에서 이를 채택하여 안정적이고 효율적인 배포를 실현하고 있습니다.

반응형

롤링 업데이트(Rolling Update) 상세 설명 및 예제

롤링 업데이트는 애플리케이션의 모든 인스턴스를 동시에 업데이트하지 않고, 순차적으로 소수의 인스턴스를 업데이트하는 배포 전략입니다. 이를 통해 서비스의 가용성을 유지하면서 점진적으로 새로운 버전을 배포할 수 있습니다.

https://www.koyeb.com/blog/blue-green-rolling-and-canary-continuous-deployments-explained

기본 개념

  • 순차적 업데이트: 한 번에 전체 인스턴스가 아닌, 일부 인스턴스씩 차례대로 업데이트합니다.
  • 가용성 유지: 업데이트 중에도 서비스는 계속 제공됩니다.
  • 자동 롤백: 문제 발생 시 업데이트를 중단하고 이전 버전으로 롤백할 수 있습니다.

예제 시나리오

시나리오: 클라우드 기반의 채팅 애플리케이션이 버전 3.0에서 버전 3.1로 업데이트될 예정입니다.

구분 시나리오
초기 상태
  • 클러스터에는 5개의 인스턴스가 있으며, 모두 버전 3.0이 운영 중입니다.
  • 인스턴스 목록: [Instance A (v3.0), Instance B (v3.0), Instance C (v3.0), Instance D (v3.0), Instance E (v3.0)]
롤링 업데이트 시작
  • 한 번에 하나의 인스턴스를 새로운 버전으로 업데이트합니다.
첫 번째 인스턴스 업데이트
  • Instance A를 버전 3.1로 업데이트합니다.
  • 인스턴스 목록: [Instance A (v3.1), Instance B (v3.0), Instance C (v3.0), Instance D (v3.0), Instance E (v3.0)]
모니터링 및 검증
  • Instance A의 상태를 모니터링하여 새로운 버전이 정상 작동하는지 확인합니다.
두 번째 인스턴스 업데이트
  • Instance A가 안정적이면, Instance B를 버전 3.1로 업데이트합니다.
  • 인스턴스 목록: [Instance A (v3.1), Instance B (v3.1), Instance C (v3.0), Instance D (v3.0), Instance E (v3.0)]

장점

  • 고가용성: 서비스 중단 없이 배포를 진행할 수 있습니다.
  • 점진적 변경: 점진적으로 업데이트를 적용하여 문제 발생 시 영향을 최소화할 수 있습니다.
  • 신속한 롤백: 문제가 발생한 인스턴스만 롤백하여 전체 시스템의 안정성을 유지할 수 있습니다.
  •  
728x90

블루-그린 배포(Blue-Green Deployment) 상세 설명 및 예제

블루-그린 배포는 두 개의 환경(블루와 그린)을 이용하여 무중단으로 애플리케이션을 배포하는 전략입니다. 이를 통해 사용자에게 서비스를 지속적으로 제공하면서 안전하게 새로운 버전을 배포할 수 있습니다.

https://hoehen-flug.tistory.com/53

기본 개념

  • 블루 환경(Blue Environment): 현재 운영 중인 프로덕션 환경입니다.
  • 그린 환경(Green Environment): 새로운 버전을 배포하고 테스트하는 환경입니다.

예제 시나리오

시나리오: 전자상거래 웹사이트가 버전 1.0에서 버전 1.1로 업데이트될 예정입니다.

구분 시나리오
초기 상태
  • 블루 환경: 버전 1.0이 운영 중.
  • 그린 환경: 미사용 상태.
새로운 버전 배포 준비
  • 개발팀은 그린 환경에 버전 1.1을 배포하고 필요한 모든 테스트를 수행합니다.
테스트 완료
  • 그린 환경에서 버전 1.1이 정상적으로 작동하는지 확인합니다.
  • 모든 기능 테스트 및 성능 테스트가 완료되면 다음 단계로 진행합니다.
트래픽 전환
  • 로드 밸런서를 사용하여 블루 환경에서 그린 환경으로 트래픽을 전환합니다.
  • 전환 시점에서 사용자는 서비스 중단 없이 새로운 버전(1.1)을 사용하게 됩니다.
모니터링 및 안정화
  • 그린 환경에서 운영을 시작한 후, 모니터링을 통해 문제가 없는지 확인합니다.
  • 만약 문제가 발생하면, 신속하게 로드 밸런서를 다시 블루 환경으로 전환하여 롤백할 수 있습니다.
블루 환경 업데이트
  • 그린 환경이 안정적으로 운영되면 블루 환경을 새 버전으로 업데이트하여 다음 배포 준비를 합니다.
  • 이제 그린 환경이 현재 프로덕션 환경이 되고, 블루 환경이 새 버전을 배포할 준비가 된 상태가 됩니다.

장점

  • 무중단 서비스: 사용자는 배포 과정에서 중단 없이 서비스를 이용할 수 있습니다.
  • 신속한 롤백: 문제가 발생하면 즉시 이전 버전으로 롤백할 수 있어 위험을 최소화합니다.
  • 테스트 용이성: 실제 프로덕션 환경과 동일한 조건에서 새 버전을 테스트할 수 있습니다.

카나리 배포(Canary Deployment) 상세 설명 및 예제

카나리 배포는 새로운 소프트웨어 버전을 전체 사용자에게 배포하기 전에 소수의 사용자에게 먼저 배포하여 시스템의 안정성과 성능을 검증하는 전략입니다. 이를 통해 잠재적인 문제를 조기에 발견하고 수정할 수 있습니다.

https://hoehen-flug.tistory.com/53

기본 개념

  • 카나리 인스턴스: 새로운 버전이 배포되는 소수의 서버 또는 환경입니다.
  • 전체 인스턴스: 기존 버전이 배포되어 있는 대부분의 서버 또는 환경입니다.
  • 트래픽 비율 조정: 카나리 인스턴스로 보내는 트래픽의 비율을 점진적으로 증가시킵니다.

예제 시나리오

시나리오: 소셜 미디어 애플리케이션이 버전 2.0에서 버전 2.1로 업데이트될 예정입니다.

구분 시나리오
초기 상태
  • 전체 인스턴스: 버전 2.0이 운영 중.
  • 카나리 인스턴스: 미사용 상태.
새로운 버전 배포 준비
  • 카나리 인스턴스에 버전 2.1을 배포하고, 초기 테스트를 수행합니다.
카나리 배포 시작
  • 전체 사용자 중 일부(예: 5%)만 카나리 인스턴스(버전 2.1)로 트래픽을 전달합니다.
  • 나머지 사용자(95%)는 기존 전체 인스턴스(버전 2.0)를 사용합니다.
모니터링 및 검증
  • 카나리 인스턴스의 성능, 안정성, 오류 발생 여부 등을 모니터링합니다.
  • 새로운 버전(2.1)이 안정적이면 다음 단계로 진행합니다.
  • 만약 문제가 발생하면 카나리 배포를 중단하고, 기존 버전으로 롤백합니다.
트래픽 비율 증가
  • 카나리 인스턴스가 안정적임을 확인한 후, 카나리 인스턴스로 보내는 트래픽의 비율을 점진적으로 증가시킵니다.
  • 예: 10%, 25%, 50%, 75%, 100% 순으로 비율을 늘립니다.
전체 배포 완료
  • 모든 트래픽을 카나리 인스턴스로 전환하여 버전 2.1을 전체 인스턴스로 배포합니다.
  • 이제 모든 사용자가 버전 2.1을 사용하게 됩니다.

장점

  • 위험 최소화: 전체 사용자에게 배포하기 전에 소수 사용자로부터 피드백을 얻을 수 있어 문제 발생 시 영향을 최소화할 수 있습니다.
  • 신속한 롤백: 문제가 발생하면 빠르게 롤백하여 서비스 중단을 최소화할 수 있습니다.
  • 점진적 배포: 새로운 기능이나 변경사항을 점진적으로 배포하여 사용자 경험을 개선할 수 있습니다.
728x90
반응형