본문 바로가기
K8s/Core Concept

[K8s] 소프트웨어 배포 전략(Software Deployment Strategies)

by okms1017 2024. 11. 19.
728x90

✍ Posted by Immersive Builder  Seong

 

배포 전략

배포란 새로운 버전의 어플리케이션을 운영 환경에 릴리스하는 것을 의미합니다. 최근에는 마이크로 서비스 아키텍처를 기반으로 작은 단위의 서비스로 분리하면서 배포가 이전보다 짧은 주기로 빈번하게 이루어지고 있습니다. 이에 따라 기존 버전과 호환성을 유지하면서 서비스 중단 없이 새로운 버전을 배포하기 위한 여러가지 배포 전략들이 고안되었습니다. 

 

현재 사용하는 다양한 배포 전략은 아래와 같습니다. 

 

  • 재생성(Recreate)
  • 인플레이스 배포(In-place Deployment)
  • 롤링 업데이트(Rolling Update)
  • 블루/그린 배포(Blue/Green Deployment)
  • 카나리 배포(Canary Deployment)
  • A/B 테스팅(A/B Testing)
  • 섀도우 배포(Shadow Deployment)

 


재생성(Recreate)

기존 버전의 서비스를 중지하고 새로운 버전으로 배포하는 방법입니다. 새로운 버전의 서비스가 정상적으로 동작하기까지 다운타임이 발생하므로 운영 환경에서 사용하기가 어렵습니다. 보통 테스트 서버 또는 서비스가 중단되더라도 영향이 없는 서버에서 사용합니다. 

 

인플레이스 배포(In-place Deployment)

현재 운영 환경에서 변경 사항이 발생한 어플리케이션만 반영하는 방법입니다. 일반적으로 로드밸런서와 다수의 서버가 연결된 구성에서 서버를 하나씩 연결 해제하고 새로운 버전을 배포한 후 다시 연결하는 형식으로 이루어집니다. 배포 중에도 트래픽은 나머지 서버로 전달되므로 서비스에 영향이 없습니다. 

 

롤링 업데이트(Rolling Update)

새로운 버전을 점진적으로 배포하여 기존 버전을 교체하는 방법입니다. 대표적으로 쿠버네티스 디플로이먼트가 이에 해당합니다. 지속적인 배포로 가용성을 유지할 수 있고, 별도의 환경이 필요 없습니다. 그러나 배포 과정에서 새로운 버전과 기존 버전이 공존할 가능성이 있습니다. 

 

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

두 개의 환경(Blue/Green)을 유지하면서 새로운 버전을 그린 환경에 완전히 배포한 후 트래픽을 전환하는 방법입니다. 다운타임을 최소화할 수 있고, 새로운 버전에 이상이 발견되면 빠르게 롤백이 가능합니다. 그러나 운영 비용이 두 배로 발생하는 점은 감안해야 합니다. 

 

카나리 배포(Canary Deployment)

새로운 버전을 모두 배포하기 전에 일부 사용자 그룹에만 배포하고 해당 비율을 점진적으로 확장해 나가는 방법입니다. 실시간으로 문제를 발견하고 대응이 가능하며 문제가 발생하더라도 사용자의 일부만 영향을 받습니다. 트래픽을 조정해나가는 작업과 모니터링이 복잡해지는 부분을 고려해야 합니다. 

 

A/B 테스팅(A/B Testing)

카나리 배포의 연장선으로 사용자 그룹을 나누어 두 개의 버전(A/B)을 배포하고 테스트하여 최적의 버전으로 배포하는 방법입니다. 사용자 데이터를 기반으로 피드백을 수집할 수 있어서 새로운 기능이나 UI에 대한 반응 테스트에 적합합니다. 

 

섀도우 배포(Shadow Deployment)

새로운 버전을 백그라운드에서 실행하여 기존 버전과 동시에 요청을 처리하는 방법입니다. 실제 트래픽을 기반으로 테스트할 수 있으며 사용자에게 영향을 주지 않습니다. 단, 트래픽을 복제하는 과정에서 모니터링이 복잡해지고 리소스가 추가로 필요할 수 있습니다. 

 

 


[출처]

1) https://2cloud.io/blog/kubernetes-deployment-strategies

 

Kubernetes Deployment Strategies

Kubernetes offers several deployment strategies to manage the rollout and updates of applications running in a cluster. Recreate This strategy involves creating a new set of pods with the updated application version while deleting the old ones. It provides

2cloud.io

2) https://okms1017.tistory.com/54

 

[AEWS2] 7-2. EKS CI/CD - ArgoCD

✍ Posted by Immersive Builder Seong "문어발처럼 생긴 이놈은 데브옵스 세계에서 인기쟁이다. 생긴 건 이래뵈도 깊은 깃옵스의 철학을 담고있다." 1. Argo Project Argo 프로젝트는 다양한 쿠버네티스 리소스

okms1017.tistory.com

3) AWS Summits 2014, Continuous Integration and Deployment Best Practices on AWS

728x90

'K8s > Core Concept' 카테고리의 다른 글

[K8s] Liveness Probes 란?  (0) 2024.11.24
[K8s] Readiness Probes 란?  (0) 2024.11.23
[K8s] CoreDNS 란?  (0) 2024.11.16
[K8s] Helm 이란?  (1) 2024.11.14
[K8s] JSON Path  (0) 2024.11.13