Darren's Devlog

[스프링배치] 스프링배치 소개 본문

Spring Boot

[스프링배치] 스프링배치 소개

Darren Gwon 2023. 5. 20. 00:12
반응형

안녕하세요.

오늘은 스프링배치에 대한 소개라는 주제로 포스팅해 보겠습니다.

 

최근에 저는 실무에서 스프링배치 관련 유지보수 업무를 맡게 되었습니다.

업무하다보니 단순한 유지보수 작업을 넘어, 프레임워크에 대한 이해와 성장에 대한 도전의식이 생기게 되었습니다.

실제 업무를 통해 스프링 배치에 대한 지식과 경험을 쌓으며, 단순히 코드를 고치는 것 이상의 가치를 찾고 싶었습니다.

뿐만 아니라, 직접 배치 프로그램을 설계하고 구현하는 것을 목표로 스프링배치를 주제로 스터디를 진행하게 되었습니다.

이번 스터디를 통해 실무에서의 역량을 더욱 향상시키며, 더 나은 개발자로 성장하고자 하는 목표를 가지고 시리즈로 이어나갈 계획입니다.

 

 

스프링배치의 등장 배경

 

스프링 배치는 Java 진영에서 대용량의 데이터를 일괄 처리를 목적으로 사용되는 오픈 소스 프레임워크입니다.

스프링배치가 등장하기 전까지는 Java 진영의 배치 아키텍처 프레임워크가 관심과 결과물이 부족한 상황이었습니다.

그렇게 자연스럽게 자신들만의 배치 솔루션을 개발해 사용하는 추세가 형성되었습니다.

 

 

 

이런 문제를 해결하기 위해 Accenture와 SpringSource가 협력하여 지금의 스프링배치가 탄생하게 됩니다.

Accenture는 자사가 보유한 배치 아키텍처 구축에 대한 경험과 기술 기반의 배치 아키텍처를 기증하였고

SpringSource와 협력하여 현재의 enterprise-level의 배치 프레임워크가 탄생할 수 있도록 기여하였습니다.

 

 

Spring Batch is not a scheduling framework.

 

공식문서에 "스프링 배치는 스케쥴링 프레임워크가 아니다"라고 언급하고 있습니다.

대용량 데이터 처리에 특화된 프레임워크라는 것을 강조하는 것으로 다음과 같은 특징을 가지고 있습니다.

 

  1. 확장성:
    분산 환경에서 작업을 병렬로 실행하거나 여러 서버에 배포하여 대용량 데이터의 처리 성능을 향상
  2. 모니터링의 용이성:
    작업의 진행 상황을 모니터링하고, 실패한 작업을 재시작하거나 건너뛸 수 있는 기능을 제공
  3. 트랜잭션 관리:
    데이터 처리 중 예외가 발생하면 롤백하고, 작업 단위 내에서 데이터 일관성을 유지하여 안정적인 데이터 처리를 보장
  4. 재시작 및 건너뛰기:
    작업을 중지한 후에도 작업을 재개하거나 이전 작업을 건너뛸 수 있는 기능 제공하여 작업의 유연성과 오류 처리를 개선
  5. 장애 복구와 관리:
    모든 작업에 대한 로그를 기록하므로 작업이 실패한 경우에도 적절한 조치를 취하고,
    예기치 않은 상황에서의 대응력을 향상

 

 

메타데이터 스키마 제공

 

스프링배치에서 처리한 모든 프로세스의 메타데이터를 저장하는 스키마를 미리 제공합니다.

덕분에 앞서 언급한 것처럼 메타데이터를 기반으로 모니터링 능력이 향상되고 자연스럽게 에러에 대한 대응력도 향상되게 됩니다.

나아가, 실패한 작업에 대해 효율적인 repeat, retry, skip 처리가 가능해집니다.

메타데이터 스키마는 다음에 더 자세히 살펴볼 예정입니다.

 

 

스프링배치의 구성

 

스프링배치를 구성하는 각 Job, Step, Tasklet 도메인에 대한 이해가 중요합니다.

 

Job:

배치 프로그램의 업무 목적 자체를 의미하는 도메인입니다.

'매출 통계', '데이터 이관', '다량 이메일 일괄 전송'등의 예시가 있습니다.

 

Step:

배치작업(Job)을 작은 단계로 분리하여 정의하고 실행을 관리하는 도메인입니다.

배치 처리의 실행 흐름을 관리하고, 각 단계의 성공 여부에 따라 다음 단계를 결정합니다.

 

Tasklet:

Step의 실행 단위로서, Step에서 수행되는 실제 작업을 정의하는 도메인입니다.

개발자가 작성한 일련의 로직을 포함하고 있으며 Tasklet방식과 Chunk방식이 있습니다.

 

각 도메인에 대한 자세한 내용도 별도로 다루도록 하겠습니다.

 

 

요약

 

  1. Java 진영의 대용량 데이터 일괄처리 목적의 프레임워크
  2. Accenture와 SpringSource의 기여로 탄생
  3. 대용량 데이터 처리를 위한 강력한 배치 아키텍처
  4. 병렬처리, 트랜잭션 관리, 효율적인 재시작 및 스킵 기능으로 배치 처리의 신뢰성 제공, 장애대응
  5. 메타데이터 스키마 제공
  6. Job, Step, Tasklet으로 구성

 

 

스프링배치는 개발자가 오직 비즈니스 로직에만 집중할 수 있도록 도와주는

대용량 데이터 처리에 특화된 프레임워크라고 결론 지을 수 있습니다.

 

다음에는 각 도메인에 대한 자세한 설명과 실행 흐름에 대해 살펴보도록 하겠습니다.

 

본 게시글은 정수원님의 스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch 강의를 참고하여 정리하였습니다.

반응형

'Spring Boot' 카테고리의 다른 글

스프링의 등장 배경과 스프링부트와의 차이는?  (0) 2023.02.26
Comments