오늘은 Spring Boot에서 데이터베이스 연결 풀(Connection Pool)을 설정하고, 기본 제공되는 HikariCP를 활용하는 방법에 대해 알아보겠습니다. 연결 풀은 데이터베이스와의 연결 성능을 최적화하여 애플리케이션의 응답 속도를 개선하는 데 중요한 역할을 합니다.
1. 연결 풀(Connection Pool) 이해
(1) 연결 풀이란?
데이터베이스와의 연결은 비용이 많이 드는 작업입니다. 연결 풀은 미리 데이터베이스 연결을 생성해두고, 요청이 올 때 재사용하여 성능을 최적화하는 기술입니다.
(2) Spring Boot의 기본 연결 풀
Spring Boot 2.x부터는 HikariCP가 기본 연결 풀로 설정되어 있습니다. HikariCP는 속도와 경량성으로 널리 사용되는 연결 풀 라이브러리입니다.
2. HikariCP 의존성 확인
Spring Boot Starter를 사용하면 HikariCP가 자동으로 포함됩니다. 별도로 추가 작업이 필요하지 않습니다.
3. HikariCP 설정
(1) application.properties 설정
# 데이터베이스 설정
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=root
spring.datasource.password=1234
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# HikariCP 설정
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.minimum-idle=2
spring.datasource.hikari.idle-timeout=30000
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.connection-timeout=20000
(2) 주요 설정 옵션 설명
속성 설명
maximum-pool-size | 최대 연결 수 (기본값: 10) |
minimum-idle | 최소 유휴 연결 수 |
idle-timeout | 유휴 상태에서 연결을 유지하는 최대 시간 (기본값: 600000ms) |
max-lifetime | 연결의 최대 수명 (기본값: 1800000ms) |
connection-timeout | 연결 요청 대기 시간 (기본값: 30000ms) |
4. HikariCP 모니터링
HikariCP는 내부적으로 모니터링을 제공합니다. 로깅을 통해 연결 풀의 상태를 확인할 수 있습니다.
(1) 로그 레벨 설정
application.properties에서 로깅 레벨을 설정합니다.
logging.level.com.zaxxer.hikari=DEBUG
5. 커스텀 설정과 Connection Test
(1) Connection Test Query 설정
HikariCP는 기본적으로 SELECT 1을 사용하여 연결 상태를 확인합니다. 이를 커스터마이징할 수도 있습니다.
spring.datasource.hikari.connection-test-query=SELECT 1 FROM DUAL
(2) HikariCP의 커스텀 Bean 등록
필요한 경우 Java Config를 통해 HikariCP 설정을 확장할 수 있습니다.
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
@Configuration
public class DataSourceConfig {
@Bean
public DataSource dataSource() {
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/mydatabase");
config.setUsername("root");
config.setPassword("1234");
config.setMaximumPoolSize(10);
config.setMinimumIdle(2);
config.setIdleTimeout(30000);
config.setMaxLifetime(1800000);
return new HikariDataSource(config);
}
}
6. 실시간 모니터링
Spring Boot Actuator를 활용하여 연결 풀 상태를 실시간으로 모니터링할 수 있습니다.
(1) 의존성 추가
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
(2) 활성화
application.properties에 Actuator 엔드포인트를 활성화합니다.
management.endpoints.web.exposure.include=*
(3) HikariCP 상태 확인
Actuator 엔드포인트 /actuator/metrics/hikaricp.connections를 호출하여 연결 풀 상태를 확인할 수 있습니다.
7. 테스트
(1) 대량 요청 시 성능 확인
HikariCP를 설정한 후, 데이터베이스에 다수의 동시 요청을 보내 연결 풀이 성능을 확인합니다.
(2) 로깅 확인
디버그 로그를 통해 연결 풀이 제대로 작동하는지 확인합니다.
8. 실습 결과
Spring Boot에서 HikariCP를 사용해 데이터베이스 연결 풀이 설정되었습니다. 이를 통해 성능을 최적화하고, 안정적으로 데이터베이스 연결을 관리할 수 있습니다.
'개발 > 전자정부프레임워크' 카테고리의 다른 글
Spring Boot에서 Security를 사용한 인증 및 권한 부여 (0) | 2024.12.29 |
---|---|
Spring Boot에서 트랜잭션 관리하기 (3) | 2024.12.29 |
RESTful API를 통한 파일 다운로드 구현 (0) | 2024.12.29 |
RESTful API에 파일 업로드 구현하기 (0) | 2024.12.29 |
Spring Boot에 데이터 검증 (Validation) 적용하기 (0) | 2024.12.28 |