[12월 1주차] 무중단 배포 익히기.

carlkim·2023년 10월 19일
0

• 미션
• 이 미션의 why?

미션

  1. 롤링 업데이트
  2. 블루그린
  3. 카나리
    구현해보기
    이 미션의 why?
    생각해봤다.
    배포 환경 세가지를 실현해보라는 메시지였지만
    단순히 방법만 찾고 실현만 해본다?
    그걸 원하지는 않으셨을 것이라 생각한다.
    내가 생각한 의도는 아래와같다.
    이 배포 방식이 무엇인지 공통점을 찾아서
    각 차이에 대해서 설명하고 실현할 수 있는 경지에
    도달하라는 의미로 해석했다.
    바로 시작한다.
    상황
    v1이라는 서비스를 배포 중, v2로 변경해야하는 상황이 왔다.
    v1을 시키는 중 v2 버전을 다운 받고
    v1 서비스를 종료하고 v2를 배포할 것이다.
    v1을 종료하는 다운타임이 발생하지만 무중단 배포 방법으로
    서비스 종료 없이 해결할 수 있다.

무중단 배포 기법이란?

총 세가지 방법이 있다.
1. 롤링 업데이트
정의

  • 파드가 여러개 배포되고 있다면 기존 버전을 차례로 하나하나 버전 업데이트를 하는 방식

장점

  • 인스턴스마다 차례로 배포를 진행하기에 손쉬운 롤백 가능.

  • 추가 인스턴스를 늘리지 않아도 된다.

  • 간편한 관리.

단점

  • 새 버전을 배포할 때 인스턴스 수가 감소하기 때문에 인스턴에 트래픽이 몰릴 수 있다.
  • 배포가 진행 중일 때 구버전과 신버전이 공존하기 때문에 호환성 문제 발생 가능
  • 모두 새 버전으로 업데이트 되기 직전 사용자들은 균일한 서비스를 받지 못한다.
  1. 블루 그린

개념
블루는 구버전, 그린은 신버전을 의미한다.
운영중인 구버전과 동일하게 신버전의 인스턴스를 구성한 후
로드밸런서를 통해 모든 트래픽을 동시에 신버전으로 전환하는 방식이다.

상단의 롤링 업데이트와 다르게 단 번에 진행한다는 차이만 있다.

장점

  • 구버전의 인스턴스가 남아있기에 손쉬운 롤백 가능.
  • 구버전의 환경을 다음 배포에 재사용 가능
  • 운영환경에 영향주지 않고 새 버전 테스트 가능.

단점

  • 시스템 자원이 두 배로 필요하다
    구버전과 신버전 서비스를 두 개를 동시에 띄워놓기 때문에
    자원이 많이 사용 될 수 밖에 없다.
  • 새로운 환경에 대한 테스트 전제가 되어야한다.
  1. 카나리 배포

왜 카나리 배포인가 하면
옛날 광부들이 유독 가스에 민감한 카나리아 새를 이용해
가스 누출 위험을 감지한 것을 유래하여
잠재적 문제 상황을 미리 발견하기 위한 방식
신버전을 소수 유저들에게만 배포 해보고 문제 없는 것을
확인해가며 점차 많은 유저들에게 배포하는 기법.
블루그린과 롤링 업데이트의 혼합버전으로 이해하면 되지 않나 싶다.

장점

  • 문제 상황을 빠르게 감지 가능
  • A/B 테스트로 활용 가능

단점
• 네트워크 트래픽 제어 부담.

정리

  1. 롤링 배포

o 인스턴스를 늘리지 않고 하나씩 새로운 버전으로 늘리는 기법
o 사용 중인 인스턴스에 트래픽이 몰리는 문제가 있다.
o 버전간 호환성 문제가 생기는 순간 발생

  1. Blue Green 배포

• 구버전과 같은 환경으로 신버전을 미리 준비
• 로드 밸런서로 라우팅을 한번에 전환 시키는 방법
• 구버전 환경 재활용 가능, 롤백 쉬움
• 시스템 자원 소모가 두 배로 증가한다는 것이 단점.

  1. 카나리 배포

• 소수만 사용하는 환경에서 신버전을 배포하고 문제를 관찰
• 문제가 없으면 신버전으로 트래픽을 단계적으로 늘림
• 블루그린과 유사, 블루그린은 단 한번에 전환
• 카나리 배포는 단계적으로 전환
• 문제를 발견하는 방식으로 사용

profile
기본부터 가면 됩니다.

0개의 댓글