dev.Log

Spring Batch의 스케일링 본문

BACKEND.*

Spring Batch의 스케일링

초코푸딩 2022. 9. 29. 15:56

1. Multi-threaded Step 

-  단일 Step을 수행할 때 해당 Step 내의 각 Chunk를 별도의 여러 쓰레드에서 실행하는 방법

2. Parallel Steps

- 여러 개의 Step을 병렬로 실행하는 방법

3. Remote Chunking

- 일종의 분산환경처럼 Step 처리가 여러 프로세스로 분할되어 외부의 다른 서버로 전송되어 처리하는 방식

ex ) A 서버에서 데이터를 읽고, B서버에서 A서버에서 보낸 데이터를 저장... 이방법은 어느 서버에서 어떤 데이터를 처리하고 있는지 메타 데이터 관리를 하지 않기떄문에 메시지 유실이 되지않도록 관리해야한다. (AWS SQS, Kafka등 메시지큐사용)

4. 파티셔닝

- 매니저(마스터)를 이용해 데이터를 더 작은 Chunk(파티션)으로 나눈 다음 파티션에서 슬레이브가 독립적으로 작동하는 방식

- 슬레이브가 로컬과 원격을 모두 지원하여 확장된 JVM 환경에서의 실행을 할 수 있음

- 원격 슬레이브와 통신하기 위해 다양한 통신 메커니즘을 지원

5. AsyncItemProcessor / AsyncItemWriter

- 별개의 쓰레드를 통해 ItemProcessor와 ItemWriter를 처리하는 방식

- Spring-batch-integration 의존성에서 지원

 

completablefuture  @Async 를 기존 Spring Batch에 사용하기 위해서는 일정 부분 혹은 아주 많은 부분의 코드 변경이 필수인 반면, Spring Batch의 Scalling 기능들은 기존 코드 변경이 거의 없다. 

 

 

'BACKEND.*' 카테고리의 다른 글

데이터베이스 Lock  (0) 2022.10.06
인증과 인가  (0) 2022.09.30
Spring Batch  (1) 2022.09.29
Kafka Producer  (0) 2022.09.29
Kafka  (0) 2022.09.28
Comments