배치
사람과 상호작용이 없는 애플리케이션
시간이 얼마나 걸리든 해당 시스템에서 완결이 난다.
Web vs Batch
Web: 실시간 처리 / 상대적인 속도 / QA 용이성
Batch: 후속 처리 / 절대적인 속도 / QA 복잡성
배치는 QA분들이 테스트하기 힘들기 때문에 반드시 테스트 코드를 작성 해야한다.
Spring Batch와 Quartz
Quartz: 스케쥴링 프레임워크. ex: 매 시간 / 마지막 주 금요일에 실행
Quartz는 Spring Batch의 보안제 역할이지 대체제가 아니다.
배치 애플리케이션이 필요한 상황
- 일정 주기로 실행되어야 할 때
- 실시간 처리가 어려운 대량의 데이터를 처리 할 때
대용량 데이터 처리가 절대적인 요구 사항
스프링 배치
- 모든 데이터를 메모리에 쌓지 않는 방식이 기본
- Paging, Cursor, pageSize, chunkSize만큼 commit
Job, Step, Tasklet
- Job -> Step -> Tasklet, Chunk
- Cunk방식의 사실 Tasklet의 구현체 (ChunkOrientedTasklet.java)
jobParameter
jobParameter는 Long, Date등 아주 기본적인 자바 타입만 지원하기 때문에
type검증, 타입 변환이 귀찮음
@Value("jobParameters[createDate]")
public void setCreateDate(String createDate) {
// ..
}
위와 같이 처리가능
@JobScope, @StepScope
애플리케이션 실행 후에도 동적으로 (reader, processor, writer) bean 생성이 가능하다.
- JobScope: job이 실행될때 bean생성
- StepScope: Step이 실행될때 bean생성
관리 도구들
- Cron
- Spring MVC + API Call
- Spring Batch Admin
- Quartz + Admin
- CI Tools (Jenkins, Teamcity ..)
Jenkins와 Spring Batch
(Jenkins에서 Spring Batch 실행, 운영하는 방법 설명)
이후는 렌즈때문에 눈이 아파서 정리를 못했습니다.
'개발 > Java,Spring' 카테고리의 다른 글
Spring Boot 2.x에서 3.x로 업데이트 (0) | 2023.04.04 |
---|---|
Spring boot 2.4.5 @AuthenticationPrincipal occurs null (1) | 2021.04.30 |
SpringSecurity에서 anonymous() (2) | 2019.08.15 |
Spring Boot 2.x, 3.x Security에서 hasPermission 사용 (0) | 2019.08.11 |
SpringBoot Batch에서 JobParameter로 받을 수 있는 Type (4) | 2019.05.17 |