issues
search
IMWoo94
/
spring-batch-calculate
배치 프로그램에 대해서 알아보고, Spring Batch 를 사용해 정산 시스템을 구현
0
stars
0
forks
source link
[ Spring Batch ] > Spring Batch 성능 개선
#12
Open
IMWoo94
opened
5 months ago
IMWoo94
commented
5 months ago
Spring Batch 적용하기
Spring Batch 성능개선
Spring Batch 의 확장을 통해서 성능을 개선해보자.
물론 이러한 확장에 비례하여 성능이 꼭 우수해지는 것은 아니다.
확장을 통한 성능 개선은 애플리케이션의 환경과 팀원간의 의견이 필수적이다.
Multi-threaded Step
일반적인 Step 의 처리 방식을 동기 방식에서 비동기 방식으로 변경하여 Multi 처리가 가능하도록 개선
이를 통해서 Step 을 진행 하는 속도에 향상을 기대할 수 있다.
단, Multi Thread 환경임으로 레이스 컨디션과 같은 이슈를 조심해야 하며 Thread-safe 하게 구현해야 한다.
반영
Step 의 taskExector 를 비동기 실행기로 변경을 해주면 간단하게 구현이 가능하다.
Parallel Steps
모든 Step 에 대해서 병렬이 아닌 특정 Step 에서만 병렬 처리를 하기 위한 경우에 사용되는 방식이다.
Flow 안에 주어진 Step 으로 묶어서 진행하고 이후 처리 로직에 따라 Step 을 추가 및 제어 할 수 있다.
Partitioning
매니저 ( 마스터 ) 를 이용해 데이터를 더 작은 Chunk (파티션) 으로 나눈 다음 파티션에서 슬레이브가 독립적으로 작동하는 방식
컨셉에서는 멀티쓰레드 Step , 파티셔닝 큰 차이는 없어 보입니다.
멀티 쓰레드 Step 은 단일 Step 을 Chunk 단위로 쓰레드를 생성해 분할 처리를 합니다.
어떤 쓰레드에서 어떤 데이터를 처리할지 세밀하게 조절이 불가능
Step 의 ItemReader, ItemWriter 가 Thread-safe 유무가 중요하다.
파티셔닝은 독립적인 Step 을 구성하고, 그에 따른 별도의 StepExecution 환경을 가지게 하여 처리 합니다.
멀티쓰레드로 작동하지만, ItemReader, ItemWriter 의 Thread-safe 유무가 중요하지 않습니다.
이러한 이유는 멀티 쓰레드 이지만, 각각의 Thread 마다 step 을 구성하는 것을 독립적이기 때문 입니다.
IMWoo94
commented
5 months ago
완료
Spring Batch 적용하기
Spring Batch 성능개선
물론 이러한 확장에 비례하여 성능이 꼭 우수해지는 것은 아니다.
확장을 통한 성능 개선은 애플리케이션의 환경과 팀원간의 의견이 필수적이다.
Multi-threaded Step
Parallel Steps
Partitioning