SW개발을 넘어 배포를 도전하는 나에게 도움이 되고자 이 글을 정리합니다.
AWS 공식 문서를 보면 AWS elastic beanstalk에 대해 다음과 같이 설명하고 있습니다.
Elastic Beanstalk를 사용하면 애플리케이션을 실행하는 인프라에 대해 자세히 알지 못해도 AWS 클라우드에서 애플리케이션을 신속하게 배포하고 관리할 수 있습니다. 또한 선택 또는 제어에 대한 제한 없이 관리 복잡성을 줄일 수 있습니다.
애플리케이션을 업로드하기만 하면 Elastic Beanstalk에서 용량 프로비저닝, 로드 밸런싱, 조정, 애플리케이션 상태 모니터링에 대한 세부 정보를 자동으로 처리합니다.
Elastic Beanstalk는 Go, Java, .NET, Node.js, PHP, Python 및 Ruby에서 개발된 애플리케이션을 지원합니다. 애플리케이션을 배포할 때, Elastic Beanstalk가 선택된 지원 가능 플랫폼 버전을 구축하고 Amazon EC2 등의 AWS 리소스를 하나 이상 프로비저닝하여 애플리케이션을 실행합니다.
이해하기 어려운 문단들이 쏟아져서 조금 눈높이를 낮춰 풀어 헤쳐보는 시간을 가지겠습니다.
우선 AWS Elastic beanstalk은 Java, node.js, python, Ruby, Go 등을 사용하여 Apache, Nginx 등과 같은 친숙한 서버에 웹 애플리케이션, 서비스를 간편하게 배포하고 조정할 수 있는 서비스입니다. 다시 말해서, 현재 사용되고 있는 대부분의 웹 기반 플랫폼을 지원하면서 애플리케이션의 설정, 생성, 배포, 버전 관리와 모니터링 구성을 자동화 시켜주는 툴입니다.
Provisioning: 프로비저닝(provisioning)은 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것을 말합니다.위키백과: 프로비저닝
개발자가 서버 구성부터 OS설치, 컨테이너 설정, 로그 설정, 모니터링 구성, 보안 구성 등등 배포에 필요한 모든 단계를 거치기에는 진입장벽이 너무 높고 부담스러워지죠. AWS Elatic Beanstalk이 지원하는 provisioning은 단순한 클릭과 몇개의 명령줄로 이런 허들을 모두 뛰어 넘을 수 있습니다.
AWS Elastic Beanstalk은 크게 애플리케이션(Application)과 환경(Environment)으로 구성되어 있습니다. 애플리케이션을 만들고 하위에 환경이 구성되는 구조로 하나의 애플리케이션이 2개 이상의 환경을 가질 수 있습니다.
애플리케이션은 인스턴스(instance; 실행 중인 프로그램의 실재)의 논리적인 집합을 의미합니다. 이해하기로 우리가 사용하는 폴더의 개념과 유사하다고 볼 수 있습니다. 이 때, 애플리케이션의 재배포와 이전 버전으로의 복원 등 하위 어플리케이션의 버전 관리 기능도 할 수 있습니다.
환경은 EC 인스턴스, 로드밸런서, 오토 스케일링 그룹, 보안그룹의 집합체입니다.