-
1. Spring BatchIT/Spring Batch 2021. 4. 27. 15:05
이번 프로젝트에 Batch 처리 관련 업무가 있고, 마침 부서에 Bacth 처리용 서버가 없어 개발하면서 배치 관련 내용을 정리해 본다.
기술스택 : spring batch + quartz + JPA
배치 애플리케이션이란?
특정한 루틴을 가지고 일괄 데이터 처리를 하는 애플리케이션이다. user와의 상호작용이 없고, 보통 특정 루틴이 특정 시간(간격) 으로 처리한다.
Spring Batch?
Accenture 오 spring 의 공동 작업으로 탄생한 batch 작업용 프레임워크이다.
Spring의 특성을 그대로 가지고 있어 DI,AOP,추상화 등 spring의 3대 요소를 모두 사용할 수 있다.
단계를 Job과 Step 으로 구분하여 logic 처리에 집중할 수 있게 해주고, 대용량 데이터를 처리하기 위해 Chunk 지향 처리를 제공한다.
실행에 관련된 모든 정보를 DB에 저장하고 참조하는 메타데이터 모델을 제공한다.
Quartz?
Job Scheduling 라이브러리이다. 자바로 개발되어 자바 프로그램에 쉽게 통합하여 개발할 수 있다. 수십에서 수천개의 작업도 실행 가능하며, 간단한 interval 형식이나 Cron 표현식으로 복잡한 스케줄링도 지원한다. 특정 날짜 시간에 실행하는 작업도 지정할 수 있다.
Spring Batch의 장점
- 대용량 데이터 처리에 최적화되어 고성능을 발휘한다.
- 효과적인 로깅, 통계처리, 트랜잭션 관리 등을 재사용 가능한 필수 기능을 지원한다.
- 예외사항과 비정상 동작에 대한 방어 기능이 있다.
- 반복적인 작업 프로세스를 이해하면, 비즈니스 로직에 집중할 수 있다.
Spring Batch 사용시 주의사항
- 가능하면 단순화 해서 복잡한 구조와 로직을 피해야 한다.
- 데이터를 직접 사용하는 편이 빈번히 일어나므로, 데이터 무결성을 유지하는 유효성 검사 등의 방어책이 필요하다.
- 배치 처리 시스템 I/O 사용을 최소화 해야한다. 잦은 I/O로 데이터베이스 커넥션과 네트워크 비용이 커지면 성능에 영향을 줄 수 있다.
- 가능하면 한번에 데이터를 조회하여 메모리에 저장 해 두고 처리한 다음, 한번에 데이터베이스에 결과를 저장하는것이 좋다.
- 같은 DB를 사용하는 서비스들간의 영향도를 잘 파악해야 한다.
- 스케줄러를 제공하지 않아 quartz 같은 스케줄러와 함께 써야한다.
'IT > Spring Batch' 카테고리의 다른 글
4. Spring Batch Job Repository 설정 (0) 2021.04.30 3. Spring Batch Project 생성 및 설정 (0) 2021.04.29 2. Spring Batch Job (0) 2021.04.29