데굴데굴

빈스톡 플랫폼 버전 업그레이드하기 (node.js) 본문

Programming/AWS

빈스톡 플랫폼 버전 업그레이드하기 (node.js)

aemaaeng 2024. 12. 4. 21:47

사내 프로젝트 node 버전을 16에서 20으로 올려야 하는 상황이 생겼는데 이 작업을 직접 해보게 되었다.
실무에서 인프라 관련 이야기가 나올 때마다 하나도 못 알아들어서 혼자 찾아서 정리도 해봤었는데 크게 와닿지가 않아서 머리에 남은 게 하나도 없는 상태였다.
뒤돌아설 때마다 리셋되는 나의 뇌..
그래서 전체적인 흐름에 집중해서 다시 정리해보았다.

 

EC2와 빈스톡

EC2는 쉽게 말하면 aws에서 빌려주는 컴퓨터다.
이 서버의 제어 권한을 개발자가 직접 다 관리할 수 있는데 유연하지만 관리에 그만큼 시간이 소요된다는 한계가 있다.
개발자는 개발에만 집중하고, 인프라 관리는 내가 다 알아서 해줄게라는 취지로 나온 게 빈스톡이다.

빈스톡은 서버가 아니고 서버 등의 인프라 자원을 활용한 어플리케이션의 배포, 관리를 자동화해주는 서비스다.
서버를 어느 시점에 증설할 것인지, 서버 상태는 어떤지 확인할 수 있도록 기능을 다 제공해준다.
개발자는 이걸 상황에 맞게 잘 활용하기만 하면 되는 것이다.

플랫폼 버전 업그레이드 방법

공식 문서에 설명이 정말 잘 되어있다. 

semantic versioning

플랫폼의 어떤 버전을 업그레이드할 것이냐에 따라 권장하는 방법이 다르다. 


마이너, 패치 버전을 업데이트 할 때에는 빈스톡 자체에서 업데이트하는 방향을 권장한다.
업데이트 방식도 여러 가지가 있는데 내가 찾아본 건 아래 두 가지였다.

 

  1. 롤링 업데이트
    • 인스턴스를 하나씩 교체
    • 다운타임이 줄어들 수 있지만 이전 플랫폼 버전의 인스턴스와 업데이트된 버전의 인스턴스가 혼합된 상태로 트래픽이 처리될 수 있음
  2. All at once
    • 모든 인스턴스를 동시에 교체
    • 빠르지만 다운타임이 발생한다.
    • 문제가 생겼을 때 롤백을 해야 한다면 롤백 또한 모든 인스턴스에 동시에 적용된다.

 

메이저 버전을 업그레이드해야 할 때에는 아래 방식을 권장한다. (현재 내 상황)

  1. 기존 환경 복제해 버전이 업데이트된 새 환경 생성
  2. 새 환경에서 소스코드를 배포하여 기능 동작 테스트
  3. 이상 없을 경우 기존 환경의 cname을 새 환경을 바라보도록 변경
    • 기존 환경으로 가던 요청을 새 환경으로 옮기는 것이다.
  4. 기존 환경 종료

이 방법도 aws 공식문서에 잘 설명되어 있고, 이런 배포 방식을 블루/그린 배포라고 한다.

 

참고 문서

 

Comments