ysuekkom의 IT study note

AWS ElasticBeanStalk이란?(EB vs CodeDeploy) 본문

Cloud Service/AWS

AWS ElasticBeanStalk이란?(EB vs CodeDeploy)

ysuekkom 2023. 5. 15. 18:00

 

 

Elastic BeanStalk(이하 EB)는 클라우드 배포 서비스로 어플리케이션을 배포하는데 도움을 주는 AWS의 관리형 서비스이다.

각각 제공되는 서비스별 인프라를 다 알지 못해도, AWS에서 제공하는 관리형 서비스인 EB를 사용하면, AWS의 서비스 프로비저닝을 최적화하여 사용할 수 있다. 

 

EB = AWS Cloud에서 빠르고 쉽게 어플리케이션을 배포하고 관리할 수 있게 해주는 서비스

 

어플리케이션을 업로드하게 되면, EB에서 자동으로 Provisioning, LoadBalancing, Adjustment, Monitoring 등 자동으로 처리해준다.

또한 뛰어난 확장성을 제공하며, EB 사용으로 인한 추가과금은 없으며, 애플리케이션에서 사용할 기본 AWS 리소스에 대한 비용만 지불하면 된다. 

AWS Document > Elastic BeanStalk> 개발자안내서

 

 

또한 애플리케이션 배포 시 지원가능한 플랫폼을 선택하여 구축 및 배포가 가능하다. 각 플랫폼별 배포에 대해서는 공식문서를 참고하면 된다. 

  • 제공 플랫폼(지원 언어): Docker, Multi Container Docker, Go, Java, Node.js, PHP, Python, Ruby etc(2023.5기준)
  • 하나 이상의 EC2인스턴스를 포함하여 어플리케이션을 실행하는데 필요한 리소스를 프로비저닝

 

EB를 통해 어플리케이션을 배포한 뒤 정상적으로 실행되는지 체크할 수 있는 모니터링 기능을 제공한다.

AWS CloudWatch와 함께 사용이 가능하며, 다양한 측정 모니터링 관리 및 경보작업을 구성하여 어플리케이션의 장애 및 에러 발생에 대응 가능하다. (설정한 임계치를 초과할 경우, AutoScaling 및 SNS 경보 설정 등)

 

또한 애플리케이션에서 AWS X-Ray로 데이터를 트레이스할 수 있다.(AWS X-Ray 디버깅 구성) X-Ray Map을 통해 플로우를 확인할 수 있으며, 서비스 에러 상태를 파악하여 조치를 취할 수 있다. 

차후에 EB에서 X-Ray 데몬을 실행하여 간단한 어플리케이션의 플로우와 디버깅 및 트러블슈팅에 대한 실습을 진행해 보겠다.

 

 


 

포스팅 초반에 EB는 클라우드 배포 서비스로 어플리케이션을 배포하는데 도움을 주는 AWS의 관리형 서비스로 어플리케이션 배포에 용이한 서비스라고 언급하였다.

그렇다면 CodeDeploy와는 어떤 차이가 있고, 자동 배포를 시 언제 EB를 언제 CodeDeploy를 사용하는게 좋을까?

 

CodeDeploy란?

EC2 인스턴스, 온프레미스 인스턴스, 서버리스 람다함수 또는 ECS 서비스로 어플리케이션 배포를 자동화하는 배포 서비스이다.

CodeDeploy는 서버에서 실행되고, S3 버킷 혹은 깃허브 리포지터리 등에 배포 가능하다. 

  • 단순하고 반복적인 CD 배포 작업을 자동화한다.
  • 어플리케이션 배포 시, 무중단 릴리스가 가능하다.
  • 어플리케이션 업데이트에 따른 복잡성을 처리하여 오류발생 등의 위험성을 배제할 수 있다.
  • 인스턴스 한 개 또는 수천 개에 이르는 대규모까지 배포 가능하다.

즉, 배포 자동화, 가동 중지 최소화, 버전관리로 중지 및 롤백 용이, 채택 편의성  및 동시 배포 등의 이점이 있다.

 

 

위에서 알아본 CodeDeploy의 특징과 비교해보면 CodeDeploy는 배포 자동화 자체에 집중 되어있고, EB의 경우 배포부터 프로비저닝, 모니터링까지 가능한 '관리형 서비스'로 CodeDeploy와 비교하여 서비스의 바운더리가 더 넓다고 볼 수 있다. 

추가로 결합해야할 서비스들의 종류에 따라 CodeDeploy를 사용할 지 EB를 사용할 지 판단하면 되겠다.