본문 바로가기
개발/서버

서버 인프라 무중단 배포 아키텍쳐

by 그레이웅 2022. 10. 3. 13:51
반응형

서버 인프라 무중단 배포 아키텍쳐

 

최근 직장에서 프로젝트를 진행하면서, 사용자에게 배포를 할때, 지금 우리 회사의 방식과 인프라에서는 어떤 배포방식이 더 나은지 생각해 볼 시간이 있었다.

 

사용자는 어떻게 배포가 된지 모르게 하지만 서비스는 끊기지 않는 무중단 배포 방식을 알아보자.

 

무중단 배포

무중단 배포는 운영중인 서비스를 중단하지 않고, 새로운 소프트웨어 버전을 배포하는 기술이다.

무중단 배포의 핵심은 서로 다른 IP나 포트를 이용해 인스턴스의 트래픽을 제어하는 것이다.

무중단 배포가 가능하려면 고 가용성의 시스템 인프라가 설정되어야 한다.

 

무중단 배포의 방식도 여러가지인데 롤링 배포(Rolling Deployment), 블루-그린 배포(Blue-Green Deployment),

카나리 배포(Canary Deployment) 방식들이 있다.

 

1. 롤링 배포(Rolling Deployment)

롤링 배포 흐름 왼쪽부터 오른쪽으로

롤링 배포는 기존 버전을 신규 버전으로 점진적으로 배포하는 무중단 배포중 하나의 방식이다.

현재 서비스되고 있는 기존 버전 중 하나를 로드밸런스에서 라우팅이 되지않도록 하고, 새 버전 적용후 다시 라우팅을 하게한다.

이를 계속 반복해 모든 인스턴스에 새로운 버전을 적용해 차례대로 새 버전의 배포를 진행한다.

 

위의 그림을 보면 기존에는 1.0인 버전을 새로운 버전 1.1v 으로 점진적으로 교체하는 것을 알 수 있다.

 

롤링 배포의 장점은 차례대로 새로운 버전을 배포하기때문에 롤백(Rollback)이 쉽다는 장점이 있다.

하지만 접속하는 트래픽이 많을때에는 라우팅을 끊는 작업이기 때문에 한쪽으로 트래픽이 몰릴 수 있고, 배포시 버전 호환문제가 발생 할 수 있다. 두번째 그림에서 처럼 기존 버전과 신규 버전이 공존하기 때문이다.

 

2. 블루-그린 배포(Blue-Green Deployment)

 

블루-그린 배포 흐름은 왼쪽에서 오른쪽

블루 그린 배포는 블루를 구버전, 그린을 새로운 버전으로 지칭하고,  기존 버전과 동일 한 환경의 신 버전의 환경을 구성한 다음 로드밸런서를 이용해 신버전으로 모든 트래픽을 전환 하는 것이다. 

블루 그린 배포는 배포 후에 남아있는 기존 버전의 환경을 이용해 다음 버전에도 사용할 수 있다.

 

블루 그린 배포의 장점은 이전 버전의 환경이 남아있어서 빠르게 롤백 할 수 있고,  배포 후 남아있는 기존 환경을 재사용할 수 있다는 장점이 있다. 

하지만 똑같은 환경을 두가지 이상 구성하는 만큼 시스템 자원이 두배 이상으로 필요로 한다는 단점이 있다. 또한 새로운 환경에 대한 테스트도 전제되어야 할 것이다.

 

3. 카나리 배포(Canary Deployment)

 

카나리 배포, 왼쪽부터 오른쪽으로의 흐름

카나리 배포는 카나리아 새를 이용해 가스 누출을 감지했던 것에서 유래하였다.

로드 밸런서를 통해 신 버전의 트래픽을 점진적으로 늘려나가는 방식으로 소수의 유저들에게 우선 트래픽을 제공해 서비스에 이상이 없다면 트래픽을 조금씩 늘려나가는 방식이다. 

신 버전의 배포 전 실제 운영환경에서 테스트 하는 점이 블루-그린과 비슷하지만

카나리 배포 방식은 트래픽을 컨트롤 하기 때문에 상황에 따라 대처가 가능하다는 장점이 있다.

 


여러가지 무중단 배포 방법론들이 존재하지만, 서버 인프라, 트래픽 수, 개발 환경에 대해 잘 생각해보고 

무엇이 맞다 그렇다가 아닌 유연하게 생각 할 수 있는 서버 인프라 방법론을 채택하는 것이 더 나은 개발자가 되는 길이라고 생각한다.

 

 

도움이 된글

- https://www.samsungsds.com/kr/insights/1256264_4627.html

- https://llshl.tistory.com/47

반응형

'개발 > 서버' 카테고리의 다른 글

[NCP] - 네이버 클라우드 플랫폼 서버 해지  (0) 2022.11.02
로드 밸런서(Load Balancer)의 개념  (0) 2022.10.03

댓글