Spring

    [Spring Boot] Hikari CP 의 옵션과 설정방법

    [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..

    테스트 성능 및 정합성 개선하기(with ContextCaching, TestContainer)

    테스트 성능 및 정합성 개선하기(with ContextCaching, TestContainer)

    테스트 성능 및 정합성 개선하기(with ContextCaching, TestContainer)개요 및 문제점안녕하세요 이번에는 사내에서 담당하고있는 프로젝트의 테스트 성능과 정합성을 개선한 사례에 대해 공유드리려 합니다.프로젝트에는 현재 약 1700+ 정도의 테스트 케이스 가 존재하는데요.(현재 기준)실제 정산과 관련된 도메인을 담당하다 보니 보다 꼼꼼한 시나리오 테스트가 필요하고 사이드 이펙트를 방지하기 위해 개발하며 테스트 케이스를 자주 실행하고는 합니다.이때, 테스트 케이스가 증가함에 따라 테스트 코드에 여러 문제점들이 존재했습니다.그래서 테스트 코드를 개선하기로 마음먹게 되는데요.테스트 코드에는 크게 아래와 같은 문제점이 있었습니다.일관성 없는 테스트 결과테스트 성능 이슈문제에 대해 조금 더 살..

    [Tomcat] Tomcat Thread Pool 설정 정리 및 테스트

    [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 수를 뜻합니다.즉, 순간 처리가능한 ..

    [Spring] @Async 사용 방법 및 TaskExecutor, ThreadPool

    [Spring] @Async 사용 방법 및 TaskExecutor, ThreadPool

    예제 및 테스트 코드는 github 에서 확인 가능합니다.[Spring] @Async 비동기 처리 및 스레드 풀 설정 안녕하세요 이번에는 스프링에서 비동기처리를 할 수 있는 @Async 에 대해 알아보겠습니다.해당 어노태이션을 통해 실행된 비동기 함수는 별도의 스레드로 실행이 되게 됩니다.그렇기에 비동기 함수를 호출한 main 스레드에서는 해당 함수를 기다릴 필요가 없게됩니다.그리고 비동기 함수를 실행하는 별도의 스레드는 스레드 풀을 통해 설정할 수 있습니다.@Asyncpublic void asyncMethod() { // ...} @Async 의 리턴 타입@Async 의 리턴 타입은 Void, Future, ListenableFuture, CompletableFuture 가 있습니다.(현재 Lis..

    [Spring] Spring Event 를 이용한 비동기 이벤트 처리

    [Spring] Spring Event 를 이용한 비동기 이벤트 처리

    예제 및 테스트 코드는 github 에서 확인 가능합니다.[Spring] Spring Event 를 이용한 비동기 이벤트 처리Spring Event 는 스프링에서 제공하는 이벤트 기반 프로그래밍을 지원하기 위한 기능입니다.이벤트는 이벤트를 발행하는 주체(publisher) 와 이벤트를 처리하는 주체(listener) 로 나누어 집니다. 이벤트를 이용하면 코드에 대한 의존성을 분리할 수 있고 특정 작업 이후에이벤트를 통해 추가적인 작업을 의존성 없이 진행할 수 있다는 장점이 있습니다. 예를 들면, 회원가입 이후 가입 완료에 대한 메일을 발송하는 경우 메일서버에 장애가 발생해도 회원가입은 정상적으로 이루어져야 합니다.이때, 회원가입과 메일발송에 대한 의존성을 분리하는데 이벤트를 사용할 수 있습니다. Appl..