Spring Boot 애플리케이션을 클라우드 환경으로 이전할 때 가장 많이 사용하는 데이터베이스 서비스가 바로 AWS RDS (Relational Database Service)입니다. RDS는 MySQL, PostgreSQL, MariaDB, Oracle, SQL Server 등 다양한 DB 엔진을 지원하며, 백업·모니터링·자동 복구를 AWS가 대신 관리해줍니다.
Spring Boot 애플리케이션을 AWS RDS(MySQL 기준)에 연결하는 방법을 단계별로 정리하겠습니다.
1. AWS RDS 인스턴스 생성
먼저 AWS 콘솔에서 RDS 인스턴스를 생성합니다.
- RDS 콘솔 접속: AWS Management Console → RDS → Databases → Create database
- DB 엔진 선택: MySQL 또는 MariaDB 선택
- Templates: Free Tier(무료) 또는 Production 선택
- DB 인스턴스 이름: 예:
springboot-db - Master username/password: 애플리케이션에서 접근 시 사용할 자격 증명
- VPC/Subnet: 애플리케이션 서버와 동일한 네트워크 선택
- Public access: 개발 환경에서는 “Yes”, 운영 환경에서는 “No” 권장
생성이 완료되면 “Endpoint” 주소를 메모해둡니다. 예: springboot-db.xxxxxx.ap-northeast-2.rds.amazonaws.com
2. 보안 그룹(Security Group) 설정
RDS 인스턴스에 접근하기 위해서는 인바운드 규칙을 설정해야 합니다.
- Type: MySQL/Aurora
- Port: 3306
- Source: 애플리케이션 서버 IP 또는
0.0.0.0/0(개발 환경 한정)
운영 환경에서는 특정 EC2 인스턴스 또는 VPC 내부에서만 접근하도록 제한해야 합니다.
3. Spring Boot 의존성 추가
Spring Boot 프로젝트에서 RDS(MySQL)에 연결하기 위해 다음 의존성을 추가합니다.
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'mysql:mysql-connector-java'
PostgreSQL을 사용할 경우 mysql-connector-java 대신 org.postgresql:postgresql 의존성을 추가하면 됩니다.
4. application.yml 설정
RDS의 엔드포인트, 포트, 사용자 정보를 Spring Boot 설정 파일에 추가합니다.
spring:
datasource:
url: jdbc:mysql://springboot-db.xxxxxx.ap-northeast-2.rds.amazonaws.com:3306/springdb?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
username: admin
password: yourpassword
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
show-sql: true
properties:
hibernate:
format_sql: true
실무에서는 ddl-auto: none으로 설정하고, Flyway 또는 Liquibase 같은 마이그레이션 도구로 스키마를 관리하는 것이 좋습니다.
5. Entity와 Repository 작성
JPA를 이용해 RDS와 연동되는 기본 CRUD 구성을 만들어봅니다.
@Entity
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
// Getter/Setter
}
public interface MemberRepository extends JpaRepository<Member, Long> {
}
이제 RDS 데이터베이스에 연결된 상태에서 데이터를 조회하거나 저장할 수 있습니다.
6. 연결 테스트
Spring Boot 애플리케이션을 실행하고 콘솔 로그에서 연결이 성공했는지 확인합니다.
o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console disabled
com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
정상적으로 연결되면 HikariCP 커넥션 풀이 생성되고, DB 접근이 가능합니다.
7. AWS Parameter Store 또는 Secrets Manager 연동 (보안 강화)
운영 환경에서는 DB 비밀번호를 코드나 설정 파일에 직접 저장하면 안 됩니다. 대신 AWS의 Systems Manager Parameter Store나 Secrets Manager를 사용합니다.
spring:
datasource:
url: ${PARAM_DB_URL}
username: ${PARAM_DB_USER}
password: ${PARAM_DB_PASS}
Jenkins, ECS, Lambda 등에서 Parameter Store 값을 환경 변수로 주입하면 애플리케이션은 자동으로 안전하게 비밀번호를 로드합니다.
8. AWS RDS 모니터링 및 백업
- CloudWatch: CPU, Memory, Connections, IOPS 실시간 모니터링
- Enhanced Monitoring: OS 레벨 성능 메트릭 수집
- Automatic Backups: 매일 자동 백업 설정으로 데이터 복구 가능
- Multi-AZ Deployment: 장애 시 자동 장애 조치 (Failover)
이러한 기능을 활성화하면 인프라 운영 안정성이 크게 향상됩니다.
주의할 점
- RDS 보안 그룹을 “Public Access = Yes”로 설정한 채 운영 금지
- Connection Pool 사이즈를 RDS 인스턴스 크기에 맞게 조정
- Hibernate 자동 스키마 생성은 개발 환경에서만 사용
- 백업 및 복구 테스트를 정기적으로 수행
- 애플리케이션과 RDS 간 네트워크는 동일 VPC/Subnet에 배치 권장
Spring Boot와 AWS RDS를 연동하면 클라우드 기반의 안정적인 데이터베이스 환경을 빠르게 구축할 수 있습니다. 특히 자동 백업, 모니터링, 보안 기능을 적절히 활용하면 운영 효율성과 신뢰성을 동시에 확보할 수 있습니다.
'개발 > JAVA' 카테고리의 다른 글
| Spring Boot와 Jenkins CI/CD 파이프라인 구축 - 자동화된 배포 환경 만들기 (0) | 2025.11.11 |
|---|---|
| Spring Boot + Kubernetes 배포하기 - 컨테이너 오케스트레이션으로 확장성 확보 (0) | 2025.11.10 |
| Spring Boot + Docker로 배포하기 - 손쉬운 컨테이너 기반 애플리케이션 배포 (0) | 2025.11.09 |
| Sleuth와 Zipkin으로 분산 트레이싱 - 마이크로서비스의 요청 흐름 가시화 (0) | 2025.11.08 |
| Hystrix/Resilience4j로 장애 대응하기 — 마이크로서비스의 회복탄력성 설계 (0) | 2025.11.07 |
