Amazon RDS (Relational Database Service)는 AWS에서 제공하는 관리형 관계형 데이터베이스 서비스로, MySQL, PostgreSQL, Oracle, SQL Server, MariaDB, Amazon Aurora 등 다양한 엔진을 지원합니다.
개발자가 직접 DB 서버를 설치하고 관리하는 대신, RDS는 이러한 작업을 AWS에서 대신 처리해줍니다. 이를 통해 인프라 운영 부담을 줄이고 애플리케이션 개발에 집중할 수 있습니다.
💡 MongoDB와 같은 NoSQL은 Amazon DynamoDB를 쓰도록 하자
RDS는 단순히 "클라우드에 있는 데이터베이스" 그 이상입니다. 운영자가 해야 할 반복적인 작업을 대신해주고, 장애 복구나 보안도 AWS 수준으로 제공되기 때문에, 실제 서비스 운영에 매우 적합합니다.
| 항목 | 설명 |
|---|---|
| 💾 관리 자동화 | 백업, 패치, 모니터링을 자동화하여 운영 부담 감소 |
| 🌐 고가용성 | 멀티 AZ 배포, 자동 장애 조치 기능으로 안정성 확보 |
| ⚙️ 확장성 | 스토리지 및 인스턴스 수직/수평 확장 가능 |
| 🔐 보안 | VPC, IAM, KMS, SSL 등 다양한 보안 옵션 지원 |
Spring 기반 백엔드 서버를 운영할 때, 로컬 DB가 아닌 RDS를 활용하면 운영/배포 환경에서의 안정성 확보 및 관리 효율성이 크게 향상됩니다.
RDS는 다양한 구성 요소로 이루어져 있으며, 각각의 요소들이 역할을 분담하여 유연한 데이터베이스 운영을 가능하게 합니다. 각 구성 요소를 잘 이해하고 있으면 문제 해결이나 최적화에 큰 도움이 됩니다.
| 구성 요소 | 설명 |
|---|---|
| DB Instance | RDS에서 생성된 DB 인스턴스, 실제 데이터베이스 서버 |
| DB 엔진 | MySQL, PostgreSQL 등 관계형 DBMS 종류 |
| Storage | 스토리지 크기 자동 확장 가능 |
| Multi-AZ 배포 | 고가용성 확보를 위한 이중화 구성 |
| Read Replica | 읽기 작업 부하 분산용 리플리카 |
| Parameter Group | DB 엔진 구성 옵션 세트 |
| Option Group | 기능(예: Oracle TDE 등) 설정 집합 |
| Subnet Group | VPC 내 DB를 배치할 서브넷 그룹 |
| 보안 그룹(Security Group) | DB 접근 제어 (방화벽 역할) |
Spring Boot 기반의 Java 애플리케이션에서는 RDS를 일반 JDBC 데이터베이스처럼 다룰 수 있습니다. 차이는 단지 application.yml 파일 내의 URL이 AWS에서 발급한 RDS 엔드포인트라는 점입니다.
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
Spring에서 RDS를 사용할 땐 로컬 DB와 크게 다르지 않으며, 보안 그룹 설정만 잘 해주면 문제없이 동작합니다.
RDS는 고성능 서비스 제공을 위한 다양한 기능을 제공합니다. 자동 백업, 스냅샷, 장애 조치 등을 통해 예기치 못한 상황에도 안정적으로 대응할 수 있습니다.
| 기능 | 설명 |
|---|---|
| ✅ 자동 백업 | 지정된 보존 기간 동안 자동 백업 수행 |
| 🚨 장애 조치 | Multi-AZ 구성 시, 장애 발생 시 자동 페일오버 |
| 📊 모니터링 | CloudWatch, Enhanced Monitoring 연동 |
| 🔁 스냅샷 | 수동 스냅샷 생성 및 복원 가능 |
| ⬆️ 스케일링 | 스토리지 및 인스턴스 크기 조절 가능 |
개발자는 이러한 기능을 적극 활용하여 데이터 유실 방지 및 다운타임 최소화를 기대할 수 있습니다.
데이터베이스는 민감한 정보를 다루므로 보안이 매우 중요합니다. RDS는 AWS 보안 기능과 통합되어 높은 수준의 보안을 제공합니다.
RDS에 접근할 수 있는 IP나 포트는 반드시 보안 그룹을 통해 제한해야 하며, 애플리케이션에서는 보안을 위해 SSL을 사용하는 것이 권장됩니다.
직접 EC2에 DB를 설치해서 사용하는 방식과 RDS를 비교하면 다음과 같은 차이가 있습니다. 면접에서도 자주 나오는 질문 중 하나입니다.
| 항목 | RDS | 직접 구축 (EC2 내 DB 설치) |
|---|---|---|
| 운영 관리 | 자동화 | 수동 관리 필요 |
| 장애 대응 | 자동 장애 조치 | 직접 감지 및 복구 필요 |
| 비용 구조 | 사용량 기반 과금 | 인스턴스 + 관리 인력 비용 |
| 확장성 | 쉬움 (버튼 클릭) | 직접 설정 필요 |
직접 구축 방식은 유연하긴 하지만 운영 부담이 크며, 반대로 RDS는 제한된 기능 속에서 안정성을 보장합니다.
면접에서는 단순히 "RDS가 뭔가요?"보다는 직접 구축 방식과의 차이, 멀티 AZ와 리드 리플리카의 차이, 보안 설정 등 실무에 가까운 질문이 자주 나옵니다.