skip to Main Content

아코디언에서 어플리케이션 배포 전략 – Canary 배포

아코디언에서는 기본적으로 2가지 배포 전략을 선택하여 앱을 배포할 수 있습니다.

– recreate : 기존의 서버를 모두 shutdown 한 후 새로운 서버를 생성하여 사용자 요청을 처리합니다.

– RollingUpdate : 롤링 배포는 새 버전의 서버를 만들어가면서 트래픽을 구 버전 서버에서 새 버전으로 점차적으로 옮겨가는 방식입니다.

​오늘은 recreate와 rollingupdate 외에 최근 많이 사용되고 있는 Canary 배포에 대해 설명 드리도록 하겠습니다.

Canary 배포란 새로운 버전의 앱을 운영 환경에 배포할 때, 일정 규모의 사용자들만 새로운 버전의 앱으로 트래픽을 받도록 하여 신규 앱의 문제점을 미리 파악한 후 전체 사용자의 요청을 받도록 하는 방법입니다.

이제 아코디언에서 Canary 배포하는 방법을 설명 드리도록 하겠습니다.

먼저 웹 어플리케이션 하나를 배포해 보도록 하겠습니다.

jpetstore라는 앱을 “canary.accordions.co.kr” 라는 도메인으로 배포를 한 후 서비스 호출을 해 보도록 하겠습니다.

그럼 이제 소스를 수정한 후 새로운 버전의 앱을 배포해 보도록 하겠습니다. 먼저 첫 화면인 index.html을 수정해 보도록 하겠습니다.

소스를 수정 후 새로운 앱을 배포해 보도록 하겠습니다.

앱 배포 후 “nginx.ingress.kubernetes.io.canary-weight”를 10으로 설정하면 새로운 앱으로 10%의 요청을 보내도록 설정하는 것입니다.

그럼 이제 사용자 요청을 해보도록 하겠습니다. jmeter를 사용해 부하를 발생해 보도록 하겠습니다.

부하를 발생한 후 아코디언의 APM상태를 보도록 하겠습니다.

거의 정확하게 90:10 비율로 요청이 분산되는 것을 확인해 보실 수 있습니다.

이제 신규 요청의 에러율이 발생하지 않는 것을 확인하였으므로, 새로운 어플리케이션으로 사용자 요청을 모두 받을 수 있도록 동적으로 변경해 보도록 하겠습니다.

nginx.ingress.kubernetes.io/canary-weight: 100으로 설정하면 새로운 어플리케이션으로 모든 요청이 이동합니다.

마지막으로 새로운 앱을 호출해 보도록 하겠습니다.

이렇게 새로운 어플리케이션을 배포하실 때 Canary 배포를 이용하시면 안정적으로 서비스 배포를 할 수 있을 뿐만 아니라 서비스 품질을 높일 수 있습니다.

Back To Top