[AWS] RDS란 무엇인가?

문준일·2025년 3월 21일
post-thumbnail

1. Amazon RDS란?

Amazon RDS (Relational Database Service)는 AWS에서 제공하는 관리형 관계형 데이터베이스 서비스로, MySQL, PostgreSQL, Oracle, SQL Server, MariaDB, Amazon Aurora 등 다양한 엔진을 지원합니다.

개발자가 직접 DB 서버를 설치하고 관리하는 대신, RDS는 이러한 작업을 AWS에서 대신 처리해줍니다. 이를 통해 인프라 운영 부담을 줄이고 애플리케이션 개발에 집중할 수 있습니다.

🔸 주요 특징

  • 인프라 관리 자동화 (설치, 패치, 백업 등)
  • 고가용성 및 확장성 제공
  • 모니터링 및 장애 대응 기능 포함
  • 다양한 DB 엔진 지원

💡 MongoDB와 같은 NoSQL은 Amazon DynamoDB를 쓰도록 하자


2. RDS를 사용하는 이유

RDS는 단순히 "클라우드에 있는 데이터베이스" 그 이상입니다. 운영자가 해야 할 반복적인 작업을 대신해주고, 장애 복구나 보안도 AWS 수준으로 제공되기 때문에, 실제 서비스 운영에 매우 적합합니다.

항목설명
💾 관리 자동화백업, 패치, 모니터링을 자동화하여 운영 부담 감소
🌐 고가용성멀티 AZ 배포, 자동 장애 조치 기능으로 안정성 확보
⚙️ 확장성스토리지 및 인스턴스 수직/수평 확장 가능
🔐 보안VPC, IAM, KMS, SSL 등 다양한 보안 옵션 지원

Spring 기반 백엔드 서버를 운영할 때, 로컬 DB가 아닌 RDS를 활용하면 운영/배포 환경에서의 안정성 확보 및 관리 효율성이 크게 향상됩니다.


3. RDS 구성 요소 및 용어 정리

RDS는 다양한 구성 요소로 이루어져 있으며, 각각의 요소들이 역할을 분담하여 유연한 데이터베이스 운영을 가능하게 합니다. 각 구성 요소를 잘 이해하고 있으면 문제 해결이나 최적화에 큰 도움이 됩니다.

구성 요소설명
DB InstanceRDS에서 생성된 DB 인스턴스, 실제 데이터베이스 서버
DB 엔진MySQL, PostgreSQL 등 관계형 DBMS 종류
Storage스토리지 크기 자동 확장 가능
Multi-AZ 배포고가용성 확보를 위한 이중화 구성
Read Replica읽기 작업 부하 분산용 리플리카
Parameter GroupDB 엔진 구성 옵션 세트
Option Group기능(예: Oracle TDE 등) 설정 집합
Subnet GroupVPC 내 DB를 배치할 서브넷 그룹
보안 그룹(Security Group)DB 접근 제어 (방화벽 역할)

4. Spring Framework에서의 활용 개념

Spring Boot 기반의 Java 애플리케이션에서는 RDS를 일반 JDBC 데이터베이스처럼 다룰 수 있습니다. 차이는 단지 application.yml 파일 내의 URL이 AWS에서 발급한 RDS 엔드포인트라는 점입니다.

📌 application.yml 설정 예시 (MySQL 기준)

spring:
  datasource:
    url: jdbc:mysql://your-rds-endpoint:3306/db_name
    username: your_username
    password: your_password
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
    database-platform: org.hibernate.dialect.MySQL8Dialect

🧩 RDS와 JPA의 연결

  • RDS는 일반적인 RDB이기 때문에 Spring Data JPA, Hibernate와 완벽히 호환
  • 커넥션 풀(HikariCP 등)과 조합하여 성능 최적화 가능

Spring에서 RDS를 사용할 땐 로컬 DB와 크게 다르지 않으며, 보안 그룹 설정만 잘 해주면 문제없이 동작합니다.


5. 성능 및 가용성 기능

RDS는 고성능 서비스 제공을 위한 다양한 기능을 제공합니다. 자동 백업, 스냅샷, 장애 조치 등을 통해 예기치 못한 상황에도 안정적으로 대응할 수 있습니다.

기능설명
✅ 자동 백업지정된 보존 기간 동안 자동 백업 수행
🚨 장애 조치Multi-AZ 구성 시, 장애 발생 시 자동 페일오버
📊 모니터링CloudWatch, Enhanced Monitoring 연동
🔁 스냅샷수동 스냅샷 생성 및 복원 가능
⬆️ 스케일링스토리지 및 인스턴스 크기 조절 가능

개발자는 이러한 기능을 적극 활용하여 데이터 유실 방지 및 다운타임 최소화를 기대할 수 있습니다.


6. 보안 기능

데이터베이스는 민감한 정보를 다루므로 보안이 매우 중요합니다. RDS는 AWS 보안 기능과 통합되어 높은 수준의 보안을 제공합니다.

  • VPC: RDS 인스턴스를 VPC 내에 배치해 외부 접근 제한
  • IAM 인증: 애플리케이션 레벨에서 IAM으로 접근 제어 가능
  • KMS 암호화: 저장 데이터 암호화
  • SSL 연결: 애플리케이션과 RDS 간 통신 암호화

RDS에 접근할 수 있는 IP나 포트는 반드시 보안 그룹을 통해 제한해야 하며, 애플리케이션에서는 보안을 위해 SSL을 사용하는 것이 권장됩니다.


7. RDS vs 자체 구축 DB 비교

직접 EC2에 DB를 설치해서 사용하는 방식과 RDS를 비교하면 다음과 같은 차이가 있습니다. 면접에서도 자주 나오는 질문 중 하나입니다.

항목RDS직접 구축 (EC2 내 DB 설치)
운영 관리자동화수동 관리 필요
장애 대응자동 장애 조치직접 감지 및 복구 필요
비용 구조사용량 기반 과금인스턴스 + 관리 인력 비용
확장성쉬움 (버튼 클릭)직접 설정 필요

직접 구축 방식은 유연하긴 하지만 운영 부담이 크며, 반대로 RDS는 제한된 기능 속에서 안정성을 보장합니다.


8. 면접 대비 핵심 요약

면접에서는 단순히 "RDS가 뭔가요?"보다는 직접 구축 방식과의 차이, 멀티 AZ와 리드 리플리카의 차이, 보안 설정 등 실무에 가까운 질문이 자주 나옵니다.

  • RDS는 AWS의 관리형 관계형 DB 서비스
  • Spring에서는 일반 JDBC 설정처럼 RDS에 연결
  • 고가용성, 자동 백업, 보안 기능이 핵심 장점
  • 운영 자동화 측면에서 EC2 내 직접 DB 운영보다 효율적
  • 면접에서 많이 나오는 질문: "RDS와 EC2 내 DB 직접 설치의 차이", "멀티 AZ와 리드 리플리카 차이"

📚 참고 자료

profile
하나씩 실천하는 개발자

0개의 댓글