백엔드 개발하며 작성한/Spring

[Spring Batch] 1. 스프링 배치 공부 순서와 간단 소개

뭉지(moonz) 2023. 6. 11. 22:28
반응형

기록 순서

1. 스프링 배치 소개 (탄생 배경, 적용 가능한 task, 아키텍처)   현재 글

2. 스프링 배치 시작 (스프링 배치 플젝 + 의존성 구성, 간단한 실습_job 구성+실행)

3. 스프링 배치 도메인 이해 (job, step, 등 각 도메인에 대한 이해_특징,기능,정의) 🌟🌟🌟

4. 스프링 배치 실행 (완성된 job 실행, 도메인 간 상호관계 및 흐름 파악)

<< 기초이자 필수 내용!

5. 스프링 배치 청크 프로세스 (1. 이론),(2. 구성 모듈들 파악) : 대용량 데이터 처리 시 필요한 개념. (청크 단위로 데이터 처리) 

6. 스프링 배치 반복 및 오류 제어 : 반복과 관련된 기능을 어떻게 활용할 수 있을지. 예외 발생 시 적절하게 처리하는 방법

7. 스프링 배치 멀티 스레드 프로세싱 : 일반적으로는 단일 스레드가 job들을 처리할 수 있지만, 용량/시간이 많이 소요되는 작업을 처리할 때는 병렬적 처리가 필요.

8. 스프링 배치 리스너 : 주체자에 의해 이벤트가 발생하면, 이벤트 발생 시점에 이를 받고자 하는 구독자가 존재. 이벤트 발생 소식을 들으면 구독자가 특정 작업을 할 수 있게 된다. job 실행 전, 후에 리스너에게 이벤트 전달하면 특정한 비즈니스 로직을 수행한다.

9. 스프링 배치 테스트 및 운영 :

  • 테스트 : TDD 환경 구성하여 테스트 실행시킨다.
  • 운영 : job 실행 중 배치 중단하거나 재시작할 수 있는 api를 제공.

10. 번외편 : 스프링 배치 + 스케줄러 연동. 스케줄러 통해 예약된 특정 시각에 스프링 배치가 돌도록 한다. (스프링 배치에서는 스케줄러 기능이 없음.)


1. 스프링 배치 탄생 배경

자바 표준 기술들(I/O, Network, Thread, JDBC 등)의 배치 단위 처리 필요성이 대두되면서 등장하였다.

2. 배치 핵심 패턴

  • Read : DB, File, Queue에서 다량의 데이터 조회
  • Process : 특정 방법으로 데이터 가공
  • Write : 수정된 양식으로 다시 저장

*ETL(Extract, Transform, Load)과 유사한 작업!

3. 배치 시나리오

  • 다량의 데이터 단위로 커밋하지 않는다. 👉 배치 프로세스를 주기적으로 커밋함.
  • 동시 다발적인 Job의 배치처리, 대용량 병렬 처리(Multi Trhead로 job 처리)
  • 실패 후 수동 또는 스케줄링에 의한 재시작
  • 의존관계가 있는 여러 step을 순차적으로 처리
  • 조건적 Flow 구성 -> 체계적&유연한 배치 모델 구성

4. 아키텍처

Application
스프링 배치 프레임웍을 통해 개발자가 만든 배치 Job과 커스텀 코드 포함되어 있다.

Batch Core

  • Job을 실행, 모니터링, 관리하는 API로 구성
  • JobLauncher, Job, Step, Flow 등

Batch Infrastructure

  • Application, Batch Core 모두 여기 위에서 빌드한다.
  • Job 실행의 흐름과 처리를 위한 틀 제공 (배치 실행 관련 설정)
  • 구성&설정을 위한 클래스들이 구성
  • Reader, Processor, Writer, Skip, Retry 등
반응형