springbatch

hany·2023년 3월 27일
0

batch

배치란 자동으로 정해놓은 시간에 맞춰 지정한 단계에 맞게 일련의 과정이 처리되는 프로그램이다.

spring batch

스프링 프레임워크 구성에 맞춰 배치 프로그램 개발을 제공하는 프레임워크이다. 로깅, 병렬처리, 트랜잭션 관리, 대용량 데이터 처리 지원 또한 해주며 Spring 프레임워크의 3대 요소인 DI, AOP, 서비스 추상화 등을 모두 사용할 수 있다.

spring batch architecture

jobRepository

다양한 배치 수행과 관련된 수치 데이터와 Job의 상태를 관리한다.

job

배치 처리 과정을 하나의 단위로 만들어 표현한 객체이고, 여러 Step 인스턴스를 포함하는 컨테이너다.

jobLauncher

Job을 실행시키며 Job의 재실행 가능 여부 검증, 파라미터 유효성 검증 등을 수행한다.

step

각 step은 job을 구성하는 독립된 작업의 단위로 Tasklet, Chunk 기반으로 되어있다.

Job을 선언하고 해당 Job을 수행하기 위한 Step을 정의한다.

JOB: "매주 월요일마다 운동을 하고 온다."
Step1:"헬스장에 간다"
Step2:"운동을 한다"
Step3:"집으로 간다"

Tasklet Step

주로 간단한 작업을 처리할 때 쓰는 인터페이스로 하나의 트랜잭션으로 작업을 모두 처리한다.

Chunk Step

chunk

  • ItemReader
    - Batch 작업에 사용할 Item 을 읽어오는 인터페이스
    - 상황에 맞는 다양한 구현체가 존재한다.
    - Chunk 단위로 작업하기 위해서는 기본적으로 페이징해서 Item 을 읽어와야 하기 때문에 JdbcPagingItemReader 같은 ItemReader 를 사용한다.
  • ItemProcessor
    - Reader 에서 읽어온 Item 의 데이터로 작업을 처리하는 인터페이스
    - 대표적으로 ItemProcessor<I, O> 같은 인터페이스로 I 타입의 객체를 받아 O 타입의 객체로 반환 처리한다.

  • ItemWriter
    - Chunk Size 단위로 작업이 처리된다.

Paging Size 와 Chunk Size

  • Chunk 단위로 작업하기 위해서는 Item을 읽어올 때 Paging 처리해서 읽어와야 한다.

배치 테이블

  • BATCH_JOB_INSTANCE

Job이 실행되며 생성되는 최상위 계층의 테이블
job_name과 job_key를 기준으로 하나의 row가 생성되며, 같은 job_name과 job_key가 저장될 수 없다.
job_key는 BATCH_JOB_EXECUTION_PARAMS에 저장되는 Parameter를 나열해 암호화해 저장

  • BATCH_JOB_EXECUTION

Job이 실행되는 동안 시작/종료 시간, job 상태 등을 관리

  • BATCH_JOB_EXECUTION_PARAMS

Job을 실행하기 위해 주입된 parameter 정보 저장

  • BATCH_JOB_EXECUTION_CONTEXT

Job이 실행되며 공유해야할 데이터를 직렬화해 저장

  • BATCH_STEP_EXECUTION

Step이 실행되는 동안 필요한 데이터 또는 실행된 결과 저장

  • BATCH_STEP_EXECUTION_CONTEXT

Step이 실행되며 공유해야할 데이터를 직렬화해 저장

https://velog.io/@jojogreen91/Spring-Batch-%EC%9D%98-%EA%B8%B0%EB%B3%B8

https://velog.io/@ckstn0777/Spring-Batch-api-reader-%EB%A7%8C%EB%93%A4%EA%B8%B0-1%ED%8E%B8-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%9A%94%EC%B2%AD-%EB%B0%8F-%ED%8C%8C%EC%8B%B1%ED%95%98%EA%B8%B0

https://deeplify.dev/back-end/spring/batch-architecture-and-components

https://hesh1232.tistory.com/184

https://velog.io/@ckstn0777/Spring-Batch-api-reader-%EB%A7%8C%EB%93%A4%EA%B8%B0-1%ED%8E%B8-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%9A%94%EC%B2%AD-%EB%B0%8F-%ED%8C%8C%EC%8B%B1%ED%95%98%EA%B8%B0

https://gngsn.tistory.com/178?category=942983

https://ahndy84.tistory.com/19

https://deeplify.dev/back-end/spring/batch-architecture-and-components

profile
number1hany

0개의 댓글

관련 채용 정보