IT STUDY LOG

[지속적 배포] 02. 배포 전략 본문

devops bootcamp 4/클라우드 서비스 운영

[지속적 배포] 02. 배포 전략

roheerumi 2023. 4. 24. 09:36

# 학습 목표

  • 배포 자동화의 정의와 이점에 대해 설명할 수 있다.
  • 배포 파이프라인이 무엇인지 정의할 수 있다.
  • 파이프라인을 구성하는 단계(Stages)와 작업(Actions)에 대해 설명할 수 있다.
  • AWS 개발자 도구를 활용하여 파이프라인을 구축할 수 있다.
  • 배포 자동화 파이프라인 구축 과정에서 문제가 발생할 경우, log 파일과 공식 문서를 통해 해결할 수 있다.
  • 다양한 배포 전략 (롤링, 블루/그린, 카나리)을 이해할 수 있다.

 


# 학습 내용

1.  블루/그린 배포

블루 / 그린 배포란?

- Blue-Green 배포는 애플리케이션 또는 마이크로서비스의 이전 버전에 있던 사용자 트래픽을 이전 버전과 거의 동일한 새 버전으로 점진적으로 이전하는 애플리케이션 릴리스 모델

 

블루 / 그린 배포가 필요한 이유

- 배포를 자동화할 때 겪는 어려움 중 하나는 소프트웨어를 최종 테스트 단계 -> 실제 프로덕션 단계로 전환하는 컷오버 자체

- 일반적으로 다운 타임을 최소화하려면 이 작업을 신속하게 수행해야 함

- 블루 / 그린 배포는 가능한 동일한 두 가지 프로덕션 환경을 확보함으로써 이를 실현 가능

  1. 컷오버(cutover) : 기존에 운영되던 환경을 중단시키고, 새로 구축된 환경으로 오픈하는 것
  2. 다운타임(Downtime) : 시스템을 이용할 수 없는 시간

 

블루 / 그린 배포의 방식

출처 : 코드스테이츠 데브옵스 부트캠프 과정

blue : 실제 운영 중인 환경으로 가정

  1. 새로운 버전을 릴리스 하고 싶은 경우 green 환경에서 테스트를 진행
  2. 테스트가 정상 완료 된다면 blue 환경에서 들어가던 모든 요청을 green 환경으로 변경
  3. 이후 blue는 이전 green 환경의 역할을 가져감 + green이 잘 동작하지 않을 때 사용할 수 있는 백업 서버로의 역할도 수행 가능

 

블루 / 그린 배포가 해결해주는 기존 배포의 문제점

기존 배포 방식 블루 / 그린 배포 방식
- 새로운 버전의 애플리케이션을 배포하기 위해서는 이전 버전을 중단하고 새로운 버전으로 업데이트해야 해야함
- 이 과정에서 downtime이 발생할 가능성 존재
- 블루 / 그린 배포 방식에서는 새로운 버전의 애플리케이션을 새로운 환경(blue)에 배포하고, 이전 버전의 애플리케이션을 유지한 채로 그대로 두는 녹색 환경(green)을 준비
- 블루 환경에서 새로운 버전의 애플리케이션을 안정적으로 배포하고 검증한 후, 녹색 환경으로 트래픽을 전환하여 새로운 버전으로의 업데이트를 완료
∴  downtime 없이 서비스를 계속 제공
- 블루 / 그린 배포 방식은 롤백(이전 버전으로 복원)을 쉽게 할 수 있는 장점
- 배포 중 문제가 발생하면 빠르게 이전 버전으로 롤백할 수 있으므로, downtime을 최소화하면서도 안정적인 배포 가능

 

블루 / 그린 배포의 원칙

- 두 환경은 다르지만, 최대한 동일해야 함

 > 경우에 따라 하드웨어의 다른 부분일 수도 있고 동일한(또는 다른) 하드웨어에서 실행되는 다른 가상 머신일 수도 있음

 > 또한 두 슬라이스에 대해 별도의 IP 주소를 사용하여 별도의 영역으로 분할된 단일 운영 환경이 될 수도 있음

- 무중단 배포여야 함

- 한 시점에 하나의 버전만 액티브 상태여야 하며, 롤백이 쉬워야 함

 

블루 / 그린 배포의 장점

- 동일하게 구성된 환경을 하나 더 추가함으로써 서비스의 가동 중단 시기를 최소화 가능

- 서비스되고 있는 환경(블루 혹은 그린)에 문제가 발생한 경우 백업 서버로 사용 가능

- 다음 배포를 위한 최종 테스트 단계의 스테이징 환경으로 사용 가능

 > 스테이징 환경 : 운영 환경과 거의 동일한 환경을 만들어 놓고, 운영 환경으로 이전하기 전에 여러 가지 비 기능적인 부분 ( 보안, 성능, 장애 등)을 검증하는 환경을 뜻함

 

2. 롤링 배포

롤링 배포란?

- 롤링 배포는 애플리케이션이 실행 중인 인프라를 완전히 교체하여 이전 버전의 애플리케이션을 새로운 버전의 애플리케이션으로 서서히 교체하는 배포 전략

- 롤링 배포는 가용 자원이 제한적일 경우에 사용

 

롤링 배포의 방식

출처 : 코드스테이츠 데브옵스 부트캠프 과정

- 사용중인 인스턴스(v1) 내에서 새 버전(v2)를 점진적으로 교체

 

롤링 배포의 장점

- 업그레이드 과정에서 문제가 발견되면 일반적으로 롤링 배포를 "reverse"로 이동하여 새 버전의 앱을 제거하고 이전 버전을 다시 시작 가능

- Downtime이 없음

 

롤링 배포의 단점

- 배포가 진행되는 동안 구버전과 신버전이 공존하기 때문에 호환성 문제가 발생 가능

- 배포 중인 서버는 서비스가 중단된 상태이기 때문에 서버 부하량을 체크하며 배포를 진행할 필요성

 

3. 카나리 배포

카나리 배포란?

- 카나리 배포는 전체 인프라에 새로운 소프트웨어 버전을 릴리스하여 모든 사용자가 사용할 수 있도록 하기 전에 변경 사항을 천천히 릴리스함으로써 프로덕션 환경에 새로운 소프트웨어 버전을 도입하는 위험을 줄이는 기술

- 블루 / 그린 배포와 유사하게 사용자가 라우팅되지 않는 인프라의 하위 집합에 새 버전의 소프트웨어를 배포하는 것으로 시작

- Canary Release는 잠재적 문제를 초기에 발견하여 전체 운영환경이나 사용자에게 영향을 미치는 것을 방지

 

카나리 배포와 블루 / 그린 배포의 차이

카나리 배포 블루 / 그린 배포
- 새로운 버전의 소프트웨어를 일부 사용자 또는 일부 트래픽에 대해서만 배포하여 테스트하는 것
(ex) 예를 들어, 전체 사용자 중 5%의 사용자에게 새로운 버전의 소프트웨어를 제공하고, 나머지 95%의 사용자는 이전 버전을 계속 사용하도록 유지합니다. 이후에는 새로운 버전이 안정적으로 작동한다는 확인을 받으면, 나머지 사용자에게도 새로운 버전을 배포
- 새로운 버전의 소프트웨어를 별도의 환경에 배포하고, 그 환경과 기존 환경 사이에서 트래픽을 전환하여, 새로운 버전이 잘 동작하는지 확인
(ex)  블루 / 그린 배포에서는 현재 운영 중인 환경인 녹색 환경에서 새로운 버전의 소프트웨어가 배포된 파란색 환경으로 트래픽을 점진적으로 전환하며, 새로운 버전이 잘 동작하는지 검증한 후에 모든 트래픽이 파란색 환경으로 전환
- 특정 사용자나 트래픽을 대상으로 배포를 점진적으로 진행 - 별도의 환경에서 배포를 진행하고, 전환하는 방식이 다름

 

카나리 배포의 방식

출처 : 코드스테이츠 데브옵스 부트캠프 과정

- 특정 서버에만 배포를 진행하여 오류 여부를 확인하고 문제가 없다면 모든 서버에 새로운 버전을 단계적으로 배포하는 방식

 

카나리 배포의 장점

- 문제 발생 시 먼저 배포가 진행되었던 서버만 롤백하면 됨으로 비교적 롤백이 간편

- 운영 환경에서 신규버전을 테스트 가능

- 부하를 서서히 증가시키며 신규 버전이 운영 환경에서 어떠한 반응을 보이는지 모니터링하고 수치를 측정 가능

- 특정 서버로 먼저 배포를 진행하기 때문에 문제 발생 시 리스크가 비교적 적음

 

Comments