본 글은 배포의 종류(Canary, 블루-그린, 롤링)에 대해서 공부한 지식을 정리한 글입니다.
서론
과거에는 소프트웨어 개발과 배포가 비교적 단순한 과정이었습니다. 서비스의 새로운 버전을 출시하는 데 수개월 또는 수년이 걸리는 것이 일반적이었으며, 이로 인해 각 버전은 매우 큰 변화와 함께 사용자에게 제공되었습니다.
이러한 방식은 전통적인 모놀리틱 아키텍처에서 주로 사용되었고, 배포와 업데이트 과정에서 상당한 리스크를 동반했습니다.
그러나 기술의 발전과 함께 소프트웨어 배포의 방식은 크게 변화했습니다.
현대의 소프트웨어 개발 환경에서는 서비스를 더 작게 분할하고(MSA), 이를 더 자주 배포(Deployment)하는 방식으로 전환되었습니다.
이러한 변화는 소프트웨어의 복잡성을 줄이고, 각 서비스의 독립적인 배포와 관리가 가능하게 만들어, 배포의 빈도와 유연성을 크게 향상했습니다.
이와 같은 변화는 소프트웨어 배포의 전략에도 영향을 미쳤습니다.
과거의 단일 배포 방식에서 점진적이고 무중단 배포를 지향하는 다양한 전략이 도입되었고, 이는 안정적이고 효율적인 소프트웨어 배포를 가능하게 합니다. 이번 블로그에서는 Canary 배포, 블루-그린 배포, 그리고 롤링 배포라는 대표 배포 전략에 대해서 알아보겠습니다.
Canary 배포란❓
Canary 배포는 새로운 버전의 소프트웨어를 점진적으로 배포하는 방식입니다.
이 방법의 이름은 "Canary in a Coal Mine"에서 유래되었습니다. 이는 광산에서 새를 사용하여 유해한 가스의 존재를 감지하던 전통적인 방법에 비유됩니다.
Canary 배포는 카나리아 새처럼 위험을 빠르게 감지할 수 있는 배포 기법입니다.
특징
점진적 배포
- 새 버전의 소프트웨어를 소수의 사용자에게 먼저 배포합니다. 이후 문제가 없다면 점차 더 많은 사용자에게 배포합니다.
모니터링 및 피드백
- 초기 배포 단계에서 발생하는 문제를 빠르게 감지하고 수정할 수 있습니다.
리스크 감소
- 문제가 발생할 경우, 영향을 받는 사용자가 적어 문제 해결이 용이합니다.
장점
- 문제 조기 발견
- 버그나 문제가 발생하더라도 전체 사용자에게 영향을 미치기 전에 문제를 발견할 수 있습니다.
- 사용자 경험 보호
- 초기 사용자 피드백을 통해 사용자 경험을 개선할 수 있습니다.
단점
- 복잡한 모니터링
- 새로운 버전과 기존 버전이 동시에 운영되므로 모니터링과 유지 관리가 복잡할 수 있습니다.
- 배포 시간
- 전체 사용자에게 배포하는 데 시간이 걸릴 수 있습니다.
블루-그린 배포란❓
블루-그린 배포는 두 개의 동일한 환경(블루와 그린)을 사용하여 새로운 버전을 배포하는 방법입니다. 한 환경(블루)은 현재 운영 중인 버전을 호스팅 하고, 다른 환경(그린)은 새로운 버전을 호스팅 합니다.
특징
두 환경 유지
- 블루와 그린 두 환경을 동시에 유지하며, 배포가 완료되면 트래픽을 새로운 환경으로 전환합니다.
간단한 롤백
- 문제가 발생할 경우, 트래픽을 기존 환경으로 되돌리기 쉽습니다.
장점
- 무중단 배포
- 배포 과정 중에도
서비스 중단없이 사용자를 위한 서비스를 제공합니다.
- 배포 과정 중에도
- 간단한 롤백
- 문제가 발생하면 쉽게 이전 버전으로 롤백할 수 있습니다.
단점
- 리소스 요구
- 두 개의 동일한 환경을 유지해야 하므로, 인프라 비용이 두 배로 증가할 수 있습니다.
- 복잡한 환경 관리
- 환경을 동기화하고 관리하는 데 추가적인 노력이 필요할 수 있습니다.
롤링 배포란❓
롤링 배포는 새로운 버전의 소프트웨어를 점진적으로 배포하여 기존 버전과 새로운 버전이 동시에 운영되는 방식입니다.
이 방식에서는 시스템의 일부 인스턴스에서 새로운 버전이 실행되며, 나머지 인스턴스는 기존 버전을 계속 실행합니다.
특징
순차적 업데이트
- 전체 시스템의 일부에서만 새로운 버전이 실행되며, 점차적으로 전체 시스템으로 확장됩니다.
사용자 분산
- 업데이트가 사용자 그룹별로 분산되어 진행됩니다.
장점
- 리소스 절약
- 전체 시스템을
두 번 운영할 필요가 없으므로 리소스 소모가 적습니다.
- 전체 시스템을
- 부드러운 전환
- 업데이트 과정에서 사용자에게 점진적으로 새로운 버전을 제공하여 서비스의 연속성을 유지할 수 있습니다.
단점
- 복잡한 상태 관리
- 다양한 버전이 동시에 운영되므로 상태 관리가 복잡할 수 있습니다.
- 중간 상태 문제
- 새 버전과 기존 버전이 동시에 실행되면서 발생할 수 있는 호환성 문제를 고려해야 합니다.
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2024.08.18 - Spring boot Actuator란 무엇일까❓ (0) | 2024.08.18 |
---|---|
[TIL, 일일 회고] 2024.08.17 - 소프트웨어 테스트의 종류 (0) | 2024.08.17 |
[TIL, 일일 회고] 2024.08.15 - CI/CD란 무엇일까❓ (0) | 2024.08.15 |
[TIL, 일일 회고] 2024.08.14 - final 파라미터의 장점 (0) | 2024.08.14 |
[TIL, 일일 회고] 2024.08.13 - @Builder(access=AccessLevel.PRIVATE) 옵션이란❓ (0) | 2024.08.13 |