2008/12/16 07:24

[Spring batch] 스프링배치 연재(13) 스프링배치의 형제들

이번 연재분은 사실 마이크로소프트웨어지 연재 시에 분량을 잘 못 맞추어서, 추가 원고 요청을 받아서 급하게 넣은 내용들이였습니다. 스프링 포트폴리오 중에서는 Spring Integration이 앞으로도 계속 스프링배치와 밀접한 관계를 맺을 것으로 보이기에 스프링배치 사용자도 계속 주목해야할 프로젝트라고 생각합니다. 그리고 ETL툴인 Kettle에 대해서는 연재 분량이 다 올라간 후에 보다 자세히 소개드려고 합니다.

다른 스프링 프로젝트들

  지금 시점에서 스프링이 커버하는 넓은 영역들은 '프레임웍'이라는 말만으로는 다 표현하기가 벅차다고 느껴진다.  SpringWebFlow, SpringSecurity, SpringDM 등이 포함된 스프링 포트폴리오들의 진용을 보면,  안 건드리는 영역이 어떤 것이 있을까하는 생각이 든다.  이 중 스프링배치와 연관성을 맺고 있는 프로젝트는 스프링 인테그레이션(Spring-Integration), 스프링웹서비스(SpringWebService), 스프링 어플리케이션 플랫폼(Spring Application Flatform)이 있다.

  스프링 인테그레이션은 기업환경의 데이터 연계 작업을 돕는 프레임웍이다. 복잡한 연계방식을 추상화 시켜서 비동기 메시지 기반으로 구성할 수 있게 한다. JMS, RMI, File, Http, Ftp, Web service 등의 연결방식이 같은 인터페이스로 추상화되어 제공되는 것이다. 배치처리도 데이터 연계를 위한 목적으로 많이 쓰이기 때문에 당연히 스프링배치와 스프링 인터그레이션의 영역은 겹치는 곳이 있다. 아직 정식판에 포함되지는 않았지만 스프링배치와 스프링 인테그레이션을 결합한 프로토타입 코드도 나와있다. [각주:1]앞으로 버전업이 계속 될수록 두 프레임웍은 더욱 긴밀한 사이를 유지할 것으로 보인다. 스프링배치 2.0에서는 스프링 인테그레이션을 이용해서 원격지에서 Item을 쓸 수 있는 Remote Chunking이라는 기술을 지원할 예정이다.[각주:2]

  스프링 웹서비스는 SOAP을 사용하는 Web servcie 를 쉽게 만들 수 있는 프레임웍이다.  다른 웹서비스 구현 프레임웍에 비해서도 짧은 코드로 XML 웹서비스를 쓰는 어플리케이션을 구성할 수 있고, Spring MVC를 아는 사람에게는 더욱 친숙하게 느껴질 수 있는 구조로 되어 있다. 스프링배치에서 XML파일은 스프링웹서비스에 포함되어 있는 Spring OXM(Object-XML-Mapping) 을 이용해 처리하는 것이 가능해서 보다 많은 유연하고 많은 라이브러리들을 사용할 수 있다. 스프링 3.0에서는 Spring OXM이 보다 상위모듈에 포함될 수도 있다고 한다. 그리고 스프링 인테그레이션에서도 Web service 연결부분은 스프링 웹서비스에 위임하고 있다.

  OSGi 기반의 환경을 제공하는 스프링 어플리케이션 플랫폼에서도 스프링배치가 OSGi 번들로 실행될 수 있다.[각주:3] 향후 버전에서도 더욱 배치에 특화된 기능들이 추가될 것이라고 한다.

  한편, 스프링배치의 Retry, Repeat 개념들도 보다 일반화 되어 스프링3.0에서는 코어 모듈로 들어갈 수 있다는 소문도 들린다.  이렇듯 스프링 포트폴리오들은 서로 영향을 주고 받으며 빠른 속도로 발전하고 있고, 이는 개발자들에게는 보다 풍족함을 느끼게 해 줄 것으로 기대된다. 앞으로 2~3년 후에 스프링과 그로 인한 자바 세계가 어떻게  변해있을지 생각하는 일은 버거운 일이지만 즐거운 상상이다.

 ETL 툴

   스프링배치조차도 ETL(Extract, Transform, Load)툴로 분류되기도 하지만, Java 세계에도 이전부터 오픈소스 ETL툴이 있어 왔다.

  Kettle(http://kettle.pentaho.org/)은 이중 가장 오랜역사와 많은 사용자를 가지고 있는 툴로, Pentaho 라는 회사에서 Pentaho Data Integration이라는 이름으로도 배포된다. 별도의 GUI툴을 제공하고, Job의 설정 내용을 XML이나 DB로 저장할 수 있다. 특히 DB를  Job의 내용을 담는 저장소로 활용하면, 별도의 프로그램 배포작업이 필요없고, 여러명사이에 공동작업에 유리한 점이 있다.

  Talend Open Studio(http://www.talend.com/ )은 Jasper사에서도 Jasper ETL이라는 이름으로 제공되고 있다. Eclipse plug-in 기반의 툴이 제공되고, 최종 산출물로는 Java나 Perl의 코드가 생성된다.
  두 제품이 Java 오픈소스 ETL툴의 양대산맥이라고 할 수 있고, Open소스 기반이지만 일부 유료기능이나 교육, 컨설팅 등으로 수익을 얻는 사업모델을 가지고 있다. 그 툴다 리포팅툴 등을 포함한 Business Intelligence 패키지의 일부로 제공된다는 것도 공통점이다. Kettle이 무료 기능의 폭이 더 넓은 편이고 Talend Open Studio는 국내에도 제휴된 기술 지원 업체가 있다는 장점이 있다. 스프링배치에서 다루고 있는 파일 형식들(XML,Flat file)과 프로토콜(FTP, HTTP)가 대부분 지원되며, 여러대의 컴퓨터에서 하나의 작업을 병렬실행하는 것도 가능하다.

  스프링배치와 이런 툴들은 어떤 장단점이 있을까? Java와 스프링개발에 익숙한 개발자가 많고, 정교한 흐름처리, 확장성이 필요하다면 스프링배치가 유리할 것이고, 시스템에서 필요한 요구사항들이 ETL툴이 제공하고 있는 기능들에 잘 맞아떨어지는 경우에 GUI로 된 편한 작업환경을 누리고 싶다면 Kettle이나 Talend Open Studio 같은 툴이 나을 것이다.


- 정상혁 (http://benelog.egloos.com)


Trackback 0 Comment 0