[AWS] EB(Elastic Beanstalk)이란?

hahaha·2021년 8월 27일
0

AWS

목록 보기
1/6
post-thumbnail

EB(Elastic Beanstalk)

  • AWS 클라우드에서 애플리케이션을 신속하게 배포하고 관리할 수 있는 서비스
  • 애플리케이션을 업로드만 하면 용량 프로비저닝, 로드 밸런싱, 조정, 모니터링 등 자동 처리
  • EB console, AWS CLI를 이용해 상호작용

workflow

  • 애플리케이션 생성 후, 애플리케이션 버전을 업로드하면 EB가 자동으로 환경 실행
  • 스스로 코드 실행에 필요한 AWS 리소스 생성 및 구성

프로비저닝(Provisioning)

  • 사용자의 요구에 맞게 시스템 자원을 미리 준비하여
    필요 시 바로 사용할 수 있도록 하는 것

주요 개념

1. application

  • 환경, 버전 및 환경 구성을 포함한 EB구성 요소의 논리적 컬렉션
  • 폴더 개념과 유사
    - application (1) --- (n) environment

2. application version

  • 웹 애플리케이션의 배포 가능한 코드의 특정 반복을 의미
  • 애플리케이션 내에 여러 애플리케이션 버전이 존재할 수 있음
  • 배포 방법
    • 실행 중인 환경에서 애플리케이션에 이미 업로드된 애플리케이션 버전을 배포
    • 새로운 애플리케이션을 업로드와 동시에 배포 가능

3. environment

  • 애플리케이션 버전을 실행 중인 AWS 리소스 모음
  • 각 환경은 하나의 애플리케이션 버전 실행만 가능
    (여러 환경에서 동일한 애플리케이션 버전 실행은 가능)
  • 환경 생성 후, EB에서 자동으로 사용자가 지정한 애플리케이션 버전을 실행하는 데 필요한 리소스를 프로비저닝함

4. environment tier

  • 환경에서 실행하는 애플리케이션 유형 지정
  • 주로 HTTP 요청을 처리하는 웹 서버 환경 티어에서 실행
  • 환경 생성 시 가장 먼저 선택하는 부분

5. environment configuration

  • 환경 및 연관된 리소스의 작동 방법을 정의하는 설정의 모음
  • 환경 구성 설정 업데이트 시, EB가 자동으로 변경 사항 적용

6. saved configuration

  • 고유한 환경 구성을 생성하기 위한 시작점으로 사용할 수 있는 템플릿
  • default environment configuration ?

7. platform

  • OS, 프로그래밍 언어 런타임, 웹 서버, 애플리케이션 서버 및 EB 구성 요소의 조합

시작하기

1. 애플리케이션 생성

- 애플리케이션 태그

  • 필요에 따라 추가
  • AWS 리소스와 연결된 키-값

태그 지정이 가능한 리소스

  • 애플리케이션
  • 환경
  • 애플리케이션 버전
  • 저장된 구성
  • 사용자 지정 플랫폼 버전

- 플랫폼

2. 환경 생성(시작)

- 애플리케이션 생성 시, EB가 자동 수행

  • 애플리케이션 이름이 getting-started-app인 경우,
    GettingStartedApp-env 환경 시작

- 자동 생성되는 AWS 리소스

  • Amazon EC2 인스턴스
  • Amazon EC2 보안그룹
    - AWSEBSecurityGroup
    - AWSEBLoadBalancerSecurityGroup
  • Amazon S3 버킷
  • Amazon CloudWatch 경보
  • Amazon CloudFormation 스택
  • 도메인 이름: subdomain.region.elasticbeanstalk.com

- 애플리케이션 버전 작성

- 환경에 애플리케이션 코드 배포

3. 환경 탐색

구성

환경에 프로비저닝된 리소스

상태

애플리케이션을 실행하는 Amazon EC2 인스턴스에 대한 상태와 세부 상태 정보

모니터링

평균 지연 시간 및 CPU 사용률 등 환경에 대한 통계
모니터링 중인 측정치에 대한 경보 설정 가능

이벤트

환경에서 사용하는 EB 서비스 및 리소스가 있는 다른 서비스의 정보/오류 메세지

태그

환경에 적용되는 태그를 표시 및 관리

관련 개념 정리

1. 웹 서버 환경(환경 티어)

- AWS 리소스: ELB > Auto Scaling 그룹 > Amazon EC2(하나 이상)

- 로드 밸런서를 가리키는 CNAME(URL)

  • 환경 URL을 Amazon Route 53에서 CNAME 레코드를 사용하여 ELB URL로 별칭 지정
  • myapp.us-west-2.elasticbeanstalk.com -> abcdef-123456.us-west-2.elb.amazonaws.com

CNAME(Canonical Name)

  • 하나의 도메인 이름을 다른 이름으로 매핑시키는 DNS 리소스 레코드의 일종
  • 하나의 IP 주소로부터 여러 개의 서비스를 실행할 때 편리

Amazon Route 53

  • 가용성과 확장성이 뛰어난 DNS 웹 서비스
  • 인프라에 안전하고 신뢰할 수 있는 라우팅 제공

- Amazon EC2 Auto Scaling

  • 추가 EC2 인스턴스를 자동으로 시작하여 애플리케이션의 로드 처리
  • 항상 최소 한 개의 인스턴스 실행

- Amazon EC2 Instance

  • 인스턴스에서 실행되는 소프트웨어 스택은 컨테이너 유형에 따라 상이
  • 각 인스턴스에서 호스트 관리자(HM) 실행
    - 애플리케이션 배포, 로그 파일/서버 모니터링, 오류 및 이벤트 집계

2. 플랫폼

런타임

프로그래밍 언어별 런타임 소프트웨어

EB 구성 요소

EB 기능을 활성화하기 위해 플랫폼에 추가하는 소프트웨어 구성 요소

플랫폼

운영 체제, 런타임, 웹 서버, 애플리케이션 서버 및 EB 구성 요소의 조합

플랫폼 버전

특정 버전의 운영 체제, 런타임, 웹 서버, 애플리케이션 서버 및 EB 구성 요소의 조합
형태: X.Y.Z (메이저 버전.마이너 버전.패치 버전)

플랫폼 브랜치

일부 구성 요소의 특정 버전(주로 메이저)을 공유하는 플랫폼 버전

플랫폼 업데이트

일부 구성 요소에 대한 업데이트를 포함하는 새 플랫폼 버전의 릴리스
메이저 업데이트: 이전 플랫폼과 호환되지 않은 변경 사항 (애플리케이션 수정 필요할 수 있음)
마이너 업데이트: 이전 플랫폼과 호환되는 기능 추가
패치 업데이트: 이전 플랫폼과 호환되는 유지 관리 릴리스(버그 수정, 보안 업데이트 등) 구성

관리형 업데이트

구성 요소에 패치 및 마이너 업데이트를 자동으로 적용하는 EB 기능

3. 환경 유형

  • 환경 생성 후, 변경 가능

1) 로드 밸런싱 수행 및 확장 가능 환경

  • Amazon EC2 Auto Scaling 서비스를 사용하여 애플리케이션의 증가하는 로드 처리 가능
  • 여러 AZ 영역에서 실행하는 경우 사용

2) 단일 인스턴스 환경

  • Elastic IP 주소가 지정된 Amazon EC2 인스턴스 하나 포함
  • LB 존재 X
  • Amazon EC2 Auto Scaling 서비스 사용하지만, 최소/최대 인스턴스 수 1
  • 트래픽이 적거나 원격 개발 중인 경우 사용
  • 비용 절감 가능

4. Amazon EC2 인스턴스

  • 웹 서버 환경 생성 시, EB에서 하나 이상의 인스턴스 생성
  • 인스턴스 => Amazon EC2 가상 머신

5. Auto Scaling 그룹

  • Amazon EC2 인스턴스를 관리하는 그룹
  • 로드 밸런싱된 환경에서 사용자가 실행할 다양한 인스턴스로 이루어진 그룹을 구성하면, 로드를 기준으로 필요에 따라 인스턴스 추가/제거
  • Triggers: Amazon CloudWatch 경보 사용하여 조정 작업 트리거
  • 예약 작업: 예측 가능한 트래픽 기간에 대해 인스턴스 사용 최적화하도록 예약 가능
  • Amazon EC2 상태확인: 각 인스턴스의 상태를 모니터링

6. Load Balancer

  • 환경의 인스턴스 간의 트래픽 분산
  • 여러 EB 환경에서 로드 밸런서 공유 가능
  • 환경 생성 이후 로드 밸런서 유형 변경 불가능

유형

1) Classic LB

  • EB 이전 세대 LB
  • HTTP, HTTPS, TCP 요청 트래픽 라우팅 지원

리스너

기본적으로 포트 80에서 HTTP 트래픽 수신 후, 동일한 포트에서 인스턴스로 전달하도록 구성
보안 연결(HTTPS) 지원할 경우, 포트 443에 리스너와 TLS 인증서를 갖추어 구성

세션

단일 서버의 동일한 클라이언트에서 여러 요청을 처리할 경우, 고정 세션을 사용하여 LB 구성

교차 영역 로드 밸런싱

각각의 로드 밸런서 노드가 활성화된 모든 AZ 영역에 등록된 인스턴스 간에 요청을 균등하게 분산

Connection Draining

비정상적인 상태나 환경 축소로 인해 LB에서 인스턴스가 제거되면 인스턴스와 LB간의 연결을 종료하기 전에 요청을 완료할 시간을 인스턴스에게 부여

상태 확인

애플리케이션을 실행하는 Amazon EC2 인스턴스의 정상 여부 판단

2) Application LB

  • 애플리케이션 계층 LB
  • HTTP or HTTPS 요청 트래픽을 요청 경로에 따라 환경 인스턴스의 다양한 포트로 라우팅
  • 로드 밸런싱 활성화할 경우 생성되는 기본 LB
  • 둘 이상의 AZ 영역에서 서브넷이 있는 VPC에 환경 마련해야 함
    (하나의 AZ 영역에서만 서브넷이 있는 VPC에 환경이 마련될 경우 기본값은 Classic LB)

리스너

  • 지정된 프로토콜을 사용하여 지정된 포트에서 수신되는 클라이언트의 트래픽을 인스턴스의 하나 이상의 프로세스로 라우팅
  • 기본 리스너: 포트 80을 통해 수신되는 HTTP 트래픽을 기본 프로세스로 라우팅

프로세스

  • 리스너가 트래픽을 라우팅하기 위한 대상

Rules

  • LB에 대한 사용자 지정 리스너 규칙
  • 특정 경로 패턴에서 수신하는 요청을 대상 프로세스로 매핑
  • 우선순위 설정 가능

엑세스 로그 캡쳐

  • ELB를 구성하여 LB에 전송된 요청에 대한 상세 정보와 함께 로그 캡쳐
  • 사용자가 구성한 S3 버킷에 로그 저장
    (경로: prefix/AWSLogs)
  • default: 비활성

3) 공유 Application LB

  • Amazon EC2 서비스를 사용하여 직접 생성 및 관리한 다음 여러 EB 환경에서 사용하는 LB
  • elasticbeanstalk:shared-elb-environment-count: 해당 로드 밸런서를 공유하는 환경의 수
    (EB가 공유 LB에 자동으로 추가하는 태그)
  • 전용 로드 밸런서와의 차이

4) Network LB

  • 네트워크 계층 LB
    애플리케이션 계층 HTTP/HTTPS 리스너 가질 수 없음
  • TCP 요청 트래픽을 환경 인스턴스의 다양한 포트로 라우팅

OSI 7 계층

profile
junior backend-developer 👶💻

0개의 댓글