Category
[Spring Boot] Hikari CP 의 옵션과 설정방법
Hikari CP 옵션과 설정 방법Hikari CP 는 SpringBoot 2.0.0 버전 이상부터 디폴트로 설정된 Connection Pool 입니다.이번엔 Hikari CP 의 설정 옵션들은 어떤것들이 있는지, 설정시 고민해야할 부분은 어떤것들이 있을지 한번 알아보려 합니다.Hikari CP 의 옵션application.ymlspring: datasource: hikari: driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://{url}:{port}/{schema} maximum-pool-size: 10 minimum-idle: 1..
[Spring Batch] BulkInsert 로 성능 개선하기 (feat. TypeSafe)
예제 및 테스트 코드는 github 에서 확인 가능합니다.Spring Batch Writer 성능 개선하기 (feat. Bulk Insert)안녕하세요, 이번에는 Spring Batch 에서 Writer 의 성능을 개선한 사례에 대해 공유드리려 합니다.제가 담당하는 정산 프로젝트에는 하루에 수만건에서 많으면 수십만건의 데이터를 처리하고 생성하고 있는데요.서비스가 커질수록 처리하는 데이터가 많아지면서 배치의 처리속도가 점점 저하되는 이슈가 생겼습니다.그래서 Spring Batch 의 성능 개선이 필요했었는데요. 그 중에서 Batch의 Writer 에 대해 개선하기 위해 고민하고 적용했던 과정을 공유드리려 합니다. 문제점정산시스템은 Spring Batch + MySQL + JPA 의 환경으로 구성되어있습니다..
테스트 성능 및 정합성 개선하기(with ContextCaching, TestContainer)
테스트 성능 및 정합성 개선하기(with ContextCaching, TestContainer)개요 및 문제점안녕하세요 이번에는 사내에서 담당하고있는 프로젝트의 테스트 성능과 정합성을 개선한 사례에 대해 공유드리려 합니다.프로젝트에는 현재 약 1700+ 정도의 테스트 케이스 가 존재하는데요.(현재 기준)실제 정산과 관련된 도메인을 담당하다 보니 보다 꼼꼼한 시나리오 테스트가 필요하고 사이드 이펙트를 방지하기 위해 개발하며 테스트 케이스를 자주 실행하고는 합니다.이때, 테스트 케이스가 증가함에 따라 테스트 코드에 여러 문제점들이 존재했습니다.그래서 테스트 코드를 개선하기로 마음먹게 되는데요.테스트 코드에는 크게 아래와 같은 문제점이 있었습니다.일관성 없는 테스트 결과테스트 성능 이슈문제에 대해 조금 더 살..
[Java] Parallel Stream 의 구조 및 주의사항
예제 및 테스트 코드는 github 에서 확인 가능합니다. Java ParallelStream안녕하세요 이번에는 Java Stream 의 병렬처리를 가능하게 하는 ParallelStream 에 대해 알아보겠습니다.Java 의 ParallelStream 은 별다른 설정없이 Stream 의 parallel(), Collection의 parallelStream() 메소드를 통해 손쉽게 병렬처리를 할 수 있습니다.List list = List.of(1, 2, 3, 4, 5, 6, 7, 8);// parallel()list.stream() .parallel() .forEach(System.out::println);// parallelStream()list.parallelStream() .forEa..
[Tomcat] Tomcat Thread Pool 설정 정리 및 테스트
예제 및 테스트 코드는 github 에서 확인 가능합니다.Apache Tomcat 설정에 대해 알아보자안녕하세요 이번에는 스프링에서 쓰이는 Apache Tomcat 의 설정 옵션들그리고 Thread 설정에 따라 어떻게 동작하는지에 대해 한번 알아보려합니다.Tomcat 의 설정 옵션application.ymlserver: tomcat: max-connections: 8192 accept-count: 100 threads: max: 200 min-spare: 10다음은 스프링 부트에서 톰캣을 설정에 대한 옵션입니다.각 옵션별로 하나씩 알아보겠습니다.threads.max생성할수있는 최대 thread 의 갯수이며 실제 Active User 수를 뜻합니다.즉, 순간 처리가능한 ..