ABOUT ME

포소니는 나의 하루이자 누군가의 공감입니다. 조용히 머물러도 좋고, 가볍게 이야기를 남겨도 좋아요. 당신의 일상도, 이곳에 스며들길 바랍니다.

Today
Yesterday
Total
  • Spring Batch (정리)
    Tech/SpringBoot 2019. 4. 6. 14:25
    반응형

    해당 글은 <처음 배우는 스프링 부트 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 단위)

    반응형
Designed by Tistory.