IT STUDY LOG
[지속적 배포] 02. 배포 전략 본문
# 학습 목표
- 배포 자동화의 정의와 이점에 대해 설명할 수 있다.
- 배포 파이프라인이 무엇인지 정의할 수 있다.
- 파이프라인을 구성하는 단계(Stages)와 작업(Actions)에 대해 설명할 수 있다.
- AWS 개발자 도구를 활용하여 파이프라인을 구축할 수 있다.
- 배포 자동화 파이프라인 구축 과정에서 문제가 발생할 경우, log 파일과 공식 문서를 통해 해결할 수 있다.
- 다양한 배포 전략 (롤링, 블루/그린, 카나리)을 이해할 수 있다.
# 학습 내용
1. 블루/그린 배포
블루 / 그린 배포란?
- Blue-Green 배포는 애플리케이션 또는 마이크로서비스의 이전 버전에 있던 사용자 트래픽을 이전 버전과 거의 동일한 새 버전으로 점진적으로 이전하는 애플리케이션 릴리스 모델
블루 / 그린 배포가 필요한 이유
- 배포를 자동화할 때 겪는 어려움 중 하나는 소프트웨어를 최종 테스트 단계 -> 실제 프로덕션 단계로 전환하는 컷오버 자체
- 일반적으로 다운 타임을 최소화하려면 이 작업을 신속하게 수행해야 함
- 블루 / 그린 배포는 가능한 동일한 두 가지 프로덕션 환경을 확보함으로써 이를 실현 가능
- 컷오버(cutover) : 기존에 운영되던 환경을 중단시키고, 새로 구축된 환경으로 오픈하는 것
- 다운타임(Downtime) : 시스템을 이용할 수 없는 시간
블루 / 그린 배포의 방식
blue : 실제 운영 중인 환경으로 가정
- 새로운 버전을 릴리스 하고 싶은 경우 green 환경에서 테스트를 진행
- 테스트가 정상 완료 된다면 blue 환경에서 들어가던 모든 요청을 green 환경으로 변경
- 이후 blue는 이전 green 환경의 역할을 가져감 + green이 잘 동작하지 않을 때 사용할 수 있는 백업 서버로의 역할도 수행 가능
블루 / 그린 배포가 해결해주는 기존 배포의 문제점
기존 배포 방식 | 블루 / 그린 배포 방식 |
- 새로운 버전의 애플리케이션을 배포하기 위해서는 이전 버전을 중단하고 새로운 버전으로 업데이트해야 해야함 - 이 과정에서 downtime이 발생할 가능성 존재 |
- 블루 / 그린 배포 방식에서는 새로운 버전의 애플리케이션을 새로운 환경(blue)에 배포하고, 이전 버전의 애플리케이션을 유지한 채로 그대로 두는 녹색 환경(green)을 준비 - 블루 환경에서 새로운 버전의 애플리케이션을 안정적으로 배포하고 검증한 후, 녹색 환경으로 트래픽을 전환하여 새로운 버전으로의 업데이트를 완료 ∴ downtime 없이 서비스를 계속 제공 - 블루 / 그린 배포 방식은 롤백(이전 버전으로 복원)을 쉽게 할 수 있는 장점 - 배포 중 문제가 발생하면 빠르게 이전 버전으로 롤백할 수 있으므로, downtime을 최소화하면서도 안정적인 배포 가능 |
블루 / 그린 배포의 원칙
- 두 환경은 다르지만, 최대한 동일해야 함
> 경우에 따라 하드웨어의 다른 부분일 수도 있고 동일한(또는 다른) 하드웨어에서 실행되는 다른 가상 머신일 수도 있음
> 또한 두 슬라이스에 대해 별도의 IP 주소를 사용하여 별도의 영역으로 분할된 단일 운영 환경이 될 수도 있음
- 무중단 배포여야 함
- 한 시점에 하나의 버전만 액티브 상태여야 하며, 롤백이 쉬워야 함
블루 / 그린 배포의 장점
- 동일하게 구성된 환경을 하나 더 추가함으로써 서비스의 가동 중단 시기를 최소화 가능
- 서비스되고 있는 환경(블루 혹은 그린)에 문제가 발생한 경우 백업 서버로 사용 가능
- 다음 배포를 위한 최종 테스트 단계의 스테이징 환경으로 사용 가능
> 스테이징 환경 : 운영 환경과 거의 동일한 환경을 만들어 놓고, 운영 환경으로 이전하기 전에 여러 가지 비 기능적인 부분 ( 보안, 성능, 장애 등)을 검증하는 환경을 뜻함
2. 롤링 배포
롤링 배포란?
- 롤링 배포는 애플리케이션이 실행 중인 인프라를 완전히 교체하여 이전 버전의 애플리케이션을 새로운 버전의 애플리케이션으로 서서히 교체하는 배포 전략
- 롤링 배포는 가용 자원이 제한적일 경우에 사용
롤링 배포의 방식
- 사용중인 인스턴스(v1) 내에서 새 버전(v2)를 점진적으로 교체
롤링 배포의 장점
- 업그레이드 과정에서 문제가 발견되면 일반적으로 롤링 배포를 "reverse"로 이동하여 새 버전의 앱을 제거하고 이전 버전을 다시 시작 가능
- Downtime이 없음
롤링 배포의 단점
- 배포가 진행되는 동안 구버전과 신버전이 공존하기 때문에 호환성 문제가 발생 가능
- 배포 중인 서버는 서비스가 중단된 상태이기 때문에 서버 부하량을 체크하며 배포를 진행할 필요성
3. 카나리 배포
카나리 배포란?
- 카나리 배포는 전체 인프라에 새로운 소프트웨어 버전을 릴리스하여 모든 사용자가 사용할 수 있도록 하기 전에 변경 사항을 천천히 릴리스함으로써 프로덕션 환경에 새로운 소프트웨어 버전을 도입하는 위험을 줄이는 기술
- 블루 / 그린 배포와 유사하게 사용자가 라우팅되지 않는 인프라의 하위 집합에 새 버전의 소프트웨어를 배포하는 것으로 시작
- Canary Release는 잠재적 문제를 초기에 발견하여 전체 운영환경이나 사용자에게 영향을 미치는 것을 방지
카나리 배포와 블루 / 그린 배포의 차이
카나리 배포 | 블루 / 그린 배포 |
- 새로운 버전의 소프트웨어를 일부 사용자 또는 일부 트래픽에 대해서만 배포하여 테스트하는 것 (ex) 예를 들어, 전체 사용자 중 5%의 사용자에게 새로운 버전의 소프트웨어를 제공하고, 나머지 95%의 사용자는 이전 버전을 계속 사용하도록 유지합니다. 이후에는 새로운 버전이 안정적으로 작동한다는 확인을 받으면, 나머지 사용자에게도 새로운 버전을 배포 |
- 새로운 버전의 소프트웨어를 별도의 환경에 배포하고, 그 환경과 기존 환경 사이에서 트래픽을 전환하여, 새로운 버전이 잘 동작하는지 확인 (ex) 블루 / 그린 배포에서는 현재 운영 중인 환경인 녹색 환경에서 새로운 버전의 소프트웨어가 배포된 파란색 환경으로 트래픽을 점진적으로 전환하며, 새로운 버전이 잘 동작하는지 검증한 후에 모든 트래픽이 파란색 환경으로 전환 |
- 특정 사용자나 트래픽을 대상으로 배포를 점진적으로 진행 | - 별도의 환경에서 배포를 진행하고, 전환하는 방식이 다름 |
카나리 배포의 방식
- 특정 서버에만 배포를 진행하여 오류 여부를 확인하고 문제가 없다면 모든 서버에 새로운 버전을 단계적으로 배포하는 방식
카나리 배포의 장점
- 문제 발생 시 먼저 배포가 진행되었던 서버만 롤백하면 됨으로 비교적 롤백이 간편
- 운영 환경에서 신규버전을 테스트 가능
- 부하를 서서히 증가시키며 신규 버전이 운영 환경에서 어떠한 반응을 보이는지 모니터링하고 수치를 측정 가능
- 특정 서버로 먼저 배포를 진행하기 때문에 문제 발생 시 리스크가 비교적 적음
'devops bootcamp 4 > 클라우드 서비스 운영' 카테고리의 다른 글
[지속적 배포] 01. 배포 자동화 (0) | 2023.04.24 |
---|---|
[지속적 통합] 04. 릴리스 준비 (0) | 2023.04.21 |
[지속적 통합] 03. 테스트 (0) | 2023.04.20 |
[지속적 통합] 02. 지속적 통합 (0) | 2023.04.20 |
[지속적 통합] 01. CI/CD 리뷰 (0) | 2023.04.20 |