[Spring Batch] Spring Batch 간단하게 알아보기

chrkb1569·2024년 2월 21일
0

Spring

목록 보기
8/11
post-thumbnail

최근 들어서 개인적으로 프로젝트를 진행하고 있습니다.
외부에서 제공하는 API를 활용하여 데이터를 가공하고, 이에 따른 정보를 사용자에게 제공해주는 서비스를 만들고 있는데, 대략적으로 데이터의 수가 12만 건 정도 되는 것 같습니다.

이러한 데이터를 대상으로 통계를 낸 뒤, 사용자에게 제공하는 것이 제가 만들고 싶은 서비스의 주요 기능이 될텐데, 될까? 라는 생각이 먼저 들더라구요 ㅋㅋ

대용량 데이터인지 아닌지는 잘 모르겠지만 이제까지 다뤄왔던 데이터의 규모와는 비교가 안될만큼 크고, 다른 데이터와 연관 관계를 맺고 있을 것이라고 생각하면 쿼리문이 기하급수적으로 늘어날 것이라생각하면, 좀 걱정이 되었습니다.

그래서 이러한 대용량 데이터를 야무지게 다룰 수 있는 방법이 뭐가 있을까 알아보다가 Spring Batch에 대해 알게되었습니다.

그래서 오늘은 Spring Batch가 무엇인지 간단하게 알아보는 시간을 갖도록 하겠습니다.

Spring Batch

[Reference : https://spring.io/batch]

Spring 공식 문서에 있는 Batch에 대한 설명입니다.
중요하다고 생각되는 부분만을 해석하면, 다음과 같습니다.

대량의 데이터를 효과적으로 처리할 수 있는 배치 처리 기능은 다방면에서 효과적입니다.
스프링 배치을 통한 업계 표준 처리 패턴의 구현은 사용자가
JVM에서 매우 강력한 배치 작업을 구현할 수 있도록 도와줍니다.

간단하게 설명하자면, 대량의 데이터를 효과적으로 처리할 수 있는 배치 작업을 자바 진형에서 구현할 수 있게끔 도와주는 프레임워크로 생각할 수 있을 것 같습니다.

그런데 배치 작업이 정확히 어떠한 작업을 의미하길래 대용량 데이터를 효과적으로 처리할 수 있다 말하고 있는 것일까요?

배치 작업?

사실 왼쪽 하단에 배치 작업이란 무엇인가에 대한 답변이 있긴합니다.

배치 작업은 외부 상호작용 혹은 인터럽트가 필요하지 않은 방식으로
유한한 데이터를 처리하는 방식입니다.

음... 저는 이러한 답변이 잘 와닿지가 않더라구요

그래서 배치 작업이라는 것이 정확히 무엇인지 좀 알아보다가 다음의 글을 참고하였습니다.

https://dataonair.or.kr/db-tech-reference/d-guide/sql/?mod=document&uid=374

글의 내용을 간단하게 정리하자면, 배치 작업은 일련의 작업들을 하나로 모아서 한 번에 처리하는 작업이며, 우리는 배치 프로그램을 통해서 이러한 작업들을 사용자가 요청하지 않아도 일정 주기마다 설정한대로 동작하도록 만들 수 있다 정리할 수 있을 것 같습니다.

Spring Batch 장점

그럼 그 이외에는 어떠한 장점들을 가지고 있을까요?

[Reference : https://docs.spring.io/spring-batch/reference/spring-batch-intro.html]

Spring Batch 공식 문서 가장 첫 부분에 기입된 내용으로, 앞에서 설명했던 장점들과 더불어 다음과 같은 장점들을 가지고 있습니다.

  • 트랜잭션 지원
  • 로깅 및 추적
  • 작업 다시 시작 및 생략
  • 작업 처리 통계
  • 프레임워크를 통한 확장성

Architecture

[Reference : https://docs.spring.io/spring-batch/reference/spring-batch-architecture.html]

Spring Batch는 다음처럼 Application, Batch Core, Batch Infrastructure로 구성된 계층 구조를 띄고 있습니다.

Application

Spring Batch를 사용하는 개발자가 작성한 모든 배치 작업 및 코드들을 포함하는 계층입니다. Core 모듈의 클래스를 사용하고, Infrastructure 모듈의 인터페이스를 구현해서 개발하게 됩니다.

Batch Core

배치 작업을 시작하고 제어하는데에 필요한 코어 런타임 클래스를 포함하는 계층입니다. Job을 실행, 모니터링, 관리하는 API로 구성되어 있으며, Job,Step, JobLaucher 등의 클래스가 여기에 소속됩니다.

Batch Infrastructure

Spring Batch 실행 흐름의 틀이 되는 코드들을 제공하는 계층으로, ItemReader, ItemWriter 등의 클래스가 이 계층에 속합니다.

Reference


https://spring.io/batch
https://docs.spring.io/spring-batch/reference/spring-batch-intro.html
https://dataonair.or.kr/db-tech-reference/d-guide/sql/?mod=document&uid=374

0개의 댓글