이지은님의 블로그
250324 - AWS 사용하기(RDS): Storage Auto Scaling, Read Replicas, Multi AZ, RDS와 EC2 연결 및 접속 실습 본문
250324 - AWS 사용하기(RDS): Storage Auto Scaling, Read Replicas, Multi AZ, RDS와 EC2 연결 및 접속 실습
queenriwon3 2025. 3. 24. 12:28▷ 오늘 배운 것
AWS설정을 하면서 배운 내용을 정리하고자한다.
AWS관련 내용은 3개의 블로그 포스팅을 하고자하는데, (1) AWS와 EC2 개념, (2) RDS의 개념을 정리하고 EC2와 Spring 프로젝트를 연결하는 방법(프로젝트), (3) S3에 이미지저장하기 로 포스팅을 할 계획이다.
AWS 사용하기(1) (EC2): https://queenriwon3.tistory.com/139
250320 - AWS 사용하기(EC2): EC2 인스턴스 생성, 탄력적 IP(Elastic IP), 추가터미널에서 SSH 클라이언트로
▷ 오늘 배운 것AWS설정을 하면서 배운 내용을 정리하고자한다. AWS관련 내용은 3개의 블로그 포스팅을 하고자하는데, (1) AWS와 EC2 개념, (2) RDS의 개념을 정리하고 EC2와 Spring 프로젝트를 연결하
queenriwon3.tistory.com
<<목차>>
1. RDS
1) RDS(Relational Database Service)
2) Storage Auto Scaling
3) Read Replicas
4) Multi AZ
2. RDS 생성
1) RDS 생성
2) 파라미터 그룹 설정
3) 생성한 RDS 확인
4) 인텔리제이에서 RDS 연결
3. RDS 연결 후 EC2 연결하기
1) SSH 클라이언트로 접속하기
2) 빌드한 파일 옮기기(.jar를 옮기는 방법)
3) 프로젝트 실행
4) 연결 확인
1. RDS
1) RDS(Relational Database Service)
RDS는 관리형 데이터베이스 서비스로, 개발자가 서버 걱정없이 데이터베이스를 사용할 수 있도록 하는 서비스이다.
Amazon RDS 서비스를 통해 데이터베이스 엔진(MySQL, PostgreSQL, Oracle 등…)을 선택하고 필요한 크기 및 용량을 선택하여 인프라를 자동으로 프로비저닝(서버를 자동으로 준비하고 설정)가능하다.
따라서 EC2 인스턴스 내에 직접 데이터베이스를 설치하고 구성하는 대신 RDS 서비스를 사용하여 데이터베이스를 생성, 관리 및 확장할 수 있다.
RDS 특징
- RDS는 DB를 위한 인프라를 자동으로 구축 및 업데이트
- 지속적인 백업과 복구 기능 지원
- 모니터 대시보드 지원
- 성능향상을 위한 read replicas(읽기전용으로 부하를 줄일 수 있음)지원
- Disaster Recovery를 위한 multi AZ(여러 데이터센터) 👉 고가용성
- 지원수평/수직 확장성 지원
1️⃣ 수평 확장 (Scale-out): 서버를 여러 대 늘림, 데이터베이스 복제
2️⃣ 수직 확장 (Scale-up): 기존 서버를 업그레이드, 서버의 성능을 높임 - EBS(저장 장치) 백업 지원
- VPC안에서 동작하며, SSH등 외부에서 접속 불가능.(DBeaver, Workbench 등으로 접속 가능)
2) Storage Auto Scaling
RDS는 Storage Auto Scaling(자동 스케일링)을 지원한다.
RDS 스토리지 Auto Scaling은 실제 스토리지 사용량을 지속적으로 모니터링하고, 실제 사용률이 프로비저닝된 스토리지 용량에 근접하면(스토리지의 여유 용량이 10% 이하 상태가 5분 이상 지속될 경우) 용량을 자동으로 확장하는 기능이다.
사용을 위해 Maximum Storage Threshold를 지정이 필요하다.
3) Read Replicas

데이터베이스 Replication 이란,
RDS Primary(마스터 DB)를 복제해서 DB 쓰기는 RDS Primary에서 처리하고, DB 읽기는 복제한 복제본(read replica, tmffpdlqm DB)에서 처리하는 구조이다. 👉 부하분산과 성능개선
각각의 복제본 인스턴스에 DNS가 각각 부여되서 접근이 가능하다.
4) Multi AZ

Multi-AZ란, 두 개 이상의 AZ(가용 영역)에 걸쳐 데이터베이스를 구성하는 방식이다.
원본 DB(Primary)와 동일한 데이터를 가지는 Standby DB(복제본)를 자동으로 생성하여 지속적으로 동기화(sync)한다. -> 재해 복구 지원
Primary DB에 장애가 발생하면, AWS는 자동으로 Standby DB(백업용)를 Primary로 승격시키고, 기존 Primary와 연결된 DNS 주소를 새로운 Primary로 연결한다.(Standby는 평소 접속 불가하나 장애 발생시만 활성화)
2. RDS 생성 (실습)
1) RDS 생성
1️⃣ 데이터 베이스 엔진 및 버전 선택
RDS에서는 Amazon Aurora, PostgreSQL, MySQL, MariaDB, Oracle, MS SQLServer 총 6개의 데이터베이스 엔진 중에서 원하는 DBMS를 선택할 수 있다.

그 중 가장 많이 사용되는 MySQL을 선택하고, 엔진 버전을 8.0.40을 선택했다.
2️⃣ 템플릿 선택

무료로 이용하기 위해 프리티어를 선택한다. 프리티어를 선택하면 인스턴스1개만 선택할 수 있다.
3️⃣ 설정

생성한 RDS이름과 데이터베이스 연결에 필요한 username, password를 입력한다.(나중에 사용하니 기억할 것)
4️⃣ 인스턴스 구성 및 성능 선택

비용문제때문에 제일 저렴한 t3.micro를 선택했다.
5️⃣ EC2 연결을 할 것이라면 인스턴스 선택(추후 설정에서 수정가능)

생성한 EC2 인스턴스, VPC, 서브넷 등이 있다면 설정
6️⃣ 연결 - 추가 구성에서 DB와 연결할 포트 입력

Mysql을 사용할 것이기 때문에 3306연결
7️⃣ 백업 선택 및 보존기간 선택 가능

2) 파라미터 그룹 설정
우회하여 RDS 설정을 조절하기 위해 파라미터 그룹을 설정한다.

작성한 파라미터 그룹에서 편집을 누르고
character 검색시에 보이는 파라미터 값을 uft8mb4
time_zone의 파라미터 값을 Asia/Seoul로 설정
3) 생성한 RDS 확인
1️⃣ 생성한 RDS 정보
과제할때 만들었던 expert-rds 정보이다.(참고할것)





2️⃣ 적용한 보안그룹 정보

3️⃣ 인스턴스 수정시에는 즉시 적용을 누를 것

4) 인텔리제이에서 RDS 연결

연결 후 application-aws.yml 파일 수정
spring:
config:
activate:
on-profile: "prod-database"
application:
name: expert
datasource:
url: jdbc:mysql://${RDS_HOST}:3306/expert
username: ${RDS_USERNAME}
password: ${RDS_PASSWORD}
driver-class-name: com.mysql.cj.jdbc.Driver
스키마까지 생성해야 EC2까지 연결할 수 있다.
3. RDS 연결 후 EC2 연결하기
https://bcp0109.tistory.com/356
AWS 1편: EC2 생성 후 Spring Boot 띄우기
Overview AWS EC2 인스턴스를 생성하고 Spring Boot 서버를 띄워보는 것까지 진행합니다. 주 목표는 서버를 외부에 제공하는 거라서 따로 배포 시스템을 구축하지 않고 단순히 빌드 파일을 복사해서 수
bcp0109.tistory.com
1) SSH 클라이언트로 접속하기

키페어 파일이 저장된 위치에서 다음과 같은 명령어를 작성하면 로컬 터미널에서 EC2 접속이 가능하다.
chmod 400 expert-keypair.pem
ssh -i "expert-keypair.pem" ec2-13-125-252-93.ap-northeast-2.compute.amazonaws.com

다음과 같은 명령어를 작성해서 Spring 프로젝트를 연결할 기초작업을 한다.
sudo apt-get update
sudo apt-get install openjdk-17-jdk
2) 빌드한 파일 옮기기(.jar를 옮기는 방법)
프로젝트 파일을 업로드하는 방법은 두가지가 있다.
1️⃣ git clone [깃허브 주소]를 이용하여 프로젝트 통째로 옮기기(프롬프트상에서 클린 및 빌드를 해야함)
2️⃣ 빌드를 한 후 .jar 파일을 옮기기
깃허브에서 프로젝트를 통째로 옮기는 것은 Spring 파일이 무겁기 때문에 빌드 및 연결을 하는 과정에서 어려움이 있고 CPU 사용량이 100%가 되는 경우가 발생한다. 따라서 간단히 .jar 파일만 옮기도록 2번을 진행할 것이다.
우선 인텔리제이 화면에서 clean 및 build를 하면,

빌드 파일인 .jar 파일이 생성된다.
그럼 FileJillar 프로그램을 설치하고 실행시킨다.
왼쪽 위의 버튼을 누르면 다음과 같은 EC2 서버를 연결할 수 있는 창이 뜨는데, 퍼블릭 IPv4주소, 사용자, 키파일을 입력하고 연결한다.


그럼 왼쪽은 내 로컬환경, 오른쪽은 연결한 EC2환경을 확인 할 수 있다.
왼쪽경로에서 내 Spring 프로젝트를 찾아 build>libs경로에서 SNAPSHOT.jar 파일을 오른쪽으로 옮긴다.

그러면 다음과 같이 ls 를 했을 때 .jar 파일이 전송된다.
만약 적용할 환경변수 값이 있으면 .jar을 실행하기 전 다음과 같은 방법을 사용해서 환경변수를 export한다.
https://cordcat.tistory.com/118
Spring에서 profile로 환경별 설정 적용(yml 파일)
profile로 환경별 설정 적용 yml 파일에 profile로 local, dev 환경별 설정을 따로 적용해보자. applicatio.yml #... server: port: 5000 servlet: context-path: / encoding: charset: UTF-8 enabled: true force: true spring: profiles: # profil
vividswan.tistory.com
(여러 환경에 대해 작성했을 때)
3) 프로젝트 실행
이후 마지막으로 .jar 파일에 대한 권한 수정을 하고 포그라운드 또는 백그라운드 방법 중 1택하여 프로젝트를 실행시킨다.
(expert-0.0.1-SNAPSHOT.jar는 각자의 .jar파일이름으로 작성할것)
sudo chmod 777 expert-0.0.1-SNAPSHOT.jar
// (백그라운드 방법)
sudo nohup java -jar expert-0.0.1-SNAPSHOT.jar &
// (로그 확인)
sudo cat nohup.out
// (포그라운드 방법)
sudo java -jar expert-0.0.1-SNAPSHOT.jar
포그라운드 방법으로 했을 때 다음과 같이 연결된 화면을 확인 할 수 있다.

그러나 만약 코드의 수정이 발생했을 때는 프로젝트의 업데이트 코드를 반영해야하기 때문에 빌드부터 다시 해서 새 .jar 파일을 실행시켜야한다.
4) 연결 확인
1️⃣ postman에서 응답 확인
퍼블릭 IPv4:8080/url 을 작성하여 연결을 확인할 수 있다.

2️⃣ 퍼블릭 IPv4:8080를 해서 웹 사이트 상에서 출력을 확인
Spring Security 적용때문에 403에러가 발생하는 것을 확인했다.

3️⃣ Health Check API로 연결 확인
다음과 같이 의존성을 추가하고
implementation 'org.springframework.boot:spring-boot-starter-actuator'
SecurityConfig에서 특정 경로 설정 허용을 설정하면(/actuator/health 경로의 모든 접근 허용)
.requestMatchers("/actuator/health").permitAll()
웹 url을 작성하여 다음과 같은 화면이 출력되는 것을 확인 할 수 있다.

▷ 참고한 블로그
https://aws.amazon.com/ko/about-aws/whats-new/2019/06/rds-storage-auto-scaling/
Amazon RDS, 이제 스토리지 Auto Scaling 지원
이전에는 예상되는 애플리케이션 수요를 기반으로 스토리지 용량을 수동으로 프로비저닝해야 했습니다. 언더프로비저닝은 애플리케이션 가동 중단을 초래할 수 있고 오버프로비저닝은 낮은
aws.amazon.com
[AWS] 📚 RDS 실전 구축하기 [Multi AZ / Read Replica]
RDS 실전 사용 세팅하기 이번 강의에서는 전반적인 RDS 생성 및 사용 방법과, 멀티 AZ와 Read Replica를 지원하는 RDS를 만들어보고, 만일 Primary를 강제로 내리면 Stanby가 fail over 되는 동작을 실전으로
inpa.tistory.com
[AWS] 📚 RDS 개념 & 아키텍쳐 정리 [이론편]
RDS (Relational Database Service) 란? AWS RDS란 관계형 데이터베이스를 간편하게 클라우드에서 설정, 운영, 확장이 가능하도록 지원하는 웹 서비스이다. RDS는 MySQL이나 오라클 같은 데이터베이스의 설치,
inpa.tistory.com
[AWS] RDS 설정하고 연결 하기 + Spring Project(Feat. MySQL, Intellij)
RDS란?AWS가 제공하는 관계형 데이터베이스 서비스 이다.Relational Database Service의 약자이다.프리 티어 계정을 사용할 지 매월 750시간 무료로 사용 할 수 있다고 한다.RDS SettingRDS 인스턴스 생성AWS 콘
jk25.tistory.com