스프링 부트와 AWS로 혼자 구현하는 웹 서비스 를 공부하고 정리한 내용입니다.
웹 서비스의 백엔드를 다룬다고 했을 때 애플리케이션 코드를 작성하는 것만큼 중요한 것이 데이터베이스를 다루는 것이다.
이번 장에서는 데이터베이스를 구축하고 이전에 만든 EC2 서버와 연동을 해보자.
다만, 직접 데이터베이스를 설치하지 않는다.
AWS에서는 앞에서 언급한 작업을 모두 지원하는 관리형 서비스인 RDS(Relational Database Service)
를 제공한다.
📢 RDS란?
- RDS는 AWS에서 지원하는 클라우드 기반 관계형 데이터베이스로, 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같이 잦은 운영 작업을 자동화하여 개발자가 개발에 집중할 수 있게 지원하는 서비스이다.
- 추가로 조정 가능한 용량을 지원하여 예상치 못한 양의 데이터가 쌓여도 비용만 추가로 내면 정상적으로 서비스가 가능하다는 장점도 있다.
이러한 RDS를 이용하여 나만의 데이터베이스 환경을 구축해보자!
📢 MariaDB를 추천하는 이유는 다음과 같다.
Amazon Aurora
는 AWS에서 MySQL과 PostgreSQL을 클라우드 기반에 맞게 재구성한 데이터베이스이다.Amazon Aurora를 처음부터 시작하는 것보다는 Amazon Aurora로 교체가 가능하고 가격도 저렴한 MariaDB로 시작하는 것이 더 좋다.
하지만, MariaDB로 할 시 설정 되지 않는 것이 있어 MYSQL DB를 선택했다.
🎁 MariaDB란?
MariaDB는 MySQL을 기반으로 만들어졌기 때문에 쿼리를 비롯한 전반적인 사용방법이 MySQL과 유사하다.
MariaDB는 MySQL 대비 다음과 같은 장점이 있다.
- 동일 하드웨어 사양으로 MySQL보다 향상된 성능
- 좀 더 활성화된 커뮤니티
- 다양한 기능
- 다양한 스토리지 엔진
🎁 RDS를 처음 생성하면 몇 가지 설정을 필수로 해야 한다.
- 타임존
- Character Set
- Max Connection
✔ 파라미터 그룹 생성
time_zone
검색 후 Asia/Seoul
선택하기
character
항목들은 utf8mb4로, collation
항목들은 utf8mb4_general_ci로 변경한다.변경할 요소들
관련 모두 변경한다.
💡 참고
- 간혹 파라미터 그룹이 제대로 반영되지 않을 때가 있다. 정상 적용을 위해 한 번 더 재부팅을 진행한다.
로컬 PC에서 RDS로 접근하기 위해서 RDS의 보안 그룹에 본인 PC의 IP를 추가한다.
RDS와 개인 PC, EC2 간의 연동 설정은 모두 되었다.
✔️ Database 플러그인 설치
Intellij에 Database 플러그인을 설치해서 진행해보겠다.
RDS 정보 페이지에서 엔드 포인트를 확인한다.
접근 가능한 URL이므로 메모장 같은 곳에 복사해둔다.
Intellij로 이동하여 database 플러그인을 검색한다.
설치가 다 되었다면 Intellij 재시작을 한 뒤 Action 검색으로 Database Browser를 실행한다.
(mac 단축 키 : cmd + shift + a)
DB Browser가 노출된다.
MySQL 접속 정보를 열어 본다.
Connection successful
할 경우, 최종 저장을 한다.
✔️ 인텔리제이에 RDS의 스키마
use AWS RDS 웹 콘솔에서 지정한 데이터베이스명
Execute Statement
버튼을 클릭한다.Execute Console
에서 SQL statement executed successfully
메시지가 떴다면 쿼리가 정상적으로 수행된 것이다.
데이터베이스가 선택된 상태에서 현재의 character_set
, collation
설정을 확인한다.
show variables like 'c%';
utf8mb4
가 잘 적용되었지만, character_set_database, collation_connection 2가지 항목은 설정되어 있지 않다.
2개의 항목이 MYSQLDB에서만 RDS 파라미터 그룹으로는 변경이 안된다.
직접 변경해줘야 한다.
ALTER DATABASE database이름
CHARACTER SET = 'utf8mb4'
COLLATE = 'utf8mb4_general_ci';
show variables like 'c%';
을 재실행한다.
한글명이 잘 들어가는지 간단한 테이블 생성과 insert 쿼리를 실행해보자
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;
RDS에 대한 모든 설정이 끝났다.
맥에서는 ssh 서비스명
윈도우에선 putty
접속되었다면, MySQL 접근 테스트를 위해, MySQL CLI를 설치
sudo yum install mysql
설치가 다 되었으며 로컬에서 접근하듯이 계정, 비밀번호, 호스트 주소를 사용해 RDS에 접속한다.
mysql -u 계정 -p -h Host주소
RDS에 접속되었으면 실제로 생성한 RDS가 맞는지 간단한 쿼리를 실행해보자!