HikariCP를 이해하면 풀 사이즈 설정이 보인다
·
Spring/Spring
애플리케이션의 데이터베이스 성능은 커넥션 풀의 효율성과 직결된다. 커넥션 풀은 데이터베이스 연결을 효율적으로 관리하는 핵심 요소다. 하지만 이를 제대로 이해하지 못한 채 기본 설정에 의존하는 경우도 있을 것이다.Spring은 HikariCP라는 뛰어난 성능과 신뢰성을 가진 커넥션 풀을 기본적으로 제공한다. 그러나 기본 설정만으로는 모든 상황에서 최적화된 성능과 안정성을 보장하기 어렵다.이 글에서는 HikariCP의 주요 개념과 작동 원리를 살펴보고, 적절한 풀 사이즈를 설정하는 방법에 대해 논의한다. 또한, 커넥션 풀과 관련된 대표적인 문제와 이를 방지하는 설정 전략도 함께 다룬다. HikariCP를 최적화하여 애플리케이션의 성능과 안정성을 극대화하는 방법을 알아보도록 하자. 1. DB Connectio..
나만의 Swagger UI 서버, 쿠버네티스에서 운영하기
·
Infra
Swagger UI에서 여러 서비스에 대한 문서를 효율적으로 관리하려면, 문서 파일의 저장소와 접근 방식에 대한 고민이 필요하다. 이 글에서는 Swagger UI를 쿠버네티스 환경에서 구성하는 방법과, Object Storage를 활용해 Swagger 문서를 제공하는 방법을 다룬다. 이를 통해 자동화된 문서 관리, 안정적인 시스템 구축을 목표로 한다. 또한, Swagger UI를 조직의 필요에 맞게 커스터마이징하여 제공하는 방법도 함께 살펴볼 것이다. 1. Swagger UI1-1. Swagger UI란?Swagger UI는 swagger-api Organization의 핵심 프로젝트이다. 사용자에게 직관적인 UI를 제공하여 API 제공자와 사용자 간의 협업에 큰 도움을 주는 툴이다. Organizati..
REST API 문서 자동화로 업무 효율 극대화하는 방법
·
Spring
이 글은 Spring REST Docs를 통해 Swagger 문서화를 자동화하는 방법과 이를 통해 업무 효율을 극대화할 수 있는 여러 가지 도구들에 대해 소개한다. Swagger는 가장 유명한 API 문서화 툴 중 하나이다. HTTP 통신을 통해 정보를 교환하는 REST API를 사용한다면 협업을 진행하기 위해 Swagger를 사용하고 있는 팀이 많을 것이다. 테스트 코드로 자동화했을 수도 있고, 주석을 다는 방법과 기타 방법을 사용해 자동화한 팀도 존재할 것이며, openapi 문서를 한땀한땀 직접 작성하는 분들도 있을 것이다. 몇몇 분들은 굳이 "Swagger가 굳이 필요하냐?", "테스트 코드를 통해 Swagger 문서를 자동화할 필요가 있냐?"고 의문을 가질 수도 있다. 하지만 내 대답은 "테스트..
[Spring Batch] Tasklet에서 왜 @BeforeStep과 @AfterStep이 동작하지 않을까?
·
Spring/Spring
1. Tasklet만으로는 beforeStep이나 afterStep을 트리거하지 못한다.Tasklet을 구현하고 StepBuilder에서 tasklet() 메소드를 등록해주는 것만으로는 @BeforeStep이나 @AfterStep을 사용할 수 없다.Tasklet에서 Step의 생명주기에 관여하고 싶다면 추가적인 작업이 필요하다는 말이다.@Configurationpublic class MemberJobConfig { @Bean("memberJob") public Job memberJob( JobRepository jobRepository, PlatformTransactionManager transactionManager) { return new JobBuilder("memberJob", ..
[Spring] RestClient URI Encoding 문제 (feat. 퍼센트 인코딩)
·
Spring/Spring
RestClient의 URI 인코딩DefaultUriBuilderFactoryRestClient를 생성할 때 보통 Builder를 사용해 만들게 됩니다.public interface RestClient { ... static RestClient.Builder builder() { return new DefaultRestClientBuilder(); } .... }RestClient.Bulider가 build() 하는 시점에 아래와 같이 DefaultUriBuilderFactory를 기본으로 생성해 가지고 있습니다.public class DefaultRestClientBuilder { ... @Override public RestClient b..
[Test] Testcontainers를 사용한 DB 테스트
·
Test
1. TestContainers란?예전에 프로젝트를 할 때 멱등성 있는 테스트를 구성하기 위해 테스트 DB를 따로 띄워 테스트를 실행했던 적이 있습니다. 그 때는 Testcontainers의 존재를 몰랐기에 Docker Compose로 테스트 DB를 띄워 테스트를 실행해줬습니다. 테스트 DB 컨테이너를 계속 띄워 놓기엔 때문에 컴퓨터 리소스 낭비도 심했기 때문에 통합 테스트를 실행해야할 때마다 테스트 DB 컨테이너를 띄워주고 테스트가 종료되면 컨테이너를 내리는 식으로 진행되었는데 정말 귀찮은 작업이었습니다. 이런 작업을 자동화해주는 Testcontainers입니다. 똑같이 Docker 환경을 사용하며 테스트가 실행될 때 실제 DB와 같이 돌아가는 DB 컨테이너를 띄워주고, 테스트가 종료되면 자동으로 컨테..