IaaS/퍼블릭클라우드

(AWS) Elastic Beanstalk의 CI/CD에 대해서

armyost 2022. 2. 7. 07:13
728x90

Elastic Beanstalk를 배포하는데 있어서 다음과 같은 전력이 가능하다. 

  • All at Once :
    모든 인스턴스를 한번에 배포하나 Downtime발생
    추가 자원이 필요하지는 않음
    개발환경이 가벼워 금방 업데이트 된다면 괜찮은 방법
  • Rolling :
    한번에 몇개의 인스턴스만 Rolling Update
    업데이트 대상 인스턴스 갯수 지정가능
    동시간에 v1 v2 모두 혼재
    추가 자원이 필요하지는 않음
    All at Once방식보다 시간이 더 걸림

  • Rolling with additional batches : 
    Rolling 방식과 유사하나, 추가적으로 v2자원을 할당하고 개발이 완료된 후에 삭제하는 방식
    Prod환경에 적합
    적은 양의 추가 리소스 필요
    업데이트 대상 인스턴스 갯수 지정가능
    동시간에 v1 v2 모두 혼재
    All at Once방식보다 시간이 더 걸림

  • Immutable :
    다운타임 없음
    v2가 임시 ASG에 생성
    두배의 자원 소모
    빠른 롤백이 가능(단지 v2 ASG를 종료시키면 됨)
    All at Once방식보다 시간이 더 걸림
    Prod환경에 적합

 

공식적이지 않은 배포 Feature는 이러한 것이 있다.

  • Blue/Green
    다운타임 없음
    v2가 배포된 Stage 버전을 생성
    빠른 롤백이 가능(단지 서비스 커넥션을 v1으로 이동시키면 됨)
    Route53의 가중치 트래픽관리 기능을 통해 카나리 배포와 같이 트래픽을 점진적으로 v2로 증가시킬수 있음

 

관련문서

https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/using-features.deploy-existing-version.html

 

Elastic Beanstalk 환경에 애플리케이션 배포 - AWS Elastic Beanstalk

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

 

사용방법

1. 작업코자 하는 ElasticBeanstalk로 생성된 어플리케이션 상세정보로 들어갑니다.

2. [Configuration]메뉴를 클릭합니다.

3. 상세환경설정 정보에서 "Rolling updates and deployments" 란의 "Modify" 버튼을 클릭합니다. 

4. 기본적으로 배포 정책이 "All at Once"로 선택되어 있을 것이다. 필자는 "Immutable"로 진행해보려 한다. "Application Deployments" 영역의 Deployment Policy를 "Immutable"로 선택한다. 

5. "Configuration Updates"에서는 Rolling Update Type을 아무거나 선택한다. 

6. "Deployment preferences"는 기본 설정으로 둔다.

7. "Apply" 버튼을 눌러 적용한다. 

8. 어플리케이션을 새로운 버전으로 업데이트 한다. EB CLI(ep deploy)를 통해 업데이트 변경 사항을 ElasticBeanstalk에 반영한다. 

 

Swap URL 사용법

1. 기존 EB 어플리케이션 config를 save한다.

2. save한 config로 새로운 EB 어플리케이션을 생성한다.

3. 어플리케이션 상세페이지로 가서 오른쪽 상단의 "Action"-"Swap URL"을 클릭한다. 

4. Swap사항을 확인후에 적용하면 새로운 EB어플리케이션이 대외적으로 서비스 됨을 확인할 수 있다. 

 

'IaaS > 퍼블릭클라우드' 카테고리의 다른 글

(AWS) Lambda Alias란?  (0) 2022.02.15
(AWS) Lambda 에 대해서  (0) 2022.02.07
(AWS) Elastic Beanstalk란?  (0) 2022.02.07
(AWS) CloudFormation Stack Policy란?  (0) 2022.02.06
(AWS) cfn-signal, cfn-get-metadata, cfn-hup 이란?  (0) 2022.02.06