TIL

무중단 배포

무중단 배포란 사용자들이 서비스를 사용하는 데 아무런 지장 없이 배포를 진행하는 경우를 뜻한다.

현재 위치 배포

배포 방법

여러 대의 서버를 배포할 때 새롭게 서버를 생성하거나 줄이지 않고 배포하는 방법을 뜻한다.

만약 4대의 서버가 version1으로 서비스 중이라고 한다고 가정하자.

  1. 4대 중 2대의 인스턴스를 로드 밸런서에서 제외하여 요청을 보내지 않도록 한다.
  2. 요청을 받지 않는 인스턴스에 version2를 배포한다.
  3. version2가 배포된 서버를 다시 로드밸런서에 등록하고 version1을 서비스하는 서버를 다시 제외한다.
  4. 나머지 서버들도 version2를 배포하여 다시 로드 밸런서에 등록한다.

장점

단점

서버 단위의 블루/그린 배포

배포 방법

블루/그린 배포는 두 개의 그룹을 가지고 진행된다. version1이 블루 그룹에 존재하고 로드 밸런서에 의해 서비스 되고 있는 상황이다.

  1. 아무 서버도 없었던 그린 그룹에 블루 그룹과 똑같은 서버 인스턴스를 생성하여 version2를 배포한다.
  2. 배포가 완료되면 그린 그룹도 로드 밸런서에 등록하여 처리하게 한다.
  3. 로드 밸런서에서 블루 그룹을 제외해서 모든 요청을 그린 그룹이 처리하도로고 한다.
  4. 블루 그룹 내 모든 인스턴스를 종료하면 배포가 완료된다.

다음에 배포할 일이 있다면 블루 그룹에 새 버전을 배포하고 그린 그룹의 인스턴스를 종료하면 된다.

장점

단점

현재 위치 배포와 블루/그린 배포는 구, 신버전이 함께 서비스되도 문제 없는 경우에만 사용 가능

서버 내 블루/그린 배포

Auto Scaling 그룹으로 여러 대의 인스턴스를 사용하는 경우가 아닌 적은 수(1, 2대)의 서버를 운영하는 경우에는 nginx와 같은 서버 내 웹 서버를 이용해 블루/그린 배포를 진행할 수도 있다.

서버 단위와 다른 점은 로드 밸런서가 아닌 웹서버를 이용해 각 포트로 라우팅하는 방식이다.

  1. version1을 서버 내의 10001번 포트를 리스닝하게 한다.
  2. version2 코드를 배포할 때 10002번 포트를 리스닝하도록 서비스한다.
  3. 웹 서버 설정을 변경해서 요청을 10001번이 아닌 10002번 포트로 전닳라도록 수정한다.
  4. 일정 시간 동안 모니터링한 후 10001번 포트를 리스닝하는 verson1 애플리케이션을 종료해서 배포가 끝난다.

장점

유의할 점

유의할 점은 웹 서버를 재시작하면 안 된다. nginx에는 restart와 reload가 있는데 restart는 nginx를 종료하고 다시 실행하기 때문에 그동안 처리 중이거나 새로 들어온 요청은 모두 에러가 날 것이다.

reload 명령어로 새로운 프로세스를 생성하고 기존 프로세스는 더 이상 요청을 받지 않도록 처리하면 된다.