MSA와 같은 분산 아키텍처의 경우 (롤링/블루 그린/카나리) 배포 전략이 유용하게 사용될 수 있다.
롤링 배포(Rolling Deployment)
롤링 배포는 어플리케이션의 새로운 버전을 배포할 때, 여러 대의 서버에 순차적으로 배포하는 방식이다.
- 시작 상태: 두 대의 서버(A와 B)가 동일한 버전의 어플리케이션을 실행 중입니다.
- 서버 A 업데이트: 서버 A에 새로운 버전의 어플리케이션을 배포하고, 배포가 완료되면 헬스 체크를 통해 서버 A가 정상적으로 동작하는지 확인합니다.
- 로드밸런서 업데이트: 서버 A가 정상적으로 동작하는 것이 확인되면 로드밸런서가 서버 A로도 트래픽을 보내기 시작합니다.
- 서버 B 업데이트: 서버 B에 새로운 버전의 어플리케이션을 배포하고, 배포가 완료되면 헬스 체크를 통해 서버 B가 정상적으로 동작하는지 확인합니다.
- 최종 상태: 두 대의 서버(A와 B)가 새로운 버전의 어플리케이션을 실행 중입니다.
헬스 체크(Healt Check)는 로드밸런서가 각 서버 상태를 모니터링하여, 서버가 정상적으로 동작하지 않으면 그 서버로의 트래픽을 차단하고 정상적인 서버로만 요청을 보내도록 하는 메커니즘이다. 따라서, 롤링 배포 중 하나의 서버에 문제가 생기면 로드밸런서가 자동으로 그 서버를 제외하고 다른 정상적인 서버로만 요청을 보내게 된다.
이 방식은 서버 수의 제약이 있을 경우 유용하지만 배포 중 인스턴스 수가 감소되므로 서버 처리 용량을 미리 고려해놔야 한다.
블루-그린 배포(Blue-Green Deployment)
블루-그린 배포는 두 개의 환경(블루와 그린)을 사용하여 배포하는 방식이다.
- 블루 환경: 현재 프로덕션 환경
- 그린 환경: 새 버전을 배포하는 환경
1. 그린 환경에 새 버전 배포
2. 테스트 및 검증 후 트래픽을 블루 환경에서 그린 환경으로 트래픽 전환
3. 문제가 없으면 블루 환경을 새로운 업데이트 환경으로 유지
이 방식은 그린 환경에 문제가 발생하면 블루 환경으로 즉시 롤백이 가능하고 트래픽 전환 시점에 다운타임이 거의 없다는 장점이 있다. 그러나 자원이 두 배로 필요해 비용이 발생한다는 단점이 있다.
카나리 배포(Canary Deployment)
카나리 배포는 새 버전을 일부 사용자에게만 배포하여 문제를 조기에 발견하는 방식이다.
- 초기 단계: 소수의 서버나 사용자 그룹에만 새 버전 배포
- 모니터링: 초기 배포 후 성능 및 오류 모니터링
- 확장: 문제가 없으면 점진적으로 더 많은 서버나 사용자 그룹에 배포 확장
새 버전을 제한된 범위에서 먼저 검증할 수 있어 리스크를 줄일 수 있고 조기에 문제를 발견하여 전체 배포 전에 수정이 가능하다는 장점이 있다. (카나리아 새가 위험을 감지하고 그에 따라 대응하는 방식에서 유래된 이름이라고 한다.)
MSA는 애플리케이션을 작은 단위의 독립적인 서비스로 분리하여 개발, 배포, 확장을 용이하게 하는 아키텍처이다. MSA의 독립적 배포, 작은 단위의 배포, 가용성 등의 특징으로 위와 같은 전략이 MSA와 잘 맞아떨어져 그 중요성이 부각된 측면이 있다. 그러나 본래 목적은 가용성, 안정성, 효율적 배포를 달성하기 위한 것이다.
'개발 > 배포' 카테고리의 다른 글
Github Actions (0) | 2024.01.22 |
---|