Super Kawaii Cute Cat Kaoani 스프링 부트와 AWS로 혼자 구현하는 웹 서비스(7)

스프링 부트와 AWS로 혼자 구현하는 웹 서비스(7)

2024. 1. 22. 01:40
728x90
SMALL

📌 AWS에 데이터베이스 환경을 만들기 - AWS RDS

  • 웹 서비스 백엔드에서는 코드 작성만큼 중요한 것이 데이터베이스를 다루는 일임
  • 직접 데이터베이스를 설치하지 않고 AWS에서 제공하는 관리형 서비스인 RDS 사용
  •  RDS(Relational Database Service) : AWS에서 지원하는 클라우드 기반 관계형 데이터베이스
    •  하드웨어 프로비저닝, 데이터ㅔ이스 설정, 패치 및 백업과 같이 잦은 운영 작업을 자동화하여 개발자가 개발에 집중할 수 있게 지원하는 서비스
    •  조정 가능한 용량을 지원하여 예상치 못한 양의 데이터가 쌓여도 비용만 추가로 내면 정상적으로 서비스 사용 가능

 

 

 

⚡ RDS 인스턴스 생성하기

  • AWS 검색창에 rds 검색
  • RDS 대시보드에서 데이터베이스 생성 버튼 클릭
  • DB 엔진 선택 화면에서 MariaDB를 선택
    • RDS에는 오라클, MSSQL, PostgreSQL 등 있음(본인이 가장 잘 사용하는 데이터베이스 선택하면 됨)
      •  MySQL, MariaDB 가장 추천 !
  • MariaDB
    • 가격 합리적
      • RDS의 가격은 라이센스 비용 영향을 받음
      • 상용 데이터베이스인 오라클, MSSQL이 오픈소스인 MariaDB, PostgreSQL보다 동일한 사양 대비 가격이 더 높음
    • Amazon Aurora 교체 용이성
      • Amazon Aurora는 AWS에서 MySQL과 PostgreSQL을 클라우드 기반에 맞게 재구성한 데이터베이스임
      • AWS에서 직접 엔지니어링하고 있기 때문에 계쏙 발전하고 있음
    • MySQL의 창시자인 몬티와이드니어가 만든 프로젝트가 MariaDB 
      • MySQL을 기반으로 만들어졌기 때문에 쿼리를 비롯한 전반적인 사용법은 MySQL과 유사함
      • MySQL은 단순 쿼리 처리 성능이 좋고 이미 오래 사용되어 왔기 때문에 가장 유명함
    • MySQL보다 장점
      • 동일 하드웨어 사양으로 MySQL보다 향상된 성능
      • 좀 더 활성화된 커뮤니티
      • 다양한 기능
      • 다양한 스토리지 엔진

 

  •  프리티어 선택
  •  스토리지 설정
    • 할당된 스토리지 : 20
  • DB 인스턴스와 마스터 사용자 정보 등록
    • 본인만의 DB 인스턴스 이름과 사용자 정보 등록
    • 여기서 사용된 사용자 정보로 실제 데이터베이스에 접근하게 되니 메모!!
  • 네트워크에선 퍼블릭 액세스를 예로 변경
    • 보안그룹에서 지정된 IP만 접근하도록 막을 예정
  •  모든 설정이 끝나서 완료버튼을 클릭하면 생성과정 진행됨
  •  DB인스턴스 세부 정보 보기를 클릭하면 생성 중인 데이터 베이스의 상세 페이지로 이동함

 

 

 

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

RDS를 처음 생성할 때 필수로 설정해야 하는 것

  • 타임존
  • Character Set
  • Max Connection

✔ 왼쪽에서 파라미터 그룹 클릭
파라미터 그룹 생성 클릭

  • 세부 정보 위쪽에 DB 엔진을 선택하는 항목
  • 방금 생성한 MariaDB와 같은 버전을 맞춰야 함

✔ 그룹이름, 설명 적어주고 완료 클릭

✔ 해당 파라미터 그룹 클릭

  • 이동한 상세 페이지의 오른쪽 위에 파라미터 편집 클릭해서 편집모드 전환

 

변경

  • time_zone 검색 -> Asia/Seoul 선택
  • Character Set
    •  character 항목들은 모두 utf8mb4로
    • collation 항목들은 utf8mb4_general_ci로 변경
    •  utf8과 utf8mb4의 차이는 이모지저장 가능 여부임
  •  Max Connection 수정
    •  RDS의 Max Connection은 인스턴스 사양에 따라 자동으로 정해짐
    •  현재 프리티어 사양으로는 약 60개의 커넥션만 가능해서 넉넉한 값으로 지정(150정도)
    •  이후 RDS 사양을 높이게 된다면 기본값으로 다시 돌려놓으면 됨

 

 

파라미터 그룹 데이터베이스에 연결

  • 데이터베이스에서 선택 후 수정
  • DB 파라미터 그룹에 우리가 만든 파라미터그룹 설정
  • 제대로 반영되지 않았을 수도 있기에 작업 -> 재부팅 해줌

 

반응형

 

⚡ 내 PC에서 RDS에 접속해보기

✔ 로컬 PC에서 RDS로 접근하기 위해서 RDS의 보안 그룹에 본인 PC IP추가

  • RDS 세부정보 페이지에서 보안그룹항목 클릭
    • 새 창에서 EC2->인스턴스->보안그룹ID를 복사한 후 다시 돌아옴
    • 복사된 보안 그룹 ID와 본인의 IP를 RDS 보안 그룹의 인바운드로 추가
    • MySQL/Aurora 선택 -> 자동으로 3306포트 설정
  • 보안 그룹 첫 번째 줄 : 현재 내 PC의 IP 등록
  • 보안 그룹 두 번째 줄 : EC2의 보안 그룹을 추가
  • EC2와 RDS 간에 접근이 가능해짐
  • EC2의 경우 이후에 2대 3대가 될 수도 있는데, 매번 IP를 등록할 수는 없으니 보편적으로 이렇게 보안 그룹 간에 연동을 진행

 

 

⚡ Database 플러그인 설치

로컬에서 원격 데이터베이스로 붙을 때 GUI 클라이언트를 많이 사용

  • MySQL의 대표적인 클라이언트 : Workbench, SQLyog(유료), Sequel Pro(맥 전용), DataGrip(유료) 등
  • 큰 차이는 없으니 본인이 가장 좋아하는 틀 사용
  • 우리는 IntelliJ에 Database 플러그인 설치해서 진행(인텔리제이의 공식 플러그인은 아님)

✔ RDS 정보 페이지에서 엔드포인트확인

  • 엔드포인트가 접근 가능한 URL이므로 메모장 같은 곳에 복사해둠

🔶 IntelliJ에서 database 플러그인 검색

  • Database Helper -> install (원래 Navigator이었는데 이름이 바꼈나보당..)
  • intellij 재시작

🔶 Action 검색으로 Database Browser 실행

  • Action 검색(맥 : Command + shift + a)

🔶 DBBrowser 클릭 후 '+' 버튼 눌러서 MySQL로 들어감

  • User/Password에 마스터 계정명과 비밀번호 등록
  • Host에 복사해둔 RDS의 엔드포인트 등록

🔶 Test Connection 누르면 Success 메시지가 보일 것

  • [ Apply -> OK ] 누르고 최종 저장!
  • 인텔리제이에 RDS의 스키마 노출됨

🔶 [ Open SQL Console ] 버튼 클릭 -> [ New SQL Console... ] 항목 선택

  • 새로 생성될 콘솔창의 이름 정함

🔶 쿼리가 수행될 database 선택

  • 만약 본인이 RDS 생성 시 지정한 database명을 잊었다면 Schema항목을 보면 MySQL에서 기본으로 생성하는 스키마 외에 다른 스키마가 1개 추가되었으니 확인하면 됨
use springboot_webservice
  • 쿼리 문을 드래그하고 Execute Statement 버튼을 클릭
  • SQL statement executed successfully 메시지가 떴다면 성공

 

🔶 현재의 character_set, collation 설정을 확인

show variables like 'c%';
  • 다른 필드들은 모두 utf8mb4가 잘 적용됐는데 character_set_database, collation_connection 2가지만 latin1로 되어있음
ALTER DATABASE 데이터베이스명
CHARACTER SET = 'utf8mb4'
COLLATE = 'utf8mb4_general_ci';
  • 입력 후 다시
show variables like 'c%';
  • 확인하면 모두 변경된 것을 볼 수 있음
select @@time_zone, now();
  • Asia/Seoul로 잘 적용된 것을 확인 가능

 

 

🔶 한글명이 잘 들어가는지 간단한 테이블 생성과 insert쿼리 실행

CREATE TABLE test(
    id bigint(20) NOT NULL AUTO_INCREMENT,
    content varchar(255) DEFAULT NULL,
    PRIMARY KEY (id)
) ENGINE=InnoDB;

insert into test(connect) values ('테스트');

select * from test;

 

 

 

⚡ EC2에서 RDS에서 접근 확인

✔ 맥에선 ssh 서비스명으로 접속

sudo yum install mysql

설치 진행하라고 교재에 나와있는데 난 설치가 안됐다ㅜ

-> Amazon Linux 2023은 EL9 버전의 레파지토리와 mysql-community-sever를 설치해야한다고 한다..

 

sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
sudo dnf install mysql-community-server

✔ 설치가 다 되었으면 로컬에서 접근하듯 계정, 비밀번호, 호스트주소를 사용해 RDS에 접속

 

mysql -u 계정 -p -h Host 주소

-> 패스워드 입력 -> 접속 확인

 

show databases;

-> 데이터베이스 목록이 뜨면 성공

 

 

 

스프링 부트와 AWS로 혼자 구현하는 웹 서비스_이동욱 지음 책을 읽고 정리하는 글입니다

 

 

 

 


PREV

 

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

📌 AWS 서버 환경 - AWS EC2 ⚡ AWS란? ✔ AWS : Amazon Web Service 이번 장에서는 AWS 클라우드 서비스를 이용해 서버 배포를 할 것임 외부에서 본인이 만든 서비스에 접근하려면 24시간 작동하는 서버가 필

nyeroni.tistory.com

NEXT

 

스프링 부트와 AWS로 혼자 구현하는 웹 서비스(8)

📌 EC2서버에 프로젝트를 배포해보자 ⚡ EC2에 프로젝트 Clone 받기 ✔ 깃허브에서 코드를 받아올 수 있게 EC2에 깃 설치! sudo yum install git ✔ 설치가 되면 버전 확인 git --version ✔ 설치가 되면 git clon

nyeroni.tistory.com

 

728x90
LIST

BELATED ARTICLES

more