Nubes et Stella

[AWS] AWS Elastic Beanstalk 본문

AWS/Compute

[AWS] AWS Elastic Beanstalk

SeongYeong Han 2023. 8. 20. 01:16

01. Elastic Beanstalk란?

AWS Elastic Beanstalk는 Java, .NET, PHP, Node.js, Python, Ruby, Go, Docker를 사용하여 Apache, Nginx, Passenger, IIS와 같은 친숙한 서버에서 개발된 웹 애플리케이션 및 서비스를 간편하게 배포하고 조정할 수 있는 서비스이다.

 

Elastic Beanstalk를 사용하면 코드를 업로드해서 용량 프로비저닝, 로드 밸런싱, 오토 스케일링, 애플리케이션 상태 모니터링, 배포를 자동으로 처리하도록 구성할 수 있습니다. 배포 완료 후 애플리케이션을 실행하는 데 필요한 AWS 리소스를 쉽게 제어할 수 있으며 언제든지 기본 리소스에 액세스할 수 있다. (먼가 Python의 pyinstaller 모듈과 비슷한 것 같다.)

 

참고:

https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/Welcome.html

 

 

02. Elastic Beanstalk 특징

가장 큰 특징은 코드만 가지고도 환경을 쉽게 구성할 수 있다는 점에 있으며, 부가적인 몇몇 서비스를 콘솔에서 함께 생성할 수 있게 지원해준다.

 

 

03. Elastic Beanstalk 환경 구성

최초 환경의 리소스, Elastic Beanstalk의 동작 및 플랫폼 설정을 사용자 지정할 수 있는 다양한 옵션을 제공합니다.

 

EC2 인스턴스(EC2 instance)

- 선택한 플랫폼에서 웹 앱을 실행하도록 구성된 Amazon Elastic Compute Cloud(Amazon EC2) 가상 머신입니다.

 

인스턴스 보안 그룹(Instance security group)

- 포트 80에서 인바운드 트래픽을 허용하도록 구성된 Amazon EC2 보안 그룹입니다. 이 리소스를 통해 로드 밸런서의 HTTP 트래픽이 웹 앱을 실행하는 EC2 인스턴스에 도달할 수 있습니다. 기본적으로 다른 포트에서는 트래픽이 허용되지 않습니다.

 

로드 밸런서(Load balancer)

- 애플리케이션을 실행하는 인스턴스로 요청을 분산하도록 구성된 Elastic Load Balancing 로드 밸런서입니다. 또한 로드 밸런서가 있으면 인터넷에 인스턴스를 직접 노출할 필요가 없습니다.

 

로드 밸런서 보안 그룹(Load balancer security group)

- 포트 80에서 인바운드 트래픽을 허용하도록 구성된 Amazon EC2 보안 그룹입니다. 이 리소스를 통해 인터넷의 HTTP 트래픽이 로드 밸런서에 도달할 수 있습니다. 기본적으로 다른 포트에서는 트래픽이 허용되지 않습니다.

 

Auto Scaling 그룹(Auto Scaling group)

- 인스턴스가 종료되거나 사용할 수 없게 될 경우 인스턴스를 대체하도록 구성된 Auto Scaling 그룹입니다.

 

Amazon S3 버킷(Amazon S3 bucket)

- Elastic Beanstalk 사용 시 생성된 소스 코드, 로그 및 기타 아티팩트의 스토리지 위치입니다.

 

Amazon CloudWatch 경보(Amazon CloudWatch alarms)

- 환경의 인스턴스에 대한 로드를 모니터링하는 두 개의 CloudWatch 경보로, 로드가 너무 높거나 너무 낮은 경우 트리거됩니다. 경보가 트리거되면 이에 대한 응답으로 Auto Scaling 그룹이 확장 또는 축소됩니다.

 

AWS CloudFormation 스택

- Elastic Beanstalk은 AWS CloudFormation을 사용하여 환경의 리소스를 시작하고 구성 변경 사항을 전파합니다. 리소스는 AWS CloudFormation 콘솔에서 볼 수 있는 템플릿에서 정의됩니다.

도메인 이름(Domain name) - subdomain.region.elasticbeanstalk.com 형식으로 웹 앱으로 라우팅되는 도메인 이름입니다.

 

 

04. Elastic Beanstalk 배포 정책

애플리케이션에 적합한 배포 정책을 선택하는 것은 몇 가지 고려 사항을 절충하는 것이며 특정 요구 사항에 따라 다릅니다. 배포 정책 및 설정 페이지에는 각 정책에 대한 자세한 정보와 일부 정책의 작동에 대한 자세한 설명이 있습니다.

다음 목록은 다양한 배포 정책에 대한 요약 정보를 제공하고 관련 고려 사항을 추가합니다.

 

한번에 모두

- 가장 빠른 배포 방법입니다. 짧은 서비스 손실을 수용할 수 있고 빠른 배포가 중요한 경우에 적합합니다. 이 방법을 사용하면 Elastic Beanstalk가 새 애플리케이션 버전을 각 인스턴스에 배포합니다. 그런 다음 웹 프록시 또는 애플리케이션 서버를 다시 시작해야 할 수 있습니다. 결과적으로 짧은 시간 동안 사용자가 애플리케이션을 사용할 수 없거나 가용성이 낮을 수 있습니다.

 

롤링

- 다운타임을 방지하고 가용성 감소를 최소화하지만 배포 시간이 길어집니다. 완전히 상실된 서비스 기간을 수락할 수 없는 경우에 적합합니다. 이 방법을 사용하면 애플리케이션이 한 번에 하나의 인스턴스 배치에 따라 환경에 배포됩니다. 대부분의 대역폭은 배포 전체에서 유지됩니다.

 

추가 배치로 롤링

- 롤링 방법 에 비해 배포 시간이 훨씬 더 길어지므로 가용성 감소를 방지합니다 . 배포 전체에서 동일한 대역폭을 유지해야 하는 경우에 적합합니다. 이 방법을 사용하면 Elastic Beanstalk가 인스턴스의 추가 배치를 시작한 다음 롤링 배포를 수행합니다. 추가 배치를 시작하는 데는 시간이 걸리며 배포 전체에서 동일한 대역폭이 유지되도록 합니다.

 

변경 불가능

- 기존 인스턴스를 업데이트하는 대신 새 애플리케이션 버전이 항상 새 인스턴스에 배포되도록 하는 느린 배포 방법입니다. 또한 배포가 실패할 경우 빠르고 안전한 롤백이라는 추가 이점이 있습니다. 이 방법으로 Elastic Beanstalk는 변경할 수 없는 업데이트를 수행하여 애플리케이션을 배포합니다. 변경할 수 없는 업데이트에서는 환경에서 두 번째 Auto Scaling 그룹이 시작되고 새 인스턴스가 상태 확인을 통과할 때까지 새 버전이 이전 버전과 함께 트래픽을 제공합니다.

 

트래픽 분할

- 카나리아 테스트 배포 방법입니다. 수신 트래픽의 일부를 사용하여 새 애플리케이션 버전의 상태를 테스트하고 나머지 트래픽은 이전 애플리케이션 버전에서 제공하려는 경우에 적합합니다.

 

'AWS > Compute' 카테고리의 다른 글

[AWS] Amazon EC2  (0) 2023.08.21