지난 포스팅에서 배포한 스프링 부트 3 게시판의 경우 DB를 H2 DB로 구축한 후 그것을 .jar 파일로 빌드해서 배포했다. 그러나 H2 데이터베이스는 웹 프로그램이나 서비스 개발 단계에서는 유용하지만 실제 운영 환경에서 사용하기에는 많이 부족한 DBMS다.

따라서 웹 프로그램, 서비스를 본격적으로 운영하기로 마음먹었다면 H2보다 성능이 좋은 DBMS를 고려해야한다.

오라클과 같은 상용 DBMS도 있지만 규모가 작은 웹 서비스는 대체로 PostgreSQL이나 MySQL 등의 DBMS를 주로 사용한다.

이번에는 점유율이 점점 높아지는 PostgreSQL을 AWS RDS로 사용하고, 스프링 부트 게시판에 연동해보자.

https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Welcome.html

RDS는 Amazon RDS는 관리형 데이터베이스 서비스로, 여러 데이터베이스 엔진(MySQL, PostgreSQL, Oracle, SQL Server 등)을 지원하며, 자동 백업, 패치 관리, 모니터링 및 스케일링 기능을 제공한다.

AWS에서 대부분의 관리 작업을 담당하므로 번거로운 수동 프로세스를 처리할 필요가 없어 애플리케이션과 사용자에게 집중할 수 있다.

AWS에서는 하드웨어 계층을 관리하여 온프레미스 데이터베이스 서버를 관리해야 하는 부담을 일정 부분 덜어준다.

RDS 데이터베이스 생성

데이터베이스를 생성해준다.

데이터베이스 생성 방식을 선택하고 PostgreSQL을 선택한다. 필자는 표준 생성을 선택한다.

버전을 15.4로 선택하고 템플릿을 프리티어로 선택한다.

DB 자격 증명은 비밀번호 기반으로 할 것이기 떄문에 자체 관리를 선택하고 다른 값들은 기본으로 둔 후, 마스터 암호를 설정해준다.

postgres라는 DB 사용자 이름과 마스터 암호로 DB에 접속하는 것이다.

EC2 컴퓨팅 리소스에 연결을 선택하고 기존에 생성한 EC2 인스턴스를 선택한다.

나머지 값들은 모두 기본값으로 두고 맨 밑에 [데이터베이스 생성]버튼을 클릭한다.

생성한 DB를 보면 엔드포인트라고 하는 데이터베이스의 도메인 주소가 적혀있다.

sbb 데이터베이스 생성하기

이제 생성된 PostgreSQL 인스턴스에 SBB 서비스에 사용할 sbb 데이터베이스를 생성해 보자.

1) PostgreSQL에 접속하려면 다음과 같이 PostgreSQL 클라이언트를 먼저 설치해야 한다. PostgreSQL 클라이언트는 PostgreSQL 데이터베이스 서버와 상호 작용을 하는 소프트웨어 또는 도구라고 생각하면 된다.

sudo apt install postgresql-client

2) 다음과 같이 createdb 명령을 실행하여 sbb 데이터베이스를 생성해 보자.

createdb sbb --username=postgres -h database-1.clyge22cyikw.us-east-2.rds.amazonaws.com

스프링 부트 프로젝트가 PostgreSQL 서버에 접속하려면 PostgreSQL 라이브러리가 필요하다. build.gradle 파일을 수정하여 PostgreSQL 라이브러리를 설치해 보자.

(... 생략 ...)
dependencies {
    (... 생략 ...)
    runtimeOnly 'org.postgresql:postgresql'
}
(... 생략 ...)

application-prod.properties 파일 수정

#DATABASE
spring.datasource.url=jdbc:postgresql://database-1.clyge22cyikw.us-east-2.rds.amazonaws.com:5432/sbb
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.username=postgres
spring.datasource.password=s3021502!

# JPA
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.show_sql=true

과정을 모두 마쳤다면 새로운 배포 파일을 생성하여 서버에 적용하고 stop.shstart.sh를 실행하여 SBB 서비스를 재시작 한다. 데이터베이스가 변경되었으므로 기존 데이터는 보이지 않을 것이다.

PostgreSQL 연동 성공 화면

RDS PostgreSQL과 스프링 부트 3 게시판을 연동했다.

Reference

https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html

1 Comment
  • 대표 멘토 - 아키텍터
    2024-11-07

    커뮤니티를 위해서 꾸준히 포스팅을 작성해주셔서 고맙습니다.
    글작성 채점 기준은 75점인데요. 좀 더 올리는 법을 알려드리자면 (현재 글 기준)
    1. “기본 SEO > 콘텐츠 길이가 334단어입니다. 최소 600개의 단어를 사용하는 것을 고려해보세요”
    >> 말그대로 글자 수를 늘리면 됩니다. 현재 334단어라고 하니, 조금더 상세하게 설명을 작성해주면 자연스럽게 글자수가 늘게 되겠죠?
    2. “콘텐츠 가독성 > Table of Contents plugin을 사용하지 않는 것 같습니다.”
    >> 가장 상단에서 새로운 블록을 만들 때, “목차”라고 검색하면 “Rank Math”에 따른 목차라는 부분이 나올겁니다. 그걸 클릭만 해주면 목차가 나올거예요. 소제목에 맞게 자동으로 목차가 만들어 질겁니다. 이건 내가 만들어 놓겠습니다. 참고하세요. (만들고 보니 H2 소제목 두개만 있네요. ㅎㅎ )

    위의 첨삭에 궁금한 점이 있으면 말씀해주세요. 화이팅!

Leave a Reply

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다