AWS Elastic Beanstalk FAQ

일반

AWS Elastic Beanstalk를 사용하면 개발자가 손쉽게 AWS 클라우드에서 애플리케이션을 신속하게 배포하고 관리할 수 있습니다. 개발자가 애플리케이션을 업로드하기만 하면 Elastic Beanstalk가 자동으로 용량 프로비저닝, 부하 분산, Auto-Scaling, 애플리케이션 상태 모니터링 등의 배포 세부 정보를 처리합니다.

AWS 클라우드에서 애플리케이션을 몇 분 내에 배포하고 관리하기를 원하는 사람이면 누구든지 사용할 수 있습니다. 이전에 클라우드 컴퓨팅을 사용해 본 경험이 없어도 괜찮습니다. AWS Elastic Beanstalk는 Java, .NET, PHP, Node.js, Python, Ruby, Go 및 Docker 웹 애플리케이션을 지원합니다.

AWS Elastic Beanstalk는 다음 언어와 개발 스택을 지원합니다.

Java 애플리케이션용 Apache Tomcat

PHP 애플리케이션용 Apache HTTP Server

Python 애플리케이션용 Apache HTTP Server

Node.js 애플리케이션용 Apache HTTP Server 또는 Nginx

Ruby 애플리케이션용 Passenger 또는 Puma

.NET 애플리케이션용 Microsoft IIS 7.5, 8.0 및 8.5

Java SE

Docker

Go

지원되는 언어 및 개발 스택의 최신 전체 목록은 지원되는 플랫폼을 참조하십시오.

예. AWS Elastic Beanstalk는 향후에 여러 개발 스택과 프로그래밍 언어를 지원하도록 확장 가능하게 설계되었습니다. AWS는 다른 Elastic Beanstalk 서비스를 제공하는 데 필요한 API 및 기능을 위해 솔루션 공급자와 협력하고 있습니다.

AWS Elastic Beanstalk는 용량 프로비저닝, 로드 밸런싱, Auto Scaling, 애플리케이션 배포 등의 세부 정보를 자동으로 처리하여 사용자의 애플리케이션 버전을 실행할 수 있는 환경을 만듭니다. 배포 가능한 코드(예: WAR 파일)를 업로드하기만 하면 나머지는 AWS Elastic Beanstalk에서 처리합니다. AWS Toolkit for Visual Studio와 AWS Toolkit for Eclipse를 사용하면 IDE 내에서 애플리케이션을 AWS Elastic Beanstalk에 배포하고 관리할 수 있습니다. 애플리케이션이 실행되면 Elastic Beanstalk가 모니터링, 애플리케이션 버전 배포, 기본 상태 점검 등의 관리 작업을 자동으로 수행하고, 로그 파일에 쉽게 액세스할 수 있게 해줍니다. 개발자는 Elastic Beanstalk를 통해 서버 프로비저닝, 로드 밸런싱 설정 또는 확장 관리 등의 배포 관련 작업의 부담에서 벗어나 애플리케이션 개발에 집중할 수 있습니다.

대부분의 기존 애플리케이션 컨테이너나 PaaS는 프로그래밍 부담을 줄여주지만 개발자가 유연성과 제어력을 활발히 발휘할 수 없습니다. 개발자는 공급업체가 사전 정의한 설정을 그대로 따를 수밖에 없으며, 애플리케이션 인프라의 여러 요소에 대한 제어권을 가질 기회가 거의 없거나 전혀 없습니다. 하지만 AWS Elastic Beanstalk의 경우, 개발자는 애플리케이션을 실행하는 AWS 리소스를 완벽히 제어할 수 있습니다. 개발자는 Elastic Beanstalk의 관리 기능을 사용해 인프라 구성 요소의 일부(또는 전부)를 완벽하게 관리할 수 있습니다.

AWS Elastic Beanstalk에서는 다음이 가능합니다.

애플리케이션 요구 사항을 충족하는 운영 체제를 선택할 수 있습니다(예: Amazon Linux 또는 Windows Server 2016).

온디맨드, 예약 인스턴스 및 스팟 인스턴스를 포함하여 여러 Amazon EC2 인스턴스 중에서 선택 

몇 가지 사용 가능한 데이터베이스 및 스토리지 옵션을 선택할 수 있습니다.

문제를 즉각적이고 직접으로 해결하기 위해 Amazon EC2 인스턴스에 로그인할 수 있습니다.

여러 가용 영역에서 실행함으로써 신속하게 애플리케이션의 신뢰성을 향상시킬 수 있습니다.

로드 밸런서에 HTTPS 프로토콜을 사용하여 애플리케이션의 보안을 강화할 수 있습니다.

내장된 Amazon CloudWatch 모니터링에 액세스할 수 있으며 애플리케이션의 상태 및 기타 중요한 이벤트에 대한 알림을 받을 수 있습니다.

애플리케이션 서버 설정(예: JVM 설정)을 조정하고 환경 변수를 전달합니다.

메모리 캐시 서비스와 같은 다른 애플리케이션 구성 요소를 Amazon EC2에서 나란히 실행할 수 있습니다.

애플리케이션 서버에 로그인하지 않고도 로그 파일에 액세스할 수 있습니다.

AWS Elastic Beanstalk는 Amazon EC2, Amazon RDS, Elastic Load Balancing, Auto Scaling, Amazon S3, Amazon SNS 등과 같이 입증된 AWS 기능과 서비스를 사용하여 애플리케이션을 실행하는 환경을 만듭니다. AWS Elastic Beanstalk의 현재 버전은 Amazon Linux AMI 또는 Windows Server 2019를 사용합니다.

AWS Elastic Beanstalk는 Java, .NET, PHP, Node.js, Python, Ruby, Go 및 Docker를 지원하며 웹 애플리케이션에 적합합니다. 하지만 Elastic Beanstalk의 개방형 아키텍처 덕분에 비 웹 애플리케이션도 Elastic Beanstalk를 사용하여 배포할 수 있습니다. 향후 추가 애플리케이션 유형과 프로그래밍 언어도 지원할 계획입니다. 자세한 내용은 지원되는 플랫폼을 참조하세요.

AWS Elastic Beanstalk는 Amazon Linux AMI 및 Windows Server AMI에서 실행됩니다. 두 AMI는 Amazon Web Services에서 지원하고 관리하며 Amazon EC2 클라우드 컴퓨팅을 위한 안정되고 안전한 고성능 실행 환경을 제공하도록 설계되었습니다.

시작하기

AWS Elastic Beanstalk에 가입하려면 Elastic Beanstalk 세부 정보 페이지에서 [지금 가입하기] 버튼을 클릭합니다. 이 서비스에 액세스하려면 Amazon Web Services 계정이 필요합니다. 아직 계정이 없는 경우 Elastic Beanstalk의 가입 프로세스를 시작할 때 계정을 만들라는 메시지가 표시됩니다. 가입한 후 AWS Elastic Beanstalk Getting Started Guide를 참조하십시오.

AWS Elastic Beanstalk에 가입하려면 유효한 전화번호와 이메일 주소를 AWS에 제출해야 합니다. 이는 사용자에게 연락해야 할 경우를 대비하기 위해서입니다. 전화번호를 확인하는 데는 몇 분밖에 걸리지 않습니다. 가입 프로세스 중에 자동 전화를 받고 전화기의 키패드를 사용해 PIN 번호를 입력합니다.

AWS Elastic Beanstalk를 시작하는 가장 좋은 방법은 기술 문서의 일부인 AWS Elastic Beanstalk Getting Started Guide를 참조하는 것입니다. 몇 분 안에 배포할 수 있으며, 샘플 애플리케이션을 사용하거나 자신의 애플리케이션을 업로드할 수 있습니다.

예. AWS Elastic Beanstalk에는 제품을 시험 사용하고 그 기능을 볼 수 있는 샘플 애플리케이션이 포함되어 있습니다.

데이터베이스 및 스토리지

예. AWS Elastic Beanstalk는 애플리케이션 파일을 Amazon S3에 저장하고, 선택적으로 서버 로그 파일도 저장합니다. AWS Management Console, AWS Toolkit for Visual Studio 또는 AWS Toolkit for Eclipse를 사용하는 경우, Amazon S3 버킷이 계정에 자동으로 생성되고, 업로드한 파일이 자동으로 로컬 클라이언트에서 Amazon S3로 복사됩니다. 필요에 따라 서버 로그 파일을 1시간 간격으로 Amazon S3에 복사하도록 Elastic Beanstalk를 설정할 수 있습니다. 환경 구성 설정을 편집하여 이 작업을 수행할 수 있습니다.

예. Amazon S3를 사용하여 애플리케이션을 저장할 수 있습니다. 가장 간단한 방법은 애플리케이션의 배포 가능한 파일에 AWS SDK를 포함하는 것입니다. 예를 들어 애플리케이션의 WAR 파일에 Java용 AWS SDK를 포함할 수 있습니다.

AWS Elastic Beanstalk에서 사용할 수 있는 데이터 보존 기술에는 제한이 없습니다. Amazon Relational Database Service(RDS) 또는 Amazon DynamoDB, Microsoft SQL Server 또는 Oracle을 사용하거나, Amazon EC2에서 실행되는 다른 관계형 데이터베이스를 사용할 수 있습니다.

Elastic Beanstalk에서 자동으로 Amazon RDS DB 인스턴스를 프로비저닝할 수 있습니다. DB 인스턴스에 대한 연결 정보는 환경 변수에 의해 애플리케이션에 노출됩니다. 환경에 맞게 RDS DB 인스턴스를 구성하는 방법에 대한 자세한 내용은 Elastic Beanstalk Developer Guide를 참조하십시오.

AWS Elastic Beanstalk의 경우에는 변경할 필요가 없습니다. Elastic Beanstalk는 환경 구성에서 연결 정보를 지정할 수 있습니다. 애플리케이션 코드에서 연결 문자열을 추출하여 쉽게 다른 Elastic Beanstalk 환경을 설정하고 다른 데이터베이스를 사용할 수 있습니다.

보안

기본적으로 애플리케이션은 누구나 액세스할 수 있도록 myapp.elasticbeanstalk.com에 공개되어 있습니다. Amazon VPC를 사용하여 사용자가 정의한 가상 네트워크에서 애플리케이션을 비공개적이고 격리된 공간에 프로비저닝할 수 있습니다. 특정 보안 그룹 규칙, 네트워크 ACL 및 고객 라우팅 테이블을 사용하여 이 가상 네트워크를 비공개로 설정할 수 있습니다. 또한, EC2 보안 그룹 설정을 변경함으로써 다른 수신 트래픽(SSH 등)을 애플리케이션 서버로 전송할 것인지 아닌지를 손쉽게 제어할 수 있습니다.

예, VPC에서 사용자 애플리케이션을 실행할 수 있습니다. 자세한 내용은 AWS Elastic Beanstalk Developer Guide를 참조하십시오.

AWS 보안에 대한 자세한 내용은 Amazon Web Services: Overview of Security Processes 백서를 참조하거나 보안 센터를 방문하십시오.

예. 적절한 권한이 있는 IAM 사용자는 AWS Elastic Beanstalk와 통신할 수 있습니다.

IAM은 중앙 집중식으로 사용자와 그룹을 관리할 수 있습니다. 어떤 IAM 사용자가 AWS Elastic Beanstalk에 액세스할 수 있는지 제어할 수 있습니다. 그리고 Elastic Beanstalk 리소스에 대해 작업을 수행할 필요가 없는 사용자에게 Elastic Beanstalk에 대한 읽기 전용 액세스를 허용하여 사용을 제한할 수 있습니다. 계정에 있는 모든 사용자의 활동은 하나의 AWS 청구서에 집계됩니다.

IAM 콘솔, IAM 명령줄 인터페이스(CLI) 또는 IAM API를 사용하여 IAM 사용자를 프로비저닝할 수 있습니다. 기본적으로 IAM 사용자는 권한이 부여될 때까지 AWS 서비스에 액세스할 수 없습니다.

정책을 사용하여 IAM 사용자에게 서비스에 대한 액세스를 허용할 수 있습니다. AWS Elastic Beanstalk에 대한 액세스 권한 부여 프로세스를 단순화하기 위해 IAM 콘솔에서 정책 템플릿을 사용하면 편리합니다. Elastic Beanstalk는 읽기 전용 액세스 템플릿과 모든 권한 템플릿의 두 가지 템플릿을 제공하고 있습니다. 읽기 전용 템플릿은 Elastic Beanstalk 리소스에 대한 읽기 액세스만 허용합니다. 모든 권한 액세스 템플릿은 Elastic Beanstalk 작업뿐만 아니라 Elastic Load Balancing, Auto Scaling, Amazon S3 같은 종속 리소스를 관리하는 권한을 포함한 모든 권한을 부여합니다. 또한 AWS Policy Generator를 사용하여 사용자 정의 정책을 만들 수도 있습니다. 자세한 내용은 AWS Elastic Beanstalk Developer Guide를 참조하십시오.

예. 애플리케이션, 애플리케이션 버전 및 환경과 같은 특정 AWS Elastic Beanstalk 리소스에 대한 권한을 허용하거나 거부할 수 있습니다.

루트 계정으로 IAM 사용자가 작성한 모든 리소스는 루트 계정의 소유가 되어, 루트 계정에 청구됩니다.

루트 계정은 IAM 사용자가 계정에서 시작한 모든 AWS Elastic Beanstalk 환경에 대한 모든 권한이 있습니다. Elastic Beanstalk 템플릿을 사용하여 IAM 사용자에게 읽기 전용 액세스 권한을 부여하면 해당 사용자는 해당 계정의 모든 애플리케이션, 애플리케이션 버전, 환경 및 관련 리소스를 볼 수 있습니다. Elastic Beanstalk 템플릿을 사용하여 IAM 사용자에게 모든 액세스 권한을 부여하면 해당 사용자는 해당 계정의 모든 Elastic Beanstalk 리소스를 생성, 변경, 종료할 수 있습니다.

예. IAM 사용자는 사용자 이름과 암호를 사용하여 AWS Elastic Beanstalk 콘솔에 액세스할 수 있습니다.

예. IAM 사용자는 액세스 키와 보안 키를 통해 Elastic Beanstalk API를 사용하는 작업을 수행할 수 있습니다.

예. IAM 사용자는 액세스 키와 보안 키를 통해 AWS Elastic Beanstalk 명령줄 인터페이스(CLI)를 사용하는 작업을 수행할 수 있습니다.

관리형 플랫폼 업데이트

지정한 유지 관리 기간 동안 AWS Elastic Beanstalk 환경이 애플리케이션을 실행하는 기본 플랫폼의 최신 버전으로 자동 업데이트되도록 옵트인할 수 있습니다. Elastic Beanstalk는 운영 체제, 웹 및 애플리케이션 서버, 언어 및 프레임워크 업데이트와 함께 지원되는 플랫폼(Java, PHP, Ruby, Node.js, Python, .NET, Go 및 Docker)의 새로운 버전을 정기적으로 릴리스합니다.

Elastic Beanstalk가 플랫폼 업데이트를 자동으로 관리하도록 하려면, Elastic Beanstalk 콘솔의 구성 탭에서 관리형 플랫폼 업데이트를 활성화하거나 EB CLI 또는 API를 사용해 활성화해야 합니다. 이 기능을 활성화한 후, 허용할 업데이트 유형과 업데이트 시간을 구성할 수 있습니다.

AWS Elastic Beanstalk는 새로운 패치와 마이너 플랫폼 버전에 대한 플랫폼 업데이트를 자동으로 수행할 수 있습니다. Elastic Beanstalk에서는 메이저 플랫폼 버전 업데이트(예: Java 7 Tomcat 7에서 Java 8 Tomcat 8로 업데이트)는 자동으로 수행하지 않습니다. 이러한 업데이트에는 이전 버전과 호환되지 않는 변경 사항이 포함되어 추가 테스트가 필요하기 때문입니다. 이런 경우, 업데이트를 수동으로 시작해야 합니다.

AWS Elastic Beanstalk 플랫폼은 MAJOR.MINOR.PATCH 패턴(예: 2.0.0)을 사용하여 버전이 지정됩니다. 각 부분은 다음과 같이 증가합니다.

메이저 버전은 호환되지 않는 변경 사항이 있을 때.

마이너 버전은 이전 버전과 호환되는 방식으로 다른 기능이 추가될 때.

패치 버전은 이전 버전과 호환되는 버그 수정이 있을 때.

메이저 버전 업데이트는 언제든 AWS Elastic Beanstalk 관리 콘솔, API 또는 CLI를 사용하여 수행할 수 있습니다. 메이저 버전 업데이트를 수행할 때 다음 옵션 중에서 선택할 수 있습니다.

기존 환경에 그대로 업데이트 적용. Updating Your Elastic Beanstalk Environment's Platform Version 참조.

새로운 플랫폼 버전으로 기존 환경의 복제본 생성. 자세한 내용은 Clone an Environment 참조.

업데이트가 설치된 Amazon EC2 인스턴스의 병렬 집합이 기존 인스턴스와 스왑될 준비가 완료되기 전까지는(이후에 기존 인스턴스는 종료됨) 어떠한 변경도 기존 환경에 적용되지 않도록 하는 변경 불가능한 배포 메커니즘을 사용하여 업데이트가 적용됩니다. 또한, 업데이트 도중에 Elastic Beanstalk 상태 확인 시스템이 문제를 탐지하면, 트래픽이 기존 인스턴스 집합으로 리디렉션되어 애플리케이션의 최종 사용자에게 미치는 영향을 최소화합니다.

관리형 플랫폼 업데이트에서는 변경 불가능한 배포 메커니즘을 사용하여 업데이트를 수행하므로, 유지 관리 기간 동안 애플리케이션을 사용할 수 있으며 애플리케이션의 소비자는 업데이트의 영향을 받지 않습니다.

관리형 플랫폼 업데이트 기능에 대한 추가 요금은 없습니다. 업데이트 기간 동안 업데이트를 수행하는 데 필요한 추가 EC2 인스턴스에 대한 요금만 지불하면 됩니다.

유지 관리 기간이란 관리형 플랫폼 업데이트가 활성화되고 플랫폼의 새 버전이 출시된 경우 AWS Elastic Beanstalk가 플랫폼 업데이트를 시작하는 주별 2시간의 시간 슬롯을 말합니다. 예를 들어 유지 관리 기간이 매주 일요일 오전 2시에 시작되도록 선택하는 경우, AWS Elastic Beanstalk는 매주 일요일 오전 2시와 4시 사이에 플랫폼 업데이트를 시작하게 됩니다. 애플리케이션의 구성에 따라 업데이트가 완료되는 데 유지 관리 기간보다 시간이 더 걸릴 수도 있다는 것에 주의해야 합니다.

유지 관리 기간은 환경별로 설정되므로, 다양한 애플리케이션 구성 요소 또는 애플리케이션에 대해 서로 다른 유지 관리 기간을 설정할 수 있는 옵션이 제공됩니다. 여러 개의 애플리케이션이 동시에 업데이트되길 원하지 않는 경우, 이를 통해 환경 업데이트가 번갈아 수행되도록 지정할 수 있습니다. 관리형 플랫폼 업데이트를 활성화했지만 유지 관리 기간을 지정하지 않은 경우, 기본 주별 2시간 기간이 환경에 지정됩니다. 사용자를 대신해 자동으로 유지 관리를 수행하는 시기를 변경하려면, AWS Management Console에서 관리형 업데이트 구성을 수정하거나 UpdateEnvironment API를 사용하면 됩니다.

AWS Management Console, 포럼 공지 및 출시 정보를 통해 새로운 플랫폼 버전 출시에 대한 알림을 받게 됩니다.

플랫폼 버전 간의 변경 사항에 대한 상세 정보는 AWS Elastic Beanstalk 출시 정보 페이지에서 확인할 수 있습니다.

관리형 플랫폼 업데이트가 진행 중일 때 수행할 수 있는 유일한 작업은 '중단'입니다. 이를 통해 즉시 업데이트를 중단하고 이전 버전으로 롤백할 수 있습니다.

환경은 선택한 수준(마이너와 패치 선택 또는 패치만 선택)에 따라 언제나 사용 가능한 최신 버전으로 업데이트됩니다.

모든 관리형 플랫폼 업데이트에 대한 세부 정보는 이벤트 페이지에서 볼 수 있으며, "MAINTENANCE"라는 이벤트 유형으로 태그가 지정되어 있습니다.

해당 연도에 몇 개의 새 버전 릴리스가 제공될지는 언어/프레임워크 공급업체 또는 코어 팀의 릴리스 및 패치 빈도와 내용, 그리고 당사 플랫폼 엔지니어링 팀의 철저한 릴리스 및 패치 검사 결과에 따라 달라질 수 있습니다.

AWS Graviton 지원

Elastic Beanstalk 콘솔에서 arm64 기반 프로세서가 있는 애플리케이션을 배포하려면 [추가 옵션 설정(Configure more options)] 구성의 [용량(capacity)] 탭에서 프로세서 아키텍처 및 인스턴스 유형을 선택하면 됩니다.

Elastic Beanstalk CLI, AWS CLI, CFN 또는 AWS CDK를 사용하여 애플리케이션을 배포하려면 Elastic Beanstalk 개발자 안내서를 참조하세요.

워크로드가 Node.js, Python, Tomcat, PHP 또는 Ruby와 같은 해석된 프로그래밍 언어에 있는 경우 Graviton을 사용하기 위해 워크로드를 다시 컴파일할 필요가 없습니다. 워크로드에 Go 또는 .Net Core를 사용하는 경우 arm64 인스턴스 유형에 대한 빌드 명령을 업데이트해야 합니다. 또한 이진 종속성을 다시 컴파일하거나 이진 종속성의 arm64 호환 릴리스를 사용해야 합니다. Docker를 사용하는 경우 Docker 이미지는 다중 아키텍처여야 하며 x86 및 arm64 모두에 배포를 지원해야 합니다.

Elastic Beanstalk는 다양한 플랫폼 및 분기에 대해 64비트 Amazon Linux 2에서 Graviton을 지원합니다. 전체 목록은 설명서를 참조하세요.

워크로드를 Graviton으로 쉽게 전환하고 주로 오픈 소스 기술을 기반으로 구축된 Linux 기반 워크로드, Docker 및 MC Docker와 같은 컨테이너화된 마이크로서비스 기반 애플리케이션, Java, Python, .NET Core, node.js 및 PHP와 같은 이식 가능한 프로그래밍 언어로 작성된 애플리케이션, 컴파일된 C/C++, Rust 또는 Go 애플리케이션, Linux에서 실행되는 .NET Core(v3.1+) 워크로드, 다중 스레드 워크로드, NUMA(Non-Uniform Memory Access)에 민감한 워크로드, arm64 네이티브 소프트웨어 개발 및 테스트 등의 사용 사례에서 성능 및 비용 이점을 활용할 수 있습니다.

결제

AWS Elastic Beanstalk에는 추가 비용이 들지 않습니다. 애플리케이션을 저장하고 실행하는 데 실제로 사용한 AWS 리소스에 대해서만 비용을 지불하면 됩니다.

사용한 만큼만 지불하면 되며, 어떤 AWS 리소스에도 최소 요금은 없습니다. Amazon EC2 요금 정보는 EC2 세부 정보 페이지의 요금 섹션을 참조하십시오. Amazon S3 요금 정보는 S3 세부 정보 페이지의 요금 섹션을 참조하십시오. AWS 사용량 계산기를 사용하여 다른 규모의 애플리케이션에 대한 비용을 계산할 수 있습니다.

Amazon Web Services 계정으로 로그인하여 Your Web Services Account에서 Account Activity를 클릭하면 Amazon Web Services 웹 사이트에서 언제든지 현재 청구 기간의 요금을 볼 수 있습니다.

지원

예. AWS Support는 AWS Elastic Beanstalk의 사용과 관련된 문제를 다룹니다. 요금 및 기타 자세한 내용은 AWS Support 페이지를 참조하십시오.

AWS Elastic Beanstalk 토론 포럼을 통해 기존의 AWS 커뮤니티에 있는 방대한 지식을 개발에 활용할 수 있습니다.