배포전략

Allow·2022년 4월 6일
0

배포전략

과거에는 배포라는 작업이 아주 큰 이벤트였다. 하지만 최근에는 유연한 아케텍쳐 설계로 이전보다 더 자주 배포를 하게된다. 이러한 과정에서 배포전략들이 다양하게 발전해왔는데 가장 대표적인 배포전략 몇가지만 소개해보겠다.


Recreate


모든 서버를 중지하고 새로운 버전으로 배포한 후 다시 서비스를 올리는 방법이다.
다운타임이 발생하는 배포전략이기 때문에 테스트서버 및 서비스가 중단되어도 문제가 없는 서버등에서 사용한다.
일반적으로 사용되는 배포전략은 아니다.


Rolling


가장 일반적이며, 많이 사용하는 배포 방법이다.
여러대의 서버가 있을 때 새로운 버전의 서비스를 서버마다 순차적으로 배포한다.

장점

  • 서버를 점차적으로 배포하는 방식으로, 서버 자원이 한정적인 경우 유리하다.(서버자원이 2배가 필요한 Blue/Green 배포방식에 비해 유리하다.)
  • 배포관리가 다른 전략에 비해 비교적 간단하다.
  • Downtime이 없다.

단점 및 주의해야 할 점

  • 배포중에는 구버전과 신버전이 공존하게 됨으로, 두 버전이 공존해도 문제가 생기지 않도록 주의하여 개발해야한다. (예를들어 DB에 대한 수정이 있을 경우)
  • 배포중인 서버는 서비스가 중단된 상태이다. 그러므로 서버 부하량을 체크하면서 배포를 진행해야한다. 예를 들어 특가 및 이벤트 진행으로 서버의 부하량이 늘어난 상태에서 배포를 시작하게 되면 나머지 자원에 부하량이 늘어나 서비스가 마비될 수 있다.

Blue/Green


blue는 구버전 green은 신버전을 의미하여 붙여진 이름이다.

새로운 버전을 모두 배포한 뒤에 L4에서 모두 새로운 버전의 서버로 유입되도록 하는 배포전략이다.

장점

  • Downtime 최소화 가능하다.
  • 신규 버전에 문제 발생시 빠른 rollback이 가능하다. 문제가 발생되면 이전버전의 서버로 유입되도록 변경하여 빠르게 이전버전으로 서비스를 돌릴 수 있다.

단점 및 주의해야 할 점

  • 구버전 신버전을 모두 갖추어야함으로 서버 리소스가 2배로 필요하다.
  • 배포할 떄 구버전 서버에서 트랜잭션이 긴 처리와 같은 기능이 있다면 신서버로 전환되는 경우를 어떻게 처리해야할지 고려해야한다.
  • 기존 운영되고 있는 서버에서 Long-term 트랜잭션이 수행중이었다면 전환시 어떤 방식으로 처리할 지 충분한 고려가 필요하다.
  • 두 서버 환경간 migration이 배포때 마다 필요하며, Rollback 수행시에도 고려해야 한다

Canary


빠르게 위험을 감지할 수 있는 배포전략이다.
특정 서버에만 선 배포를 진행하여 오류 여부를 확인하고 문제가 없다고 판단되면 모든 서버에 새로운 버전으로 배포하는 방식이다.

디즈니의 트위티로 많이들 알고 있는 카나리라는 새는 유독가스에 취약하다고 한다.
그래서 옛날 광부들은 광산에서 유독가스가 나오는 것을 알기 위해 카나리를 광산 안에서 키웠다고 한다. 카나리가 세상을 떠나면 유독가스나 나오는것으로 보고 대피를 했다고 하는데, 이 개념에서 카나리 배포 전략이라는 이름이 붙여졌다.

장점

  • A/B 테스트가 가능하다
  • 오류를 감지하는데 효과적이다. (특정 서버에만 배포하기 떄문에 문제 발생시 리스크가 적다.)
  • 문제 발생시 선배포한 서버만 롤백하면 됨으로 롤백이 비교적 간단하다.

단점 및 주의해야 할 점

  • 두가지 버전을 동시에 관리해야한다.
profile
반갑습니다!

0개의 댓글