AWS Elastic Beanstalk란?
- AWS Elastic Beanstalk는 Java, .NET, PHP, Node.js, Python, Ruby, Go, Docker를 사용하여 Apache, Nginx, Passenger, IIS와 같은 친숙한 서버에서 개발된 웹 애플리케이션 및 서비스를 간편하게 배포하고 조정할 수 있는 서비스입니다.
- Elastic Beanstalk를 사용하면 코드를 업로드해서 용량 프로비저닝, 로드 밸런싱, 오토 스케일링, 애플리케이션 상태 모니터링, 배포를 자동으로 처리하도록 구성할 수 있습니다. 배포 완료 후 애플리케이션을 실행하는 데 필요한 AWS 리소스를 쉽게 제어할 수 있으며 언제든지 기본 리소스에 액세스할 수 있습니다
- Elastic Beanstalk는 추가 비용 없이 애플리케이션을 저장 및 실행하는 데 필요한 AWS 리소스에 대해서만 요금을 지불하면 됩니다.
- Elastic Beanstalk를 사용해서 배포를 진행하면 CloudFromation을 이용해서 리소스 생성이 진행됩니다.
- 2016년 Seoul Region 오픈과 같이 출시되었습니다.
AWS Elastic Beanstalk 특징
- 빠르고 간단하게 서버 구성 : 배포 과정을 Elastic Beanstalk에서 처리하기 때문에 코드를 업로드하면 배포부터 EC2, 로드밸런싱, 오토 스케일링, 모니터링 설정을 Elastic Beanstalk 한곳에서 할 수 있고, 이후 과정을 Elastic Beanstalk가 자동으로 처리합니다.(수정 완료)
- 생산성 : Elastic Beanstalk는 인프라를 구성, 운영하고, 애플리케이션 스택을 관리해 주어 사용자가 관리에 시간을 들일 필요가 없습니다. 플랫폼의 최신 패치와 업데이트를 통해 최신 상태로 유지합니다.
- 적절한 규모 유지 : Elastic Beanstalk는 오토 스케일링 설정을 간단하게 조정하여 애플리케이션의 특정 요건에 따라 자동으로 애플리케이션을 확장하거나 축소합니다.
- 간단한 리소스 제어 : Amazon EC2 인스턴스 유형과 같은 AWS 리소스를 자유롭게 선택할 수 있습니다. 또한, Elastic Beanstalk를 사용하면 애플리케이션을 실행하는 데 필요한 AWS 리소스를 사용자가 원하는 대로 설정이 가능합니다.
AWS Elastic Beanstalk 구성요소
Elastic Beanstalk가 동작하는데 필요한 애플리케이션, 환경이 무엇인지, 구성요소는 무엇이 있는지 알아보겠습니다.
1. 애플리케이션
애플리케이션은 환경, 버전 및 환경 구성을 포함한 Elastic Beanstalk 구성요소의 논리적 컬렉션입니다.
Elastic Beanstalk에서 애플리케이션은 개념적으로 폴더와 유사합니다.
2. 환경티어
환경 티어는 웹서버 환경, 작업자 환경을 선택할 수 있습니다.
각 환경에서 실행하는 애플리케이션 유형을 지정하고 Elastic Beanstalk에서 이러한 애플리케이션을 지원하기 위해 프로비저닝하는 리소스를 결정합니다.
HTTP 요청을 처리하는 애플리케이션은 웹 서버 환경 티어에서 실행됩니다. Amazon Simple Queue Service(Amazon SQS) 대기열에서 작업을 가져오는 백엔드 환경은 작업자 환경 티어에서 실행됩니다
3. 플랫폼
플랫폼은 운영 체제(OS), 프로그래밍 언어 런타임, 웹 서버, 애플리케이션 서버 및 Elastic Beanstalk 구성 요소의 조합입니다.
Elastic Beanstalk에서 .NET, Docker, Go, Java, Node js, PHP. Python, Ruby, Tomcat, GlassFish 와 같은 플랫폼을 지원합니다.
4. 소스 코드
소스 코드는 Java war 형태 혹은 소스 코드의 Zip 압축 파일 형태로 업로드되고 로컬 업로드와 퍼블릭 S3에 존재하는 코드를 업로드할 수 있습니다.
5. 환경 구성
환경은 애플리케이션 버전을 실행 중인 AWS 리소스 모음입니다. 각 환경은 한 번에 하나의 애플리케이션 버전만 실행하지만 여러 환경에서 동일한 애플리케이션 버전 또는 서로 다른 애플리케이션 버전을 동시에 실행할 수 있습니다
환경을 생성하면 Elastic Beanstalk에서 사용자가 지정한 애플리케이션 버전을 실행하는 데 필요한 리소스를 프로비저닝합니다.
인스턴스, 로드밸런서, 오토스케일링, 보안 그룹, vpc 등 환경 구성에 필요한 설정을 AWS Management console을 통해서 설정할 수 있습니다.
소스코드 압축파일에 config 파일의 형태로 함께 업로드하여 console에서 따로 설정 없이 환경을 구성할 수도 있습니다.
*해당 문서의 콘솔 화면은 21년 10월 기준입니다. 콘솔 화면은 언제든 달라질 수 있습니다.
지금까지 간단하게 AWS Elastic Beanstalk에 대해 알아보았습니다.
다음으로 Node.js와 Python(Django)를 활용하여 애플리케이션과 환경을 구성하는 Hands On을 진행하겠습니다.
자세한 안내는 AWS의 관리 안내서를 참고하시기 바랍니다.
https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/Welcome.html
AWS 서비스에 관해 문의 사항이나 기술 지원이 필요하시면,
NDS Sales팀으로 연락 주시길 바랍니다.
SA 현지웅