AWS EB로 Blue/Green 배포

곽향훈·2023년 5월 24일
1

Trouble Shooting

목록 보기
10/10

Issue

회사에서 운영 중인 서비스에서 예기치 못한 트래픽 증가로 인해, 배포 시 서버 다운 또는 응답 속도 감소 문제가 발생했다. 이러한 문제는 사용자 경험에 부정적인 영향을 미칠 뿐 아니라 매출 감소와 같은 비즈니스적인 문제를 유발할 수 있다.


Problem

  • 사용자 트래픽이 많은데 dev에서 prod로 바로 배포를 해버리니 공백이 생김
  • 서비스의 업데이트 주기가 짧기 때문에 종종 문제 발생
  • 서비스 중단을 최소화하고 사용자 만족도를 향상시키기 위해 작업

서버 부하가 증가하여 서비스 안정성이 보장되지 않는 문제를 해결하기 위해서는 서버를 업그레이드하거나, 서버의 용량을 늘리는 등의 방법이 있다. 그러나 이러한 방법은 비용이 많이 들어가고, 시간과 노력이 많이 소요된다.

이에 더해, 기존의 배포 방식으로는 트래픽 증가에 대응하기 어려워, 서비스 안정성을 보장하기 어렵다. 예를 들면, 기존의 서비스 환경(Blue)에서 새로운 코드를 배포하는 경우, 배포 중에 사용자 요청이 들어와 다운타임이 발생할 가능성이 있다. 또한, 서버의 다운타임이 발생하면 사용자는 해당 서비스를 사용할 수 없게 되어, 이는 매출 손실로 이어질 수 있다.


Solution

  1. Elastic Beanstalk 콘솔을 열어 Regions 목록에서 해당 리전 선택
  2. 현재 환경을 복제하거나 원하는 플랫폼 버전을 실행하는 새 환경 시작
  3. 만든 환경에 새 애플리케이션 버전 배포
  4. 새 환경에서 새 버전 테스트
  5. 환경 개요 페이지에서 Actions을 선택한 후 환경 URL 전환을 선택
  6. 환경 이름에서 현재 환경을 선택
  7. Swap!

AWS Elastic Beanstalk의 Blue/Green 배포를 사용하여 이러한 문제를 해결할 수 있다. Blue/Green 배포는 두 개의 환경(Blue, Green)을 사용하여 배포를 수행한다. 기존의 서비스 환경(Blue)과 새로운 서비스 환경(Green)이 병렬로 실행되며, Green 환경으로의 트래픽 라우팅을 조정하여 배포를 완료한다.


Blue/Green 배포의 장점

  • 트래픽 증가 등 예기치 못한 상황에 대응하기 위한 Blue/Green 배포 방법을 사용하면 서비스 안정성을 보장할 수 있음
  • Blue/Green 배포는 서버 다운타임을 최소화
  • AWS Elastic Beanstalk를 사용하면 배포 프로세스를 자동화할 수 있으며, 이를 통해 배포 시간과 노력을 줄일 수 있음
  • 롤백 기능을 제공하여, 문제가 발생한 경우 Green 환경에서 Blue 환경으로 롤백할 수 있음
  • 사용자는 Blue 환경과 Green 환경 간의 전환이 발생하는 동안 계속 서비스를 사용할 수 있음

이 방법을 사용하면, 새로운 코드를 배포할 때 기존의 서비스 환경을 유지하면서 새로운 서비스 환경을 구성할 수 있다. 이를 통해, 기존의 사용자는 문제없이 서비스를 이용할 수 있다. 새로운 서비스 환경에 배포가 완료되면, 새로운 서비스 환경으로의 트래픽 라우팅을 조정하여 기존의 서비스 환경과 새로운 서비스 환경을 전환한다. 이 과정에서 사용자가 불편을 느끼지 않도록, 트래픽 전환 과정을 천천히 진행하거나, 트래픽의 일부를 새로운 서비스 환경으로 보내는 등의 방법을 사용할 수 있다.

또한, Blue/Green 배포를 사용하면 롤백 기능을 제공한다. 배포 후 문제가 발생하면, Green 환경에서 Blue 환경으로 롤백하여 이전 버전의 서비스를 사용할 수 있다. 이를 통해, 사용자에게 최소한의 영향을 미치며, 문제를 빠르게 해결할 수 있다.


What I Learn

서비스를 제공하는데 트래픽이 증가하면 서버 부하가 커지는 문제가 발생할 수 있다. 이를 해결하기 위해, AWS Elastic Beanstalk의 Blue/Green 배포를 사용할 수 있다. Blue/Green 배포는 두 개의 환경을 사용하여 배포를 수행하며, 배포 중 다운타임을 최소화할 수 있고, 롤백 기능을 제공한다. 이를 통해, 사용자에게 최소한의 영향을 미치며, 문제를 빠르게 해결할 수 있다.


Blue/Green 배포

Blue/Green 배포의 네이밍은 컴퓨팅 분야에서 사용되는 용어에서 유래한다. Blue/Green 용어는 일반적으로 네트워크와 서버 관리에서 사용되는 용어로, 두 가지 다른 환경을 나타낸다.

예를 들어, 두 개의 서버 환경 A와 B가 있다고 가정한다. 현재 A 환경에서 서비스가 제공되고 있고, 새로운 버전의 서비스를 B 환경에 배포하려고 한다. 이때, Blue/Green 방식을 사용하면 B 환경이 Green, A 환경이 Blue로 표시된다.

그리고 배포가 완료되면, 트래픽을 Green 환경으로 전환하여 새로운 서비스를 제공하고, 이후에 Blue 환경으로 롤백하는 방식으로 작업을 수행한다. 이러한 과정에서 Blue와 Green은 각각 이전 버전과 새로운 버전을 나타내므로, Blue/Green이라는 용어가 사용되게 되었다.


왜 Blue와 Green 인가?

Blue/Green 배포에서 Blue와 Green은 보통 무작위로 선택된 색상으로 표시된다. 이러한 색상은 개발자나 운영자의 취향이나 선택에 따라 다르게 결정될 수 있다. 그러나, Blue와 Green은 각각 이전 버전과 새로운 버전을 나타내는데, 이 두 가지 색상이 배색에서 두드러지게 나타나는 것이 하나의 이유이다.

그리고 또 다른 이유는 인지적인 측면에서의 차이이다. Blue와 Green은 서로 대비가 뚜렷하여 눈에 잘 띄는 색상으로, 이를 이용하여 두 개의 서버 환경을 구분하고, 배포 과정에서 현재 사용 중인 환경과 새로운 환경을 구분할 수 있다.

그러므로, Blue/Green 배포에서 Blue와 Green이 선택된 것은 단순히 개발자나 운영자의 취향이나 선택이 아니라, 두 가지 색상이 각각 이전 버전과 새로운 버전을 나타내는데 있어 시각적인 대비와 인지적인 차이를 나타내기에 적합하다고 볼 수 있다.

0개의 댓글