728x90
반응형
SMALL
Batch란, 일괄 처리라는 뜻을 가지고 있다. 데이터를 실시간으로 처리하지 않고 일괄적으로 모아서 한번에 처리하는 방식을 말한다. 만약에 이런 작업을 항시 Running중인 웹 기반으로 구현한다면 매우 비효율적일 것이다. 일괄처리를 작업하는 순간에만 애플리케이션이 Running되고 리소스를 사용해야 효율적인 프로그램이라 할 수 있다.
예를 들면, 특정 서비스의 포인트 예약 적립이나, 유효기간 만료와 같은 작업은 매일 한번에 데이터를 처리하는 방식이 주를 이룬다. 즉, 특정 시기에 특정 데이터들을 처리하면 되는 경우엔, 배치 작업과 굉장히 잘 어울린다고 할 수 있다.
다양한 데이터 처리 방식
그럼 배치 작업이 아닌 다른 방식은 무엇이 있을까? 다음 표가 대표적인 세가지 데이터 처리 방식이다.
Batch-Proceessing | Real-Time | Stream-Processing | |
데이터 처리 시간 | 정해진 시간에 일괄 처리 | 실시간으로 반응이 일어남 요청이 들어오면 즉시 처리 (웹 애플리케이션이 대표적인 예) |
준실시간 반응이 일어남 |
데이터 처리량 | 정해진 때에 정해진 양의 데이터를 한번에 처리함 | 요청을 개별적으로 처리 | Stream을 통해 데이터가 들어오면 처리하기 시작함 |
구현 특징 | 데이터를 처리할 때만 애플리케이션이 Running하도록 구현함 | Web Container에서 동작하도록 구현함 | 제 3의 도구를 사용하는 경우가 많음 (Kafka, RabbitMQ) |
데이터 처리 시 어려움 | 데이터 볼륨이 너무 큰 경우에 처리가 어려움 처리가 특정한 시간에 집중됨 |
동시에 많은 요청이 일어나는 경우에 대처가 어려움 | Stream의 input과 output의 flow를 컨트롤하기 어려움 제 3의 도구와 다수의 stream으로 인해 Fail처리가 어려움 |
- Real-Time 처리 방식은 보통의 웹 서비스, 그러니까 Spring MVC로 구현한 애플리케이션을 생각하면 된다. 사용자가 요청을 하면 그 요청에 대한 응답이 즉각적으로 일어난다.
이렇게 대표적으로 세가지 데이터 처리 방식 중에 이 카테고리에서 배워볼 방식은 Batch-Processing이다. 그리고 이를 구현하기 위해 Spring Batch를 배워볼 것이다.
Spring Batch의 특징
- 가볍고 포괄적인 배치 프레임워크
- 로깅, 추적, 트랜잭션 관리, 작업처리 통계, 재시작, 건너뛰기, 리소스 관리 등 대량의 레코드 처리에 필수적인 재사용 가능한 기능을 제공
- 최적화 파티셔닝 기술로 대용량 고성능 배치 작업 가능
- 확장성이 매우 뛰어남
Spring Batch 프레임워크는 Spring 기반 위에서 구현할 수 있기 때문에 Spring에서 제공하는 많은 것들과 같이 사용할 수 있고, 위 특징들을 누릴 수가 있어 배치 작업을 위한 최고의 프레임워크라 할 수 있다.
Spring Batch의 핵심 키워드
Spring Batch를 사용할 때 필수적으로 이해해야 할 개념들은 다음과 같다.
- Job
- Step
- Tasklet
- Chunk Processing
- ItemReader
- ItemProcessor
- ItemWriter
- Listener
이 개념들에 대해 이제 하나씩 차근차근 알아보는 시간을 가져보자!
728x90
반응형
LIST
'Spring Batch' 카테고리의 다른 글
ItemReader (1) | 2024.10.09 |
---|---|
Chunk Processing (5) | 2024.10.09 |
Tasklet (0) | 2024.10.09 |
Step (2) | 2024.10.09 |
Job (7) | 2024.10.09 |