[AWS Elastic Beanstalk] Elastic Beanstalk 개념 및 애플리케이션 생성
1. Elastic Beanstalk
- 애플리케이션을 만들 수 있는 환경을 빠르고 신속하게 구성해서 관리할 수 있는 서비스이다.
- 줄여서
EB
라고도 부른다.
- 복잡성을 줄일 수 있고, 애플리케이션을 업로드만 하면
용량 프로 비저닝
, 로드 밸런싱
, 조정
, 애플리케이션 상태 모니터링
에 대한 세부 정보를 자동으로 처리한다.
Go
, Java
, .NET
, Node.js
, PHP
, Python
, Ruby
에서 개발된 애플리케이션을 지원한다.
- 또한 애플리케이션을 배포할 때
Elastic Beanstalk
가 선택된 지원 가능 플랫폼 버전을 구축하고 AWS 리소스를 하나 이상 프로비저닝하여 애플리케이션을 실행한다.
- 추가 비용 없이 애플리케이션을 저장 및 실행하는 데 필요한 AWS 리소스에 대해서만 요금을 지불하면 된다.
2. Elastic Beanstalk의 Workflow
- 개발자가
Elastic Beanstalk
에 개발한 코드를 업로드한다.
Elastic Beanstalk
는 자동으로 필요한 AWS 리소스를 생성하고 애플리케이션을 실행한다.
- 애플리케이션 실행이 완료되면 개발자가 환경을 직접 관리하고 애플리케이션의 새로운 버전을 배포할 수 있다.
3. Elastic Beanstalk의 장점
- 빠르고 간편한 시작이 가능
- Auto Scalling 설정을 사용해 애플리케이션의 특정 필요에 따라 자동으로 애플리케이션의 확장 및 축소가 가능
- 인프라를 프로비저닝하고 운영할 뿐만 아니라 애플리케이션 스택을 관리해 주고, 애플리케이션이 실행되는 기본 플랫폼을 최신 패치와 업데이트를 통해 최신 상태로 유지해 주기 때문에 개발자가 서버, 데이터베이스, 로드밸런스, 방화벽 등을 관리하고 구성하는 데 시간을 들일 필요가 없음
- 애플리케이션을 실행하는 데 필요한 AWS 리소스를 파악하여 완벽하게 제어 가능
- CI/CD 구성 시 Beanstalk 인스턴스를 바로 선택할 수 있어서 빠르게 CI/CD 구성 가능
- 다른 서비스를 구성할 때도 AWS 내에서 구성할 수 있으므로 편리함
4. Elastic Beanstalk 애플리케이션 생성하기
1) Elastic Beanstalk으로 이동
- 먼저 AWS 홈페이지에서 Elastic Beanstalk으로 이동해 준다.
- 검색을 통해 이동하면 다음과 같은 화면이 뜨는데
애플리케이션 생성
을 눌러 준다.
2) 환경 티어 설정
- 환경 티어는
웹 서버 환경
과 작업자 환경
이 존재한다.
- 웹 서버 환경: HTTP 혹은 HTTPS 요청을 처리할 때 사용.
- 작업자 환경: 완료하는 데 오래 걸리는 작업 또는 워크플로를 수행할 경우 사용. Amazon SQS 대기열을 관리하고 대기열에서 읽는 작업이 필요할 때 사용.
환경에서 실행하는 애플리케이션 유형을 지정
하고 Elastic Beanstalk에서 이러한 애플리케이션을 지원하기 위해 프로비저닝하는 리소스를 결정
한다.
3) 애플리케이션 이름 설정
- 생성할 애플리케이션 이름을 설정해 준다.
- 나는 test용 애플리케이션이라 다음과 같이 설정해 주었다.
4) 플랫폼 설정
- 애플리케이션에 사용할 플랫폼을 설정해 준다.
Elastic Beanstalk
는 앞서 설명했듯 다양한 플랫폼을 지원하기 때문에 .NET
, Docker
, Go
, Java
, Node.js
, PHP
, Python
, Ruby
, Tomcat
과 같은 플랫폼을 선택할 수 있으며 해당 플랫폼의 브랜치와 버전 역시 선택 가능하다.
- 플랫폼을 선택하게 되면 default로 추천되는 버전이 선택된다.
5) 애플리케이션 코드
- 만약 코드가 없는 초기 생성 단계이면
샘플 애플리케이션
을 선택해 주면 된다.
코드를 업로드
할 수도 있고, 기존에 업로드 했던 애플리케이션
을 가지고 올 수도 있다.
6) 서비스 액세스 구성
- 기존 서비스 역할을 사용한다면 기존 서비스 역할 중 선택할 수 있도록 콤보 박스가 뜨게 된다.
- 만약 새 서비스 역할 생성 및 사용을 선택한다면 새로운 롤이 생성되며 해당 롤에 default 세팅이 되게 된다. 이 부분은 권한 세부 정보 보기를 눌러 확인이 가능하다.
키 페어
의 경우 미리 세팅을 해 두는 것이 좋다.
7) Virtual Private Cloud (VPC)
- 네트워킹, 데이터베이스 및 태그 설정 단계에 있는 선택 사항이다. 선택 사항이며 애플리케이션을 생성 후 지정할 수 있다.
- 가상 네트워크 망이다.
- 하나의 네트워크로 묶을 수 있다.
- 만약 여러 개의 서비스가 있고 서비스 네트워크에 대해 접근 제어나 역할 제어가 필요하다면 VPC를 구성한 후 그 안에 서비스를 넣을 수 있다.
Public
과 Private
이 있고 Private
에 서비스가 있다면 외부와 접근이 차단된다.
- 실제 운영되는 서비스라면 VPC를 사용해야 한다.
8) 제출
- 서비스 액세스 구성 이후의 단계는 모두 선택 사항이다.
- 선택 사항은 애플리케이션을 생성된 이후에도 변경 및 추가가 가능하다. 하지만 변경 및 추가하여 애플리케이션에 반영되는 과정이 시간이 걸릴 수 있으니 이미 정해진 부분들은 애플리케이션 생성 시 선택하는 것을 추천한다.
- 최종 검토 단계에서 설정한 내용들을 확인하고 하단 제일 밑에 있는 제출 버튼을 누르면 애플리케이션이 생성된다.
- 애플리케이션 환경 생성 과정에 시간이 걸린다.
Elastic Beanstalk
이 생성되면 EC2 대시보드에서도 확인이 가능하다.