[AWS SAA-C03] AWS Elastic Beanstalk 정리

Elastic Beanstalk

  • AWS Elastic Beanstalk는 애플리케이션을 실행하는 인프라에 대해 걱정할 필요 없이 AWS 클라우드에서 애플리케이션을 신속하게 배포하고 관리할 수 있도록 도와준다.
  • 선택이나 제어를 제한하지 않고 관리 복잡성을 줄여준다.
  • 애플리케이션에 대해 간단한 업로드 만으로 자동화된 인프라 관리와 코드배포를 지원하며 다음을 포함한다.
  • 애플리케이션 플랫폼 관리
  • 용량 프로비저닝
  • 로드 밸런싱
  • 자동 확장
  • 코드 배포
  • 상태 모니터링
  • Elastic Beanstalk는 애플리케이션이 업로드되면 자동으로 환경을 시작하고 코드를 실행하는 데 필요한 AWS 리소스를 생성 및 구성된다. 환경이 시작된 후에는 관리하고 새 애플리케이션 버전을 배포하는 데 사용할 수 있다.
  • Elastic Beanstalk에서 실행된 AWS 리소스는 완전히 액세스할 수 있다. 즉, EC2 인스턴스에 SSH로 접속할 수 있다.
  • 개발자와 시스템 관리자가 AWS 인프라에 대해 걱정할 필요 없이 애플리케이션을 쉽고 빠르게 배포하고 관리할 수 있는 방법을 제공한다.
  • 사용할 내부 AWS 리소스를 알고 있고 세분화된 제어가 필요한 경우 템플릿을 사용하는 CloudFormation이 Elastic Beanstalk보다 더 나은 옵션이다.

Elastic Beanstalk 구성 요소

  • 애플리케이션
    • 애플리케이션은 환경, 버전 및 환경 구성을 포함한 구성 요소의 논리적 모음이다.
  • 애플리케이션 버전
    • 애플리케이션 버전은 웹 애플리케이션에 대해 배포 가능한 코드의 특정 레이블이 지정된 반복을 의미한다.
    • 애플리케이션은 여러 버전을 가질 수 있으며, 각 애플리케이션 버전은 고유하며 S3 개체를 가리킨다.
    • 애플리케이션의 여러 버전을 배포하여 차이점을 테스트할 수 있으며, 문제 발생 시 모든 버전으로 롤백하는 데 도움이 된다.
  • 환경(Environment)
    • 환경은 한 번에 하나의 애플리케이션 버전을 실행하지만, 동일한 애플리케이션 버전을 여러 환경에 배포할 수 있다.
    • 환경이 생성되면 EB는 지정된 애플리케이션 버전을 실행하는 데 필요한 리소스를 프로비저닝한다.
  • 환경 구성
    • 환경 구성은 환경 관련 리소스의 동작 방식을 정의하는 매개변수 및 설정 모음을 식별한다.
    • 환경의 구성 설정이 업데이트되면 EB는 변경 사항에 따라 기존 리소스에 변경 사항을 자동으로 적용하거나 새 리소스를 삭제 및 배포한다.
  • 구성 템플릿(Configuration Template)
    • 구성 템플릿은 고유한 환경 구성을 만들기 위한 시작점이다.

Elastic Beanstalk Architecture

  • Elastic Beanstalk 환경에는 환경 티어, 플랫폼, 환경 유형이 필요하다.
  • 환경 티어는 EB가 지원할 리소스를 프로비저닝할지 여부를 결정한다.

웹 티어(Web Tier) - HTTP(S) 요청을 처리하는 웹 애플리케이션

워커 티어(Worker Tier) - 백그라운드 작업을 처리하는 애플리케이션

  • Worker Tier와 Web Tier는 각각 자체 리소스 세트가 필요하기 때문에 하나의 환경이 두 개의 서로 다른 환경 티어를 지원할 수 없다. 작업자 환경 티어와 웹 서버 환경 티어는 각각 자동 확장 그룹이 필요하지만, Elastic Beanstalk은 환경당 하나의 자동 확장 그룹만 지원한다.

Web Tier

  • 웹 애플리케이션이 웹 요청을 처리하는 환경 티어를 웹 티어라고 한다.
  • 웹 환경 티어용으로 생성된 AWS 리소스에는 Elastic Load Balancer, Auto Scaling Group, 하나 이상의 EC2인스턴스 등이 포함된다.
  • 모든 환경에는 ELB를 가리키는 CNAME URL이 있으며, Route 53에서 별칭이 ELB URL로 지정된다.
  • 애플리케이션을 실행하는 각 EC2 서버 인스턴스는 인프라 토폴로지 및 소프트웨어 스택을 정의하는 컨테이너 유형을 사용한다.
  • 호스트 관리자(HM)라는 소프트웨어 구성 요소는 각 EC2 서버 인스턴스에서 실행되며 다음을 담당한다.
    = 애플리케이션 배포
    = 콘솔, API 또는 명령줄을 통해 검색할 수 있도록 이벤트 및 메트릭 집계
    = 인스턴스 수준 이벤트 생성
    = 애플리케이션 로그 파일에서 중요한 오류 모니터링
    = 애플리케이션 서버 모니터링
    = 인스턴스 구성 요소 패치
    = 애플리케이션의 로그 파일을 순환하여 S3에 게시하기

Worker Environment Tier

  • 웹 애플리케이션이 백그라운드 작업을 실행하는 환경 티어를 Worker Environment Tier라고 한다.
  • Worker Environment Tier용으로 생성된 AWS 리소스에는 자동 확장 그룹, 하나 이상의 EC2 인스턴스, IAM 역할이 포함된다.
  • Worker Environment Tier의 경우, Elastic Beanstalk는 또한 SQS 큐가 없는 경우 이를 생성하고 프로비저닝한다.
  • Worker Environment Tier가 시작되면, EB는 선택한 프로그래밍 언어에 필요한 지원 파일과 동일한 SQS 큐에서 읽는 AutoScaling Group의 각 EC2 인스턴스에 데몬을 설치한다.
  • 데몬은 SQS 큐에서 요청을 가져온 다음 해당 메시지를 처리할 작업자 환경 계층에서 실행 중인 웹 애플리케이션으로 데이터를 전송하는 역할을 담당한다.
  • Worker Environment Tier는 성공적으로 처리할 수 있는 메시지를 저장하는 데 사용할 수 있는 SQS 사서함 큐를 지원한다. Dead Letter Queue는 성공적으로 처리되지 않은 메시지를 부업 처리, 격리 및 분석할 수 있는 기능을 제공한다.

다른 서비스와 Elastic Beanstalk

  • Elastic Beanstalk는 VPC를 지원하며 인스턴스와 같은 AWS 리소스를 VPC로 실행한다.
  • Elastic Beanstalk는 IAM을 지원하며, AWS 리소스에 대한 액세스를 안전하게 제어할 수 있도록 도와준다.
  • CloudFront는 Elastic Beanstalk가 생성 및 배포된 후 S3에서 콘텐츠를 배포하는 데 사용할 수 있다.

CloudTrail

  • Elastic Beanstalk는 모든 Elastic BeanstalkAPI 호출을 캡처하고 로그 파일을 지정된 S3 버킷으로 전송하는 서비스인 CloudTrail과 통합된다.
  • CloudTrail은 Elastic Beanstalk 콘솔에서 또는 코드에서 Elastic Beanstalk API로의 API호출을 캡처하여 Elastic Beanstalk에 대한 요청, 요청이 이루어진 소스 IP 주소, 요청을 한 사람, 요청이 이루어진 시기 등을 파악하는 데 도움을 준다.

RDS

  • EB는 개발 및 테스트 환경에는 이상적이지만 프로덕션 환경에는 적합하지 않은 환경에서 RDS 인스턴스 실행을 지원한다.
  • 프로덕션 환경의 경우 데이터베이스 인스턴스의 수명 주기를 애플리케이션 환경의 수명 주기에 연결하므로 권장되지 않는다. 따라서 환경이 삭제되면 RDS 인스턴스도 삭제된다.
  • 환경 외부에서 데이터베이스 인스턴스를 시작하고 Elastic Beanstalk에서 제공하는 기능 외부에서 데이터베이스 인스턴스에 연결하도록 애플리케이션을 구성하는 것이 좋다.
  • 환경 외부에서 데이터베이스 인스턴스를 사용하려면 추가 보안 그룹 및 연결 문자열 구성이 필요하지만, 애플리케이션이 여러 환경에서 데이터베이스에 연결하고, 통합 데이터베이스에서 지원되지 않는 데이터베이스 유형을 사용하고, 블루/그린 배포를 수행하고, 데이터베이스 인스턴스에 영향을 주지 않고 환경을 해제할 수 있다.

S3

  • EB는 환경이 생성되는 각 리전에 대해 elasticbeanstalk-region-account-id라는 이름의 S3 버킷을 생성한다.
  • EB는 이 버킷을 사용하여 애플리케이션 버전, 로그 및 기타 지원 파일을 생성한다.
  • 환경이 버킷에 쓸 수 있도록 허용하고 실수로 삭제되는 것을 방지하기 위해 생성하는 버킷에 버킷 정책을 적용한다.

Elastic Beanstalk 배포 전략

All at Once

  • 모든 인스턴스에서 동시에 인플레이스 배포를 수행한다.
  • 기존 인스턴스에서 수행되므로 변경 사항을 롤백하는 데 시간이 소요될 뿐만 아니라 다운타임이 발생할 수 있다.

Rolling

  • 롤링은 환경 인스턴스를 배치로 분할하고 애플리케이션의 새 버전을 기존 인스턴스에 한 번에 한 배치씩 배포하며 나머지 환경 인스턴스는 이전 버전을 실행한다.
  • 배치의 모든 인스턴스가 정상 상태가 될 때까지 기다렸다가 다음 배치로 이동한다.
  • 모든 인스턴스가 정상 상태가 될 때까지 기다렸다가 다음 배치로 이동한다.
  • 모든 인스턴스가 업데이트되지 않고 상태 검사에 실패하면 배포를 롤백할 수 있으므로 다운타임이 줄어든다.

추가 배치로 Rolling

  • 롤링과 유사하지만 새 배치에서 애플리케이션의 새 버전 배포를 시작한다.
  • 용량에 영향을 미치지 않으며 배포 프로시스 중에 전체 용량을 보장한다.

불변(Immutable)

  • 애플리케이션 소스가 항상 새 인스턴스에 배포되도록 보장한다.
  • 부분적으로 완료된 롤링 배포로 인해 발생하는 문제를 방지한다.
  • 최소한의 다운타임과 빠른 롤백을 제공한다.

블루/그린

  • 호환되지 않는 리소스 구성 변경 또는 이전 버전과 함께 실행할 수 없는 새 버전에 의존하는 배포에 적합하다.
  • DNS 전환을 수반하는 환경 URL 스왑 기능을 사용하여 구현된다.
반응형

'Security > Cloud Computing' 카테고리의 다른 글

[AWS SAA-C03] AWS Aurora 정리  (0) 2023.08.12
[AWS SAA-C03] AWS RDS 정리  (0) 2023.08.05
[AWS SAA-C03] AWS ECS 정리  (0) 2023.07.01
[AWS SAA-C03] AWS AutoScaling 정리  (0) 2023.06.24
[AWS SAA-C03] AWS EC2 정리  (0) 2023.06.17