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 |