Skip to content

Commit caff4e7

Browse files
committed
Add draft
1 parent a8c66e7 commit caff4e7

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

_drafts/Spring_Batch.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
layout: post
3+
title: "Spring Batch"
4+
category: dev
5+
tags:
6+
- Spring Batch
7+
- Memo
8+
date: 2015-06-17 11:04:48
9+
---
10+
11+
[스프링 배치(Spring Batch)](http://projects.spring.io/spring-batch/)는 예전부터 들어서 알고 있었지만 여지껏 못 보다 이제야 좀 보고 있다.
12+
13+
배치([batch][batch])는 묶음이나 다발에서 유래한 말로 컴퓨터에서는 일괄 처리할 작업을 뜻한다.[^1] 시스템의 규모가 커지다 보면 주기적으로 자료를 검증하거나, 외부에서 자료를 반입하는 등 다량의 자료를 한꺼번에 처리할 일이 생긴다. 이런 배치는 다음과 같은 공통점을 가지곤 한다.
14+
15+
1. 일정한 주기, 혹은 시점에 실행한다.
16+
2. 원본에서 자료를 일괄적으로 읽는다.
17+
3. 읽은 자료 처리하여 결과를 만든다.
18+
4. 결과를 대상에 저장한다.
19+
20+
여기서 2번부터 4번 단계를 여러 개 구상하여 하나의 작업을 이루기도 한다. A에서 자료를 읽어 B로 저장하고, C에서 D로 작억을 한 다음 B와 D를 엮어 E를 만들어 내는 식처럼 말이다.
21+
22+
이런 프로그램을 작성하다 보면 자료를 처리하는 2번부터 4번 단계 외에 프로그램을 시작하는 1번에 대한 코드도 작성해야 한다. 그리고 자료를 일거나 (2번) 쓰기 (4번) 위한 데이터 소스 설정도 해줘야 한다. 대부분의 코드 작성 과정과 마찬가지로 핵심 코드보다 주변 코드가 많아지는 문제가 발생한다.
23+
24+
스프링 배치는 스프링 프레임워크와 마찬가지로 재활용할 수 있는 주변 코드를 제공하여 프로그래머가 핵심 코드에 집중할 수 있게 해준다. [공식 웹사이트의 가이드](https://spring.io/guides/gs/batch-processing/)를 보면 프로그래머가 작성할 주요 코드는 비즈니스 클래스 (Person), 3번을 위한 처리 클래스 (PersonItemProcessor), 2번과 4번을 위한 클래스를 만들고 전체 단계를 하나의 작업으로 묶어주는 설정 클래스 (BatchConfiguration)다. 이 외에 작업이 완료되었을 대 알림을 처리하기 위한 클래스 (JobCompletionNotificationListener)와 실행을 위한 클래스 (Application) 등으로 구성되어 있다.
25+
26+
- - -
27+
28+
[^1]: 어렸을 때, 그러니까 한 20여년 전에는 배치가 늘어놓는 배치([配置][配置])인 줄 알았다. -_-;
29+
30+
[batch]: http://dic.daum.net/word/view.do?wordid=ekw000014362#eku000129293
31+
[配置]: http://dic.daum.net/word/view.do?wordid=kkw000106112#kku000131523

0 commit comments

Comments
 (0)