스프링 부트 백엔드 개발 강좌, 로컬에서 RDS 연결하기

안녕하세요! 이번 강좌에서는 스프링 부트를 사용하여 로컬 환경에서 Amazon RDS에 연결하는 방법에 대해 자세히 알아보겠습니다. AWS(Amazon Web Services)는 클라우드 컴퓨팅 서비스 중 하나로, RDS(Relational Database Service)는 AWS에서 관리되는 관계형 데이터베이스 서비스입니다. 이 강좌는 스프링 부트 백엔드 개발에 대한 기초 지식이 있는 분들을 대상으로 작성되었습니다.

목차

1. AWS RDS 소개

AWS RDS는 Amazon에서 제공하는 관리형 관계형 데이터베이스 서비스입니다. 사용자는 데이터베이스의 하드웨어 및 클러스터링, 백업 및 복원, 보안 패치, 스케일링 등의 관리 작업을 AWS가 대신 수행해 주기 때문에, 개발자는 애플리케이션 개발에 더 집중할 수 있습니다. RDS는 다양한 데이터베이스 엔진을 지원하며, MySQL, PostgreSQL, Oracle, SQL Server 등을 사용할 수 있습니다.

1.1 RDS의 장점

  • 비용 효율성: 필요한 만큼만 리소스를 사용할 수 있으며, 요금은 사용량에 기반하여 책정됩니다.
  • 자동 스케일링: 애플리케이션의 트래픽 변화에 따라 자동으로 리소스를 조정할 수 있습니다.
  • 고가용성: 여러 AZ(AZ: 가용 영역)에서 자동 백업 및 복원 기능을 제공하여 장애 복구를 용이하게 합니다.
  • 보안성: VPC와 통합되어 높은 보안 수준을 제공합니다.

2. RDS 인스턴스 생성하기

이제 RDS 인스턴스를 생성하는 과정에 대해 알아보겠습니다. AWS 콘솔에 로그인하고 RDS 서비스를 선택하면 쉽게 인스턴스를 생성할 수 있습니다.

2.1 인스턴스 생성 단계

  1. AWS 관리 콘솔에 로그인합니다.
  2. 서비스에서 RDS를 선택합니다.
  3. 데이터베이스를 선택하고 데이터베이스 생성하기를 클릭합니다.
  4. 엔진 옵션 중 MySQL 또는 원하는 데이터베이스 엔진을 선택합니다.
  5. 데이터베이스 설정에서 인스턴스 식별자, 사용자 이름, 비밀번호 등을 입력합니다.
  6. DB 인스턴스 클래스와 스토리지 옵션을 선택합니다.
  7. 네트워크 & 보안 설정에서 VPC, 서브넷, 보안 그룹 등을 설정합니다.
  8. 옵션을 검토한 후 생성하기를 클릭하면 인스턴스가 생성됩니다.

3. 스프링 부트 프로젝트 설정

RDS 인스턴스가 생성되었다면, 이제 스프링 부트 프로젝트를 설정해보겠습니다. Spring Initializr를 이용해 프로젝트를 생성하겠습니다.

3.1 Spring Initializr 사용하기

  1. Spring Initializr에 접속합니다.
  2. 프로젝트 메타데이터를 설정합니다: Group, Artifact, Name 등을 입력합니다.
  3. 의존성으로 Spring WebSpring Data JPA, MySQL Driver를 추가합니다.
  4. Generate 버튼을 클릭하여 프로젝트를 다운로드합니다.

3.2 프로젝트 구조

다운로드한 프로젝트를 IDE에서 열면 기본적인 구조가 생성되어 있습니다. 주요 구성 요소는 다음과 같습니다:

  • src/main/java: 자바 소스 코드가 위치하는 곳입니다.
  • src/main/resources: 애플리케이션 구성 파일인 application.properties가 위치하는 곳입니다.

4. 데이터베이스 연결하기

스프링 부트 프로젝트에서 RDS에 연결하기 위해 application.properties 파일을 수정해야 합니다.

4.1 application.properties 설정

spring.datasource.url=jdbc:mysql://{RDS_ENDPOINT}:{PORT}/{DB_NAME}?useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.username={YOUR_USERNAME}
spring.datasource.password={YOUR_PASSWORD}
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

여기서 각 필드는 다음과 같이 설정해 주어야 합니다:

  • {RDS_ENDPOINT}: RDS 인스턴스의 엔드포인트
  • {PORT}: 기본적으로 MySQL은 3306 포트를 사용합니다.
  • {DB_NAME}: 데이터베이스 이름
  • {YOUR_USERNAME}: RDS 인스턴스를 생성할 때 설정한 사용자 이름
  • {YOUR_PASSWORD}: RDS 인스턴스를 생성할 때 설정한 비밀번호

4.2 JPA 엔티티 클래스 생성하기

이제 데이터베이스와 연결되어 있으므로, JPA 엔티티 클래스를 생성할 수 있습니다. 예를 들어, User 엔티티를 생성하겠습니다.

package com.example.demo.entity;

import javax.persistence.*;

@Entity
@Table(name = "user")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false)
    private String name;

    @Column(nullable = false, unique = true)
    private String email;

    // Getters and Setters
}

5. 테스트 및 검증

모든 설정이 완료되었으면, RDS 연결이 제대로 이루어졌는지 검증하는 작업을 수행해야 합니다. 간단한 REST API를 만들어 테스트해보겠습니다.

5.1 REST 컨트롤러 생성하기

package com.example.demo.controller;

import com.example.demo.entity.User;
import com.example.demo.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserRepository userRepository;

    @GetMapping
    public List<User> getAllUsers() {
        return userRepository.findAll();
    }

    @PostMapping
    public User createUser(@RequestBody User user) {
        return userRepository.save(user);
    }
}

5.2 애플리케이션 실행하기

스프링 부트 애플리케이션을 실행합니다. IDE에서 main 메서드가 포함된 클래스를 실행하거나, 터미널에서 ./mvnw spring-boot:run을 입력합니다.

5.3 Postman으로 API 테스트하기

Postman을 사용하여 API를 테스트해 볼 수 있습니다. 사용자 정보를 생성하고, 목록을 조회해보세요.

  • GET 요청: GET http://localhost:8080/users
  • POST 요청: POST http://localhost:8080/users (JSON Body: {"name": "홍길동", "email": "hong@example.com"})

6. 결론 및 참고 자료

이번 강좌를 통해 스프링 부트에서 AWS RDS에 연결하는 방법을 배웠습니다. RDS를 이용하면 데이터베이스 관리를 간소화하고, 빠르게 애플리케이션 개발에 집중할 수 있습니다. AWS와 스프링 부트의 조합은 강력한 백엔드 솔루션을 만들어 주며, 실제 서비스에서도 많이 사용됩니다.

참고 자료

이제 여러분의 스프링 부트 프로젝트를 RDS와 연결해 보세요! 추가 질문이 있다면 주저하지 말고 댓글로 남겨주세요.