Group Study (2023-2024)/Spring 입문

[스프링 입문] 5주차 chap 07 - AWS에 데이터 베이스 환경을 만들어보자(AWS RDS)

knew_jin 2023. 12. 25. 23:45

Chap 07_AWS에 데이터 베이스 환경을 만들어보자(AWS RDS)

 웹 서비스의 백엔드를 다룬다고 했을 때 애플리케이션 코드를 작성하는 것 만큼 중요한 것이 데이터베이스를 다루는 것이다. 규모가 있는 회사의 경우 데이터베이스를 전문적으로 처리하는 직군 담당자들이 존재하지만 스타트업이나 개발 인원수가 적은 서비스에서는 개발자가 데이터베이스를 다뤄야만 하므로 백엔드 개발자는 데이터베이스를 다룰 줄 알야야 한다.

AWS에서 제공하는 관리형 서비스인 RDS를 이용하여 데이터베이스를 구축하고 앞 장에서 만든 EC2 서버와 연동해볼 수 있다.

  • RDS란?
    • AWS에서 지원하는 클라우드 기반 관계형 데이터베이스
    • 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같이 잦은 운영 작업을 자동화하여 개발자가 개발에 집중할 수 있게 지원하는 서비스
    • 장점: 예상치 못한 양의 데이터가 쌓여도 비용만 추가하면 정상적으로 서비스가 가능함 (조정 가능한 용량 지원)

7.1 RDS 인스턴스 생성하기

1. DBMS 선택

RDS 대시보드에서 [데이터베이스 생성]버튼 클릭하면 RDS 생성과정이 진행된다. DB 엔진 선택화면에서 MariaDB를 선택하는데 저자가 RDS에서 제공하는 많은 데이터베이스 중에서 MariaDB를 추천하는 이유는 다음과 같다.

  • 가격
    • 상용 데이터베이스인 오라클, MSSQL이 오픈소스인 MySQL, MariaDB, PostgreSQL보다는 동일한 사양 대비 더 가격이 높다.
  • Amazon Aurora(오로라) 교체 용이성
    • 많은 회사들이 클라우드 서비스에 가장 적합한 데이터베이스인 Amazon Aurora를 선택한다. 그러다보니 굳이 Amazon Aurorad와 호환 대상이 아닌 오라클, MSSQL을 선택할 필요가 없어진다.
    • 하지만 시작하는 단계에서는 비용적인 문제로 인해 Aurora를 선택하기 부담스럽기 때문에 MariaDB를 사용하는 것이다.
MariaDB란?
  MySQL의 창시자인 몬티 와이드니어가 만든 프로젝트
  MySQL을 기반으로 만들어졌기 때문에 전반적인 사용법이 유사함

  MySQL 대비 장점
   - 동일 하드웨어 사양으로 MySQL보다 향상된 성능
   - 좀 더 활성화된 커뮤니티
   - 다양한 기능
   - 다양한 스토리지 엔진

 

2. 사용 사례 선택

  • [프리티어] 선택

 

3. 상세 설정

 

  • DB 인스턴스와 마스터 사용자 정보 등록

 

  • 퍼블릭 액세스 변경
    • 보안 그룹에서 지정된 IP만 접근하도록 막을 예정

 

  • 데이터베이스 이름 설정


7.2 RDS 운영환경에 맞는 파라미터 설정하기

RDS를 처음 생성하면 몇 가지 설정을 필수로 해야 한다.

  • 타임존
  • Character Set
  • Max Connection

1. 파라미터 그룹 생성

  • [파라미터 그룹 생성] 버튼 클릭

 

  • 생성한 MariaDB와 같은 버전 선택

 

  • 생성된 파라미터 그룹 클릭

 

  • [편집] 버튼 클릭

 

2. 파라미터 그룹 편집

  • 타임존 수정
    • Asia/Seoul 입력

 

  • Character Set 변경
    • character 항목 → utf8mb4로 변경
    • collation 항목   utf8mb4_general_ci로 변경
    • utf8과 utf8mb4의 차이 : 이모지 저장 가능 여부
      • utf8 : 이모지 저장 가능
      • utf8mb4 : 이모지 저장 불가능

 

 

  • Max Connection 수정
    • RDS의 Max Connection은 인스턴스 사양에 따라 자동으로 결정
    • Max Connection을 150으로 설정

 

3. 데이터베이스에 파라미터 그룹 연결

  • DB 파라미터 그룹을 신규 파라미터 그룹으로 변경

 

 

  • 반영 시점: [즉시 적용]

 

  • 정상 적용을 위한 재부팅

 


7.3 내 PC에서 RDS에 접속해 보기

1. RDS 보안 그룹에 본인 PC의 IP 추가

  • RDS 보안 그룹 정보 선택

 

  • EC2의 보안 그룹 ID 복사

 

  • 복사된 보안 그룹 ID와 본인의 IP를 RDS 보안 그룹의 인바운드로 추가
    • 인바운드 규칙 유형: MYSQL/Aurora 선택 시 자동으로 3306 포트 선택
      • 보안 그룹 첫 번째 줄 : 현재 내 PC의 IP를 등록
      • 보안 그룹 두 번째 줄 : EC2의 보안 그룹을 추가
        • 이와 같이 하면 EC2와 RDS 간에 접근이 가능
        • EC2의 경우 이후에 2대 3대가 될 수도 있는데, 매번 IP를 등록할 수는 없으니 보편적으로 이렇게 보안 그룹 간에 연동을 진행

 

2. Database 플러그인 설치

  • IntelliJ에서 Database Navigator 설치

 

  • Database 플러그인 실행

 

  • RDS 접속 정보 등록
    • Host : RDS의 엔드 포인트 붙여넣기
    • User, Password : RDS 데이터베이스의 마스터 계정 id와 password 입력

  • Test Connection 성공 시 최종 저장

 

  • RDS 스키마 노출 후 콘솔창 생성

 

 

  • 신규 콘솔창 이름 등록

 

  • 쿼리 실행
    • 쿼리가 수행될 database를 선택하는 쿼리

 

  • 쿼리 실행 성공 메시지

 

  • character_set, collation 설정 확인

 

  • 두 번째 쿼리 실행
ALTER DATABASE freelec_springboot2_webservice
CHARACTER SET ='utf8mb4'
COLLATE = 'utf8mb4_general_ci';

 

  • 변경 성공 확인

 

  • 타임존 확인
select @@time_zone, now();

 

  • 한글 데이터 등록 확인
CREATE TABLE test (
    id bigint(20) NOT NULL AUTO_INCREMENT, 
    content varchar(255) DEFAULT NULL, 
    PRIMARY KEY (id)
) ENGINE=InnoDB;

insert into test(content) values ('테스트');
select * from test;

 


7.4 EC2에서 RDS에서 접근 확인

  • Mac: ssh 서비스명
  • Window: putty

 

  • EC2에 MySQL CLI 설치

 

  • EC2에서 RDS에 접속

 

  • 데이터 베이스 목록 확인