본문 바로가기
뇌에 쑤셔넣기

배포 전략 - Rolling, Blue-Green, Canary 기법

by niliso 2023. 2. 14.

무중단 배포전략의 대표적인 세가지 방식인 Rolloing, Blue-Green, Canary 배포방식에 대해 정리한 글이다.

프롤로그

AWS 자격증 공부하다가 배포 전략들이 헷갈려서 시작한 페이지로, 각 배포 전략이 어떤방식으로 진행되는지 정리하려고 한다.

이런게 참 휘발성이 강하다.

Rolling, Blue/Green, Canary 기법 들어본지 3년은 되었을텐데 다시 볼때마다 헷갈려서 찾아보고 이게 이거고 저게 저거였지 하는데 돌아서면 또 잊어버린다. 늙었나봐.

글로 정리하면 조금이라도 오래가겠지 제발요 🙏🏻

 

무중단 배포란

모든게 빠르게 변하는 시대에 맞춰 빠른 제품 출시와 빠른 피드백을 통한 빈번한 배포가 모던 애플리케이션의 대세이다. 

따라서 개발 결과물을 고객에게 제공하기 위해서는 서버에 빈번하게 배포해야하고 이 때 다운타임 없이 진행해 사용자의 애플리케이션 이용에 제한을 없앨 수 있는것이 무중단 배포이다.

무중단 배포의 핵심은 로드밸런서(Load Balancer)를 통해 연결된 두 개 이상의 (서로 다른 IP, 포트를 가진) 인스턴스에 트래픽을 제어해 배포하는 것입니다. 배포 작업이 서비스에 영향을 주지 않도록 하기 위해 고객의 이용량에 따라 인스턴스는 물론 로드밸런서도 다중화를 고려해야 합니다. 즉, 무중단 배포를 하기 위해서는 고가용성의 시스템 인프라가 구성되어 있어야 합니다.

이러한 무중단 배포에는 몇가지 방식들이 있는데, Rolling, Blue-Green, Canary 기법에 대해서 알아보려고 한다.

롤링 배포(Rolling Deployment)

무중단 배포에서 가장 기본적인 방식이다.

서비스중인 인스턴스 하나씩 로드밸런서에서 라우팅하지 않도록 한 뒤 새 버전으로 라우팅하도록 하고 이걸 반복해서 모든 인스턴스를 새 버전으로 교체하는 방식이다.

새 버전이 이전 버전을 하나씩 대체하면서 배포기간 동안 공존하게되고, 이 프로세스를 통해 호환되지 않는 새구성요소를 쉽게 롤백할 수 있다.

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

운영 환경에 동일한 인스턴스를 구성한 후 이전버전(블루)과 새로운 버전(그린)으로 분할한 후 로드밸런서를 사용하여 트래픽을 새로운 버전(그린)으로 트래픽을 전달하도록 한다. 새로운 버전을 배포하는 동안 이전 버전에 영향을 주지 않고, 실제 서비스 환경에서 새로운 버전을 미리 테스트 할 수 있다.

이전버전과 새로운 버전이 공존하지 않기때문에 호환성 문제는 없으나, 동일한 인스턴스를 구성하기 위해 시스템 자원이 두배로 필요하기 때문에 더 많은 비용이 발생한다.

이러한 방식으로 애플리케이션 환경을 설정하면 다른 이점도 가져갈 수 있는데 예를 들어 그린 환경은 애플리케이션이 과부하 상태이거나 재해 복구 활동의 일부인 경우 즉각적인 상시 대기 역할을 할 수도 있다.

카나리 배포(Canary Deployment)

블루그린배포와 유사하지만 약간 다르게 배포가 완료되면 일부 사용자를 신규 버전으로 라우팅하는 방식이다. 신규버전의 제공 범위를 늘려가면서 나머지 배포를 완료한다.

실제 운영환경에서 미리 테스트한다는 점이 블루그린 배포와 유사하고 단계적인 전환 방식을 통해서 오류 발생시 영향을 최소화 하고 상황에 따라 트래픽 양을 늘리거나 롤백할 수 있다.

 

[참고]

https://circleci.com/blog/canary-vs-blue-green-downtime/?utm_source=google&utm_medium=sem&utm_campaign=sem-google-dg--japac-en-dsa-maxConv-auth-brand&utm_term=g_-_c__dsa_&utm_content=&gclid=Cj0KCQiA8t2eBhDeARIsAAVEga0M3UBI5guP7m6gjLE3BDkL-HGQFSpvspNJVR3Tmx8XqPrkze10mPoaAmxREALw_wcB 

https://www.harness.io/blog/blue-green-canary-deployment-strategies

https://www.samsungsds.com/kr/insights/1256264_4627.html

'뇌에 쑤셔넣기' 카테고리의 다른 글

CORS  (1) 2023.01.23
[SpringBoot]SpringBoot에서 Filter와 Interceptor 사용하기  (0) 2023.01.02

댓글