AWS Elastic Beanstalk 시작하기 - 1. 설치 및 소스코드 Deploy (Free Tier)

서론

이 포스팅은 AWS Elastic Beanstalk(EBS)를 사용하여 Java 웹 어플리케이션 서비스를 바로 시작할 수 있는 방법을 소개한다(Free Tier). EBS에 대해서 간단히 살펴보고 EBS 설치 후 Spring framework 기반 웹 어플리케이션을 디플로이 시켜 운영하는 방법을 소개한다.

Elastic Beanstalk 소개

AWS Elastic Beanstalk는 Java, .NET, PHP, Node.js, Python, Ruby, Go, Docker를 사용하여 Apache, Nginx, IIS와 등에 배포하고 있는 웹 어플리케이션을 간편하게 배포하고 확장할 수 있는 서비스이다. Elastic Beanstalk를 사용하면 로컬 서버에서 웹 어플리케이션을 개발, 배포, 관리하는 것과 달리 작성한 코드를 업로드하기만 하면 자동으로 로드 밸런싱 애플리케이션 상태 모니터링 등 배포와 관리를 자동으로 처리할 수 있다1.

Elastic Beansalk 장점

  • Fast and simple to begin (빠르고 간편한 시작): EBS를 사용하면 서비스를 위한 복잡한 인프라를 직접 구성할 필요가 없다. 어플리케이션 코드를 업로드만 하면 자동으로 프로비저닝, 오토 스케일링, 로드 밸런싱, 모니터링과 관련된 인프라가 자동으로 만들어진다.
  • Developer productivity (개발자 생산성): 서비스 인프라에 대한 관리와 패치 부분을 EBS에서 자동으로 관리하기 때문에 갭라자는 어플리케이션 개발에 집중할 수 있다.
  • Impossible to outgrow (적절한 규모 유지): EBS는 모니터링을 통해 자동으로 로드 밸런싱, 오토 스케일링을 하여 항상 적절한 규모에 대해 자동으로 대응할 수 있다.
  • Complete resource control (완벽한 리소스 제어): EBS에서 리소스 변경은 아주 간단히 처리할 수 있기 때문에 필요에 따라 원하는 리소스를 쉽게 관리할 수 있다.

Elastic Beanstak 시작하기

Elastic Beanstalk는 Application을 만들고 해당하는 Environment를 만들어서 운영한다.

AWS Management Console에서 Elastic Beanstalk 를 클릭한다.

만약 기존에 Elastic Beanstalk 에 Application을 만든적이 있다면 다음과 같이 이미 만들어진 Application과 Environment 들이 보일 것이다. 아래 그림에서 보이는 Application 과 Envrionment는 이 블로그를 운영하기 위해서 생성한 것들이다.(Ghost 블로그 AWS에서 운영하기 - 1. AWS Elastic Beanstalk에 설치하기글 참조)2.

EBS Application 생성

우리는 새로운 Application을 생성하기 위해서 Create New Application 버튼을 클릭한다. 아래와 같이 Application 정보를 입력하는 화면이 나타나면 자신에 맞는 어플리케이션 정보를 입력한다. 예제를 위해 우리는 다음과 같이 입력한다.

  • Application Name : hbn-ebs-demo-spring
  • Description : AWS Elastic Beanstalk Spring 웹 프로그램 예제

어플리케이션 정보를 입력후 Create 버튼을 클릭한다. EBS에 어플리케이션이 생성되면 다음과 같은 화면이 나타난다. EBS는 하나의 Application 에 여러개의 설정이 같거나 다른 Environment를 생성할 수 있다.

Environment 생성

현재는 Application에 해당하는 Environment는 하나도 없기 때문에 Create one now 를 클릭해서 새로운 Environment를 생성한다.

우리는 Java 웹 프로그램을 위한 EBS 환경을 생성하기 위해서 Web server environment를 체크하고 Select 버튼을 클릭하면 다음과 같은 화면이 나타난다.

  • Tier : Web Server
  • Platform : Tomcat
  • Application code : Sample application

을 선택한다. 만약 특별한 환경설정 없이 EBS를 시작하고 싶을 경우 Create environment를 버튼을 선택하면 바로 새로운 Environment 가 생성된다.

Environment 설정

우리는 좀 더 설정을 위해서 Configure more options 버튼을 클릭한다. 처음 시작할 경우 우리는 Free Tier 로 시작할 수 있다. 만약 실제 서비스를 할 경우라면 High availabilityCustom Configuration을 클릭하면 된다. Free TierInstances 에서 EC2 인스턴스가 t2.micro 로 되어 있는 것을 확인할 수 있다.

EBS에서 기본적으로 Envrionment를 생성하게 되면 Name이 자동으로 LowCost-env로 할당이 되는데, 우리는 EBS Application Environment 이름을 수정하도록 한다. Environment SettingsModify를 클릭한다.

  • Name : hbn-ebs-env-demo-spring-release
  • Domain : hbn-ebs-env-demo-spring-release
  • Description : application release environment

입력화면은 위의 내용으로 입력하거나 자신에 맞는 내용으로 입력하면 된다. 여기서 Domain은 실제 EBS가 생성후 서버가 실행되면 URL로 접근할 수 있는데 이 때 사용하는 도메인이다. 이것은 유일해야하는 값으로 Domain을 입력후 Check availability 버튼을 클릭해서 사용 가능한 도메인인지 체크해야한다. 만약 문제 없이 사용할 수 있으면 그림과 같이 녹색으로 표시가 된다. 모든 입력이 마치면 Save 버튼을 클릭한다. 나머지는 모두 기본값으로 설정 그대로 두고 Create envrionment 버튼을 클릭해서 새로운 Environment을 생성한다.

조금 기다리면 위의 그림과 같이 Environment가 생성되는 과정이 화면에 나타난다. 이 때 URL을 살펴보면 앞에서 Domain을 설정한 URL이 만들어진 것을 확인할 수 있다. 이제 Envrionment 생성이 완전히 끝나면 브라우저에서 이 URL로 접근할 수 있다. Environment는 AWS에서 처리 되는 동안은 회색으로 되어 있다가 정상적으로 완료되면 녹색으로 상태가 변경된다.

EBS Application의 Envrionment가 정상적으로 설치가되면 해당 Environment를 클릭한다. 이제 EBS Dashboard에서 EBS의 현재 상태와 버전 정보를 확인할 수 있다. 새롭게 생성된 EBS의 환경은 64bit Amazone Linux 2016.09 v2.5.0 운영체제에 Tomcat 8Java 8 환경으로 만들어졌다.

EBS 에서 Tomcat 서버가 잘 동작하고 있으니 브라우저에서 웹으로 접근해자. 브라우저에서 접근하기 위한 URL은 위에서 정의한 Domain으로 만들어진 URL이다. URL 링크를 클릭해보자. 우리는 최초 EBS를 생성할 때 Sample application 코드를 선택 했기 때문에 특별한 작업 없이 이미 만들어진 페이지를 확인할 수 있다.

소스코드 Upload and Deploy

우리는 위에서 AWS Elastic Beansalk를 간단히 생성하는 방법을 사펴보았다. 이제 가지고 있는 소스코드를 EBS로 업로드하거나 디플로하는 방법을 살펴보자.

EBS Dashboard에서 Upload and Deploy 버튼을 클릭한다.

  • Upload application : 기존에 사용하고 있는 소스코드를 war로 압축한 .war 파일
  • Version label : 0.0.1

Spring 예제 소스코드

이 포스팅을 위해서 미리 작성한 Spring Boot로 작성한 소스코드를 https://github.com/saltfactory/saltfactory-demo-springboot/releases/tag/no-rds4 에서 받아서 사용할 수 있다.

이 소스코드를 .war 압축해서 업로드한다. 소스코드는 간단히 http://localhost:8080/hello/{name}으로 접근하면 {name}을 출력하는 간단한 예제이다.

소스코드 EBS로 Deploy

Deploy 버튼을 클릭하면 EBS로 소스코드가 업로드된다. 이 때 Dashboard에 EBS의 상태가 표시되는데 deploy가 되는 동안은 회색으로 변경이되고 이상없이 deploy가 끝나면 녹색으로 변경된다.

이제 소스코드를 EBS로 Deploy 시키는 작업이 끝났다. Envrionment의 URL을 클릭해서 소스코드가 웹 서버에서 잘 동작하는지 살펴보면 된다. http://hbn-ebs-env-demo-spring-release.ap-northeast-2.elasticbeanstalk.com/hello/saltfactory 로 요청하면 앞에서 http://localhost:8080/hello/saltfactory 로 요청할 때와 같은 결과가 나오는 것을 확인할 수 있다.

결론

AWS Elastic Beanstalk는 웹 서비스를 위한 인프라를 개발자가 직접 구성하지 않고 어플리케이션 개발에만 집중해서 개발할 수 있다. EBS는 웹 서비스를 위한 인프라를 자동으로 구성, 관리되어지며 사용자가 몇몇 설정을 변경하여 유연하게 새롭게 구성할 수 있다. Elastic Beanstalk는 Free Tier로 사용할 수 있는데 이 때 EC2 인스턴스 타입을 t2.microSingle Instance로 사용해야한다. EBS에 소스코드를 Deploy 시키는 방법은 CLI와 바이러리 파일을업로드하는 방법이 있는데 이 포스팅에서는 .war 파일을 업로드해서 Deploy하는 방법을 소개했다.

참조