Elastic Beanstalk에서는.NET, Docker, Go, Java, Node js, PHP. Python, Ruby, Tomcat, GlassFish와 같은 플랫폼을 지원합니다. 이번 Hands On에서는Node.js와Python(Django)를 사용하여 웹 애플리케이션을 배포해 보도록 하겠습니다.
AWS Console을 활용하여 Elastic Beanstalk를 배포하기 위해서 기본으로 VPC에 대한 이해와 EC2 Instance에 대한 이해가 있으시면 충분히 따라 하실 수 있습니다.
개요
[Node.js 란]
Node.js는 2009년 등장한 자바스크립트 런타임입니다.
JavaScript Everywhere이라는 기조로 자바스크립트를 클라이언트와 서버 모두 개발 가능 하도록 설계되었습니다.
논블로킹(Non-blocking) I/O와 단일 스레드 이벤트 루프를 통해 높은 처리 성능으로 다양한 곳에서 활용되는 소프트웨어 플랫폼입니다.
[Django 란]
django는 Python 기반 웹 프레임워크 입니다.
따라서 Python에서 가능한 모든 동작이 가능하며, 강력한 라이브러리들이 많습니다.
또한 반복적으로 구현해야 하는 부분은 이미 만들어져 있습니다.
예를 들면 로그인, 회원가입, 인증, CORS, data parsing 등은 라이브러리를 이용해 간단하게 사용할 수 있습니다
Hands On에서는 AWS Elastic Beanstalk에서 제공하는 샘플 코드를 활용하여 웹 애플리케이션 배포를 진행해 보도록 하겠습니다.
[Hands On 실습 환경 구성]
Hands On을 통해 다음과 같은 환경을 구성할 예정입니다.
오토스케일링 그룹을 생성하고 오토스케일링 그룹과 연결된 애플리케이션 로드밸런서를 생성하여 인터넷과 연결되는 구성과 Elastic Beanstalk에서 코드 배포를 진행해 보겠습니다.
1. 애플리케이션 및 환경 생성
Elastic Beanstalk 탭으로 들어가 애플리케이션 → 새 애플리케이션 생성을 선택합니다.
생성하실 애플리케이션의 이름을 설정하시고 애플리케이션 생성을 선택하시면 됩니다.
애플리케이션 태그의 경우 아무것도 넣지 않으셔도 무방합니다.
처음 Beanstalk를 생성하는 경우 다음과 같이 자동으로 웹 애플리케이션 환경을 동시에 생성하게 나옵니다. 환경을 나중에 설정하고 싶으시면 애플리케이션 이름만 작성하신 후 애플리케이션 생성을 누르시면 됩니다.
생성한 애플리케이션을 선택해 애플리케이션에 들어가 새 환경 생성을 선택합니다.
환경 티어를 선택하는 페이지가 나옵니다.
이번 Hands On에서는 웹 애플리케이션을 구성하기 때문에 웹 서버 환경을 선택합니다.
웹 서버 환경 – 80 포트를 통해 HTTP 또는 443 포트를 통해 HTTPS 요청을 처리하는 환경
작업자 환경 – 배치, 스케줄 프로그램을 위한 환경으로 SQS Queue를 통해 메시지를 처리하는 애플리케이션 환경
환경 정보 탭에서 환경 이름을 설정하고 Beanstalk에 연결될 도메인을 설정합니다.
도메인을 공백으로 두 면 자동으로 환경 이름이 도메인으로 들어갑니다.
플랫폼 탭에서는 사용할 플랫폼을 설정합니다.
이번 Hands On에서는 Node.js를 사용할 예정이므로 Node.js 14버전을 선택합니다.
python 또한 환경에 맞는 버전을 선택하시면 되겠습니다.
애플리케이션 코드 탭에서는 코드 업로드를 선택합니다.
로컬 파일을 선택 후 파일 선택을 통해 위의 링크에서 다운로드한 nodejs.zip 파일을 선택합니다.
코드 선택 후추가 옵션 구성을 선택해 환경 구성을 진행합니다.+
2. 환경 구성
Elastic Beanstalk에서 가장 중요한 부분이 환경 구성이라고 할 수 있습니다.
웹 애플리케이션의 목적에 맞게 환경을 구성하면 이후에는 Beanstalk에서 용량 프로비저닝, 로드 밸런싱, Auto Scaling부터 시작하여 애플리케이션 상태 모니터링에 이르기까지 배포를 자동으로 처리합니다.
이번 Hands On에서는 오토스케일링과 로드밸런서를 사용할 예정이므로 사전 설정에서 고가용성을 선택해 줍니다.
스팟 인스턴스를 사용 시 최대 90% 저렴한 가격에 사용할 수 있지만 항상 중단에 준비되어 있어야 하므로 온디멘드 인스턴스로 Hands On을 진행합니다.
네트워크
가장 먼저 네트워크 설정을 합니다. 편집을 눌러 설정으로 들어갑니다.
먼저 사용할 VPC를 선택을 합니다.
다음으로 로드 밸런서의 네트워크 설정을 합니다. 로드 밸런서는 공개, 내부 두 가지 옵션이 있습니다.
이번 Hands On에서는 공개로 설정 후 가용영역 a, c의 퍼블릭 서브넷에 위치하겠습니다.
다음으로 인스턴스 설정입니다.
이 부분을 잘 설정해 주셔야 환경 생성 시 오류가 나지 않습니다.
먼저퍼블릭 서브넷에 인스턴스를 위치할 때는 반드시퍼블릭 IP 주소를 할당해 줘야 합니다.
프라이빗 서브넷에 인스턴스를 위치할 때는NAT Gatway 혹은 NAT Instance로 외부 통신이 가능하게 설정을 해 주셔야 합니다.