본문 바로가기

Kubernetes(k8s)/Deployment 모델의 종류

Deployment models

         1.1.        Deployment 정의

Deployment는 ReplicaSet의 상위 개념으로, Pod와 ReplicaSet에 대한 배포를

관리한다. 운영 중에 애플리케이션의 새 버전을 배포하거나 부하가 증가하면서

Pod를 추가하는 등 여러 가지 동작을 Deployment로 관리할 수 있다. 또한

Deployment는 배포에 대한 이력을 관리하는데 만약 배포한 새버전의 문제가 생긴

경우 Deployment를 통해 쉽게 이전 버전으로 롤백할 수 있다. 쿠버네티스 서비스를

운영하는 상황이라면 ReplicaSet만으로 운영하기 보다는 대부분 Deployment

단위로 Pod와 ReplicaSet을 관리하여 운영한다.

 

 

         1.2.        Big Bang

 

Big Bang은 업데이트 혹은 업그레이드를 애플리케이션 전체 혹은 주요 구성

요소를 한번에 바꾸는 방법이다. 이 방식은 한번에 여러 요소를 바꾸기 때문에 여러

문제가 생길 위험이 높아서 충분한 개발 및 테스트를 요구한다.

 또한 롤백에 많은 시간이 걸리고 수정도 쉽지않다. 이러한 특성 때문에 서비스의

중단 및 성능 문제가 큰 영향을 줄 수 있는 상업적으로 중요한 프로그램에는 잘

사용하지 않는다.

 

         1.3.        Blue-Green

Blue-Green 방식은 Blue(이전환경)와 Green(신규환경) 두 개의 프로덕션 환경이

함께 실행 된다. 처음에는 Blue만 트래픽을 수신하고 새로운 애플리케이션 코드는

사용자가 없는 Green환경에 배포된다. 배포 후 Green에서 설정, 기능, 성능 및 주요

상태 지표에 대한 테스트를 완료하면, Blue 환경에서 Green 환경으로 모든

트래픽은  라우팅한다.

만약 Green 환경에서 무언가 치명적인 오류가 생길 경우 다시 Blue 환경으로

라우팅하여, 다시 되돌릴 수 있다. 이 기술의 가장 큰 장점으로는 스위치가 거의

즉각적으로 되기에 DownTime이 없다. 하지만 갑작스러운 전환을 수행하면서

오류를 최소화를 위해 모든 트랜잭션과 셰션이 손실된다.

 

         1.4.        Rolling Release

 

Rolling 또는 Phased는 점진적, 단계적으로 릴리즈하는 방식으로 Bing Bang 또는

Blue-Green 보다 온라인, 웹 애플리케이션에 적합한 방법이다. 애플리케이션을

새로운 버전으로 단계적으로 교체한다. 업데이트된 소프트웨어가 포함된 하나의

추가 노드를 배포하고 시간이 지나면서 점차 더 많은 노드에 새 버전을 배포한다.

새 노드가 업데이트 버전을 사용하여 이전 코드의 모든 인스턴스를 단계적으로

제거할 때까지 이전 버전과 최신 버전이 함께 애플리케이션을 실행하게 된다.

자동크기 조정 및 Rolling 배포 오케스트레이션이 일반적으로 플랫폼에 내장되어

있기 때문에 최신 애플리케이션 인프라로 구현하기가 더 쉽다. 또한, 롤백에 도움이

되도록 최근 추가된 노드의 상태를 추적하여 오류가 발생한 경우 새로운 코드

배포를 계속할지 또는 마지막으로 설정된 코드로 롤백을 할지 결정할 수 있게

도움을 준다.

 

         1.5.        Canary

 

Canary는 Rolling과 같은 점진적, 단계적으로 릴리즈하는 방식이다. 제한된 수의

노드에 새 코드를 릴리즈하는 Rolling과 달리 새 코드를 전체 인프라에 릴리즈하고

모든 사람이 사용할 수 있도록 하기전에 사용자 세그먼트에 점진적으로 새 코드를

릴리즈하여 위험을 제어한다. 새 코드를 받은 사용자의 하위 집합은 Canary가

되고, 이 Canary는 면밀히 모니터링되어 새 코드의 상태 지표를 제공한다. 이는

모든 사람에게 새 코드를 롤백할지 아니면 그대로 릴리즈할지에 대한 결정을

하는데 도움을 준다.

Canary 방식은 트래픽를 50%이상을 새로운 Canary 버전으로 릴리즈하지 않는다.

무언가 잘못되면 사용자의 절반이 부정적인 경험을 할 수 있기 때문이다.

 

         1.6.        장점

 

Big Bang 빠른 마이그레이션, 일관성, 리소스 최적화
Blue-Green 가동 중지 시간 최소화, 손쉬운 롤백, 위험 감소
Rolling Release 가동 중지 시간 최소화, 손쉬운 롤백, 비용 효율적
Canary 위험 감소, 초기 피드백, 손쉬운 롤백