dev.Log
Spring Batch의 스케일링 본문
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 |