이 글은 이동욱 님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스를 읽고 정리한 글입니다.
웹 서비스의 백엔드를 다룰 때 애플리케이션 코드를 작성하는 것만큼 중요한 것이 바로 데이터베이스를 다루는 일이다.
큰 기업의 경우 데이터베이스만을 전문적으로 처리하는 DBA 담당자들이 존재하지만, 스타트업이나 개발자의 수가 적은 경우에는 개발자여도 데이터베이스를 다뤄야 한다.
그렇기 때문에 데이터베이스 구축과 쿼리 튜닝에 대해서 기본적인 지식은 갖춰야 할 필요성이 있다.
AWS의 RDS를 사용하여 데이터베이스를 구축하고, EC2 서버와 연동을 해보자.
RDS는 AWS에서 제공하는 클라우드 기반 관계형 데이터베이스이다. 잦은 운영 작업들을 자동화하여 개발자가 개발에 더 집중할 수 있게 해 주고, 조정 가능한 용량을 지원하여 혹시 예상치 못한 양의 데이터가 쌓여도 비용만 추가하면 정상적으로 서비스를 진행할 수 있게 해 준다.
1. RDS 인스턴스 생성
RDS 대시보드에서 데이터베이스 생성 버튼을 클릭하고, DB 엔진으로 MariaDB를 선택한다.
저자는 다른 DB 엔진보다 가격, Amazon Aurora 교체 용이성이 뛰어난 MariaDB를 사용하기로 했다.
템플릿을 프리티어로 선택하고, 설정에서 DB 인스턴스 식별자와 마스터 사용자 정보를 등록한다.
다음으로 스토리지 설정에서 스토리지 자동 조정 활성화를 체크를 푼다.
연결에선 퍼블릭 액세스를 예로 변경한다. 보안 그룹에서 지정된 IP만 접근하도록 막을 예정이다.
추가 설정 -> 데이터베이스 옵션에서 이름을 설정하고 완료 버튼을 클릭한다.
아래와 같이 데이터베이스의 정보가 나타난다면 생성이 완료된 것이다.
2. RDS 운영환경에 맞는 파라미터 설정하기
RDS를 처음 생성하면 몇 가지 설정을 필수로 해야 한다.
1) 파라미터 그룹 생성
좌측의 카테고리에서 파라미터 그룹 탭을 클릭하여 이동한다. 다음으로 파라미터 그룹 생성 버튼을 클릭한다.
파라미터 그룹 패밀리의 버전을 방금 생성한 MariaDB와 같은 버전으로 맞춰준 후 생성 버튼을 클릭한다.
생성한 파라미터 그룹을 클릭 후 파라미터 편집 버튼을 클릭하여 편집 모드로 전환한다.
● Timezone 수정
time_zone을 검색하여 다음과 같이 Asia/Seoul을 선택한다.
● Character Set 수정
다음과 같이 변경한다.
collation_connection과 collation_server는 utf8mb4_general_ci로 변경한다.
● Max Connection 수정
RDS의 Max Connection은 인스턴스의 사양에 따라 자동으로 정해진다. 프리티어에선 60개만 가능한 상태로 설정되어 있어 이보다 좀 더 넉넉하게 150으로 지정하겠다.
마지막으로 변경 사항 저장 버튼을 클릭해 최종적으로 저장한다.
2) 파라미터 그룹 연결
위에서 생성한 파라미터 그룹을 데이터베이스에 연결해 보겠다. 데이터베이스의 수정창의 옵션 항목에서 DB 파라미터 그룹을 방금 생성한 파라미터 그룹으로 변경한다.
저장을 누르면 수정 사항 요약 창을 확인할 수 있다. 여기서 반영 시점을 즉시 적용으로 한다.
그 후 간혹 정상 적용이 되지 않을 때가 있어 데이터베이스를 재부팅을 해주면 연결이 완료된다.
3. 내 PC에서 RDS에 접속해 보기
1) RDS 보안 그룹 수정
내 PC에서 RDS로 접근하기 위해 RDS의 보안 그룹에 본인 PC의 IP를 추가하자.
RDS의 세부정보 페이지에서 보안 그룹 항목을 클릭한다. 보안 그룹 목록에서 EC2에 사용된 보안 그룹의 그룹 ID를 복사하고 이를 RDS 보안 그룹의 인바운드로 아래와 같이 추가한다.
보안 그룹의 첫 번째 줄에는 현재 내 PC의 IP, 두 번째 줄에는 EC2의 보안 그룹을 추가한다. 이렇게 함으로써 EC2와 RDS 간의 접근이 가능해진다.
2) Database 플러그인 설치
먼저 RDS 정보 페이지에서 접근 가능한 URL인 엔드 포인트를 확인한다.
인텔리제이에 Database Navigator 플러그인을 설치한다. 설치가 완료되었으면 인텔리제이 재시작 후 Action 검색으로 Data Broweser를 실행한다. 이렇게 하면 왼쪽 사이드바에 DB Browser가 노출된다. 초록색 + 버튼을 클릭하여 MySQL을 선택하고 본인이 생성한 RDS의 정보를 차례로 등록한다.
위와 같이 정보를 모두 입력하고 Test Connection 버튼을 클릭해 Connection Successful 메시지를 확인하고, Applay와 확인 버튼을 차례로 클릭한다. 그럼 아래 그림처럼 인텔리제이에서 RDS의 스키마를 확인할 수 있다.
상단의 Open SQL Console 버튼을 클릭하고 New SQL Console 버튼을 클릭한다. 새로운 콘솔창의 이름을 등록하고, 생성된 콘솔창에서 다음의 SQL 쿼리를 실행하자.
use AWS RDS 웹 콘솔에서 지정한 데이터베이스명;
Execute Statement를 클릭하여 쿼리문을 실행하고 executed successfully라는 메시지가 콘솔창에 떴다면 정상적으로 수행된 것이다.
데이터베이스를 선택한 상태에서 현재의 character_set, collation 설정을 확인한다.
show variables like 'c%';
이를 실행해 보면 character_set_database, collation_database를 제외하고 utf8mb4로 잘 적용되었음을 확인할 수 있다.
설정이 되지 않은 나머지 2개의 항목을 직접 변경해줘야 한다. 아래의 쿼리를 실행하자.
ALTER DATABASE 데이터베이스명
CHARACTER SET = 'utf8mb4'
COLLATE = 'utf8mb4_general_ci';
실행이 완료되었으면 다시 확인을 하여 아래와 같이 모든 항목이 잘 변경되었는지 확인한다.
타임존 또한 아래 쿼리로 확인해 보자.
select @@time_zone, now();
RDS 파라미터 그룹이 잘 적용되어 한국 시간으로 나옴을 확인할 수 있다.
마지막으로 한글명도 잘 들어가는지 간단한 테이블 생성과 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;
위의 쿼리들을 차례로 실행해서 한글 데이터도 아래와 같이 잘 등록되는지 확인하자.
4. EC2에서 RDS로 접근 확인
6장에서 진행한 대로 EC2에 ssh 접속을 진행한다. 접속되었다면 MySQL 접근 테스트를 위해 아래 코드를 실행하여 MySQL CLI를 설치하자.
sudo yum install mysql
설치가 완료되었으면 아래의 코드를 실행해 RDS 접속해 보자.
mysql -u 계정 -p -h Host주소
비밀번호까지 입력을 해주면 아래 그림처럼 EC2에서 RDS로 접속이 완료됨을 확인할 수 있다.
마지막으로 실제로 생성한 RDS가 맞는지 아래의 간단한 쿼리를 실행해 데이터베이스 목록을 확인해 보자.
show databases;
실제로 우리가 생성한 RDS임을 확인할 수 있다.
'개발 > 스프링 부트와 AWS로 혼자 구현하는 웹 서비스' 카테고리의 다른 글
[Spring Boot & AWS] Chpt 8 - EC2 서버에 프로젝트를 배포해 보자 (0) | 2023.01.30 |
---|---|
[Spring Boot & AWS] Chpt 6 - AWS 서버 환경을 만들어보자 - AWS EC2 (0) | 2023.01.24 |
[Spring Boot & AWS] Chpt 5 - 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기 (0) | 2023.01.23 |
[Spring Boot & AWS] Chpt 4 - 머스테치로 화면 구성하기 (0) | 2023.01.18 |
[Spring Boot & AWS] Chpt 3 - 스프링 부트에서 JPA로 데이터베이스 다뤄보자 (0) | 2023.01.13 |