만약 매일 전 날의 데이터를 집계 해야한다고 가정해보겠습니다.이 집계 과정을 어디서 수행하면 될까요? 웹 어플리케이션 밖에 모른다면 Tomcat + Spring MVC를 떠올리실것 같습니다.하지만 이렇게 큰 데이터를 읽고, 가공하고, 저장한다면 해당 서버는 순식간에 CPU, I/O 등의 자원을 다 써버려서 다른 Request 처리를 못하게 됩니다.

그리고 이 집계 기능은 하루에 1번 수행됩니다.이를 위해 API를 구성하는 것은 너무 낭비가 아닐까요?여기서 추가로 데이터가 너무 많아서 처리중에 실패가 나면 어떻게 될까요? 5만번째에서 실패했다면, 5만 1번째부터 다시 실행할 수 있다면 얼마나 좋을까요?

또 이런 경우도 있을수 있습니다. 오늘 아침 누군가가 집계 함수를 실행시켰는데, 다른 누군가가 또 실행시켜 집계 데이터가 2배로 뻥튀기 될 수도 있습니다. 같은 파라미터로 같은 함수를 실행할 경우 이미 실행한 적이 있어 실패하는 기능을 지원한다면 얼마나 좋을까요?

What is Spring Batch?


Usage Scenarios

A typical batch program generally:


Basic Structure

Untitled


Job Repository