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를 사용한다면 좀 더 수월할 수 있다.
- 가격과 Amazon Aurora로의 교체 용이성 측면에서 MariaDB가 적절하다.
RDS 운영환경에 맞는 파라미터 설정
파라미터 그룹 생성
파라미터 그룹탭에서 파라미터 그룹을 생성한다.- DB 엔진은 생성한 인스턴스의 MariaDB와 같은 버전으로 맞춰야 한다.
타임존 파라미터 설정
time_zone파라미터의 값을Asia/Seoul로 설정한다.
Character Set 파라미터 설정
character_set_xxx파라미터들의 값을 모두utf8mb4로 설정한다.collation_xxx파라미터들의 값을 모두utf8mb4_general_ci로 설정한다.utf8과utf8mb4의 차이는 이모지 저장 가능 여부이다.
RDS의 파라미터 그룹 변경
- 생성된 파라미터 그룹을 데이터베이스에 연결한다.
- 생성한 RDS 인스턴스의 파라미터 그룹을 default에서 방금 생성한 신규 파라미터 그룹으로 변경한다.
EC2 보안그룹을 RDS 보안그룹에 추가
-
이전에 생성했던 EC2 인스턴스가 해당 데이터베이스에 접속할 수 있도록 EC2 보안그룹을 RDS 보안 그룹의 인바운드에 추가한다.

- 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%';
- character 설정값이
utf8mb4로 올바르게 설정된 것을 확인할 수 있다.
- character 설정값이
-
타임존 설정을 확인한다.
select @@time_zone, now();
- 타임존도
Asia/Seoul로 올바르게 설정된 것을 확인할 수 있다.
- 타임존도
EC2에서 RDS 데이터베이스 접속
-
ssh로 EC2 인스턴스에 접속 후 MySQL CLI를 설치한다.
sudo yum install mysql -
다음 명령어로 RDS에 접속한다.
mysql -u 계정 -p -h Host주소(endpoint)
- 접속에 성공한 것을 확인할 수 있다.