AWS ElasticBeanstalk을 알아보자

필영·2020년 12월 31일
1

AWS

목록 보기
1/1
post-thumbnail
post-custom-banner

이번에 개발하던 프로젝트를 Docker와 AWS ElasticBeanstalk를 통해 배포를 진행 해보게 되었는데,
무작정 배포 하기 보단 EB가 무엇이며, 왜 사용하는지 알고하면 또 다른 느낌이지 않을까하여 한번 정리해 보게 되었습니다.


Elastic Beanstalk은 무엇인가?

웹 어플리케이션/ 웹 서비스를 배포하고, 확장하고, 관리하는데 있어 쉽고 빠르게 할 수 있도록 돕는 완전 관리형 서비스

👉🏻 완전 관리형 서비스란 ?
- 인프라 레벨 쪽으로는 신경쓰지 않아도 되는 서비스 (업데이트, 설치 등등은 AWS가 서비스)
- 코드 레벨에서만 집중 하면 된다
- ex) Dynamo DB, ElasticBeanstalk, etc ..


AWS Elastic Beanstalk의 배경 및 사용 이유

✔️ 개발자들이 가지고 있는 Pain Point

  • 코드의 배포, 프로비저닝, 관리가 복잡하다
  • 서버, DB, 로드 밸런서, 방화벽 그리고 복잡한 네트워크의 구성 및 관리에 필요한 전문성과 시간이 필요
  • 스케일 아웃/인의 자동화가 필요
  • 팀내 / 팀 간 갈등이 생길 수 있다

✔️ 인프라의 구성만 놓고 볼 때에도 편리하다

  • AWS EC2 인스턴스를 사용하더라도 (os 설치 까지는 AWS가 처리해준다)
  • 그럼에도 불구하고 절반 정도의 공수는 더 남아있다.

👉🏻 이러한 배포, 버저닝, 관리 하는 과정 들의 간소화, 개발자는 좀 더 코드 레벨에 집중할 수 있도록 하는 의도,
그리고 위에서 언급한 Pain Point들을 해소하기 위함이 AWS ElasticBeanstalk 탄생 배경으로 볼 수 있다.

✔️ 사용 시 이점은 ?

  • 빠르고 간단한 시작
  • 개발자 생산성
  • 완전한 자원 제어
  • 시간과 비용 절감의 효과
  • 불필요한 자원 낭비 x
  • 사용에 따른 추가 요금이 없음

👉🏻 자동화가 이루어 지면 "내가 컨트롤 할 수 있는 부분들이 줄어드는게 아닌가?" 라 생각 할 수도 있는데
SSH 등 인스턴스 접속을 통해 입맛대로 설정도 가능하다고 하다.


AWS Elastic Beanstalk 인프라스트럭처 스택 구성

✔️ 스택 구성 과정

  1. Elastic Beanstalk 환경 구성
  2. EB 환경의 로드밸런서 구성
  3. 오토스케일링 그룹 설정 (사용량에 따른 스케일 인아웃이 가능)
  4. 오토스케일링 그룹에 적정한 수의 EC2 인스턴스 구성
  5. 이 모든 구성요소들을 연결
  6. DNS 설정을 통해 외부에 Publish
  7. 모니터링을 위한 로그와 버저닝 정보들은 S3에 모두 저장한다.

👉🏻 오토 스케일링 기법

  • Triggers based scaling
    • ex) request가 정해 놓은 임계값 보다 높아질 때 스케일 아웃, 그 반대 상황에는 스케일 인
  • Time-based scaling
    • 시간을 정해 스케일 인아웃, CRON

Elastic Beanstalk 애플리케이션 배포에 필요한 정보

  • 배포 할 코드
  • 리전 (서울, 미국, ... 등)
  • 플랫폼 (스택 타입)
    • Java, Node.js, Django, Go, Ruby, Docker ...
  • 단일 인스턴스로 구성 할 것인지, 로드밸런싱 및 오토스케일링 환경으로 구축 할 것인지 선택
  • 데이터베이스 (RDS)
    • RDS는 옵션

AWS Elastic Beanstalk 배포 옵션

  1. All at once
    • 모든 인스턴스에 동시에 새 버전 배포
    • 다운 타임이 존재 한다
  2. Rolling
    • 배치 단위로 새 버전 배포
    • 예를 들어, 4개의 인스턴스가 동작 중이라면 2개씩 나눠 업데이트가 이루어진다
  3. Rolling with additional batch
    • 배치 단위로 새 버전 배포, +1 추가 배치
    • Rolling과 같은 방식으로 동작, 추가 인스턴스를 배치하여 배포한다 (4 → 6개로 늘려서)
  4. Immutable
    • 새로운 인스턴스 그룹에 배포, 기존 환경 및 그룹을 건들지 않는다
    • 여기서 새로운 그룹은, EB 환경내의 오토스케일링 그룹을 일컫는다
    • 새로운 그룹 내에서 순차적으로 인스턴스를 생성하여 연결
  5. Blue/Green
    • 새로운 환경 복제 (기존 프로젝트 복제)
    • DNS 주소가 서로 다르기 때문에 변경 사항 배포 후 기존 URL 교환 (swap)
    • 빠른 롤백이 가능, 다운 타임없이 배포가 가능

AWS Elastic Beanstalk 애플리케이션 관리와 모니터링

  1. 구동중인 EB 환경에 유지 관리 기간을 설정하여, 그 기간동안 자동으로 최신 버전의 플랫폼으로 업그레이드 되도록 구성 할 수 있다.
  2. 알람 및 알림
    • 주요 지표가 정상 범위를 벗어났을 때 알림을 보내는데 사용 할 알람을 쉽게 설정 가능하다.
  3. CloudWatch 로그 스트리밍


정리

'간편하게 배포를 해준다' 정도로만 알고 있었는데, 이 외에도 인지하지 못하고 있던 EB 사용의 이점을 알 수 있었던 기회


참고 자료 및 영상

post-custom-banner

0개의 댓글