Elastic Beanstalk이란 무엇일까

@Wonyu· December 04, 2024 · 5 min read

운영 중인 서비스를 Elastic Beanstalk으로 관리하게 되어 Elastic Beanstalk를 이용해 간단한Spring boot Application을 배포하고, CI/CD를 구축하는 과정을 기록하려고 한다.

Elastic Beanstalk이란?

Elastic Beanstalk은 AWS(Amazon Web Services)에서 제공하는 PaaS(Platform as a Service) 서비스다. 이를 통해 사용자는 웹 애플리케이션 및 서비스를 쉽게 배포, 관리, 그리고 확장할 수 있다. Elastic Beanstalk은 개발자가 애플리케이션 코드에 집중할 수 있도록 인프라 설정 및 관리를 자동화해준다.

주요 특징

  1. 자동화된 인프라 관리

    • Elastic Beanstalk은 애플리케이션 실행에 필요한 리소스(EC2, S3, RDS 등)를 자동으로 생성, 설정, 그리고 연결한다.
    • 인프라 설정과 관리를 사용자가 직접 수행할 필요 없이 Beanstalk이 이를 처리한다.
  2. 언어와 플랫폼 지원

    • 다양한 언어와 플랫폼을 지원한다. (Java, .NET, PHP, Node.js, Python, Ruby, Go 등)
    • Docker 컨테이너도 지원하여 더 많은 환경에서 활용 가능하다.
  3. 빠른 배포

    • 애플리케이션 패키지(코드 및 설정)를 업로드하면 Elastic Beanstalk이 자동으로 애플리케이션을 실행할 환경을 구성한다.
  4. 확장성

    • 사용량에 따라 리소스를 자동으로 확장하거나 축소한다(예: EC2 Auto Scaling, Elastic Load Balancing).
    • 이를 통해 애플리케이션은 안정적으로 높은 트래픽을 처리할 수 있다.
  5. 모니터링

    • Amazon CloudWatch와 통합되어 애플리케이션 상태를 실시간으로 모니터링할 수 있다.
    • 대시보드에서 애플리케이션 성능, 상태, 그리고 문제를 쉽게 파악할 수 있다.
  6. 사용자 제어

    • Elastic Beanstalk은 완전 자동화된 서비스이지만, 필요 시 세부 설정을 사용자 지정할 수 있다.
    • EC2 인스턴스의 유형, 데이터베이스 설정, 네트워킹 등을 직접 설정 가능하다.

Elastic Beanstalk의 구조

  1. 애플리케이션(Application)

    • 사용자가 배포하려는 전체 프로젝트다.
  2. 환경(Environment)

    • 애플리케이션이 실행되는 실행 환경이다.
    • Load Balancer가 있는 프로덕션 환경 또는 단일 EC2 인스턴스 환경을 설정할 수 있다.
  3. 애플리케이션 버전(Application Version)

    • Elastic Beanstalk에서 관리하는 특정 애플리케이션 배포 패키지다.
  4. 환경 구성(Environment Configuration)

    • Elastic Beanstalk 환경의 설정 세부사항이다(인스턴스 유형, 데이터베이스, 네트워킹 등).

사용 사례

  1. 웹 애플리케이션 배포

    • 블로그, 전자 상거래 웹사이트 등 다양한 웹 애플리케이션을 빠르게 배포 및 확장 가능.
  2. 백엔드 API

    • 모바일 앱 또는 웹 애플리케이션의 백엔드 서비스로 사용.
  3. 실험 및 프로토타이핑

    • 새로운 기능을 빠르게 배포하고 테스트할 수 있는 환경 제공.
  4. 자동 확장 요구가 있는 애플리케이션

    • 애플리케이션의 트래픽 증가에 따라 동적으로 확장이 필요한 경우 적합.

장단점

장점

  • 간편성: 코드만 업로드하면 실행 환경이 자동으로 구성.
  • 확장성: Auto Scaling과 Load Balancing이 내장되어 트래픽 증가를 처리 가능.
  • 통합: AWS 서비스(S3, RDS, CloudWatch 등)와 원활히 연동.
  • 유연성: 자동화된 설정을 기본으로 하되, 필요 시 사용자 정의 가능.

단점

  • 복잡한 커스터마이징에 비적합: 자동화된 기능은 세부적인 사용자 설정에는 제한이 있을 수 있음.
  • 학습 필요: Elastic Beanstalk의 자동화 및 설정 방식을 이해해야 최적의 활용이 가능.

Elastic Beanstalk는 사용하는 리소스 외 비용이 필요하지 않기 때문에 빠르게 애플리케이션을 배포하고 관리하고자 하는 사용자에게 특히 유용한 서비스다.

@Wonyu
Hello :) I'm Wonyu