[무중단 배포 환경 구축하기] - 1. 아키텍처 구성

Soover·2021년 7월 19일
0
post-thumbnail

📢소개하기

안녕하세요. soover입니다.
이번 시리즈는 AWS 기반 서버의 무중단 배포 환경 구축하기 입니다. Auto Scaling Group 기반으로 Scale-in/out 운영 중인 서버에 무중단으로 배포를 하는 프로세스를 만들어보도록 하겠습니다.

이번 프로세스에 사용될 기술과 아키텍처 구성을 한번 살펴볼까요?

  1. 배포를 위한 이벤트 발생 시, Gitlab Webhook으로 Jenkins 서버에 소스를 넘겨줍니다.
  2. 넘겨 받은 소스를 Zip 파일로 압축하여 AWS S3로 전달합니다.
  3. Jenkins는 AWS CodeDeploy에게 "S3에게 소스를 전달했으니 이제 배포를 시작해줘"라는 요청을 하게 됩니다.
    (우리는 배포 방법으로 Auto Scalinig Group에 ELB를 연동하여 Blue-Green 방식을 사용하도록 하겠습니다.)
  4. CodeDeploy는 설정된 배포 방식으로 기존의 Auto Scaling Group과 동일한 정책의 또 다른 Auto Scaling Group을 만들고 인스턴스를 생성하기 시작합니다.
  5. 이때, (새롭게 생성되고 있는) 각 인스턴스에서 CodeDeploy Agent를 통해 S3로부터 Zip 파일 형태의 소스를 가져오고 나머지 배포 스크립트를 수행합니다.
  6. 전반적인 수행 과정에 대한 상태 메세지를 Slack 채널을 통해 실시간으로 알리도록 합니다.

위의 흐름으로 정말 무중단 배포가 이루어지는지 확인도 해보아야 하니, Flask 웹프레임워크로 간단하게 식별값을 호출해보는 것까지 진행하도록 하겠습니다.

다음 글에서는 [무중단 배포 환경 구축하기] - 2. AWS IAM 설정 을 시작으로 하나씩 만들어가보겠습니다!


감사합니다.

profile
자동화가 우리를 자유케 하리라

0개의 댓글