BOOK 2 - 스프링부트와 AWS로 혼자 구현하는 웹 서비스(6)

스프링부트와 AWS로 혼자 구현하는 웹 서비스 - 6

AWS RDS로 데이터베이스 환경 구축

  • RDS (Relational Database Service)는 AWS에서 지원하는 클라우드 기반 관계형 데이터베이스이다.
  • 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같이 운영 작업의 자동화를 지원한다.

RDS 인스턴스 생성

DB 엔진 선택

  • MariaDB로 선택한다.
    • 가격과 Amazon Aurora로의 교체 용이성 측면에서 MariaDB가 적절하다.
      • Amazon Aurora는 AWS에서 MySQL과 PostgreSQL을 클라우드 기반에 맞게 재구성한 데이터베이스로 클라우드 서비스에 가장 적합한 데이터베이스이기 때문에 많은 회사에서 사용한다.
      • 작은 서비스에서는 굳이 Amazon Aurora를 사용할 필요는 없지만 나중에 Amazon Aurora로 이전할 때 MariaDB를 사용한다면 좀 더 수월할 수 있다.

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

파라미터 그룹 생성

  • 파라미터 그룹 탭에서 파라미터 그룹을 생성한다.
  • DB 엔진은 생성한 인스턴스의 MariaDB와 같은 버전으로 맞춰야 한다.

타임존 파라미터 설정

  • time_zone 파라미터의 값을 Asia/Seoul 로 설정한다.

Character Set 파라미터 설정

  • character_set_xxx 파라미터들의 값을 모두 utf8mb4 로 설정한다.
  • collation_xxx 파라미터들의 값을 모두 utf8mb4_general_ci 로 설정한다.
  • utf8utf8mb4 의 차이는 이모지 저장 가능 여부이다.

RDS의 파라미터 그룹 변경

  • 생성된 파라미터 그룹을 데이터베이스에 연결한다.
  • 생성한 RDS 인스턴스의 파라미터 그룹을 default에서 방금 생성한 신규 파라미터 그룹으로 변경한다.

EC2 보안그룹을 RDS 보안그룹에 추가

  • 이전에 생성했던 EC2 인스턴스가 해당 데이터베이스에 접속할 수 있도록 EC2 보안그룹을 RDS 보안 그룹의 인바운드에 추가한다.

    image

    • EC2의 경우 인스턴스 수가 이후에 늘어날 수 있기 때문에 매번 해당 인스턴스의 IP를 등록하기 보다 EC2의 보안그룹을 추가하면 보안 그룹간에 연동이 된다.

로컬 PC에서 RDS 데이터베이스 접속 및 설정값 확인

intellij database plugin을 활용한 데이터베이스 접속

  • RDS 콘솔에서 endpoint 값 확인
  • intellij database plugin에서 MySQL database 접속
    • 현재 인텔리제이는 MariaDB 엔진을 지원하지 않는다. MariaDB는 MySQL 기반이므로 MySQL로 접속 할 수 있다.
    • endpoint값과 사용자명, 비밀번호 입력 후 접속이 가능하다.

데이터베이스의 character_set 및 time_zone 설정값 확인

  • 다음 쿼리를 실행하여 character_set , collation 설정을 확인한다.

    show variables like 'c%';
    

    image

    • character 설정값이 utf8mb4 로 올바르게 설정된 것을 확인할 수 있다.
  • 타임존 설정을 확인한다.

    select @@time_zone, now();
    

    image

    • 타임존도 Asia/Seoul 로 올바르게 설정된 것을 확인할 수 있다.

EC2에서 RDS 데이터베이스 접속

  • ssh로 EC2 인스턴스에 접속 후 MySQL CLI를 설치한다.

    sudo yum install mysql
    
  • 다음 명령어로 RDS에 접속한다.

    mysql -u 계정 -p -h Host주소(endpoint)
    

    image

    • 접속에 성공한 것을 확인할 수 있다.