DevOps & Cloud/AWS

[AWS] RDS

foreverWon 2025. 8. 30. 10:11
목차

    1. RDS 개념과 특징

    RDS(Relational Database Service)

    • AWS에서 제공하는 관계형 데이터 베이스 서비스
    • 직접 DB를 서버를 설치/운영하지 않고, 클라우드 제공업체(AWS, Azure, GCP 등)가 관리하는 DB 사용
    • 특징:구분 전통적인 DB 관리 RDS (관리형 DB)
      설치 사용자가 직접 설치 자동 설치 제공
      보안 패치 수동 업데이트 필요 자동 업데이트
      백업 직접 스크립트 작성 자동 백업 지원
      모니터링 별도 툴 설치 필요 기본 제공 (CloudWatch 등)
      확장성 서버 증설 직접 수행 클릭 몇 번으로 확장 가능

    PostgreSQL RDS

    • RDS는 다양한 엔진을 지원하지만, 실무에서는 PostgreSQL이 많이 사용됨
    • 이유: 오픈소스, ACID 보장, JSON 타입 지원, 풍부한 함수와 확장성
    • 장점:기능 설명
      JSON 지원 문서형 DB처럼 JSON 저장 및 쿼리 가능
      확장 기능 PostGIS, pg_stat_statements 등 확장 모듈 지원
      표준 SQL 호환성 다양한 DBMS와 호환성 높음
      강력한 트랜잭션 처리 금융, 공공 시스템 등에도 사용

    2. RDS와 Spring Bot 연동

    의존성 추가

    // build.gradle
    dependencies {
        implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
        runtimeOnly 'org.postgresql:postgresql'
    }
    
    • Spring Boot에서 DB와 연동하려면 반드시 JPA와 DB Driver 의존성을 추가해야 함
    • DB 드라이버를 여러 개 추가하지 말고, 실제 사용할 DB 드라이버만 추가하는 것이 좋음

    데이터소스 설정

    : DB 연결 정보는 application.yml 또는 application.properties 파일에 설정

    # application-prod.yml 예시
    spring:
      datasource:
        url: ${DATASOURCE_URL}
        username: ${DATASOURCE_USERNAME}
        password: ${DATASOURCE_PASSWORD}
        driver-class-name: org.postgresql.Driver
    
    # .env 파일에 URL, USERNAME, PASSWORD 작성
    # RDS 설정
    DATASOURCE_URL=jdbc:postgresql:{RDS 인스턴스 주소}:35432/test
    DATASOURCE_USERNAME=이름
    DATASOURCE_PASSWORD=비밀번호
    
    • 포트번호, DB 이름, 사용자가 일치하지 않으면 연결 오류 발생
    • DB 인스턴스 보안 그룹에서 애플리케이션 서버 IP를 허용했는지 반드시 확인

    JPA 기본 설정

    # application.yml 예시
    spring:
      jpa:
        hibernate:
          ddl-auto: update   # (create, update, validate, none)
        show-sql: true       # 실행되는 SQL을 콘솔에 출력
        properties:
          hibernate:
            format_sql: true # SQL을 보기 좋게 포맷팅
    
    • ddl-auto: update는 개발 단계에서만 사용, 운영 환경에서는 스키마를 수동으로 관리하는 것이 안전함
    • show-sql: true는 학습 시 SQL 확인에 유용하지만, 운영 환경에서는 로그가 과도하게 쌓일 수 있음
    728x90

    'DevOps & Cloud > AWS' 카테고리의 다른 글

    ECS(Fargate)와 ElastiCache Redis 연결 시 고려사항  (0) 2025.12.11
    AWS ElastiCache  (0) 2025.12.10
    S3 버킷 정책(get요청만 public으로 전환하는 법)  (0) 2025.11.27
    [AWS] ECS  (1) 2025.08.31
    [AWS] AWS 핵심 개념과 보안  (2) 2025.08.29