👉 Spring Batch란?
- 일괄 처리 작업을 위한 프레임워크로, 일괄 처리 작업을 쉽게 구현할 수 있도록 도와주는 도구
- 일괄 처리란, 사용자의 개입 없이 대량의 데이터를 자동으로 처리하는 것
- 예를 들면, 매일 밤 자동으로 수천 개의 은행 거래를 처리하거나, 웹사이트의 로그 데이터를 분석하여 통계를 생성하는 것
- 작업을 여러 단계로 나누고, 각 단계를 순서대로 실행하며, 필요한 경우 데이터를 읽고 쓰는 기능을 제공
- 대량의 데이터를 처리하는 데 사용되는 Spring 프레임워크의 확장 모듈
- 대용량 데이터 처리, 통계 정보 수집, 데이터 마이그레이션 등의 작업에 주로 사용
👉 Spring Batch가 필요한 이유
- 일괄 처리 작업은 대량의 데이터를 처리해야 하고, 오랜 시간이 걸릴 수 있으며, 중간에 오류가 발생하면 처음부터 다시 시작해야 할 수도 있음
- 이러한 작업을 수동으로 처리하는 것은 매우 비효율적이고 오류가 발생하기 쉬움
- 이러한 문제를 해결하기 위해 만들어진 Spring Batch는 대량의 데이터를 효율적으로 처리할 수 있으며, 오류가 발생하면 해당 단계부터 다시 시작할 수 있음
- 작업을 정기적으로 자동으로 실행할 수 있도록 스케줄링 기능도 제공
👉 Spring Batch는 어떤 식으로 사용할까?
- 먼저, Job을 정의해서 사용
- Job은 일괄 처리 작업을 나타내며, 하나 이상의 Step으로 구성
- Step은 작업의 개별 단계를 나타내며, 데이터를 읽고, 처리하고, 쓰는 작업을 수행
- 사용 예시
- CSV 파일에서 데이터를 읽어서 데이터베이스에 저장하는 Job을 만들 수 있음
- 이 Job은 두 개의 Step으로 구성될 수 있음
- 첫 번째 Step에서는 CSV 파일에서 데이터를 읽고, 두 번째 Step에서는 읽은 데이터를 데이터베이스에 저장
- Spring Batch는 이러한 Job을 실행하고 관리하는 기능을 제공
- 예를 들어, Job을 정기적으로 실행하거나, 오류가 발생하면 해당 Step부터 다시 시작하는 등의 기능을 제공
👉 Spring Batch 기능
- Chunk 기반 처리
- Spring Batch는 데이터를 작은 덩어리, 즉 'chunk'로 분할하여 처리
- 이는 메모리 효율성을 높이고, 실패한 작업을 다시 시작할 때 유용
- 트랜잭션 관리
- 각 chunk의 처리를 하나의 트랜잭션으로 관리
- 이는 데이터 일관성을 보장하며, 실패한 작업을 쉽게 다시 시작할 수 있게 함
- Job 처리와 관리
- Job이라는 개념을 사용하여 일괄 처리 작업을 정의하고 관리
- Job은 여러 Step으로 구성되며, 각 Step은 독립적인 작업 단위
- 스케줄링
- Quartz, Tivoli, Control-M 등의 스케줄러와 통합하여 작업을 정기적으로 실행할 수 있음
- 오류 처리와 로깅
- 오류 처리와 로깅 기능을 제공하여, 작업 중 발생하는 문제를 쉽게 추적하고 해결할 수 있음
- 재시작과 재시도
- 실패한 작업을 자동으로 재시작하거나 재시도하는 기능을 제공
- 병렬 처리
- 멀티 쓰레드 환경에서 작업을 병렬로 처리하는 기능을 제공
- 이는 대량의 데이터를 빠르게 처리하는 데 유용
👉 알게된 점 및 느낀 점
✔️ batch size 설정에 대해 알아보다가 Spring Batch를 알게 되었는데, 둘은 전혀 다르다는 것을 뒤늦게 깨달았다.
✔️ 그래도 Spring Batch라는 것이 있다는 것을 알게 되어 필요할 때 찾아볼 수 있게 되었다.