AWS Elastic Beanstalk
개발자 가이드

Elastic Beanstalk 사용 시작

다음 작업을 사용하면 AWS Elastic Beanstalk를 시작하여 애플리케이션을 만들고, 보고, 배포하고, 업데이트하고, 환경을 편집하고 종료할 수 있습니다. 포인트 앤 클릭 방식의 웹 기반 인터페이스인 AWS Management 콘솔을 사용하여 이러한 작업을 완료합니다.

단계 1: 서비스 가입

아직 AWS 고객이 아닌 경우 가입해야 합니다. 가입하면 Elastic Beanstalk는 물론 Amazon Elastic Compute Cloud(Amazon EC2), Amazon Simple Storage Service(Amazon S3), Amazon Simple Notification Service(Amazon SNS) 등 필요한 여러 AWS 제품을 이용할 수 있습니다.

AWS 계정에 가입하려면 다음을 수행합니다.

  1. Elastic Beanstalk 콘솔을 엽니다.

  2. 제시된 지침을 따릅니다.

단계 2: 애플리케이션 만들기

다음으로, 샘플 애플리케이션을 만들어 배포합니다. 이 단계에서는 이미 준비된 샘플 애플리케이션을 사용합니다.

Elastic Beanstalk는 무료로 사용할 수 있지만, 여기에서 제공하는 AWS 리소스는 실시간으로 활성화됩니다(샌드박스에서 실행되지 않음). 이 자습서의 마지막 작업에서 이러한 리소스를 종료하지 않으면 해당 리소스에 대한 표준 사용 요금이 발생합니다. 요금 합계는 최소 비용이며 일반적으로 1달러 미만입니다. 요금을 최소화할 수 있는 방법에 대한 자세한 내용은 AWS 프리 티어를 참조하십시오.

샘플 애플리케이션을 만들려면 다음을 수행합니다.

  1. 미리 구성된 https://console.aws.amazon.com/elasticbeanstalk/home#/gettingStarted?applicationName=getting-started-app 링크를 사용하여 Elastic Beanstalk 콘솔을 엽니다.

  2. 플랫폼을 선택한 다음 애플리케이션 생성을 선택합니다.

    
              새 환경 마법사

AWS 리소스에서 샘플 애플리케이션을 실행하기 위해 Elastic Beanstalk에서는 다음 작업을 수행하며 완료되는 데는 약 5분이 걸립니다.

  • 이름이 getting-started-app인 Elastic Beanstalk 애플리케이션을 생성합니다.

  • 다음 AWS 리소스가 있으며 이름이 GettingStartedApp-env인 환경을 시작합니다.

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

      특정 언어 버전, 프레임워크, 웹 컨테이너 또는 조합을 지원하도록 각 플랫폼마다 실행하는 소프트웨어, 구성 파일 및 스크립트 세트가 다릅니다. 대부분의 플랫폼에서는 웹 앱 앞에 위치해 웹 앱으로 요청을 전달하고, 정적 자산을 제공하고, 액세스 및 오류 로그를 생성하는 역방향 프록시로 Apache 또는 nginx를 사용합니다.

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

    • Amazon S3 버킷 – Elastic Beanstalk 사용 시 생성된 소스 코드, 로그 및 기타 결과물의 스토리지 위치입니다.

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

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

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

  • 기본 Elastic Beanstalk 샘플 애플리케이션 파일을 나타내는 Sample Application이라는 새 애플리케이션 버전을 만듭니다.

  • 샘플 애플리케이션 코드를 GettingStartedApp-env에 배포합니다.

환경 생성 프로세스 중 콘솔이 진행 상황을 추적하고 다음과 같이 이벤트를 표시합니다.


        환경 생성 이벤트 출력을 보여주는 콘솔입니다.

모든 리소스가 시작을 완료하고 애플리케이션을 실행하는 EC2 인스턴스가 상태 확인을 통과하면, 환경의 상태가 Ok로 변경되고 웹 사이트를 사용할 수 있게 됩니다.

단계 3: 환경에 대한 정보 보기

Elastic Beanstalk 애플리케이션을 만든 후 AWS Management 콘솔의 환경 대시보드로 이동하여 배포한 애플리케이션과 프로비저닝된 리소스에 대한 정보를 볼 수 있습니다. 대시보드에는 애플리케이션의 환경 상태, 실행 중인 버전, 환경의 플랫폼 버전(구성)이 표시됩니다.

Elastic Beanstalk에서 AWS 리소스를 만들고 애플리케이션을 시작하는 동안 환경은 Pending 상태에 있습니다. 시작 이벤트에 대한 상태 메시지가 환경의 대시보드에 표시됩니다.

현재 대시보드를 보고 있지 않은 경우 이제 대시보드로 돌아옵니다.

대시보드를 보려면

  1. Elastic Beanstalk 콘솔을 엽니다.

  2. GettingStartedApp-env를 선택합니다.

    
            애플리케이션 및 환경의 목록을 보여주는 Elastic Beanstalk 콘솔입니다.

이 대시보드에는 환경에 대한 일부 유용한 정보가 표시됩니다. 여기에는 URL, 현재 상태, 현재 배포된 애플리케이션 버전의 이름, 최근 이벤트 다섯 개, 애플리케이션이 실행되는 플랫폼 버전(구성)이 포함됩니다.


        환경 대시보드입니다.

작업 메뉴 옆 대시보드의 상단 오른쪽 모서리 부분에서 환경의 URL을 찾을 수 있습니다. 이것은 환경이 실행되는 웹 애플리케이션의 URL입니다. 이 URL을 선택해 애플리케이션의 구성 페이지로 이동합니다.

콘솔의 왼쪽에는 다른 페이지로 연결되는 탐색 창이 있습니다. 여기에는 환경에 대한 더 자세한 정보가 포함되어 있으며 추가 기능에 액세스할 수 있습니다. 다음 페이지에서는 환경의 현재 상태를 볼 수 있습니다.

  • 구성 페이지에는 애플리케이션을 호스팅하는 Amazon EC2 인스턴스 등 이 환경에 대해 프로비저닝된 리소스가 표시됩니다. 또한 이 페이지에서 프로비저닝된 리소스 일부를 구성할 수 있습니다.

  • 상태 페이지에는 애플리케이션을 실행하는 EC2 인스턴스에 대한 상태와 세부 상태 정보가 표시됩니다.

  • 모니터링 페이지에는 평균 지연 시간 및 CPU 사용률 등 환경에 대한 통계가 표시됩니다. 이 페이지를 사용하여 모니터링 중인 측정치에 대한 경보를 만들 수도 있습니다.

  • 이벤트 페이지에는 이 환경에서 사용 중인 서비스에서 보내는 정보 메시지 또는 오류 메시지가 표시됩니다.

  • 태그 페이지에는 태그가 표시됩니다. 이는 환경의 리소스에 적용되는 키-값 페어입니다. 이 페이지를 사용하여 환경의 태그를 관리할 수 있습니다.

단계 4: 새 애플리케이션 버전 배포

환경에서 다른 업데이트 작업이 현재 진행 중이지 않은 한 언제든지 새 애플리케이션 버전을 배포할 수 있습니다.

현재 실행 중인 애플리케이션 버전은 Sample Application으로 표시됩니다.

애플리케이션 버전을 업데이트하려면

  1. 환경의 구성과 일치하는 다음 샘플 애플리케이션 중 하나를 다운로드합니다.

  2. Elastic Beanstalk 콘솔을 엽니다.

  3. Elastic Beanstalk 애플리케이션 페이지에서 getting-started-app을 선택한 다음 GettingStartedApp-env를 선택합니다.

  4. 개요 섹션에서 업로드 및 배포를 선택합니다.

  5. 파일 선택을 선택하고 다운로드한 샘플 소스 번들을 업로드합니다.

  6. 콘솔이 사용자가 업로드한 아카이브의 이름에 기반하여 버전 레이블을 자동으로 채웁니다. 향후 배포를 위해 이름이 동일한 소스 번들을 사용하는 경우 고유한 버전 레이블을 입력해야 합니다.

  7. [Deploy]를 선택합니다.

Elastic Beanstalk가 이제 파일을 Amazon EC2 인스턴스에 배포합니다. 환경의 대시보드에서 배포 상태를 볼 수 있습니다. 애플리케이션 버전이 업데이트되는 동안 Environment Health(환경 상태)가 회색으로 바뀝니다. 배포가 완료되면 Elastic Beanstalk에서 애플리케이션 상태 확인을 수행합니다. 애플리케이션이 상태 확인에 응답하면 상태가 녹색으로 돌아갑니다. 환경 대시보드에 새 실행 버전Sample Application Second Version(샘플 애플리케이션 두 번째 버전) 또는 버전 레이블로 제공한 버전으로 표시됩니다.

새 애플리케이션 버전도 업로드되고 애플리케이션 버전 테이블에 추가됩니다. 테이블을 보려면 My First Elastic Beanstalk Application(첫 번째 Elastic Beanstalk 애플리케이션)을 선택한 다음 애플리케이션 버전을 선택합니다.

단계 5: 구성 변경

애플리케이션에 더 적합하도록 환경을 사용자 지정할 수 있습니다. 예를 들어 컴퓨팅 집약적인 애플리케이션이 있는 경우 애플리케이션을 실행 중인 Amazon EC2 인스턴스의 유형을 변경할 수 있습니다.

일부 구성은 변경이 간단하고 빠르게 처리되지만 일부 변경의 경우 Elastic Beanstalk가 AWS 리소스를 삭제한 후 다시 만들어야 하며, 여기에는 몇 분 정도 걸릴 수 있습니다. Elastic Beanstalk는 구성 설정을 변경할 때 발생할 수 있는 애플리케이션 가동 중지에 대해 경고합니다.

이 작업에서 환경의 용량 설정을 편집합니다. Auto Scaling 그룹에 2~4개의 인스턴스가 있는 로드 밸런싱 자동 조정 환경을 구성한 다음 변경이 발생했는지 확인합니다. 두 개의 Amazon EC2 인스턴스가 생성되고 환경의 로드 밸런서에 연결됩니다. 이러한 인스턴스는 Elastic Beanstalk가 처음 생성한 단일 인스턴스를 대체합니다.

환경 구성을 변경하려면

  1. Elastic Beanstalk 콘솔을 엽니다.

  2. 해당 환경의 관리 페이지로 이동합니다.

  3. [Configuration]을 선택합니다.

  4. 용량 구성 범주에서 수정을 선택합니다.

  5. Auto Scaling 그룹 섹션에서 환경 유형로드 밸런싱 수행으로 변경합니다.

  6. 인스턴스 행에서 최대4로 변경하고 최소2로 변경합니다.

  7. Modify capacity(용량 수정) 페이지 하단에서 저장을 선택합니다.

  8. Configuration overview(구성 개요) 페이지 하단에서 적용을 선택합니다.

  9. 경고가 표시됩니다. 이 경고는 마이그레이션이 모든 현재 인스턴스를 대체함을 알려줍니다. Confirm을 선택합니다.

환경이 업데이트되는 데 몇 분이 걸릴 수 있습니다. 환경이 준비되면 다음 작업으로 이동하여 변경 사항을 확인할 수 있습니다.

로드 밸런서 변경 사항을 확인하려면

  1. 탐색 창에서 [Events]를 선택합니다.

    이벤트 목록에 이벤트 Successfully deployed new configuration to environment(새 구성이 환경에 성공적으로 배포되었습니다)가 보일 것입니다. 이를 통해 Auto Scaling 최소 인스턴스 개수가 2로 설정되었음을 확인합니다. 두 번째 인스턴스가 자동으로 시작됩니다.

  2. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  3. 탐색 창의 LOAD BALANCING에서 로드 밸런서를 선택합니다.

  4. 원하는 인스턴스 이름의 로드 밸런서가 나타날 때까지 다음 두 단계를 반복합니다.

  5. 로드 밸런서 목록에서 로드 밸런서를 선택합니다.

  6. Load Balancer: <load balancer name> 창에서 인스턴스를 선택한 후, 인스턴스 테이블에서 이름을 봅니다.

    
            로드 밸런서 창

    이 정보는 EC2 인스턴스의 증가에 상응하여 두 인스턴스가 이 로드 밸런서와 연결되어 있음을 보여 줍니다.

6단계: 정리

축하합니다! 샘플 애플리케이션을 클라우드에 배포하고, 새 버전을 업로드하고, 구성을 수정하여 두 번째 Auto Scaling 인스턴스에 추가했습니다. 불필요한 서비스 요금이 청구되지 않도록 Elastic Beanstalk 및 AWS 제품에서 원치 않는 애플리케이션과 환경을 삭제하십시오.

애플리케이션을 완전히 삭제하려면

  1. 모든 애플리케이션 버전 삭제.

    1. Elastic Beanstalk 콘솔을 엽니다.

    2. Elastic Beanstalk 애플리케이션 페이지에서 getting-started-app 애플리케이션을 선택합니다.

    3. 탐색 창에서 애플리케이션 버전을 선택합니다.

    4. 애플리케이션 버전 페이지에서 삭제할 모든 애플리케이션 버전을 선택한 후 삭제를 선택합니다.

    5. 삭제하려는 버전을 확인한 다음 삭제를 선택합니다.

    6. Done을 선택합니다.

  2. 환경 종료.

    1. 환경 대시보드로 돌아가려면 getting-started-app을 클릭한 다음 GettingStartedApp-env를 클릭합니다.

    2. 작업을 선택한 후 Terminate Environment(환경 종료)를 선택합니다.

    3. GettingStartedApp-env를 종료하고자 함을 확인한 후 종료를 선택합니다.

  3. getting-started-app Elastic Beanstalk애플리케이션을 삭제합니다.

    1. 왼쪽 상단에서 Elastic Beanstalk를 선택하여 기본 대시보드로 돌아갑니다.

    2. Elastic Beanstalk 애플리케이션 페이지에서 getting-started-app 애플리케이션에 대해 작업을 선택한 다음 애플리케이션 삭제를 선택합니다.

    3. getting-started-app을 삭제 중인지 확인한 다음 삭제를 선택합니다.

다음으로 진행할 단계

이제 Elastic Beanstalk와 이에 액세스하는 방법에 대해 배웠으므로 AWS Elastic Beanstalk 개념 섹션을 참조할 것을 권장합니다. 이 주제에는 Elastic Beanstalk의 구성 요소, 아키텍처 및 Elastic Beanstalk 애플리케이션의 중요 설계 고려사항에 대한 정보가 나와 있습니다.

AWS Management 콘솔 외에도 다음 도구를 사용하여 Elastic Beanstalk 환경을 생성하고 관리할 수도 있습니다.

EB CLI

EB CLI는 환경을 생성하고 관리하기 위한 명령줄 도구입니다. 자세한 내용은 Elastic Beanstalk 명령줄 인터페이스(EB CLI) 단원을 참조하십시오.

AWS SDK for Java

Java용 AWS SDK는 AWS 인프라 서비스를 사용하는 애플리케이션을 구축할 때 사용할 수 있는 Java API를 제공합니다. AWS SDK for Java를 통해 AWS Java 라이브러리, 코드 샘플 및 설명서가 포함된 다운로드 가능한 단일 패키지로 몇 분 안에 시작할 수 있습니다.

AWS SDK for Java에는 J2SE Development Kit 5.0 이상이 필요합니다. http://developers.sun.com/downloads/에서 최신 Java 소프트웨어를 다운로드할 수 있습니다. 또한 SDK에는 Apache Commons(Codec, HTTPClient, Logging)와 SDK의 타사 디렉터리에 포함된 Saxon-HE 타사 패키지가 필요합니다.

자세한 내용은 Java용 AWS SDK를 참조하십시오.

AWS Toolkit for Eclipse

AWS Toolkit for Eclipse 플러그인을 통해 AWS SDK for Java로 미리 구성된 새 AWS Java 웹 프로젝트를 만든 후 웹 애플리케이션을 Elastic Beanstalk에 배포할 수 있습니다. Elastic Beanstalk 플러그인은 Eclipse Web Tools Platform(WTP)을 기반으로 합니다. 이 도구 키트는 Amazon S3 및 Amazon SNS 사용을 보여 주는 Travel Log 샘플 웹 애플리케이션 템플릿을 제공합니다.

WTP 종속 항목을 모두 갖추려면 http://eclipse.org/downloads/에서 다운로드할 수 있는 Eclipse의 Java EE 배포를 사용하여 이를 시작하는 것이 좋습니다.

Eclipse용 Elastic Beanstalk 플러그인 사용에 대한 자세한 내용은 AWS Toolkit for Eclipse 단원을 참조하십시오. Eclipse를 사용하여 Elastic Beanstalk 애플리케이션을 만들기 시작하려면 AWS Elastic Beanstalk에서의 Java 애플리케이션 생성 및 배포를 참조하십시오.

.NET용 AWS SDK

.NET용 AWS SDK를 사용하여 AWS 인프라 서비스를 사용하는 애플리케이션을 구축할 수 있습니다. .NET용 AWS SDK를 통해 AWS .NET 라이브러리, 코드 샘플 및 설명서가 포함된 다운로드 가능한 단일 패키지로 몇 분 안에 시작할 수 있습니다.

자세한 내용은 .NET용 AWS SDK를 참조하십시오. 지원되는 .NET Framework 및 Visual Studio 버전은 .NET용 AWS SDK Developer Guide 단원을 참조하십시오.

AWS Toolkit for Visual Studio

AWS Toolkit for Visual Studio 플러그인을 사용하여 기존 .NET 애플리케이션을 Elastic Beanstalk에 배포할 수 있습니다. 또한 .NET용 AWS SDK로 미리 구성된 AWS 템플릿을 사용하여 새 프로젝트를 만들 수 있습니다. 사전 조건 및 설치 정보는 AWS Toolkit for Visual Studio를 참조하십시오. Visual Studio를 사용하여 Elastic Beanstalk 애플리케이션을 만들기 시작하려면 AWS Toolkit for Visual Studio를 사용한 .NET 내 Elastic Beanstalk 애플리케이션 생성 및 배포를 참조하십시오.

AWS SDK for JavaScript in Node.js

AWS SDK for JavaScript in Node.js를 사용하여 AWS 인프라 서비스를 기반으로 애플리케이션을 구축할 수 있습니다. AWS SDK for JavaScript in Node.js를 통해 AWS Node.js 라이브러리, 코드 샘플 및 설명서가 포함된 다운로드 가능한 단일 패키지로 몇 분 안에 시작할 수 있습니다.

자세한 내용은 Node.js의 JavaScript용 AWS SDK를 참조하십시오.

PHP용 AWS SDK

PHP용 AWS SDK를 사용하여 AWS 인프라 서비스를 기반으로 애플리케이션을 구축할 수 있습니다. PHP용 AWS SDK를 통해 AWS PHP 라이브러리, 코드 샘플 및 설명서가 포함된 다운로드 가능한 단일 패키지로 몇 분 안에 시작할 수 있습니다.

PHP용 AWS SDK에는 PHP 5.2 이상이 필요합니다. 다운로드에 대한 자세한 내용은 http://php.net/를 참조하십시오.

자세한 내용은 PHP용 AWS SDK를 참조하십시오.

AWS SDK for Python (Boto)

AWS SDK for Python (Boto)을 통해 AWS Python 라이브러리, 코드 샘플 및 설명서가 완비된 다운로드 가능한 단일 패키지로 몇 분 안에 시작할 수 있습니다. API를 기반으로 Python 애플리케이션을 구축하여 웹 서비스 인터페이스에 대해 직접 코딩하는 복잡한 문제를 해소할 수 있습니다. 통합 라이브러리는 인증, 요청 재시도, 오류 처리 등 AWS 클라우드의 프로그래밍과 관련된 상당수의 하위 수준 작업을 숨기는 Python 개발자에 친숙한 API를 제공합니다. SDK는 라이브러리를 사용하여 애플리케이션을 구축하는 방법에 대한 실습 예제를 Python에 제공합니다. Boto, 샘플 코드, 설명서, 도구 및 추가 리소스에 대한 자세한 내용은 Python 개발자 센터를 참조하십시오.

Ruby용 AWS SDK

AWS Python 라이브러리, 코드 샘플, 설명서가 완비된 다운로드 가능한 단일 패키지로 몇 분 안에 시작할 수 있습니다. API를 기반으로 Ruby 애플리케이션을 구축하여 웹 서비스 인터페이스에 대해 직접 코딩하는 복잡한 문제를 해소할 수 있습니다. 통합 라이브러리는 인증, 요청 재시도, 오류 처리 등 AWS 클라우드의 프로그래밍과 관련된 상당수의 하위 수준 작업을 없애주는 Ruby 개발자에 친숙한 API를 제공합니다. SDK는 라이브러리를 사용하여 애플리케이션을 구축하는 방법에 대한 실습 예제를 Ruby에 제공합니다. SDK, 샘플 코드, 설명서, 도구 및 추가 리소스에 대한 자세한 내용은 Ruby 개발자 센터를 참조하십시오.