안녕하세요! 이번 강좌에서는 스프링 부트를 사용하여 로컬 환경에서 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 인스턴스 생성 단계
- AWS 관리 콘솔에 로그인합니다.
- 서비스에서 RDS를 선택합니다.
- 데이터베이스를 선택하고 데이터베이스 생성하기를 클릭합니다.
- 엔진 옵션 중 MySQL 또는 원하는 데이터베이스 엔진을 선택합니다.
- 데이터베이스 설정에서 인스턴스 식별자, 사용자 이름, 비밀번호 등을 입력합니다.
- DB 인스턴스 클래스와 스토리지 옵션을 선택합니다.
- 네트워크 & 보안 설정에서 VPC, 서브넷, 보안 그룹 등을 설정합니다.
- 옵션을 검토한 후 생성하기를 클릭하면 인스턴스가 생성됩니다.
3. 스프링 부트 프로젝트 설정
RDS 인스턴스가 생성되었다면, 이제 스프링 부트 프로젝트를 설정해보겠습니다. Spring Initializr를 이용해 프로젝트를 생성하겠습니다.
3.1 Spring Initializr 사용하기
- Spring Initializr에 접속합니다.
- 프로젝트 메타데이터를 설정합니다: Group, Artifact, Name 등을 입력합니다.
- 의존성으로 Spring Web과 Spring Data JPA, MySQL Driver를 추가합니다.
- 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와 연결해 보세요! 추가 질문이 있다면 주저하지 말고 댓글로 남겨주세요.