무중단 배포가 왜 중요하며 어떤 배경에서 등장한 걸까?
[등장 배경]
소프트웨어 개발 방법론의 변화
소프트웨어 개발 방법론이 폭포수(Waterfall) 방식에서 애자일(Agile) 방식으로 바뀌면서 릴리즈 기간이 훨씬 단축되었고 배포가 잦아질 수 밖에 없게 되었다.
마이크로서비스 아키텍처의 등장
서비스가 하나의 거대한 아키텍처로 구현되는 모놀리식(Monolithic) 구조에서 마이크로서비스(Microservices)로 모듈화되면서 독립적으로 개발하고 동시에 배포할 수 있게 되었다.
이렇듯 잦은 배포가 필연적으로 생길 수 밖에 없게 되면서 운영 안정성 측면에서 배포의 위험을 최소화하고 안정적인 서비스를 운영하기 위한 요구가 생겼고, 무중단 배포의 중요성이 커지게 되었다.
무중단 배포(Zero Downtime Deployment)란 서비스 장애를 최소화하기 위해 운영 중인 서비스를 중단하지 않고 신규 소프트웨어를 배포하는 기술을 말한다.
무중단 배포의 핵심은 로드밸런서를 통해 연결된 두 개 이상의 (서로 다른 IP, 포트를 가진) 인스턴스에 트래픽을 제어해 배포하는 것이다.
[배포 전략]
그렇다면 무중단 배포의 배포 전략에는 무엇이 있을까?
이번 포스팅에는 대표적인 3가지 배포 전략과 더불어 추가로 1가지 배포 전략을 더 알아보겠다.
롤링 배포(Rolling Deployment)
롤링 배포는 가장 대표적인 무중단 배포로서, 사용 중인 인스턴스 내에서 새 버전을 점진적으로 교체하는 방식이다.
즉, 인스턴스 중의 하나를 로드밸런서에서 분리한 뒤, 새 버전을 적용하고 다시 라우팅한다.
이 동작을 반복해서 모든 인스턴스를 새 버전의 애플리케이션으로 교체하는 방식이다.
[장점]
1. 빠른 롤백이 가능하다.
[단점]
1. 롤링 배포 방식은 인스턴스가 제한적일 경우에 사용되며 새 버전을 배포할 때 인스턴스 수가 감소하기 때문에 서비스 처리 용량을 고려해야 한다.
2. 배포가 진행되는 동안 구버전과 신버전이 공존하기 때문에 호환성 문제가 발생할 수 있다.
블루-그린 배포(Blue-Green Deployment)
블루-그린 배포에서 블루는 구버전, 그린은 신버전을 의미하는데, 구버전을 운영하고 있다가, 신버전의 애플리케이션으로 교체하려고 할 때, 운영 환경에 구버전과 동일하게 신버전의 인스턴스를 구성한 후, 로드밸런서를 통해 신버전으로 모든 트래픽을 전환하는 배포 방식이다.
[장점]
1. 구버전과 동일한 운영 환경으로 신버전의 인스턴스를 구성하기 때문에 실제 서비스 환경에서 신버전을 미리 테스트 할 수 있다.
2. 빠른 롤백이 가능하다.
3. 배포가 완료된 후 남아 있는 기존 버전의 환경을 다음 배포에 재사용할 수 있다.
[단점]
1. 시스템 자원이 두 배로 필요하며 새로운 환경에 대한 테스트가 전제되어야 한다.
카나리 배포(Canary Deployment)
카나리 배포는 로드밸런서를 통해 신버전의 제공 범위를 조절하면서 모니터링 및 피드백 과정을 거칠 수 있는 배포 방식이다.
[장점]
1. 신버전의 배포 전에 실제 운영 환경에서 미리 테스트할 수 있다.
2. 단계적인 전환 방식을 통해 부정적 영향을 최소화하고 상황에 따라 트래픽 양을 늘리거나 롤백할 수 있다.
[단점]
1. 롤링 배포와 마찬가지로 신·구 두 버전이 운영되기 때문에 호환성 문제가 발생할 수 있다.
A/B 테스트(A/B Test)
분할 테스트 또는 버킷 테스트라고도 하는 A/B 테스트는 두 가지 콘텐츠를 주요 측정지표를 기반으로 비교하여 방문자/뷰어가 더 높은 관심을 보이는 버전을 확인하여 배포하는 방식이다.
'Skills > DevOps' 카테고리의 다른 글
#3 AWS Elastic Beanstalk 기반 CI/CD 블루그린 배포 - deploy.yml (0) | 2023.05.23 |
---|---|
#0 AWS Elastic Beanstalk 기반 CI/CD 블루그린 배포 - 배포 프로세스 (0) | 2023.05.22 |
#2 AWS Elastic Beanstalk 기반 CI/CD 블루그린 배포 - Procfile, .ebextensions (1) | 2023.05.22 |
가상화, 가상머신(Virtual Machine)과 컨테이너(Container) 비교 (0) | 2023.05.16 |
#1 AWS Elastic Beanstalk 기반 CI/CD 블루그린 배포 - RDS, Elastic Beanstalk, IAM, Github Actions (0) | 2023.05.16 |