본문 바로가기
백엔드/Spring Batch

Spring Batch 아키텍처

by 임지혁코딩 2024. 1. 14.

0. spring batch 구조를 보자 

 

출처 :스프링 공식 사이트

JOBLAUNCER는 COMPONENT . (JOB을 실행시킨다) 

 

JOB은 실제 진행하는 배치 작업을 의미한다. 

 

STEP은 배치 작업의 단계 . 1개의 JOB에, 여러가지 STEP 단계를 지닐 수 있다.

테이블을 읽는 ITEM READER -> ITEMPROCESSOR -> ITEMWRITER 등의 구성을 가질 수 있다. 

 

사용자의 코드와 구성인 application -> job등을 포함하는 core -> 외부와 작용하는 infrastrcture layer (step)

(3 Layer)

 

1. JOB (일)

전체 배치 과정을 캡슐화 한 것.  (내부 과정과 내부 CLASS등을 가린다) 

주로 CLASS 형태로 JOB을 구현하고. -> 내부 INSTACNE나 EXECUTION 등을 정의한다고 생각. 

@BEan으로 configuration을 활용하여 관리할 수 있다. 

 

2. Step 

작업 처리의 단위

 

*Chunk 기반으로 하나의 트랜젝션으로 -> read,processor write를 모두 처리함에 주의하자. 

 

Chunksize =  1 transaction에서 쓸 아이템 갯수 (총 몇개 읽을거야? ) 

commitinterval = 1번에 reader가 읽는 갯수 (reader가 한번에 몇개를 읽을거야 ? )

당연히 commitinterval >= chunksize여야하고, 만약에 반대로 < 인 경우에는 나머지 읽은 애들을 버려버린다. 

 

 3. Tasklet?data를 읽고, 쓰고 , 처리되는 과정이  한번에 일어난다.ex) stepBuilderFactory.get("step1").tasklet(myTasklet()).build(); -> 한번에 다 진행 가능. *read, write 등은 설정할 수 없다. 

 

4. schema 구조일반 erd 형태가 아닌, 메타데이터를 저장하는 schema. ex) job의 execution, 설정 일정 등을 저장한다.

 

- 초기의 설정이 필요하고, 조회만 진행한다.  (심지어는 항상 조회하지도 않는다)  

 

 

'백엔드 > Spring Batch' 카테고리의 다른 글

Multi Thread로 처리하기  (0) 2024.01.15
Spring Batch Exception  (0) 2024.01.15
Spring Batch Test  (0) 2024.01.15
Spring Batch 활용  (0) 2024.01.14
배치 프로그램이란? / Spring Batch를 쓰는 이유  (0) 2024.01.14