배포 전략

김동현·2024년 3월 2일

Study

목록 보기
1/8

이슈

스터디 2회차 시작까지 롤링, 블루/그린 배포 전략에 대해 선택해 가야 했다.
카나리 배포 전략은 스터디 시 조금 어렵다고 판단을 해 블루 그린이나 롤링 배포 전략 둘 중에 하나를 선택하기로 했다 🤔
정리부터 해보자!

인플레이스 배포

사용중인 환경에 새로운 버전의 변경 사항이 포함된 어플리케이션만 반영하는 방식이다.
CodeDeploy가 이런 방법을 사용하는 데 배포 그룹의 인스턴스를 일시 정지 한 뒤 최신 상태로 반영이 되면 새 버전의 앱을 실행하는 방식이다.

In-Place Deployments의 aws 인플레이스 배포 전략을 보면 인프로 구성 요소를 교체하지 않고 에플리케이션 버전을 업데이트하는 전략이라고 설명하고 있다.
각 컴퓨팅 리소스에서 이전 버전을 중지하고 최신 애플리케이션을 설치한 후 새 애플리케이션을 시작하고 검증하는 절차를 거친다!

이런 역할을 해주는 것이 CodeDeploy Agent이다.
CodeDeploy Agent 소프트웨어는 CodeDeploy에 배포할 수 있도록 도와 주는 소프트웨어이다.
CodeDeploy Agent를 인스턴스에 설치하고 구성하면 설치되 인스턴스를 Code Deploy에 활용할 수 있게 된다!

CodeDeploy는 블루/그린 배포 방식도 지원한다

사내에서 Code Deploy In-Place를 사용하고 있어 함께 정리해 보았다. :)

롤링

롤링 배포는 기본 인프라를 새로 배포할 버전으로 대체하는 배포 전략이다.
10대의 서버가 있고 모두 버전1을 실행하고 있을 때 롤링 배포를 시작하면 코드 버전 2를 한 서버씩 배포하며 적용해 나가는 것이다.

⛔️ 점진적으로 배포되기 때문에, 새로운 버전이 배포 되는 시점 동안 구버전과 신버전이 동시에 서비스되게 된다.
즉, 새로운 버전은 이전 버전과 호환 되어야 한다!
⛔️ 서버 수의 제약이 있을 경우 유용할 수 있지만, 배포 중인 인스턴스의 수가 줄어들기 때문에 가용성 측면을 고려해야 한다.

  1. 배포할 서버를 선택한다.
  2. 로드 밸런서에서 트래픽을 제거하며 들어오는 트패픽을 중지한다.
  3. 기존 요청이 완료될 때까지 대기한다.
  4. 최신 코드를 가져와 새롭게 로드한다. << 인프라를 교체할 경우 서버를 삭제하고 새 서버에 반영한다.
  5. 로드 밸런서를 서버에 연결한다.

N개의 서버를 동시에 롤링하기
한 번에 하나의 서버만 배포하는 것이 아니라 N개의 서버를 동시에 변경할 수 있다.
이러면 전체 배포를더 빠르게 완료할 수 있지만, 가용성에 영향을 미칠 수 있기에 적절한 N을 정하는 것이 주요하다!

블루 그린

블루 그린 배포에서는 블루 서버그린 서버 두 개의 서버가 유지된다.
배포 되는 시점에는 블루 서버만 요청을 처리하게 된다. 이 때 그린 서버는 프라이빗 네트워크 에서한 액세스 할 수 있도록 되어 있고, 변경 사항이 그린 서버에 반영이 되면 프라이빗 네트워크를 통해 테스트 한 후 변경 사항이 제대로 작동하는 지 확인 하게 된다. 확인을 마친 후 그린 서버를 블루 서버로 대체하는 방식이다.

History
Dan North와 Jez Humble이 2005년 쯤에 오라클 웹 로직 서버를 실행하던 중 테스트 환경과 운영 환경 간의 차이를 발견했다!
안전한 배포를 위해 새로운 어플리케이션 버전을 라이브 서버와 함께 배포하기로 결정하게 되었다.
구 버전과 신 버전을 함께 띄어 놓음으로서 철저한 테스트와 문제 발생 시 쉽게 롤백할 수 있다는 장점을 확인하게 되었다!
이 떄 이름을 A, B와 같이 두려고 했지만, 계층 구조로 인식 되는 것을 피하기 위해 파란색, 녹색, 주황색, 노란색과 같은 색을 사용하기로 했다
하지만! 구 버전, 신 버전 두 개의 색상만 필요했기에 Blue, Green만 사용하기로 했다고 한다. 😁
2010에 발간된 Countinous Delivery 책을 출판하며 일반적인 용어가 되었다고 한다!
출처

✅ Blue, Green은 그저 색상일 뿐이다.
구 <- Blue 신 <- Green이 될 수도 있고
구 <- Green 신 <- Blue로 명명 될 수도 있다 :)

장/단점

롤링 배포 전략블루 그린 배포 전략
장점업데이트 중간에 상태 확인을 지속적으로 할 수 있다.즉각 배포
서버 자원의 효율성안정성
단점속도추가적인 인프라 비용
호환성(두 버전이 공존하는 시점 존재)데이터 베이스 관리(일시적으로 DB Connection 높아짐)
서비스 처리 용량(가용성 이슈)새로운 환경에 대한 추가적인 테스트

참고자료

profile
달려보자

0개의 댓글