본문 바로가기

4.개발 및 운영 환경

무중단 배포 전략 3가지

들어가기

마이크로 서비스 아키텍처가 되면서 작은 서버가 매우 많아졌다. 새로운 버전의 애플리케이션을 배포하기 위해서 기존에 자동 배포만으로는 한계가 있다. 기존에는 배포할 경우 서비스 중단 후에 배포했지만, 현재는 서비스 중단 없이 배포하고 있다. 그렇기에 배포에도 전략이 필요하다.

작성자: http://ospace.tistory.com/ (ospace114@empal.com)

배포 전략

현재 잘 알려진 무중단(zero-downtime) 배포 전략은 3가지이다.

  • Rolling
  • Blue-Green
  • Canary

Rolling 배포

서버 별로 하나씩 새로운 버전으로 교체하면서 점차적으로 배포한다. 즉, 운영과 배포가 동시에 진행된다. 배포할 때에 두가 형태로 가능하다. 기존 시스템 하나를 중단해서 배포하거나 신규 시스템 한개를 배포해서 교체할 수 있다. 시스템이 많은 경우 전자 방식에도 문제가 없지만, 시스템 개수가 적을 경우 후자 방식으로 사용하는게 유리하다.

Fig 01. Rolling 배포

장점

  • 배포에 필요한 리소스가 최소화된다.
  • 전체 사이트에 발생할 수 있는 문제를 최소화할 수 있다.

단점

  • 이전 버전과 혼용으로 호환성 문제가 발생한다.
  • 배포하는 과정 중에 기존 리소스에 영향을 준다.
  • 롤백도 동일한 방식으로 진행해야 한다.

Blue-Green 배포

Blue/Green은 현재 접속 중인 사이트를 Blue이고새로운 버전 사이트를 Green이다. 새로운 버전 애플리케이션을 Green 사이트에 배포를하고 한번에 모든 접속을 Blue에서 Green으로 변경한다. 이후에 문제가 없다고 판단되면 Blue 사이트는 제거하거나 다음 배포에 사용할 수 있다. 즉, Blue에서 Green으로 전환하는 방식이다.

Fig 02. Blue-Green 배포

장점

  • 이전 버전에 대한 호환성 문제가 없다.
  • 배포과정에 문제가 생겨도 운영 환경에는 영향이 없다.
  • 문제 발생시 롤백이 단순하다.

단점

  • 기존 운영 시스템 만큼의 리소스가 필요하다.

Canary 배포

카나리(Canary)는 광산에서 카나리아 새로 위험한 가스 누출을 확인했던 방법이다. 배포에서 카나리은 Blue/Green에 의해 배포된 상황에서 Blue 사이트에서 Green 사이트로 바로 바꾸면 전체 사이트에 예상치 못한 문제가 발생할 수 있기에 조금씩 접속을 변경하면서 위험을 감지하는 방식이다. 즉, 카나리아 새처럼 미리 조금씩 트래픽을 Green 사이트로 보내면서 문제가 있는지 확인한다. 최종적으로 모든 트래픽을 Green 사이트로 접속하면 배포 완료된다. 트래픽을 전환하는 비율은 자체적으로 정하면 된다. 중요한 것은 처음에는 조금씩 시작한다.

Fig 03. Canary 배포

장점

  • 이전 버전에 대한 호환성 문제가 없다.
  • 배포과정에 문제가 생겨도 운영 환경에는 영향이 없다
  • 전체 사이트에 발생할 수 있는 문제를 최소화할 수 있다.
  • 문제 발생시 롤백이 단순하다.
  • A/B 테스트가 가능하다.

단점

  • 기존 운영 시스템 만큼의 리소스가 Blue/Green보다 더 오래동안 필요하다.
  • 이전 버전과 혼용으로 호환성 문제가 발생한다.

마무리

현재까지 다룬 배포는 일반적인 배포과점에서 다루고 있다. 운영 중이 서비스는 정적 스토리지까지 있기 때문에 이 부분에 대한 배포와 롤백도 무시할 수 없다. 즉, 배포 안에서는 애플리케이션 뿐만 아니라 정적 데이터에 대한 부분도 고려해야 한다. 비용 측면에서 Rolling << Blue/Green < Canary 순으로 될 듯 한다. 복잡성 측면에서 보면 Blue/Green << Canary < Rolling이 되지 않을까 생각한다. 그리고 롤백 측면에서는 Blue/Green = Canary << Rolling이 될 듯하다.

  • 비용: Rolling << Blue/Green < Canary
  • 복잡성: Blue/Green << Canary < Rolling
  • 롤백: Blue/Green = Canary << Rolling

부족한 글이지만 여러분에게 도움이 되었으면 하세요. 모두 즐거운 코딩생활되세요. ospace.

참조

[1] 김지명, 무중단 배포 아키텍처(Zero Downtime Deployment) - 글로벌 서빗스 운영의 필수 요소, https://www.samsungsds.com/kr/insights/1256264_4627.html

[2] Jason Skowronski, Intro to deployment strategies: blue-green, canary, and more, https://dev.to/mostlyjason/intro-to-deployment-strategies-blue-green-canary-and-more-3a3

반응형

'4.개발 및 운영 환경' 카테고리의 다른 글

[nexus] Nexus로 Maven Repository 구성  (0) 2024.03.25
아파치에서 여러 URL를 톰캣으로 연동하기  (3) 2024.03.19
가상화 솔루션 Proxmox-VE 사용  (0) 2024.03.15
VisualVM 소개  (2) 2024.03.15
CTIP 소개  (0) 2023.12.28