1일 1CS(Computer Science)

무중단 배포가 무엇인가요?

표자 2025. 7. 14. 09:28

무중단 배포(Zero-Downtime Deployment)란? 🚀

무중단 배포는 서비스가 중단되지 않으면서 새로운 버전의 애플리케이션을 배포하는 방법입니다.

즉, 사용자는 배포 중에도 끊김 없이 서비스를 이용할 수 있습니다.
이런 배포 방식은 사용자 경험을 해치지 않고, 빠르게 기능을 개선하거나 버그를 수정할 수 있다는 큰 장점이 있습니다.

 

대표적인 무중단 배포 방식과 예시

1. 롤링 배포(Rolling Deployment) 🔄

  • 개념: 서버 여러 대 중 한 대씩 순차적으로 새로운 버전으로 교체합니다.
  • 특징:
    • 한 번에 한 서버만 업데이트하므로 다운타임이 없습니다.
    • 배포 중에는 두 버전이 공존하므로 하위 호환성에 신경 써야 합니다.
    • 새로운 서버를 추가로 만들 필요가 없어 비용 부담이 적습니다.
    • 배포 중 업데이트되는 서버에는 일시적으로 트래픽이 가지 않으므로, 남은 서버로 트래픽이 몰릴 수 있습니다.
  • 예시:
    5대의 서버가 있다면, 1번 서버부터 순서대로 업데이트합니다. 업데이트가 끝난 서버는 다시 서비스에 합류하고, 다음 서버가 업데이트를 시작합니다.
  • 추가 정보:
    롤백이 필요할 때는 이미 업데이트된 서버를 다시 이전 버전으로 하나씩 되돌려야 하므로, 롤백 속도가 느릴 수 있습니다.

2. 블루/그린 배포(Blue/Green Deployment) 🟦🟩

  • 개념: 기존(블루) 서버와 동일한 사양의 새로운(그린) 서버를 준비해, 새 버전을 배포한 뒤 트래픽을 한 번에 전환합니다.
  • 특징:
    • 트래픽 전환 전까지 기존 서비스는 그대로 유지됩니다.
    • 롤백이 매우 빠릅니다(트래픽만 다시 블루로 돌리면 됨).
    • 새로운 서버를 미리 준비해야 하므로 인프라 비용이 추가됩니다.
  • 예시:
    기존 서버(블루)에서 서비스 중, 새로운 서버(그린)에 새 버전을 배포합니다. 테스트가 끝나면 모든 트래픽을 그린 서버로 전환합니다.
  • 추가 정보:
    대규모 업데이트나 중요한 시스템 변경 시, 안전하게 배포할 수 있습니다.

3. 카나리 배포(Canary Deployment) 🐤

  • 개념: 소수의 서버에만 새 버전을 먼저 배포해 일부 트래픽만 전달하고, 문제가 없으면 점진적으로 전체로 확장합니다.
  • 특징:
    • 오류나 성능 저하를 초기에 감지할 수 있습니다.
    • A/B 테스트, 신규 기능 실험에 적합합니다.
    • 롤링 배포와 마찬가지로 두 버전이 공존하므로 하위 호환성에 신경 써야 합니다.
  • 예시:
    전체 트래픽 중 10%만 새 버전 서버로 보내고, 문제가 없으면 30%, 50%로 점차 늘려 나중엔 100%로 전환합니다.
  • 추가 정보:
    자동화된 모니터링과 함께 사용하면, 이상 징후를 빠르게 감지해 롤백할 수 있습니다.

어떤 상황에 어떤 배포 전략을 사용할까? 🤔


인프라 비용 최소화 롤링 배포 추가 서버 필요 없음, 순차적 업데이트
대규모 시스템 변경, 빠른 롤백 필요 블루/그린 배포 트래픽 전환만으로 빠른 롤백 가능
신기능 실험, 오류율/성능 확인 카나리 배포 일부 트래픽만 새 버전, 문제 발생 시 영향 최소화
A/B 테스트 카나리 배포 다양한 버전의 동시 운영 및 통계적 분석 용이
 

알면 좋은 추가 정보 💡

  • 오케스트레이션 도구: Kubernetes, AWS ECS 같은 오케스트레이션 도구를 활용하면 롤링·블루/그린·카나리 배포를 자동화할 수 있습니다.
  • 모니터링: 무중단 배포 시에는 실시간 모니터링과 알람 시스템이 중요합니다. 오류 발생 시 즉시 롤백을 할 수 있어야 합니다.
  • 하위 호환성: 두 버전이 공존하는 시점이 있기 때문에, DB 스키마 변경 등은 신중하게 설계해야 합니다.

< 면접 답변 >

무중단 배포란 서비스 중단 없이 새로운 버전을 배포하는 방식입니다. 대표적으로 롤링 배포, 블루/그린 배포, 카나리 배포가 있으며, 각각 순차적 업데이트, 트래픽 일괄 전환, 일부 트래픽만 분산 적용 등 상황에 맞게 선택합니다.
핵심은 사용자 경험을 해치지 않고, 안전하게 배포와 롤백이 가능하도록 하는 것입니다.

 


 

무중단 배포가 무엇인가요?

백엔드와 관련된 질문이에요.

무중단 배포(Zero-Downtime Deployment) 는 서비스에 다운 타임이 발생하지 않으면서, 새로운 버전의 애플리케이션을 서버에 배포하는 것을 의미합니다. 무중단 배포 패턴에는 대표적으로 순차적으로 배포하는 롤링 배포, 전체 서버를 통째로 바꾸는 블루/그린 배포, 트래픽을 순차적으로 이동시키는 카나리 배포가 존재합니다.

각 배포 방식을 설명해 주시겠어요? 🤓

  • 롤링 배포(Roling Deployment) 는 서버를 한 대씩 순차적으로 업데이트하는 가장 기본적인 방식입니다. 특정 시점에는 두 가지 버전이 공존하기 때문에 새로운 버전은 기존 버전 기능을 지원하는 등 하위 호환성(Backward Compatibility) 에 신경을 써야 합니다. 롤링 배포는 새로운 버전을 배포하기 위해서 새로운 서버를 생성하지 않습니다. 배포가 진행 중인 서버는 요청 처리가 불가하기 때문에 다른 서버에 전달되는 트래픽이 증가할 수 있습니다.
  • 블루/그린 배포(Blue/Green Deployment) 는 기존의 서버와 동일한 스펙과 사이즈의 서버를 미리 준비하고, 신규 버전을 배포한 이후에 기존 서버는 폐기하고 트래픽을 신규 버전의 서버로 이전 시키는 방법입니다. 블루/그린 배포의 경우에는 기존의 버전을 가지고 있기(폐기 이전이라 가정) 때문에 롤백을 빠르게 수행할 수 있습니다. 하지만, 배포 과정에서 새로운 서버를 미리 준비해야 한다는 점에서 비용이 발생할 수 있습니다.
  • 카나리 배포(Canary Deployment) 는 기존 버전의 서버와 새로운 버전의 서버들을 구성한 이후, 전체 트래픽의 퍼센티지로 관리하는 방법입니다. 예를 들어 트래픽을 기존 서버 70퍼, 신규 서버 30퍼로 나누고 점점 신규 서버로 트래픽을 보내어 나중엔 신규 서버가 100퍼센트가 되어 배포가 완료됩니다. 롤링 배포처럼 특정 시점에 다른 두 버전의 서버가 공존하기 때문에 하위 호환성을 신경 써야 합니다.

어떤 상황에 각 배포 전략을 선택할 수 있을까요? 🤔

  • 배포를 위해 새로운 서버를 생성하는 비용을 감수하기 어려운 경우, 롤링 배포를 선택할 수 있습니다. 또한, 서버 API 구간에서 버그가 생겼을 때 이것을 수정하고 개발 서버에서 충분히 테스트한 이후 상용에 올려보고 싶을 때 롤링 배포가 유용할 수 있습니다. 서버 10대 중 1대만 버그를 수정해서 배포하고 디버그 레벨로 로깅을 하면서 수정한 버그가 해결됐는지 확인합니다. 만약 실제 상용 서버에서도 문제가 없다면 1대씩 순차적으로 롤링 배포를 진행합니다.
  • 대규모 업데이트가 있을 때는 블루/그린 배포를 선택할 수 있습니다. 예를 들어 전면적으로 기술 부채가 해결되거나 중요한 변화가 있을 때, 비용을 감수하고 블루/그린 배포를 채택하는 것이 유용할 수 있습니다.
  • 카나리 배포는 통계적으로 무언가 확인하고 싶은 것 (오류율, 성능)이 있을 때, 혹은 A/B 테스트를 하고 싶을 때 채택할 수 있습니다.
728x90