Category
테스트 성능 및 정합성 개선하기(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 수를 뜻합니다.즉, 순간 처리가능한 ..
[Spring] Redisson tryLock 동작 과정
[Redis] Redisson TryLock 동작과정 살펴보기어플리케이션을 개발하다보면 Redis 를 이용해 DistributedLock 을 구현하다보면 Redisson 라이브러리를 많이 사용하는데요.Redisson 은 pub/sub, lua script 를 이용한다와 같은 특징이 있습니다. 이번에는 좀 더 자세히 락을 획득하는 tryLock 메소드에 대해 어떻게 동작하는지그리고 위 특징들이 어떻게 동작하는지 한번 살펴보려 합니다. DistributedLock 이 어떤건지 잘 모르시겠다면 제가 작성한 아래 글을 참고해보시는것을 추천드립니다.풀필먼트 입고 서비스팀에서 분산락을 사용하는 방법 - Spring Redisson[Spring] Redisson 라이브러리를 이용한 Distribute Lock 동시성..
[Spring] @Async 사용 방법 및 TaskExecutor, ThreadPool
예제 및 테스트 코드는 github 에서 확인 가능합니다.[Spring] @Async 비동기 처리 및 스레드 풀 설정 안녕하세요 이번에는 스프링에서 비동기처리를 할 수 있는 @Async 에 대해 알아보겠습니다.해당 어노태이션을 통해 실행된 비동기 함수는 별도의 스레드로 실행이 되게 됩니다.그렇기에 비동기 함수를 호출한 main 스레드에서는 해당 함수를 기다릴 필요가 없게됩니다.그리고 비동기 함수를 실행하는 별도의 스레드는 스레드 풀을 통해 설정할 수 있습니다.@Asyncpublic void asyncMethod() { // ...} @Async 의 리턴 타입@Async 의 리턴 타입은 Void, Future, ListenableFuture, CompletableFuture 가 있습니다.(현재 Lis..