06 CHAPTER 06 · 핵심 서비스

Amazon RDS

관리형 데이터베이스 — 패치·백업·장애복구를 AWS에 맡기기

핵심 서비스 ⚠ 과금 위험 높음 Spring Boot 기준

RDS · Aurora · Aurora Serverless · RDS Proxy · Secrets Manager · 파라미터 그룹

CHAPTER INFO
🗃과금 위험 가장 높은 챕터
💰중지 후 7일이면 자동 재시작
⚠️스냅샷·자동 백업도 별도 과금
🔗이전: CH05 Amazon S3
🔗다음: CH07 Route 53 · CloudFront

RDS란 — EC2에 직접 설치와 무엇이 다른가

EC2에 MySQL을 직접 설치해도 DB는 돌아갑니다. 그런데 패치, 백업, 장애 복구, 모니터링을 전부 직접 해야 합니다. RDS는 이걸 AWS가 대신해줍니다.

구분EC2 직접 설치RDS
OS 패치직접AWS 자동
DB 엔진 업그레이드직접AWS 관리 (설정 가능)
백업직접 구성자동 백업 (1~35일 보존)
다중 AZ 장애 복구직접 구성 복잡Multi-AZ 옵션 클릭 한 번
스토리지 자동 확장없음Storage Auto Scaling
비용EC2 요금만인스턴스 + 스토리지 + 백업

RDS 비용 구조 — 함정 미리 알기

🚨
RDS는 중지해도 안전하지 않습니다
RDS 인스턴스를 중지(Stop)하면 최대 7일 후 자동으로 다시 시작됩니다. AWS 정책입니다. 완전히 멈추려면 삭제(Delete)만이 답입니다. 학습 후 삭제 필수.
과금 항목예시주의
인스턴스 요금db.t4g.micro: 시간당 $0.018켜진 시간만큼
스토리지gp2 $0.115/GB·월삭제 전까지
백업 스토리지DB 크기 초과분 $0.095/GB·월자동 백업 보존 기간 동안
Multi-AZ인스턴스 요금 2배스탠바이 인스턴스 별도 과금
스냅샷$0.095/GB·월수동 스냅샷은 삭제 시까지

Aurora — 고성능 관리형 DB

Aurora는 AWS가 직접 만든 DB 엔진으로, MySQL과 PostgreSQL 호환입니다. 스토리지와 컴퓨팅이 분리돼 있어서 구조가 일반 RDS와 다릅니다.

🏗 Aurora 구조 — 클러스터와 인스턴스 분리
Aurora 클러스터
🖊 라이터 인스턴스
읽기·쓰기 모두 가능
📖 리더 인스턴스
읽기 전용 · 여러 개 가능
공유 스토리지 클러스터
3개 AZ × 2벌 = 6벌 복제 · 자동 복구

Aurora Serverless — 학습에 더 안전한 선택

Aurora Serverless v2는 최소 용량을 0 ACU로 설정하면 5분간 활동이 없을 때 자동으로 일시 중지돼 컴퓨팅 요금이 0이 됩니다. 기존 RDS처럼 켜둔 시간만큼 계속 과금되는 구조가 아닙니다.

💡
학습 목적이라면 Aurora Serverless를 추천합니다
일반 RDS는 학습 중 잊어버리면 계속 과금됩니다. Aurora Serverless는 비활성화되면 컴퓨팅이 자동으로 0이 됩니다. 단, 스토리지 요금은 계속 나오니 삭제는 여전히 필요합니다.

RDS Proxy — 커넥션 풀 문제 해결

Lambda나 Auto Scaling 환경에서는 동시에 수백 개의 DB 커넥션이 맺어질 수 있습니다. DB는 커넥션 수에 한계가 있어서 too many connections 오류가 납니다.

RDS Proxy는 애플리케이션과 DB 사이에서 커넥션 풀을 관리합니다. 애플리케이션은 Proxy에 연결하고, Proxy가 DB 커넥션을 효율적으로 재사용합니다.

🏨
파르나스 HikariCP 커넥션 풀 exhaustion과 연결
Parnas Rewards, TMS API에서 겪으셨던 HikariCP 커넥션 풀 소진 문제는 DB 커넥션 관리 문제입니다. RDS Proxy를 붙이면 애플리케이션 레벨의 HikariCP 설정 없이도 커넥션을 효율적으로 관리할 수 있습니다. 물론 HikariCP maxPoolSize와 DB의 max_connections 설정을 맞추는 것도 병행해야 합니다.

RDS 생성 · Spring Boot 연결

생성 즉시 과금 시작 · 알람 설정 필수
실습 시작 전 휴대폰 알람을 30분으로 맞추세요. RDS는 생성에 5~10분 걸리고, 그 사이 다른 걸 하다 잊어버립니다. 하룻밤 방치하면 $5 이상 나옵니다.

생성 시 반드시 확인할 옵션

설정선택값이유
템플릿프리 티어 (없으면 개발/테스트)최소 사양 보장
인스턴스 클래스db.t4g.micro 또는 db.t3.micro가장 저렴
Multi-AZ❌ 아니요2배 과금 방지
스토리지 자동 조정❌ 비활성화용량 자동 증가 = 비용 증가
퍼블릭 액세스❌ 아니요보안 · VPC 내부에서만 접속
백업 보존 기간0일 (학습용)백업 스토리지 과금 방지

Spring Boot 연결 설정

⚙️ application.yml — RDS 연결
spring:
  datasource:
    url: jdbc:mysql://${DB_HOST}:3306/${DB_NAME}?serverTimezone=Asia/Seoul
    username: ${DB_USER}
    password: ${DB_PASS}  # 환경변수로 주입, 절대 하드코딩 금지
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: validate

# HikariCP 설정 — DB max_connections와 맞추기
  hikari:
    maximum-pool-size: 10
    connection-timeout: 30000
    idle-timeout: 600000

⚠️ 삭제 체크리스트

🗑
순서대로 삭제하세요
  1. DB 인스턴스 삭제 (Aurora는 인스턴스 먼저, 그다음 클러스터)
  2. 삭제 시 "최종 스냅샷 생성" 체크 해제
  3. "자동 백업 보존" 체크 해제
  4. RDS 콘솔 → 스냅샷 → 수동/자동 탭 모두 확인 후 삭제
📌 CH06 핵심 개념 요약
RDS 장점패치·백업·장애복구 자동화. 운영 부담 감소
중지 ≠ 안전중지 후 7일이면 자동 재시작. 완전 종료는 삭제만
Aurora Serverless비활성 시 컴퓨팅 0. 학습에 더 안전한 선택지
RDS Proxy커넥션 풀 관리. Lambda·ASG 환경에서 too many connections 해결
스냅샷 주의삭제 시 스냅샷 생성 옵션 반드시 해제. 스냅샷도 별도 과금