33.빌드 및 배포03
5.무중단 배포
기존에 동작하고 있는 서버(배포가 완료)가 존재한다고 가정해보자
그상태에서 새롭게 업데이트한 코드를 배포 한다면?
1.8080포트에 서버를 띄운다
2.새롭게 배포할 내용이 있다면 포트 충돌을 막기 위해서 서버를 다운 시킨다
3.8080포트에 새롭게 배포할 서버를 띄운다
4.다운 타임(유저에게 서비스가 불가능한 시간)이 발생한다
다운타임이 발생하지 않도록 무중단 배포를 실행한다
무중단 배포의 필요 조건: 두대이상의 서버를 서비스 해야한다
다운타임이 발생하지 하지 않으려면 실제 서비스 중인 서버와 새롭게 배포한 서버가 동시에 존재해야한다
비용을 줄이려면 배포할 때만 새롭게 서버를 띄우고 배포가 완료된 후에 기존 서버는 죽이면 된다
6.무중단 배포의 종류
Rolling 배포
서버1을 로드 밸런서에 뺀다
서버1에 배포한다
서버1을 다시 로드 밸런서에 넣는다
서버2를 로드 밸런서에서 뺀다
서버2에 배포한다
서버2를 로드밸러서에 넣는다
단점
배포할 서버가 너무 많으면 n대 단위로 배포하기도 하는데 배포가 모두 끝나기까지는 누구는 이전 서비스를 받고 누구는 신규 서비스를 받을 수 있다는 문제가 있다
1대에 배포하는 것보다 최소 2배이상 느리다
Canary배포
광부들이 광산에 유독가스가 나오는 것을 알아내기 위해서 가스에 민감한 카나리아 광산 안에서 키웠다고 해서 유래된 배포
소수의 유저(혹은 사내)만 사용하는 환경에서 신규 버전을 배포하고 문제가 없다고 판단 됐을 때 다른 모든 서버에 배포한다.
Blue/Green배포
실제로 서비스 중인 환경(Blue)과 새롭게 배포할 환경(Green)을 세트로 준비해서 배포하는 방식을 말한다
로드 밸런서와 블루 서버와 연결이 되어있는 경우
새롭게 배포한 그린서버에 로드밸런서의 방향을 바꿔주어 배포를 한다
장점
새롭게 배포할 환경에만 배포하면 되기 때문에 배포 속도가 매우 빠르고 언제나 green 환경이 떠있기 때문에 만야 잘못된 버전으로 배포를 했을 경우 신속하게 롤백이 가능
단점
비용이 많이 든다
+로드밸런서란?
서버에 가해지는 부하(로드)를 분산(밸런싱) 장치이다
클라이언트와 서버의 사이에서 위치한다
한대의 서버로 부하가 집중되지 않도록 트래픽을 관리한다
사업의 규모가 확장되고 클라이언트의 수가 증가되면 기존 서버만으로 정상적인 서비스가 불가능 하기때문에 필요하다
댓글남기기