WEB/Spring

[Spring]스프링 배치(Batch)란?

MoonSta 2023. 2. 20. 17:34

📌스프링 배치(Batch)란?

스프링 배치란 대규모 시스템의 운영에 있어 엄청난 양의 데이터를 일괄처리할 수 있도록 도와주는 프레임워크이다. 이름 그대로 스프링 배치(Batch)이기 때문에 Spring과 같은 특성을 띤다. 일별, 월별로 대용량의 데이터를 처리해야 하는 규모 있는 엔터프라이즈 시스템을 운영하기 위해 스프링 배치를 자주 사용한다. 

 

 

📌스프링 배치(Batch)의 특징

  • 배치는 즉, 일괄처리라는 뜻을 가지고 있기 때문에 지정한 스케줄러에 의해 정해진 시간에 맞춰 수행한다. 
  • 로킹/추적, 트랜잭션 관리, 통계 등 처리해야 할 대용량의 데이터의 처리를 위해 필요한 기능을 제공한다.
  • 배치 수행 도 중, 예기치 못한 에러 발생 시 롤백 없이, 그다음 일을 수행한다. 
  • 수행에 성공한 Batch는 중복으로 또 다시 실행 시 예외(Exception)를 발생시킨다.

 

📌스프링 배치(Batch) Application - 조건

  • 어느 시점에 대용량의 데이터를 처리할 수 있어야 한다.
  • 배치 프로그램은 하드웨어 적인 문제를 제외하고, 자동화가 되어야 한다.
  • 배치 업무를 수행하는 동안에는 다른 애플리케이션의 수행을 방해하지 않아야 한다. 

 

🍎위와 같은 조건들을 만족하는 배치(Batch) 프로그램을 만들어야 한다. 

 

 

📌스프링 배치(Batch) 실사용 예시 

 실제 필자는 대규모의 엔터프라이즈 시스템을 개발하는 도 중, 배치(batch) 프로그램을 처음 접했다. 커머스 시스템이었기 때문에 하루에 처리해야 하는 데이터가 수십만 건이었고, 즉각적으로 데이터를 집계하기엔 시간이 많이 소요되고 성능이 저하되는 문제가 발생하였다. 이러한 상황에서 Spring Batch를 활용하여 정해진 시간에 일괄 처리가 가능한 배치 프로그램을 개발하였다.

 

 

📌스프링 배치(Batch)의 구성 요소 

출처 : https://dejavuhyo.github.io/posts/spring-batch/

 

 

📌JobLouncher

수행해야 하는 업무인 Job과 Parameter를 받아 수행시키는 역할

 

📌Job - Parameter

JobLouncher에 의해 수행되는 도 중 Job을 식별하거나, 참조하는 데이터로 사용되는 역할

 

📌JobRepository

수행되는 업무에 대한 정보를 갖고 있는 저장소의 역할, 수행 횟수, 실행 결과와 같은 모든 메타 데이터가 저장되어 있음

 

📌Step

배치의 Job을 구성하는 독립적인 단계, 보통 Job은 하나 이상의 step으로 구성되어 있음 ( 개발자에 의해 정의되는 부분)

 

📌Tasklet

하나의 메서드로 구성되어 있는 인터페이스, 이 메서드를 통해 실패를 알려주고, 예외를 시킬 수 있음