이번에 AWS를 공부하면서 ECS랑 Elastic Beanstalk에 대해 처음 알게 됐는데요.
이번 글에서는 Elastic Beanstalk에 대해 공부해봤습니다.

AWS (Amazon Web Services)는 웹사이트를 배포할 수 있는 다양한 환경을 제공합니다. 하지만 너무 다양해서 처음 접하면 어떤 서비스를 선택해야 할지 혼란스러울 수 있습니다.
개인적으로 느끼기에 EC2가 가장 많이 사용되는 서비스이지만 EC2의 복잡한 설정을 간소화해주는 Elastic Beanstalk이라는 서비스도 존재합니다.
이 글에서는 Elastic Beanstalk의 개념과 배포 방법에 대해 알아보려 합니다. 전문적인 글이라기보다는 초보자의 관점에서 어떻게 배포할 수 있는지에 초점을 맞추었습니다.
Elastic Beanstalk이란?
Elastic Beanstalk은 이름이 다소 낯설게 느껴질 수 있습니다.
- **“Elastic”**은 확장성과 유연성을 의미합니다
- **“Beanstalk”**은 식물의 줄기와 잎을 지지하는 구조물을 의미합니다
이름에서 알 수 있듯이, Elastic Beanstalk는 애플리케이션을 지탱하고 성장시키는 기반 구조를 제공하는 PaaS(Platform as a Service) 서비스입니다.
핵심 특징
개발자가 애플리케이션 코드를 업로드하면 Elastic Beanstalk가 다음을 자동으로 처리합니다.
- 배포(Deployment)
- 프로비저닝(Provisioning)
- 로드 밸런싱(Load Balancing)
- 자동 확장(Auto Scaling)
- 애플리케이션 모니터링
- 운영 체제 업데이트
결과적으로 개발자는 인프라 관리가 아닌 애플리케이션 개발에만 집중할 수 있습니다.
EC2와의 차이점
EC2 (Elastic Compute Cloud)
- IaaS(Infrastructure as a Service) 서비스
- 가상 서버를 직접 생성하고 관리해야 함
- 인스턴스 생성, 시작, 정지, 삭제 등 모든 작업을 직접 수행
- 세밀한 제어가 가능하지만 관리 부담이 큼
- 서버 설정, 보안 그룹, 네트워크 구성 등을 직접 설정
Elastic Beanstalk
- PaaS(Platform as a Service) 서비스
- 코드만 업로드하면 AWS가 배포 및 관리를 자동화
- 인프라 설정이 자동으로 완료
- 빠른 배포가 가능하지만 세밀한 제어는 제한적
간단히 말하면 EC2는 집을 짓기 위한 땅과 자재를 제공하고 Elastic Beanstalk는 이미 지어진 집을 제공하는 것과 같습니다.
Elastic Beanstalk의 주요 장점
1. 생산성 향상
- 몇 번의 클릭만으로 인프라 환경 생성
- 인프라에 대한 고민 없이 개발에만 집중 가능
2. 자동화된 인프라 관리
- 부하 분산, 모니터링을 AWS가 자동으로 수행
- 운영 체제 업데이트가 자동으로 이루어져 항상 최신 버전 유지
3. 완전한 환경 제공
EC2 인스턴스가 다음과 같이 설정된 상태로 제공됩니다:
- 운영 체제(OS)
- 웹 서버 소프트웨어 (Apache, Nginx 등)
- 애플리케이션 실행 환경
4. 다양한 플랫폼 지원
- 언어: Java, .NET, PHP, Node.js, Python, Ruby, Go
- 컨테이너: Docker
- OS: Amazon Linux AMI, Windows Server AMI
5. 유연한 구성
- 단일(Single) 인스턴스 구성
- Multi-AZ 고가용성 구성
- Auto Scaling을 통한 자동 확장
6. 통합 AWS 서비스
관련 AWS 서비스가 자동으로 설정됩니다:
- ELB (Elastic Load Balancer)
- S3 (Simple Storage Service)
- Auto Scaling 그룹
- CloudWatch 모니터링
Java Spring 애플리케이션 배포하기
Spring Boot 애플리케이션을 배포하는 기본 흐름은 다음과 같습니다:
1. 애플리케이션 빌드
bash
./gradlew clean build *# 또는* mvn clean package
2. JAR/WAR 파일 생성 확인
- Spring Boot는 기본적으로 실행 가능한 JAR 파일을 생성합니다
- build/libs/ 또는 target/ 디렉토리에서 확인
3. Elastic Beanstalk 환경 생성
- AWS 콘솔에서 Elastic Beanstalk 선택
- “Create Application” 클릭
- 플랫폼으로 “Java” 선택
- 빌드된 JAR/WAR 파일 업로드
4. 배포 완료
- AWS가 자동으로 환경을 구성하고 애플리케이션을 배포
- 제공되는 URL로 애플리케이션 접속 가능
Elastic Beanstalk의 배포 워크플로우

- 코드 업로드: JAR/WAR 파일 또는 소스 코드를 업로드
- 자동 배포: AWS가 자동으로 환경을 구성하고 애플리케이션을 배포
- 모니터링: 대시보드에서 애플리케이션 상태 확인
- 업데이트: 새 버전 업로드 시 무중단 또는 블루-그린 배포 가능
- 자동 관리: OS 업데이트, 보안 패치 등이 자동으로 적용
주의사항
- 기본 설정으로도 충분히 사용 가능하지만 프로덕션 환경에서는 세부 설정 검토 필요
- 비용: Elastic Beanstalk 자체는 무료이지만 사용하는 EC2, S3 등의 리소스에 대한 비용 발생
- 복잡한 커스터마이징이 필요한 경우 EC2를 직접 사용하는 것이 더 적합할 수 있음
마치며
Elastic Beanstalk는 인프라 관리 부담 없이 빠르게 애플리케이션을 배포하고 싶은 개발자에게 훌륭한 선택입니다. 특히 Spring Boot 애플리케이션의 경우 빌드된 JAR 파일만 업로드하면 되므로 배포가 매우 간편합니다.
처음에는 다소 낯설 수 있지만 몇 번 사용해보면 그 편리함을 체감할 수 있을 것입니다.
Ref
https://jibinary.tistory.com/342
https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/Welcome.html