Overview
공모전에 필요한 서버를 Github Action과 AWS Elastic Beanstalk를 활용하여 CI/CD를 구축 & 배포하는 것을 목표로 한다.
아래는 최종 소프트웨어 아키텍처이다.
Elastic Beanstalk
AWS Elastic Beanstalk 공식 문서
정확하고 자세한 정보는 위를 참고하자.
AWS에서는 실제로 100개 이상의 서비스를 제공하고 있다. (나는 이 중에서 10개도 안써봤다.😿) 모든 서비스를 잘 알고 능숙하게 사용하기란 어렵기 마련이다.
Elastic Beanstalk은 클라우드 리소스를 더욱 쉽게 조작할 수 있도록 하는 서비스이다. 애플리케이션을 실행하는 인프라에 대하여 자세하게 알지 못해도 AWS 클라우드에서 신속하게 배포하고 관리할 수 있다.
관리 복잡성을 줄일 수 있으며, 어플리케이션을 업로드하기만 하면 Elastic Beanstalk에서 용량 프로비저닝, 로드 밸런싱, 스케일링, 어플리케이션 health 모니터링을 자동으로 처리해준다고👀
요금
Elastic Beanstalk(이하 EB) 사용은 모두 무료이며 EB를 통해 생성되는 기본 인스턴스에 대해서만 과금이 된다.
work flow
- 어플리케이션을 생성하고, 어플리케이션 소스 번들의 형태(e.g. java
.war
파일)로 어플리케이션 버전을 EB에 업로드한다.
- EB가 자동으로 환경을 실행하고 코드 실행에 필요한 AWS 리소스를 생성 및 구성한다.
- 환경 실행 후에는 직접 관리하고 새로운 앱 버전을 배포할 수 있다.
- 어플리케이션 배포 후에는 상태 등 모든 정보를 EB 콘솔 혹은 AWS CLI 등을 통하여 확인할 수 있다.
EB 개념
application
- EB 어플리케이션은 환경, 버전 및 환경 구성을 포함한 EB 구성 요소를 grouping
application version
- 웹 어플리케이션에 배포 가능한 코드의 레이블이 지정된 특정 반복
- Java
.war
파일과 같이 배포 가능한 코드가 포함된 Amazon Simple Storage Service(Amazon S3) 개체를 가리킨다.
- application의 일부.
- 여러 버전이 있을 수 있으며 각 application 버전은 고유하다.
environment
- application version을 실행하는 AWS 리소스의 모음
- application 코드가 복제되어 동작되는 서버 (prod, dev 환경)
- 각 environment은 한 번에 하나의 application version만 실행하지만 여러 환경에서 동일한 application version 또는 다른 application version을 동시에 실행할 수 있다.
- 환경을 생성할 때 Elastic Beanstalk는 지정한 application version을 실행하는 데 필요한 리소스를 프로비저닝한다.
environment tier
- environment에서 실행되는 application의 유형을 프로비저닝할 리소스를 결정
- HTTP 요청을 처리하는 어플리케이션은 web server environment(웹 서버 환경) tier에서 실행
- Amazon SQS(Simple Queue Service)에서 작업(e.g. 백엔드에서 동작하는 cronjob 등)을 가져온다면 worker environment(작업자 환경) tier에서 실행
environment configuration
- environment 및 관련 리소스의 작동 방식을 정의하는 매개 변수 및 설정 모음을 식별
- environment의 configuration 세팅을 업데이트하면 EB는 변경 내용을 기존 리소스에 자동으로 적용하거나 변경 유형에 따라 새 리소스를 삭제하고 배포
saved configuration
- unique e### platformnvironment configuration을 생성하는 시작점으로 사용할 수 있는 템플릿
- OS, 프로그래밍 언어 런타임, 웹 서버, 어플리케이션 서버 및 EB 구성 요소의 조합
ref
ElasticBeanstalk 이란?
Github Action 과 Elastic Beanstalk 로 서버 배포하기 - EB 생성하기
글이 너무 깔끔하시네요 !
잘 보고 갑니다