SPRING

[Spring] - ExecutorService를 사용하여 대량주문시간단축

boudle 2024. 8. 30. 11:25

이번에 진행한 테스트는 대량 주문 처리 성능 최적화를 목표로 하였습니다

테스트 시나리오는 총 100개의 서로 다른 상품과 100,000개의 주문을 생성하여 얼마나 효율적으로 DB에 저장되었는지 비교하는 경우입니다.

 

 

먼저, 100개의 서로 다른 상품을 생성하여 데이터베이스에 저장하고, 동시에 Redis 캐시에 각 상품의 정보를 저장함으로써 데이터 조회 성능을 향상시켰습니다. 각 상품은 고유의 이름, 가격, 재고 수량을 가지며, 충분한 재고를 보유하도록 설정했습니다.

그 후, 비동기 방식으로 100,000개의 주문을 생성하는 테스트를 진행했습니다. 각 주문은 랜덤으로 선택된 상품과 함께 생성되었으며, 주문 항목의 수량은 1개로 고정하고, 제품 가격과 일치하도록 설정했습니다. 또한, 랜덤한 배송 주소를 생성하여 실제 환경과 유사한 조건을 모방했습니다.

주문 생성은 Java의 ExecutorService를 사용하여 비동기로 처리하였으며, 이를 통해 동시에 여러 주문을 빠르게 처리할 수 있었습니다. 작업이 완료될 때까지 모든 비동기 작업이 완료될 때까지 기다린 후, 데이터베이스에 저장된 주문의 총 개수를 확인하였습니다.

 

 

테스트 결과, 총 100,000개의 주문이 성공적으로 생성되었으며, 이를 저장하는 데 걸린 시간은 약 22779밀리초로 확인되었습니다. 이는 기존 방식에 비해 현저히 단축된 시간이며, 비동기 처리 사용이 성능 최적화에 크게 기여한 것으로 분석됩니다