본문 바로가기

소프트웨어-이야기/인프라

[AWS]Beanstalk이란

나는 1년정도 BeanStalk을 사용하고 있다. 처음에는 BeanStalk가 어떤 역할을 하는 서비스인지 궁금해서 찾아봤었는데, 이해가 잘 되지 않았었다. 그래서 내가 경험한 빈스톡에 대해서 정리해보고자 한다.



BeanStalk이란?


빈스톡은 Docker 컨테이너를 기반으로 애플리케이션을 쉽게 배포하고, 운영하고, 관리하는걸 도와주는 AWS 서비스다.


별도의 서비스 사용료는 없고, 사용한 AWS 리소스 만큼 비용이 과금된다고 한다.

 



특징 


초기 세팅

기본적으로 필요한 환경을 몇번의 클릭으로 서버 셋팅을 할 수 있다.

- 예를 들면 원하는 루비 버전과 패신저를 설정하면, 

  인스턴스에 직접 들어가서 설치하지 않아도 빈스톡이 알아서 환경을 구성해준다. 

- 그런데 최신 버전의 언어를 지원하지 않는 경우도 있다. 이런 경우, 알아서 docker 환경을 만들어서 빈스톡에 등록해두어야한다. 


환경 구성

AWS Console에서 서버에 필요한 환경 변수들을 쉽게 변경/관리할 수 있다. 

그래서 서버에 직접 들어가서 환경 변수를 확인하거나, 배포스크립트를 확인하지 않아도 된다. 





배포 관리



- S3에 저장된 소스코드로 버전관리가 된다. 

  git으로 내려받은 프로젝트 폴더에 들어가서, 빈스톡 배포 명령어인 eb deploy를 쳐주면, 

  S3에 소스코드가 올라가게 된다. EB CLI와 Git 사용 

  

- 이렇게 버전관리가 되면 좋은점은 당시에 어떤 코드가 배포되었는지 파악하기 쉽다는 거다.

  그리고 만약 롤백을 해야할 때에는, 예전 버전을 누르고 deploy 버튼만 눌러주면!

  롤백하기도 편하다. ( BeanStalk 애플리케이션 버전 관리 )



운영



- 오토 스케일링이 편하다. 

  빈스톡 설정 값에서 CPU 혹은 메모리가 일정이상을 사용하는 경우, 인스턴스를 늘리도록 설정할 수 있다. 

  그래서 갑자기 트래픽이 몰려도, 빈스톡이 알아서 스케일업을 해줘서 든든할 때가 있다.

   그리고 트래픽이 빠지면, 알아서 스케일인을 해준다. 


로그 

- 패신저, 기본 어플리케이션 로그 등의 로그 로테이트를 알아서 해준다. 

   게다가 알아서 S3에 저장해준다. 그래서 지난 로그를 확인하고 싶은 경우, S3에 들어가서 로그를 확인하면 된다.


모니터링

- 서버에 문제가 발생한 경우, 알림을 주는 기능도 있다. ( Elastic Beanstalk Environment Notifications with Amazon Simple Notification Service )



빈스톡 느낀점

빈스톡에 별도의 서비스 사용료가 없다는걸 방금 알았다. 

추가 비용을 내지 않고도, 이런 서비스를 제공하는 이유는 뭘까?


생각해보니 빈스톡을 쓰면, 자연스럽게 AWS 서비스를 사용하게 된다. 

예를 들어 나는 AWS의 로드밸런서, AWS 클라우드 왓치의 일부 기능 등을 사용하고 있다. 

"다른 AWS 서비스에 대한 접근성 향상"이 빈스톡 서비스 목적 중 하나일 것 같다.

 


실습 자료 
run.qwiklabs.com 에서 무료로 연습해볼 수 있다고 한다



공식 pdf 문서 


http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/awseb-dg.pdf