상세 컨텐츠

본문 제목

[AWS] AWS Elastic Beanstalk 환경 구성해보기

Infrastructure

by 촬쓰으 2023. 4. 30. 14:42

본문

AWS Elastic Beanstalk이란

AWS Elastic Beanstalk는 클라우드에서 웹 애플리케이션을 개발, 배포 및 관리하기 위한 완전관리형(PaaS) 서비스입니다. 개발자는 Elastic Beanstalk를 사용하여 웹 애플리케이션의 인프라를 프로비저닝하고, 코드를 업로드하고, 환경을 관리하며, 애플리케이션을 실행할 수 있습니다.

Elastic Beanstalk는 애플리케이션을 실행하는 데 필요한 인프라를 자동으로 프로비저닝합니다. 개발자는 Elastic Beanstalk에서 애플리케이션을 실행하기 위한 서버 인스턴스, 로드 밸런서, 데이터베이스 등과 같은 컴포넌트를 선택할 수 있습니다.

Elastic Beanstalk는 웹 애플리케이션을 실행하는 데 필요한 환경을 제공합니다. 환경은 애플리케이션을 실행하는 데 필요한 리소스와 설정을 정의하는 컨테이너입니다. 예를 들어, 애플리케이션이 사용하는 언어, 프레임워크, 웹 서버, 데이터베이스, 로그 파일 위치 등을 정의할 수 있습니다.

Elastic Beanstalk는 배포 프로세스를 자동화하여 개발자가 쉽게 애플리케이션을 배포할 수 있도록 지원합니다. Elastic Beanstalk는 애플리케이션 코드를 압축하고, 배포하고, 구성을 업데이트하며, 스케일링을 관리합니다.

Elastic Beanstalk는 애플리케이션의 모니터링과 로그 수집을 제공합니다. 개발자는 Elastic Beanstalk 콘솔에서 애플리케이션의 상태와 성능을 모니터링하고, 로그를 볼 수 있습니다.

Elastic Beanstalk는 AWS 클라우드 서비스와 통합됩니다. 예를 들어, Elastic Beanstalk는 Amazon RDS 데이터베이스와 통합되어 데이터베이스를 프로비저닝하고 애플리케이션에 연결할 수 있습니다. 또한 Elastic Beanstalk는 Amazon S3와 통합되어 애플리케이션에 대한 정적 파일을 호스팅할 수 있습니다.

 

AWS EB 환경 생성하기

[Create Application]을 클릭하여 환경 생성을 시작합니다. 

 

웹 어플리케이션을 배포하는 경우 [웹 서버 환경]을 선택합니다. 

 

[애플리케이션 이름]을 입력해줍니다. "애플리케이션 이름-stage" 의 형식으로 이름을 지어주는 것이 일반적입니다. sluv이라는 애플리케이션의 개발 서버를 구축하는 경우, sluv-dev로 이름을 지어주면 되겠습니다. 

 

[환경 이름]은 [애플리케이션 이름]에 따라 자동으로 생성됩니다. 변경해줄 수도 있지만 그대로 두고 넘어가겠습니다. 

 

AWS EB는 Java, Docker, Node.js 등 다양한 플랫폼을 지원합니다. Docker 컨테이너 환경에서 애플리케이션을 실행시키기 위해 [Docker]를 선택해주겠습니다. 

 

[애플리케이션 코드]는 Default인 샘플 애플리케이션으로 두고 [추가 옵션 구성]을 클릭해줍니다. 

 

아래부터는 환경 구성과 관련된 옵션들을 지정합니다.

단일 인스턴스 옵션 사용 시 Load Balancer를 설정할 수 없어 Beanstalk으로 무중단 배포가 불가능하므로, [사전 설정]은 [사용자 지정 구성]을 선택해줍니다. 

 

EC2 인스턴스 생성 시 ssh, http, https와 관련된 인바운드 규칙을 보안그룹에 추가해줬던 것처럼, 마찬가지로 필요한 보안그룹 설정을 진행해줍니다.

 

Auto Scaling과 Load Balancing을 사용하기 위해, [용량] - [Auto Scaling 그룹]에서 [환경 유형]을 [단일 인스턴스]에서 [로드 밸런싱 수행]으로 변경해줍니다.

인스턴스의 최대 개수의 경우 과금이 되지 않도록 1개로 설정해주었습니다. 추가적인 인스턴스가 필요한 경우 최대 인스턴스 개수를 조정하시면 됩니다. 

 

[Load Balancer 유형]은 Default인 [Application Load Balancer]를 선택해줍니다. 

 

[애플리케이션 배포] 방식은 [한 번에 모두]로 설정하겠습니다. 다운 타임을 최소로 하는 무중단 배포를 진행하기 위해서는 [롤링] 혹은 [추가 배치를 사용한 롤링을 선택해주세요.]

  1. 한 번에 모두(Deploy All at Once): 이 방식은 새로운 버전의 애플리케이션을 한 번에 모든 Amazon EC2 인스턴스에 배포하는 방식입니다. 이 방식은 배포 시간이 매우 빠르지만, 모든 인스턴스에서 동시에 업데이트가 이루어지기 때문에 잠재적인 다운타임 문제가 발생할 수 있습니다. 따라서, 이 방식은 중요한 서비스나 대규모 애플리케이션에서는 권장되지 않습니다.
  2. 롤링(Rolling): 이 방식은 새로운 버전의 애플리케이션을 하나씩 Amazon EC2 인스턴스에 배포하는 방식입니다. 각 인스턴스는 새로운 버전으로 업데이트되고 검증이 완료된 후, 다음 인스턴스로 롤링 업데이트가 진행됩니다. 이 방식은 다운타임이 최소화되며, 인스턴스 중 일부에서 문제가 발생해도 다른 인스턴스에서 서비스를 계속할 수 있어 안정적인 배포를 보장할 수 있습니다.
  3. 추가 배치를 활용한 롤링(Rolling with Additional Batch): 이 방식은 롤링 방식과 유사하지만, 새로운 버전의 애플리케이션을 배포하는 동안 일부 Amazon EC2 인스턴스를 배치에 추가하여 배포 속도를 높일 수 있습니다. 추가 배치를 사용하여 애플리케이션 배포에 필요한 인스턴스 수를 증가시킬 수 있으며, 배치에 속한 인스턴스는 롤링 업데이트가 완료된 후에 환경에서 제거됩니다. 이 방식은 롤링 방식의 안정성과 함께 배포 속도를 높일 수 있어서 대규모 애플리케이션에서 많이 사용됩니다.

 

EC2 인스턴스에 ssh 원격 접속을 진행할 시 PEM.KEY 파일이 필요합니다. 기존에 생성해놨던 PEM.KEY가 없다면, [EC2] - [네트워크 및 보안] - [키 페어]에서 수동으로 생성해주면 됩니다. 

 

일련의 과정을 잘 따라오셨다면 아래와 같이 EB 환경이 정상적으로 구성되었음을 확인하실 수 있습니다. 

 

 

관련글 더보기

댓글 영역