제1장.
스프링배치 소개
기업영역은 필수 업무 환경에서 대량처리가 수반되는 애플리케이션을 많이 요구한다. 이런 업무처리들은 사용자 상호작용 없이 효율적으로 처리되는 대량의 정보를 처리하는 복잡한 자동화 공정을 포함한다.
이런 공정은 보통 시간기반 이벤트(예를 들어 월말계산, 공지 등)나, 주기적 실행되는 애플리케이션인데, 대량의 데이터 셋(예를 들어 보험수익결정 이나 요율 조정)을 주기적으로 처리하는 복잡한 업무 룰이 적용되고, 내/외부시스템에서 제공된 정보의 통합으로 표준화, 검증 및 레코드 트랜잭션처리 등이 수반된다. 배치처리는 기업환경에서 매일 수십억 건의 트랜잭션을 처리해 왔다.
Spring Batch는 기업시스템에서 매일 처리하는 업무에 필수적인 견고한 배치 애플리케이션 개발을 위해 설계된, 가벼운 종합 배치 프레임웍이다. Spring Batch는 생산성, POJO(plain old java
object)기반의 개발방식이나, 그동안 일반적으로 스프링 프레임웍에서 확인되는 사용편의성에 기반하여 만들어졌다. 스프링 프레임웍의 경우, 그 편의성 때문에 개발자들이 필요할 때 기업 서비스를 더 쉽게 개선시킬 수 있었다. Spring Batch는 스케쥴용 프레임웍은 아니다. 기업용 스케쥴러는 상업용이나 오픈소스진영에서 Quartz, Tivoli,
Control-M 등이 제공된다. Spring batch는 이런 scheduler들을 교체한다기 보다 같이 결합되어 사용되도록 의도되었다.
Spring Batch는 재사용가능한 일련의 함수들을 제공하는데, 대량 레코드 처리하는데 필수적인 함수들로, 로깅이나 로그추적, 트랜잭션관리, job 처리통계, job재기동, skip이나 자원관리 같은 기능들을 제공한다. Spring batchs는 또한 보다 진보된 기능이나 특성을 제공하는데, 최적화나 파티셔닝 기술을 통해 대량 고성능의 배치업무를 가능케 한다. 단순복잡여부 관계없이 대량배치업무는 spring
batch프레임웍의 고도의 처리량 조절방식을 통해 상당한 대량정보를 처리할 수 있다.
원문
원문
원문
1.1.절 배경
오픈소스 프로젝트나 관련 커뮤니티들이 웹기반이나 SOA메시지기반 구조 프레임웍에 더 관심을 가지는 동안, 기업IT환경내에 배치업무처리에 대한 요구가 많았음에도 불구하고 이를 수용하는 자바기반의 배치처리를 위한 프레임웍은 그동안 관심을 받지 못했다. 표준 재사용가능한 배치 아키텍쳐가 부족하여 고객 기업IT업무측에서는 단발성 자체 솔루션들을 만들어왔다. SpringSource와 Accenture가 이를 바꾸기 위해 협력하여, Accenture의 현장에서 일해왔던 산업과 기술 경험이 배치 아키텍쳐를 구현하는데 있어 SpringSource의 기술경험의 깊이와 Spring으로 증명된 프로그래밍 모델과 합쳐져서 자연스럽고 강력한 파트너쉽을 이루어, 고품질의 시장지향적인 소프트웨어를 탄생시켜 기업형 Java분야에 중요한 간극을 매웠다.
양 사는 또한 현재 많은 고객들과 spring기반의 배치 아키텍쳐 솔루션을 개발하여 유사한 문제를 해결하기 위해 협업중이다.
이런 협업을 통해 몇가지 유용한 추가적인 세부사항과 실환경 제약사항이 제공되는데, 솔루션은 이 과정에서 고객이 처한 실제 문제에 적용될 수 있음이 입증된다. 이와 또는 추가적인 이유로 SpringSource와 Accenture는 팀을 이루어 spring batch개발에 협력해 왔다.
Accenture는 과거 지적재산권이 있는 배치처리 아키텍쳐 프레임웍을 spring batch 프로젝트에 제공해왔는데, 제공된 프레임웍은 과거 몇세대의 플랫폼들( COBOL/메인프레임, C++/Unix, Java/범용플랫폼 등)에 배치 아키텍쳐를 만들어온 수십년간의 경험에 기반한다. 또한 제동된 프레임웍외에 프로젝트를 지원, 기능강화 및 차후 로드맵을 진행할 수 있는 참가자 자원도 제공하였다.
Accenture와 SpringSource간 협력은 차후 소프트웨어 공법과 프레임웍, 배치 애플리케이션을 개발할 때 기업사용자에 의해 지속적으로 강화될 운영/개발툴의 표준화를 촉진하는 것을 목표로 한다.
기업이나 공공기관/단체가 표준화되고 검증된 솔루션을 기업/기관IT환경에 제공하고자 할 때 spring batch는 좋은 선택이 될 것이다.원문
1.2. 사용시나리오
전형적인 배치프로그램은 일반적으로 대량의 레코드를 데이터베이스나 파일, 큐에 읽어서(read) 특정방식으로 데이터를 처리(process)하고 수정된 형태로 파일 작성(write)한다. Spring Batch는 이런 간단한 배치반복과정을 자동화하여, 통상 사용자 상호작용 없이 오프라인환경에서 하나의 세트로 이루어지는 일련의 트랜잭션을 처리토록 한다. 대부분의 IT프로젝트들은 배치잡업무가 있는데, Spring Batch는 이들 프로젝트들에 탄탄한 기업규모의 솔루션으로서는 유일하게 오픈소스 프레임웍으로 제공된다.
업무 시나리오
- 주기적으로 배치 프로세스를 처리한다.
- 동시처리 배치 프로세스: 하나의 job을 병렬처리
- 단계적 결재방식의 기업용 메시지처리
- 대량 병렬 배치 처리
- 실행실패 후 수동 또는 예약방식 재기동
- 의존관계의 실행단계들(step)를 절차적으로 처리(워크플로우 기동방식 배치기능들과 연동실행)
- 부분처리: 레코드처리생략 (예. 롤백발생시)
- 전체 배치 트랜잭션: 소량배치처리이거나 기존 스토어드프로시져 또는 스크립트와 연동된 경우
기술 목적
- 배치개발자는 Spring 프로그래밍 모델을 사용한다: 업무로직에 집중하고, 인프라 스트럭쳐는 프레임웍이 관할토록 한다.
- 인프라 스트럭쳐와 배치실행환경, 배치 애플리케이션간 관련사항들을 명확히 분리함.
- 모든 프로젝트가 구현할 수 있는 Interface로서 공통 핵심 실행 서비스를 제공한다.
- 변경 필요 없이 ‘out of the
box’로서 사용가능한 핵심 실행 interface를 간단하고 기본적인 방식으로 구현 제공한다.
- 아키텍쳐의 모든 계층에서 spring 프레임웍을 활용하여 설정이나, customization이나, 서비스확장이 쉽도록 한다.
- 제공되는 모든 핵심서비스들은 인프라 스트럭쳐 계층에 영향을 주지 않고 쉽게 교체나 확장될 수 있어야 한다.
- Maven을 이용하여 애플리케이션과는 완전히 별도로 jar 아키텍쳐로서 단순한 배포모델을 제공한다.
Spring Batch 은 확장성과 다양한 그룹의 최종사용자를 염두에 두고 구상 설계되었다. 아래 그림은 확장성과 최종사용 개발자의 사용용이성을 돕는 계층구조로서 계략도를 보여준다.
이 계층 구조는 3개의 주요 고수준 컴포넌트들을 강조한 것이다 -애플리케이션과 코어, 인프라 스트럭쳐. 애플리케이션은 모든 배치job들과 Spring Batch를 사용하는 개발자가 작성한 소스코드이고, 배치코어(Batch Core)는 배치job을 기동하고 제어하는 핵심 런타임 클래스(JobLauncher와 Job, Step 상세구현)로 구성된다. 애플리케이션과 Core는 모두 공통 인프라 스트럭쳐 위에 탑재된다. 이 인프라스트럭쳐는 공통 reader, writer, RetryTemplate같은 service들과 코어프레임워크(예, retry)로 구성된다. 애플리케이션 개발자는 ItemReader, ItemWriter같은 형태로 이 구성물들을 활용한다.
댓글 없음:
댓글 쓰기