본문 바로가기
Infra/AWS

[Infra] AWS를 활용한 웹 애플리케이션 배포(2) - RDS를 통해 클라우드 환경에 MySQL 구축

by Blue Developer 2024. 1. 6.

안녕하세요.

 

지난 포스트에서는 웹 애플리케이션 배포를 위해 EC2 인스턴스를 생성하고, 생성한 인스턴스에 연결해보는 내용을 다뤘습니다. EC2를 통해 깃허브 레포지토리에 저장된 소스코드를 클론해서 받아올 수는 있지만, 서버를 실행시키려면 로컬 환경과 마찬가지로 DB가 설치돼있어야만 합니다.

 

따라서 오늘은 Amazon RDS를 통해 클라우드 환경에서 DB를 설치하는 내용을 포스팅하려고 합니다. 현재 회사에서는 오라클을 사용하고 있지만, RDS Free Tier가 제공하는 혜택을 받기 위해 MySQL을 채택했습니다. EC2 인스턴스를 생성하고 연결하는 과정이 궁금하신 분들은 아래 링크를 타고 이동해주세요.

 

 

[Infra] AWS를 활용한 웹 애플리케이션 배포(1) - EC2 인스턴스 생성 및 접속

안녕하세요. 프로젝트를 진행하게 되면 기능 개발이 어느정도 완료된 시점에 소스코드를 배포해서 팀원들과 함께 테스트를 진행하는 등 협업이 필요한 경우가 발생합니다. 저는 조사한 여러 클

hareandrabbit.tistory.com

 

1. 데이터베이스 생성

 

(1) AWS 콘솔 홈에서 검색창을 열고 'RDS'를 입력해서 RDS 서비스로 이동합니다.

 

(2) Amazon RDS에서 '데이터베이스 생성'을 클릭합니다.

 

(3) 사용 환경에 맞는 엔진 옵션을 선택합니다. 저는 프리티어 템플릿이 제공되는 MySQL을 선택했습니다.

 

(4) 환경에 맞는 엔진 버전과 템플릿을 선택합니다. 프리 티어는 템플릿은 MySQL, MariaDB, PostgreSQL만 적용됩니다.

 

(5) DB 인스턴스 식별자와 자격 증명 설정을 입력합니다. 추후에 입력한 정보로 DB를 접근하므로 메모해주도록 합니다.

 

(6) 기존 Free Tier에서는 'db.t2.micro'만 지원했지만, 'db.t3.micro', ' db.t4g.micro' 또한 지원하도록 변경됐으므로 원하는 구성에 맞게 선택합니다.

 

(7) 과금 방지를 위해서 '스토리지 자동 조정 활성화' 또한 해제합니다.

 

(8) 외부로부터 접속이 가능하도록 퍼블릭 액세스를 '예'로 변경하고, 보안 그룹을 새로 생성해서 관리 편의성 향상을 위해 정책을 분리합니다.

 

(9) 자동 백업은 특정 시점에 스냅샷을 생성해서 저장하는데, 20GB 이상 넘어가면 과금이 발생한다. 미연에 발생하는 과금을 방지하기 위해서 자동 백업을 비활성화합니다.

 

(10) DB 버전이 바뀌는 것을 막기 위해 '마이너 버전 업그레이드 사용'을 해제하고, 실수로 DB가 삭제되는 것을 막기 위해 삭제 방지를 활성화합니다.

 

(11) 최종적으로 내용을 확인하고 데이터베이스 생성을 클릭합니다.

 

🚩 Check Point

RDS 생성 과정에서 보안 그룹 및 기본 파라미터 그룹을 제공하고 있기는 하지만, 별도로 보안 그룹을 생성하고 파라미터 그룹을 생성해서 적용하는 방법이 리소스 관리 측면에서 더 편리합니다. 내용이 핵심을 벗어난다고 생각해서 추가하지 않았습니다.

 

2. MySQL-Client 설치 및 접속 테스트

 

(1) EC2 인스턴스에 연결해서 MySQL을 설치합니다.

🖥️ sudo apt install mysql-client

 

(2) RDS에서 생성한 DB의 마스터 계정으로 접속 후 사용자 계정을 생성합니다.

🖥️ mysql - h [엔드포인트] -u [계정] -p

🖥️ create user 'username'@'%' identified by 'password'

 

(3) RDS에서는 전체 권한을 부여하는 'GRANT ALL' 사용이 불가능하기 때문에 모든 권한을 하나씩 입력해서 부여합니다.

mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'username'@'%' WITH GRANT OPTION;

 

(4) MySQL Workbench에 접속해서 생성한 DB가 접속되는지 확인 후 접속합니다.

 

(5) DB가 정상적으로 동작하는지 테스트해보기 위해 DB를 생성하고, 데이터를 삽입 후 조회합니다.

CREATE TABLE [테이블명] (
	id 		INTEGER NOT NULL AUTO_INCREMENT,
	content varchar(255) DEFAULT NULL,
	PRIMARY KEY(id)
);

INSERT INTO [테이블명](content) VALUES ("테스트 내용");

SELECT * FROM [테이블명];

 

요약

 

오늘은 Amazon RDS를 통해 설치할 DB에 적합한 인스턴스와 구성 정보를 설정하고 EC2와 연결하는 내용까지 다뤄봤습니다. 이어서 다음 포스트에서는 Amazon ElasctiCache를 통해 Redis를 생성하고 EC2와 연결하는 내용을 다뤄보겠습니다. 빨리 배포해보고 싶으시겠지만, 조금만 참고 기다려주세요...😭

 

포스팅한 내용이 도움이 되었다면 공감 부탁드립니다 :)

 

감사합니다.

댓글