웹 서비스의 백엔드를 다룬다고 했을 때 애플리케이션의 코드를 작성하는 것만큼 중요한 것이 데이터베이스를 다루는 일이다.
규모있는 회사에서는 DB를 전문적으로 처리하는 DBA라는 직군이있다.
그러나 이것이 백엔드개발자가 DB를 몰라도 된다는 것을 의미하지는 않음.
이번에는 EC2 서버와 연동을 해보자. 그러나 직접 DB를 설치하진 않음.
직접 DB를 설치해서 다루게 되면 모니터링, 알람 백업, HA구성등을 모두 직접 해야한다. 이는 처음에 며칠씩 걸릴 수 있는일.
AWS에서는 앞에서 언급한 작업을 모두 지원하는 관리형 서비스인 RDS(Relational Database Service)를 제공.
RDS는 AWS에서 지원하는 클라우드 기반 관계형 DB.
운영 작업을 자동화하여 개발자가 개발에 집중할 수 있게 지원하는 서비스.
추가로 조정 가능한 용량을 지원하여 예상치 못한 양의 데이터가 쌓여도 비용만 추가로 내면 정상적으로 서비스 가능한 장점.
7.1 RDS 인스턴스 생성하기
아마존 홈페이지 검색창에 RDS 검색
DB엔진 서택화면에서 Maria DB 선택 여러 DB가 있어서 본인이 가장 잘 사용하는 DB를 고르면된다.
상용 DB -> 오라클, MSSQL
오픈소스-> MySql, MariaDB, PostgreSQL
상용 DB는 오픈소스 보다 동일한 사양 대비 더 가격이 높다. 프리티어 기간인 1년이 지나면 비용을 지불하면서 RDS를 써야 한다. 비용문제 생각해야함
Amazon Aurora 교체 용이성
Amazon Aurora -> AWS에서 MySql과 postgreSql을 클라우드 기반에 맞게 재구성한 DB. AWS에서 직접 엔지니어링 하고 있기 때문에 계속해서 발전 중임. 그러나 프리티어 대상이아니라 최저 비용이 월 10만원 이상이라 부담스러움. 따라서 MariaDB로 시작하자.
7.2 RDS 운영환경에 맞는 파라미터 설정하기
RDS 처음 생성하면 몇가지 설정을 필수로 해야함. 우선 다음 3개의 설정을 차례대로 진행해 보자
- 타임존
- Character Set
- Max Connection
파라미터 그룹생성, 파라미터 편집 클릭
time_zone -> Asia/Seoul 로 바꾸기
character Set 설정 변경하기
- character 항목들은 utf8mb4로, collation 항목들은 utf8mb4_general_ci로 변경한다.
- utf8과 utf8mb4의 차이 : 이모지 저장 가능 여부
- utf8 : 이모지를 저장할 수 O
- utf8mb4 : 이모지를 저장할 수 X
- character_set_client
- character_set_connection
- character_set_database
- character_set_filesystem
- character_set_results
- character_set_server
- collation_connection
- collation_server
- default_collation_for_utf8mb4
RDS 의 Max Connection은 인스턴스 사양에 따라 자동으로 정해진다. 좀더 넉넉하게 150으로 잡자.
수정을 눌러 파라미터 그룹을 변경해주고 재부팅해준다.
7.3 내 PC에서 RDS 접속해보기
로컬 PC에서 RDS로 접근하기 위해서 RDS의 보안 그룹에 본인 PC의 IP를 추가
RDS 세부정보 페이지에서 보안그룹 항목 클릭
인바운드 규칙 유형에서 MYSQL/Aurora 선택하면 자동으로 3306포트가 선택됨.
- 보안 그룹 첫 번째 줄: 현재 내 pc의 IP를 등록
- 보안 그룹 두 번째 줄: EC2의 보안 그룹을 추가.
- 이렇게 하면 EC2와 RDS간에 접근이 가능.
- EC2의 경우 이후에 2대 3대가될 수도 있는데 매번 IP를 등록할 수는 없으니 보편적으로 이렇게 보안 그룹간의 연동을 진행.
RDS와 개인 PC, EC2간의 연동설정완료 이제 테스트 해보자.
DB 플러그인 설치
로컬에서 원격 DB로 붙을때 GUI 클라이언트를 많이 사용한다.MySql의 대표적인 클ㄹ라이언트로 Workbench, SQLyog(유료)등이 있다.
각각의 도구마다 큰 차이가 없으니 본인이 가장 좋아하는 틀을 사용하면 됨. 이책에서는 인텔리제이에 Database 플러그인을 설치해서 진행하겠다.
RDS 정보페이지에서 엔드포인트를 확인. 이 엔드포인트가 접근 가능한 URL이므로 메모장같은곳에 복사해두자.
인텔리제이로 이동해서 database navigator 플러그인 설치
설치 다되면 인텔리제이 재시작한 뒤 Action 검색으로 Databaes Browser
오류 해결...
원인이라 예상되는
1. 가용범위설정
2. db이름 지정하지 않아서 생성 x
show variables like 'c%';
현재의 character_set, collation 설정 확인
ALTER database 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;
한글 테스트
EC2에서 RDS에서 접근 확인
putty 접속 후
sudo yum install mysql
mysql 설치 (명령어 라인 쓰기위해서)
mysql -u 계정 -p -h Host주소
명령어로 진행. 패스워드까지 입려갛면 EC2에서 RDS로 접속되는 것 확인.
이번 장에서 배운것.
- AWS의 관리형 DB서비스인 RDS에 대한 소개와 생성 방법
- RDS로 서비스를 하는데 필요한 여러 파라미터 설정들
- 인텔리제이 커뮤니티 버전으로 DB를 다루는 방법
- EC2와 RDS간 연동방법
'Spring > 스프링부트와 AWS로 혼자구현하는 웹 서비스' 카테고리의 다른 글
섹션9. 코드가 푸시되면 자동으로 배포해 보자 - Travis CI 배포 자동화 (0) | 2023.02.12 |
---|---|
섹션8. EC2 서버에 프로젝트를 배포해 보자. (0) | 2023.02.06 |
섹션 6. AWS 서버 환경을 만들어보자 - AWS EC2 (0) | 2023.01.30 |
5장. 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기 (0) | 2023.01.29 |
4장. 머스테치로 화면 구성하기 (0) | 2023.01.25 |