11.3 AWS Elastic Beanstalk 서버 구축

SummerToday·2024년 5월 3일
0
post-thumbnail
post-custom-banner

Elastic Beanstalk 서비스 생성하기

  1. 현재 위치와 가장 가까운 리전으로 설정해준다.


  1. 검색창에 Elastic Beansrtalk를 검색해 일래스틱 빈스토크 서비스로 들어가 [Create Application] 버튼을 눌러 서비스를 생성한다.


  1. 애플리케이션 이름 입력 후, 플랫폼을 [Java], 플랫폼 브랜치를 [Corretto 17 running on 64bit Amazon Linux 2], 플랫폼 버전을 [3.7.1(Recommended)]을 선택한다.


  2. 환경을 관리하고 모니터링하기 위해 AWS Elastic Beanstalk는 사용자를 대신하여 환경 리소스에 대한 작업을 수행한다. Elastic Beanstalk는 이러한 작업을 수행하려면 특정 권한이 필요하며, 이러한 권한을 얻기 위해 AWS Identity and Access Management(IAM) 서비스 역할을 부여해줘야 한다.


  1. Elastic Beanstalk 환경이 생성되었으면 해당 환경으로 들어가 환경의 상태가 OK로 보이는지 확인 후, 생성된 도메인으로 들어가 성공적으로 접속이 되는지 확인한다.



Elastic Beanstalk에서 RDS 생성하기

클라우드에 올릴 데이터베이스를 생성한다. Elastic Beanstalk 메뉴를 이용해 RDS를 구축해준다.

  1. Elastic Beanstalk 환경에서 [구성]을 눌러 환경 설정 메뉴에 들어간다. 네트워킹 및 데이터베이스 메뉴를 찾아 [편집]을 눌러 데이터베이스 설정을 추가한다.


  1. mysql을 선택하고 용량은 프리티어를 지원하는 db.t3.micro를 선택한다. 사용자 이름과 암호를 채운 다음 [적용] 버튼을 눌러 데이터베이스를 생성한다.


  1. 생성이 완료된 후 [구성]메뉴에서 네트워크 및 데이터베이스 영역을 확인하면 생성된 데이터베이스의 정보를 확인할 수 있다.


  1. RDS 서비스로 들어가보면 방금 생성한 데이터베이스가 존재하는 것을 확인할 수 있다. 해당 정보는 H2 데이터베이스에서 RDS로 연결할 때 사용한다. 엔드 포인트는 미리 복사해둔다.


  1. 애플리케이션이 생성한 데이터베이스를 사용할 수 있도록 설정을 변경해준다. Elastic Beanstalk에서 [구성]을 클릭 후, 업데이트, 모니터 및 로깅 탭에서 [편집]을 클릭하여 환경 속성을 설정한다.


  1. 설정한 환경 속성 값은 애플리케이션 실행 시 스프링 부트의 환경 변수, 즉, properties.yml 파일의 설정값의 역할을 한다. application.yml에서 spring 항목의 datasource 항목들만 지워준다.
    #애플리케이션 실행 시 일래스틱 빈스토크에서 값을 덮어쓰므로 해당 부분은 삭제 또는 주석처리를 해준다.
    spring:
     # AWS RDS 사용으로 인한 주석화.
     #datasource:
       #url: jdbc:h2:mem:testdb
       #username: sa 

로컬에서 RDS 연결하기

로컬에서 사용하던 H2 대신 AWS의 RDS를 사용한다. RDS는 H2처럼 데이터를 콘솔에서 조회할 수 없고, 데이터베이스 도구를 사용해야 한다.

  1. RDS 서비스로 들어가 데이터베이스 관리 페이지로 이동한다.


  2. 로컬에서 데이터베이스에 접근할 수 있도록 로컬의 IP를 허용해야 한다. 데이터베이스 항목의 DB 식별자에 있는 링크를 눌러 이동하고, [연결 및 보안] 탭의 보안 그룹에 있는 VPC 보안 그룹 하이퍼링크를 클릭한다.


  1. [인바운드 규칙] 탭을 눌러 이동한 뒤 [인바운드 규칙 편집] 버튼을 클릭한다. 인바운드 편집 메뉴에서는 데이터베이스 인스턴스의 트래픽을 관리할 수 있다.


  1. 유형을 [MYSQL/Aurora], 소스를 [내 IP]를 선택하여 인바운드 규칙을 추가해준다.

    cf. IP 주소 확인법
    CMD에서 ipconfig 명령어를 통해 내 컴퓨터의 IP를 확인할 수 있다. IPv4가 자신의 아이피 주소이다.


  1. 인텔레제이 실행 후 [File -> Settings ...]에서 plugins 옵션을 검색한 다음 database navigator(제작자: Dan Cioca) 플러그인을 설치한다. 설치후 인텔리제이를 재시작한다.

  1. 인텔리제이 왼쪽 메뉴에서 [DB Browser]를 선택한다. (보이지 않을 시, 메뉴바에서 View->Tool Windows->DB Browser를 선택하면 된다.) 그 후 [+] 버튼을 누른 뒤 MYSQL을 선택한다.

  1. 데이터베이스 정보창에 RDS 정보인 Host, Port, User, Password를 입력한다. Host는 RDS의 엔드포인트 주소를 입력하면 되고, Port는 3306, User와 Password는 RDS에서 설정한 User와 Password 값을 입력하면 된다.
    입력을 마친 후 [Test Connection] 버튼을 눌러 데이터베이스에 연결이 잘되는지 테스트한다.

  2. DB Brower 메뉴의 [New SQL Console]을 눌러 SQL문을 작성할 수 있는 창을 연 후 다음 SQL문들을 작성하여 실행한다. 다음 SQL문들을 통해 데이터베이스와 테이블들을 생성한다.

    create database blog;
    use blog;
    
    create table article (
                           id bigint not null AUTO_INCREMENT,
                           author varchar(255) not null,
                           content varchar(255) not null,
                           created_at timestamp,
                           title varchar(255) not null,
                           updated_at timestamp,
                           primary key (id)
    );
    
    create table refresh_token (
                                 id bigint not null AUTO_INCREMENT,
                                 refresh_token varchar(255) not null,
                                 user_id bigint not null,
                                 primary key (id)
    );
    
    create table users (
                         id bigint not null AUTO_INCREMENT,
                         created_at timestamp,
                         email varchar(255) not null,
                         nickname varchar(255),
                         password varchar(255),
                         updated_at timestamp,
                         primary key (id)
    );

    실행 후 다음 메시지가 콘솔에 나오는지 확인한다.


  1. 아마존 서버에서 MySQL을 사용하므로 프로젝트를 빌드해 배포하기 전에 의존성을 추가해준다.
    build.gradle 파일을 열어 의존성을 추가하고 새로고침을 눌러 의존성을 추가한다.

    // build.gradle
    
    dependencies {
       ~ 생략 ~
    	implementation 'mysql:mysql-connector-java'
    }

추가 내용 : MySQL Workbench를 이용해 RDS 접속하기

책에서는 인텔리제이의 플러그인 툴을 사용해 RDS에 접속하였지만, 개인적으로 MySQL Workbench를 사용해 접속하는 것이 더 편할 것 같았다. 그래서 위에서 만든 데이터베이스와 테이블을 확인해볼겸 MySQL Workbench를 사용해 접속해보기로 하였다.

  1. MySQL Connections에서 새로운 Connection을 만든 후, 위에서 사용한 설정값들과 동일하게 입력해준다.


  2. 다음 SQL문들을 통해 데이터베이스와 테이블들이 잘 생성되었는지 확인해본다.

    위 과정에서 생성한 blog 데이터베이스와 article, refresh_token, users 테이블이 잘 생성된 것을 확인할 수 있다.




해당 글은 다음 도서의 내용을 정리하고 참고한 글임을 밝힙니다.
신선영, ⌜스프링 부트 3 벡엔드 개발자 되기 - 자바 편⌟, 골든래빗(주), 2023, 384쪽
profile
IT, 개발 관련 정보들을 기록하는 장소입니다.
post-custom-banner

0개의 댓글