AWS Elastic Beanstalk으로 배포하기

방충림·2023년 5월 6일
15

AWS

목록 보기
6/10
post-thumbnail
post-custom-banner

AWS (Amazon Web Services)에는 웹사이트를 배포할 수 있는 다양한 환경을 제공한다.
너무나 다양해서 뭐가 뭔지 혼란이 올 지경이다. AWS를 완전히 섭렵하는데에는 상당한 시간이 걸릴 듯 하다.

개인적으로 느끼기에 EC2 라는 서비스가 가장 많이 사용되는 듯 하며, EC2의 사용이 복잡하다는 점을 보완해주는 Elastic Baenstalk이라는 서비스도 존재한다.

이 글에서는 Elastic Baenstalk 의 간략한 개념과, 배포 방법에 대해서 공유하려한다.
전문적인 글은 아니고, 초보자의 관점에서 어떻게 배포할 수 있는지에 대해 초점을 맞추어 작성되었으며, 때문에 다소 부족한 설명이나 잘못된 내용이 있을 "수" 있다는 점 양해바란다.

Elastiac Beanstalk 에 대한 간단한 설명

Elastic Baenstalk 이름이 장황하다. 이 이름 자체의 의미는 무엇일까?
찾아보니 "Elastic"확장성유연성을 의미하며, "Beanstalk"은 식물에서 줄기와 잎을 지지하는 구조물을 의미한다고 한다.
왜 이런 이름을 붙였을까?

Elastic Baenstalk는 개발자가 애플리 케이션을 쉽게 배포하고 확장할 수 있도록 해주는 Paas(Platform as a Service)서비스 이다. 개발자가 애플리케이션 코드를 업로드하면, Elastic Baenstalk는 배포, 프로비저닝, 로드 밸런싱, 확장, 모니터링 등을 자동으로 처리해준다.

이처럼 클라우드에서 웹 애플리케이션을 배포하고 운영하는 데 필요한 기본 구조물을 제공하므로, 개발자들은 애플리케이션 코드에 집중할 수 있다. 이러한 특성으로 인해 Elastic Baenstalk 이라는 이름이 붙어진듯 하다.

EC2랑은 무엇이 다른가?

EC2 (Elastic Compute Cloud)는 Baenstalk와 마찬가지로 "Elastic"으로 시작하지만, 뒤에 C로 시작되는 단어가 두번이나 등장하기 때문에 "C2"를 붙여 EC2 라고 불린다.
이는 가상의 서버를 제공하는 IaaS(Infrastructure as a Service)서비스이다. EC2는 가상 머신(인스턴스)의 생성, 시작, 정지 및 삭제와 같은 모든 작업을 직접 수행해야 한다.

EC2를 사용하면 소프트웨어 에플리케이션을 실행할 수 있는 가상 서버를 프로비저닝 할 수 있으며, 더 많은 인스턴스를 추가하여 수평 확장도 가능하다.
따라서 EC2는 개발자나 시스템 관리자가 전체 인프라를 직접 제어하고 애플리케이션을 배포하고 관리하는 데 사용된다.

요약하자면, Elastic Beanstalk는 개발자가 애플리케이션 코드를 업로드하면 AWS가 배포 및 관리를 자동화하는 PaaS 서비스서비스이며, EC2는 가상 서버를 직접 관리해야 하는 IaaS 서비스이다.

+ S3 란?
S3는 Simple Storage Service의 줄임말이다.
이는 객체 스토리지 서비스라고도 불리며, 이를 통해 사용자는 이미지, 비디오, 문서 등과 같은 다양한 형식의 데이터를 안전하게 저장하고 검색할 수 있다.
Amazon S3는 클라우드에서 데이터 저장에 최적화 되어 있으며, 큰 용량의 데이터를 안정적으로 처리할 수 있다.

Elastic Beanstalk 배포방법 A-Z

배포를 하는 방법은 EB CLI를 사용해서 멋있게(?) 하는 방법도 있지만, 여기에서는 Elastic Beanstalk 콘솔홈에서 만드는 방법으로 설명하겠다.

  1. asw 사이트에 들어가면 회원가입을 하고 로그인을 한다.

  2. 콘솔 홈에서 Elastic Beanstalk을 검색
    로그인을 하면 아래와 같은 콘솔 홈으로 들어와진다. 상단 검창에 Elastic Beanstalk를 검색한다.

  3. 좌측 햄버거(목록)아이콘 클릭, 애플리케이션 클릭, 애클리케이션 생성 클릭
    애플리케이션과 환경의 관계는, 하나의 애플리케이션 아래에 여러 환경이 존재할 수 있는 구조이다. 따라서 애플리케이션을 먼저 생성한 후 환경을 만들어주어야한다. (나는 미리 만들어둔게 있어서 하나가 있지만 처음한다면 비어있을 것이다.)

추가설명 )
애플리케이션은 여러가지 환경에서 동작할 수 있다.
예를들면 하나의 앱이 실서버라는 환경, 개발서버라는 환경과 같은 여러 환경에서 동작한다. 이처럼 애플리케이션 아래에 여러 환경이 존재할 수 있는 구조이다.
즉 환경은 앱의 코드가 탑재돼서 동작하는 구체적인 서버라고 한다면, 앱은 그 환경들을 그룹핑하는 폴더라고 할 수 있다. - 생활코딩

  1. 애플리케이션의 이름을 입력한다. 설명 및 태그는 생략해도 무방하다. 생성 버튼 클릭.

  2. 애플리케이션이 생성되었고, 자동으로 환경 설정화면으로 넘어간다. 우측 상단 새 환경 생성 클릭

  3. 환경구성
    환경 티어 : 웹 서버 환경 선택.
    (웹서버 환경은 보통 웹앱을 동작 시킬 때 사용하고, 작업자 환경은 백엔드에서 돌아가는 크론잡과 같은 작업들을 할 때 사용한다.)
    애플리케이션 정보 : 설정한 앱 이름이 입력되어있음, 태그 추가 필요 없음.
    환경 정보 : 작성하지 않고 있는 그대로 두어도 무방.
    플랫폼 :
    - 플랫폼 유형 => 관리형 플랫폼 선택
    - 플랫폼 => 본인이 사용하는 언어환경 선택 (나는 node)
    - 플랫폼 브랜치 => 제약사항이 없는 이상 최신버전 선택
    - 플랫폼 버전 => 제약사항이 없는 이상 최신버전 선택
    애플리케이션 코드 : 바로 소스코드를 올려버릴 수 있지만, 올리기전에 일단 환경부터 만들어보자. 샘플 에플리케이션 선택
    프리셋 : 프로젝트가 규모가 크지 않은 이상 단일 인스턴스 선택
    (규모있는 프로젝트고, 로드밸런스 같은 것을 이용해서 여러개의 컴퓨터가 병렬적으로 작동하도록 하고싶다면 "고가용성" 선택)

  4. 서비스 액세스 구성
    서비스 역할 : 기존 서비스 역할 사용
    기존 서비스 역할 : 초기값 그대로 사용

    이 중 EC2 키페어, EC2 인스턴스 프로파일은 처음 앱을 만들 경우에는 아무 것도 없을 수 있다.
    이때 없다고 그냥 다음으로 넘어가게되면 배포시 오류가 발생한다. (저같은 과오를 겪지 않으시길 바랍니다..)
    때문에 각각 생성 해주어야한다.

    EC2 키페어 생성 튜토리얼
    EC2 인스턴스 프로파일 생성 튜토리얼

    가상머신 키 페어가 왜 필요한가?
    환경을 만들면 그 환경은 AWS의 컴퓨팅 서비스인 EC2인스턴스가 결국에 만들어진다. 그 인스턴스에 접속을 해서 직접 커맨드라인으로 컴퓨터를 다루고싶다할 때 접속하기 위해서 비밀번호라고 할 수 있는 키페어를 사용하는 것이다. - 생활코딩

  5. 네트워킹, 데이터베이스 및 태그 설정 - 선택 사항
    모두 그대로 두어도 무방하나 데이터베이스를 사용할 계획이라면 아래와 같이 설정해준다.

  6. 인스턴스 트래픽 및 조정 구성 - 선택 사항
    인스턴스 : 그대로 두어도 무방
    용량 : 아래 항목만 수정한다.
    - 환경 유형 => 단일 인스턴스
    - 플릿 구성 => 온디맨드 인스턴스
    - 인스턴스 => 기본적을 세팅되어 있는 것들을 X를 눌러 삭제하고 t2.nano를 선택한다. (nano가 가장 싸다.)

  1. 업데이트, 모니터링 및 로깅 구성 - 선택 사항
    특별히 설정할 것 없다. 바로 다음 버튼을 누른다.

  2. 검토
    전체 내용에 이상이 없으면 제출 버튼을 누른다.

  3. 기다림
    제출이 완료되면 상단에 로딩이 돌아가고, 여러 이벤트 찍히며 환경이 생성되고 있음을 볼 수 있다.

    생성이 끝났을 시 도메인을 클릭해보면, 아래와 같은 기본 화면이 출력된다.

  1. 코드 업로드
    환경의 우측 상단의 업로드 및 배포를 클릭한다.
    node 서버폴더를 폴더째로 zip확장자로 압축하여 업로드 한다.

이때 package.js에 node의 버전정보가 명시되어있지 않으면 오류가 난다는 것을 명심하자.

  "engines": {
    "node": "18.14.0"
  }

Elastic Beanstalk 앱에 DB연결하기 (MySql Workbench 연동)



참고문헌 : 생활코딩 AWS Elastic Beanstalk

profile
최선이 반복되면 최고가 된다.
post-custom-banner

0개의 댓글