본문 바로가기

Spring & Java

Spring Batch (정리)

반응형

해당 글은 <처음 배우는 스프링 부트 2.0> 과 기타 를 참고하여 정리한 내용 입니다. 

  • Spring Boot Batch 장점

    - 대용량 데이터 처리에 최적화

    - 효과적인 통계처리와 같은 재사용 가능한 필수 기능 지원

    - 자동화 처리

    - 예외사항과 비정상 동작에 대한 방어 기능

  • Spring Boot Batch 주의 사항

    - 복잡한 구조와 로직을 피할것

    - 데이터 무결성을 유지하는 유효성 검사 등의 방어책 필요

    - 잦은 I/O 사용 최소화를 위한 개발 필요

    - Batch 처리시 다른 프로젝트에 영향을 주는지 확인 할것

    - Spring boot batch 는 스케줄러를 제공 하지 않음

        해결책: Quartz Framework, Jenkins

        장점: Quartz 사용시 클러스터링 및 다양한 스케줄링, 실행 이력 관리가능

        비추천: 리눅스의 crontab 사용

     

  • 배치 처리 절차

    1. Read : data 읽기

    2. Processing: 데이터  처리

    3. Write: 가공 처리된 데이터 저장

     

  • 배치 처리 관련 객체들 관계

    이미지 출처 및 설명 참고

  • Job

    - Batch 처리 과정을 하나의 단위로 만들어 표현한 객체

    - 전체 배치 처리에 있어 최상단 계층에 위치함

    - 여러개의 Step 인스턴스를 포함하는 컨테이너

    - JobBuilderFactory 사용한 Job 객체 생성

            > JobBuilder: Job 생성 방식에 따라 아래 구체적인 빌더 사용

                - SimpleJobBuilder —start(step)

                - JobFlowBuilder —start(flow)

                - JobFlowBuilder — flow(step)

    - Job 생성 sample

        

    Job 생성 sample

    설명: instagram_crawler 이름을 가진 Job 을 생성할수 있는 JobBuilder 객체 인스턴스 반환하며, SimpleJobBuilder 로 Job 생성.

    - JobInstance:

        Job 이 실행될 때 하나의 Job 실행 단위

        JobInstance 는 실행 결과에 따라 JobExecution을 1개 이상 가질수 있다.

        (예: 실패시 성공할때까지의 JobInstance는  여러개의 JobExecution 을 가짐)

    - JobExecution:

        JobInstance 에 대한 한 번의 실행을 나타내는 객체

        JobExecution 인터페이스는 배치 실행 상태, 시작시간, 종료 시간, JobParam, 상태 등에 대한 정보를 포함하고 있음.

    - JobPrameers

        Job 실행시 필요한 파라미터를 Map 형식으로 저장하는 객체

        JobInstance 를 구분하는 기준으로 사용

        타입: String, Long, Date, Double

  • Step

    Job 을 처리하는 실질적인 단위, Job 과 1:M 관계

    - StepExecution

        Step 실행 시마다 StepExecution 생성

        Step 실행 상태, Step 이름, Step 시작 및 종료 시간 등 에 대한  Step 실행정보를 포함하고 있음.

  • JobRepository

    배치 처리 정보를 담고 있는 메커니즘

    JobExecution 생성, StepExecution 저장, 전체 메타데이터 저장/관리하는 역할

  • JobLauncher

    Job, JobParameters 와 함게 배치를 실행하는 인터페이스

    Job, JobParameters 가 이력에 있고, JobExecution 이 중단한 경우 동일한 JobExecution을 반환

  • ItemReader

    Step 의 대상이 되는 배치 데이터를 읽어오는 인터페이스

    Step 인터페이스의 read 메서드의  Return Type 은  Generic

  • ItemProcessor

    ItemReader 로 읽어온 배치 데이터 처리 역할

    Input/Output 타입은 Generic type 

  • ItemWriter

    배치 데이터를 저장 하는 역할

    Generic Type의 List 자료구조를 사용함 (List 의 size 는 설정한 chunk 단위)

반응형