DevOps/Infra

블루그린으로 무중단배포를 구현할때 Docker Compose를 왜 사용했나요?

chillmyh 2024. 2. 20. 21:01

이 글은 시니어 멘토님의 피드백을 바탕으로 정리해보며 가상질문을 추가해 정리한 글입니다.

틀린 부분이나, 추가로 나올법한 질문이 있다면 댓글로 남겨주시면 정말 고맙겠습니다.


2-1. 다중 컨테이너 관리

도커 컴포즈는 여러 컨테이너를 하나의 서비스로 정의하고 관리할 수 있습니다. 블루그린 배포 시, 여러 컨테이너를 동시에 업데이트하거나 롤백할 때 편리합니다.

2-2. 환경 설정

도커 컴포즈는 yaml 파일을 사용하여 컨테이너의 환경 설정을 정의합니다. 이를 통해 블루그린 배포 시, 다른 환경 변수, 포트, 볼륨 등을 쉽게 변경할 수 있습니다.

2-3. 스케일링

도커 컴포즈를 사용하면 서비스의 인스턴스 수를 쉽게 조절할 수 있습니다. 블루그린 배포 시, 새로운 버전의 컨테이너를 추가하고 기존 컨테이너를 제거하는 등의 스케일링 작업을 수행할 수 있습니다.

2-4. 네트워킹

도커 컴포즈는 컨테이너 간의 네트워킹을 관리합니다. 블루그린 배포 시, 새로운 버전의 컨테이너와 기존 컨테이너간의 통신을 원활하게 처리할 수 있습니다.

2-a nginx와 docker compose를 같이 사용했던데, nginx와 docker compose를 같이 사용했을때의 블루그린 전략을 통한 무중단배포에서의 이점이 있을까요?

2-a-1. 리버스 프록시 역할

nginx는 리버스 프록시로 사용됩니다. 블루그린 배포 시, nginx는 클라이언트 요청을 적절한 컨테이너로 라우팅해줍니다. 이를 통해 배포 중인 컨테이너와 기존 컨테이너간의 전환을 원활하게 처리할 수 있습니다.

2-a-2. 환경 분리

docker compose를 사용하면 여러 컨테이너를 정의하고 관리할 수 있습니다. 블루그린 배포 시, 새로운 버전의 컨테이너와 기존 컨테이너를 분리하여 배포할 수 있습니다. 이는 환경 분리와 안전성을 높여줍니다.

2-a-3. 환경 설정

docker compose의 yaml파일을 사용하여 컨테이너 환경설정을 정의할 수 있는데, 이때 nginx의 설정도 이 파일안에서 관리가 가능합니다.