1 분 소요

jojoldu님의 블로그를 참고하여 공부하였습니다🙂

1. 배치 애플리케이션이란?

배치(Batch)는 일괄처리 란 뜻을 갖고 있습니다.

만약 매일 전 날의 데이터를 집계 해야한다고 가정해보겠습니다.
이 집계 과정을 어디서 수행하면 될까요?

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

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

바로 이런 단발성으로 대용량의 데이터를 처리하는 어플리케이션을 배치 어플리케이션이라고 합니다.
위의 고민들을 다시 생각해보면 배치 어플리케이션을 구성하기 위해선 비지니스 로직 외에 부가적으로 신경써야할 부분들이 많다는 것을 알 수 있습니다.

여기서 한가지 생각해볼것이, 웹 어플리케이션을 개발할때 저희는 비지니스 로직에 최대한 집중할 수 있습니다.
그건 왜일까요?
바로 Spring MVC를 사용하기 때문입니다.
Spring MVC를 사용함으로 비지니스 로직에 최대한 집중할 수 있었습니다.
그럼 Spring에서 이런 배치 어플리케이션을 지원하는 모듈이 없을까요?

Spring 진영에선 Spring Batch가 있습니다.

Spring Batch를 소개하기전에 배치 어플리케이션이란 어떤 것인지 그 조건을 잠깐 이야기해보겠습니다.
배치 어플리케이션은 다음의 조건을 만족해야만 합니다.

  • 대용량 데이터 - 배치 어플리케이션은 대량의 데이터를 가져오거나, 전달하거나, 계산하는 등의 처리를 할 수 ​​있어야 합니다.
  • 자동화 - 배치 어플리케이션은 심각한 문제 해결을 제외하고는 사용자 개입 없이 실행되어야 합니다.
  • 견고성 - 배치 어플리케이션은 잘못된 데이터를 충돌/중단 없이 처리할 수 있어야 합니다.
  • 신뢰성 - 배치 어플리케이션은 무엇이 잘못되었는지를 추적할 수 있어야 합니다. (로깅, 알림)
  • 성능 - 배치 어플리케이션은 지정한 시간 안에 처리를 완료하거나 동시에 실행되는 다른 어플리케이션을 방해하지 않도록 수행되어야합니다.

자 그럼 이제 이 조건들을 만족하는 Spring Batch를 만나보겠습니다.

2. Spring Batch



💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기