Spring Boot와 AWS RDS 연동하기 - 안정적인 클라우드 데이터베이스 환경 구축

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 인스턴스를 생성합니다.

  1. RDS 콘솔 접속: AWS Management Console → RDS → Databases → Create database
  2. DB 엔진 선택: MySQL 또는 MariaDB 선택
  3. Templates: Free Tier(무료) 또는 Production 선택
  4. DB 인스턴스 이름: 예: springboot-db
  5. Master username/password: 애플리케이션에서 접근 시 사용할 자격 증명
  6. VPC/Subnet: 애플리케이션 서버와 동일한 네트워크 선택
  7. 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 StoreSecrets 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를 연동하면 클라우드 기반의 안정적인 데이터베이스 환경을 빠르게 구축할 수 있습니다. 특히 자동 백업, 모니터링, 보안 기능을 적절히 활용하면 운영 효율성과 신뢰성을 동시에 확보할 수 있습니다.