관리 메뉴

거니의 velog

(55) AWS Elastic Beanstalk 1 본문

SpringBoot_React 풀스택 프로젝트

(55) AWS Elastic Beanstalk 1

Unlimited00 2024. 3. 11. 21:06

* 마지막 프로젝트의 마무리로 개발된 API 서버와 리액트 애플리케이션은 AWS의 Elastic Beanstalk(이하 빈즈톡)을 사용해서 배포(deploy)해 볼 것이다. 

웹 애플리케이션의 배포(deployment)는 개발된 애플리케이션을 실제 사용자가 접근할 수 있는 환경에 설치하고 실행하는 과정을 말합니다. 
이는 애플리케이션을 개발 환경에서 완성된 형태로 변환하고, 서버에 배치하여 사용자가 인터넷을 통해 접근할 수 있게 하는 과정을 포함합니다. 
아래는 일반적인 웹 애플리케이션 배포 과정에 대한 설명입니다.

1. 서버 환경 설정:
먼저, 애플리케이션을 호스팅할 서버를 선택하고 환경을 설정합니다. 이는 서버 운영 체제, 웹 서버 (예: Apache, Nginx), 데이터베이스 서버, 백엔드 서버 등을 포함합니다.

2. 의존성 설치:
애플리케이션에 필요한 모든 라이브러리와 의존성을 서버에 설치합니다. 이는 프로그래밍 언어에 따라 다를 수 있습니다.

3. 소스 코드 배포:
개발된 애플리케이션의 소스 코드를 서버로 전송합니다. 이 단계에서는 소스 코드를 압축하거나 필요한 파일만 전송하는 등의 최적화 작업이 이루어질 수 있습니다.

4. 환경 설정:
서버에 배포된 애플리케이션을 실행하기 위해 필요한 환경 변수, 데이터베이스 연결 정보 등을 설정합니다.

5. 데이터베이스 마이그레이션:
데이터베이스를 사용하는 경우, 새로운 버전의 애플리케이션에 필요한 데이터베이스 스키마 변경을 적용하거나 마이그레이션을 수행합니다.

6. 웹 서버 구성:
웹 서버를 구성하여 클라이언트의 요청을 받아 애플리케이션에 전달하도록 설정합니다. 정적 파일과 동적 콘텐츠를 제공하기 위한 설정이 여기에 해당됩니다.

7. 배포 검증:
배포된 애플리케이션의 동작을 테스트하고 검증합니다. 이 단계에서는 기능적인 테스트, 성능 테스트, 보안 검사 등이 포함될 수 있습니다.

8. 도메인 및 네트워크 설정:
사용자가 애플리케이션에 접근할 수 있도록 도메인을 설정하고 네트워크 설정을 완료합니다. SSL 인증서를 설치하여 보안 연결을 활성화할 수도 있습니다.

9. 모니터링 및 로깅 설정:
애플리케이션의 동작을 모니터링하고 로그를 수집하여 성능 이슈나 오류를 식별하기 위한 모니터링 및 로깅 시스템을 설정합니다.

10. 로드 밸런싱 및 확장성 고려:
사용자의 증가에 대비하여 로드 밸런서를 설정하거나, 필요에 따라 여러 서버 인스턴스를 생성하여 확장성을 고려합니다.

11. 완료 및 유지보수:
모든 설정이 완료되면 애플리케이션은 사용자에게 서비스를 제공할 준비가 되었습니다. 그러나 지속적인 유지보수와 업데이트는 계속되어야 합니다.

이러한 배포 프로세스는 자동화 도구를 사용하여 자동화될 수 있으며, 지속적 통합 (CI) 및 지속적 배포 (CD) 시스템을 통해 지속적으로 개선 및 배포할 수 있습니다.

* 소스코드의 배포는 CI/CD 환경에 대해서 이해해야 하고 개발 관련 도구에 대한 여러 지식이 필요하지만, 우리는 빈즈톡을 이용해서 최소한의 설정으로 개발한 프로젝트를 클라우드 환경에 배포한다.
* 이번 장의 학습 목표는 다음과 같다.

1. AWS의 사용자 IAM 서비스를 이용한 사용자/역할 생성

2. 빈즈톡을 이용한 애플리케이션 구성과 환경설정

3. 빈즈톡으로 구성된 RDS 설정과 사용법

4. 스프링 부트 애플리케이션 배포와 설정

5. 리액트 애플리케이션 배포

1. 빈즈톡과 IAM 서비스

* 빈즈톡은 기존의 EC2(가상 서버)와 RDS(데이터베이스), S3(파일 저장) 등의 여러 서비스를 하나로 묶어서 애플리케이션의 설정/생성/관리/배포 등을 쉽게 처리할 수 있는 환경이다. 일반적으로 특정 애플리케이션을 AWS를 이용해서 배포하기 위해서는 EC2와 같은 가상 서버를 이용해서 필요한 환경을 갖춰야 하고 배포 환경을 구성하는 등의 노력이 필요하다.
* 반면에 빈즈톡은 웹 화면상에서 환경을 구성하고 애플리케이션을 업로드해서 배포하는 방식이라 운영체제나 배포 환경에 대한 지식이 많이 필요하지 않다는 장점이 있다(대신 화면 구성(UI)이 자주 변경되므로 이에 대한 적응이 필요하기도 하다).
* AWS를 이용하기 위해서는 우선 AWS의 계정을 만들어야만 한다. 이 때 프리티어(free-tier)를 이용하면 1년간 많은 비용을 줄일 수 있다. 예를 들어 EC2 서비스의 경우 한 달에 750시간(31일이 넘는 시간) 동안 무료로 사용할 수 있는데 만일 여러 개의 EC2 서비스를 이용하는 경우에는 모든 서비스의 합산 시간이므로 주의해야 한다.


(1) IAM 서비스

* IAM 서비스는 사용자의 권한이나 역할을 지정하는 서비스이다. 빈즈톡은 환경구성 시에 적절한 역할이 있어야만 하기 때문에 로그인 후 처음 시작은 IAM 서비스를 이용해서 권한을 설정하는 것이 좋다.
* AWS 메뉴에서 IAM을 검색하고 해당 서비스 화면으로 이동한다. IAM 메뉴 화면에서 '역할' 메뉴를 선택한다.

* 역할 메뉴에서 역할 만들기를 선택해서 새로운 역할을 생성한다.

* 역할을 생성할 때는 권한을 추가해 주어야 한다. 권한 추가에서는 아래와 같은 3개의 항목을 추가한다(beans와 같은 키워드를 이용해서 검색하면 쉽게 찾을 수 있다). 3개의 항목을 지정하고 나면 생성하는 권한의 이름을 지정하는데 예제에서는 'EC_ROLE'이라고 지정하였다.

* 마지막의 태그 생성 부분을 지나면 역할 생성이 완료되고 목록 화면을 볼 수 있게 된다.