왜 자바로 배치를 처리하는가?

유지 보수성

  • 배치 처리 코드는 일반적으로 다른 애플리케이션 코드보다 수명이 훨씬 김
  • 스프링 배치는 트랜잭션 및 커밋 횟수와 같은 것들을 애플리케이션에 제공함

유연성

  • OS에 종속되지 않는 JVM의 유연성
  • 시스템 간 코드를 공유할 수 있는 능력
  • POJO로 업무 로직을 구현하면, 해당 로직을 웹 애플리케이션이나 배치 처리에서 모두 사용할 수 있음

확장성

  • 병렬 처리 지원
  • 트랜잭션 커밋 건수와 롤백 건수 등 배치 처리에 필요한 기능을 제공하여, 애플리케이션 확장성에 도움을 줌

개발 리소스

  • 스프링 프레임워크를 사용하는 풍부한 인적자원

지원

  • 스프링 프레임워크의 방대한 커뮤니티 (Github, Stackoverflow 등)

비용

  • 오픈소스 프레임워크로 반복적인 라이선스 비용 불필요함


스프링 배치의 사용 사례

ETL

  • Extract (추출), Transform (변환), Load (적재)

데이터 마이그레이션

  • 간단한 배치 잡을 기동하고 수행하는 데 많은 코딩이 필요 없음
  • 데이터 마이그레이션을 수행할 때 당연히 포함해야 할 기능임에도 대부분 제대로 구현하지 않는 커밋 횟수 측정이나 롤백 기능 등을 제공함

병렬 처리

  • 멀티 코어 또는 멀티 서버에 처리를 분산하는 기능 제공


스프링 배치 프레임워크

  • 액센츄어사와 스프링소스사 간의 협업으로 개발됨

  • 데이터 유효성 검증, 출력 포매팅, 복잡한 비즈니스 규칙을 재사용 가능한 방식으로 구현하는 기능, 대규모 데이터셋 처리 기능이 구현되어 있음

  • 스프링 배치는 레이어 구조로 조립된 세 개의 티어로 이뤄져 있음

  • 애플리케이션 레이어가 최상위에 있는 것이 아니라, 다른 두 레이어인 코어 레이어와 인프라스트럭쳐 레이어를 감싸고 있음
    • 개발자가 개발하는 대부분의 코드가 코어 레이어와 함께 동작하는 애플리케이션 레이어지만, 때로는 인프라스트럭처의 일부를 만들기도 하기 때문임


이 포스팅은 스프링 배치 완벽가이드 2/e 의 내용을 요약 정리한 것 입니다.