애플리케이션 인스턴스화 + Beanstalk

이기태·2024년 4월 26일
0

AWS

목록 보기
21/62

애플리케이션 인스턴스화

  • 풀스택(EC2,EBS,RDS) 실행
    • 애플리케이션 설치
    • 데이터 삽입 및 복구
    • 구성
    • 애플리케이션 실행

오래걸린다...
어떻게 빠르게 할까

  • EC2 인스턴스
    • Golden AMI: 골드 이미지
      애플리케이션과 OS 종속성, 설정등을 사전에 설치하고, AMI를 생성
      -> 이후 인스턴스들을 Golden AMI로 직접 실행하면 된다.
    • EC2 사용자 데이터: Bootstrap
      Bootstrap은 인스턴스가 처음 시작될때 구성하는 것을 의미
      애플리케이션, OS 종속성등을 설치할때 부트스트래핑 가능(좀 느림)
      동적 구성(DB URL, PASSWORD 가져올때)에 EC2 사용자 데이터를 사용해 부트 스트래핑 활용
    • 하이브리드(Golden AMI + 사용자 데이터)
      -> Elastic Beanstalk = AMI 구성 + 사용자 데이터 추가
  • RDS DB
    • 스냅샷으로부터 복구할 수 있다.
      DB에서 스키마와 데이터가 준비된다.
      -> 더 빠르게 데이터 검색하려고 할때 쓰는 방법
  • EBS 볼륨
    • 스냅샷으로부터 복구할 수 있다.
      포맷되지 않은 비어있는 디스크는 필요하지 않다.

Elastic Beanstalk

WEb App 3-tier


배포할 애플리케이션이 많고 동일한 아키텍처를 따른다면 매번 다시 생성하기 번거롭다.
-> 개발자로서 인프라 관리와 코드 배포하기 어려워진다.
-> DB, 로드 밸런서등을 설정하기 번거롭다.
-> 확장의 문제
대부분의 웹 애플리케이션은 로드 밸런서와 오토 스케일링 그룹이 있는 동일한 아키텍처를 가짐.
개발자는 다른 건 신경쓰지 않고 그냥 코드를 실행하고 싶다.
만약 다른 프로그래밍 언어로 개발하고 다양한 애플리케이션과 환경을 갖고 있다면 한 가지 방법으로 애플리케이션을 배포하고 싶을 수 있다.
===> 그럴때 사용하는 것이 Beanstalk

Beanstalk 개요

  • Beanstalk는 개발자 입장에서 애플리케이션을 AWS에 배포
    하나의 인터페이스에서 EC2,ASG,ELB,RDS등 모든 컴포넌트를 재사용한다는 개념
  • 그러나 Beanstalk가 우리를 대신해 그 모든 걸 배포하는 관리형 서비스
    Beanstalk가 용량 프로비저닝, 로드 밸런서 설정, 스케일링, 모니터링, 인스턴스 설정 등 처리
    모든 컴포넌트의 설정에 대해 권한을 가지고 있다.
    간단하게 애플리케이션 업데이트하는 방법 제공
    서비스 자체는 무료이다.(인스턴스,ASG ELB 사용에 대해서 비용 지불)

Beanstalk 컴포넌트

  • 애플리케이션
    Beanstalk의 컴포넌트는 환경, 버전, 설정등의 컴포넌트 컬렉션
  • 애플리케이션 자체 버전
    사용자의 애플리케이션과 같다.
  • 환경
    • 특정한 애플리케이션 버전을 실행하는 리소스의 컬렉션
      어떤 환경에서 한번에 하나의 애플리케이션 버전만 가질 수 있다.
    • 티어
      • 웹 서버 환경 티어(웹사이트 실행)
        전형적인 아키텍처?
        로드벨런서로 트래픽을 오토 스케일링 그룹에 전송해 인스턴스 관리
      • 워커 환경 티어(대기열에서 오는 작업 처리)
        워커 환경을 중심으로 이루어져있다.
        인스턴스에 직접적으로 액세스하는 클라이언트가 없음.
        사용자는 SQS Queue를 사용한다.
        -> 메세지는 메세지 대기열인 SQS Queue로 전송되고 인스턴스는 워커가 된다.
        -> 메세지를 SQS Queue가 가져와 처리
        이 경우에는 워커 환경은 SQS 메시지의 개수에 따라 스케일링 된다.
        웹 환경이 메시지를 워커 환경의 SQS Queue에 푸시하게 해 웹 환경과 워커 환경을 하나로 모을 수 있다.
    • dev, test, prod 같은 다양한 환경을 생성

Beanstalk 지원 플렛폼


+ 커스텀 플랫폼(위 프로그래밍 언어가 없다면 사용) - 고급 기능

웹 서버 티어 vs 워커 티어

Beanstalk 배포 모드

    1. 싱글 인스턴스
      개발용
      하나의 인스턴스를 가질 것이고, 탄력적IP를 가진다.
      탄력적 IP를 가진 인스턴스를 기반으로 RDS등의 서비스를 시작 가능.
    1. 실제 Beanstalk 모드 스케일링
      프로덕션 환경에 적합
      로드 밸런서를 사용해 고가용성 확보하고 오토 스케일링 그룹과 다수의 가용성 영역에 맞춰 관리
      다중 AZ, 마스터와 스탠바이가 있는 RDS DB를 가질 수 있다.

실습(웹 사이트 생성)

Beanstalk를 만들면 이벤트가 발생하는데 CloudFormation 콘솔에 스택이 생성된것을 볼 수 있음.
CloudFormation서비스는 뒤에서 리소스를 생성 한다.
그리고 다양한 종류의 인프라로 스택을 임의로 배포
CloudFormation -> 생성된 스택 -> Template -> viewin designer를 누르면
아키텍처를 볼 수 있다.
인스턴스 생성된후 EC2 콘솔로 가면 인스턴스가 실행 중인걸 볼 수 있다.

  • 옵션
    • 새 버전 업로드 하기
      생성한 Beanstalk에서 업로드 누르면 새 버전을 올릴 수있고 인스턴스에 자동으로 배포된다.
    • 상태 확인
    • 로그 확인
    • 모니터링으로 메트릭 확인
    • 알람
    • 업데이트 관리
      Beanstalk가 환경을 업데이트할 때 나타남.
    • 구성
      왼쪽 목록에 구성을 쿨릭하면 Beanstalk 환경에 관한 모든 설정을 보기/수정/적용 가능.
    • 추가 환경 구성
      왼쪽 목록에 애플리케이션:Myapp을 누르면 생성한 Beanstalk가 있는데 추가로 두 번째 환경을 만들 수 있다.

0개의 댓글

관련 채용 정보