목록 보기
ParallelStream을 활용한 병렬 처리로 배치 성능 개선하기
백엔드

ParallelStream을 활용한 병렬 처리로 배치 성능 개선하기

TechKi Blog
TechKi Blog
2024년 8월 22일

두줄요약

대용량 데이터를 레디스에 적재하는 배치에서 parallelStream과 파이프라인을 적용해 성능을 개선했습니다. 실행 시간은 6~7분에서 30초 수준으로 줄었습니다.

문제 상황

  • 대용량 테이블 데이터를 레디스에 적재하는 배치에서 처리 시간이 길었던 상황
  • reader, processor, writer 구조의 기본 배치였고 병렬화 여지가 있는 구간 탐색 필요

해결 방법

  • parallelStream으로 항목별 Map 구성과 Redis 삽입 처리 병렬화
  • ForkJoinPool을 별도로 생성해 병렬 실행 스레드 수 제어
  • Redis는 executePipelined로 묶어 네트워크 왕복 감소

성능/운영 포인트

  • 병렬 처리와 파이프라인 적용 후 실행 시간이 6~7분에서 30초 수준으로 단축
  • parallelStream의 공통 풀 사용, 작업 특성, 스레드 수 제한 영향 고려 필요
  • 배치 병렬화와 Redis 파이프라인 조합의 효과 확인

다음 읽기

#Spring Batch 주제를 다룬 다른 회사 글

수억 건의 데이터, 맛있게 쪼개 먹는 방법 (with. Partitioning)

Spring Batch Partitioning, Cursor Reader, Bulk Operations로 수억 건 데이터 처리의 OOM 문제를 해결했습니다. 병렬 분할과 스트리밍 읽기, 일괄 쓰기 최적화로 성능과 안정성을 함께 높였습니다.

카카오페이
카카오페이
백엔드

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...