TIL/Spring & Spring Batch

[Spring-Batch] 클라우드 환경에서의 Spring Batch

JoJobum 2023. 10. 14.

클라우드 환경에서 Batch 프로그램이 고려해야할 issue들과 Spring Batch는 어떻게 접근하고 있는가에 대한 글

 

출처: Spring Batch on Kubernetes: Efficient batch processing at scale

Issue1: Fault Tolerance

DB, Message brokers, Web 서비스 등 다른 시스템들과의 연결이 필요한 배치의 경우 언제든 프로세스가 돌고 있던 노드가 죽고 새로은 노드로 대체될 수 있기에 Fault-Tolerant하게 만들어져야 한다.

⇒ 트랜잭션 관리, Skip 과 retry 매커니즘을 제공

Issue2: Robustness

배치 작업을 중복 실행하는 것이 치명적인 경우가 존재하는데, 쿠버네티스의 경우 같은 Job을 중복 실행하는 점에 대해 알려진 문제도 존재. 이러한 부분 고려해서 설계되어야 한다.

⇒ 집중된 transactional Job Repository 를 사용하여 중복 Job수행을 막는다.

Issue3: Cost Efficiency

배치의 경우 오류가 발생한 경우 작업을 중단한 위치에서 다시 시작하는 것이 아니기 때문에 클라우드 인프라를 사용하는 경우 비용이 이중 청구되는 비효율성 가지고 있음

⇒ Job에 대한 데이터를 외부 DB에 저장하기에 중단된 위치에서 실패한 작업을 다시 시작할 수 있음

Issue4: Observability

  • 현재 실행중인 작업
  • 실패한 작업
  • 진행 상황
  • 등등…

같은 주요 내용을 파악하기 쉬운 대쉬보드가 효율적인 운영을 위해 필요

⇒ Micormeter 같은 툴과의 통합 제안

Issue5: Scalability

대량의 분산 데이터를 올바르게 처리하기 위해 클라우드 기반의 배치를 만들기에 확장 가능하게 설계되어야 한다.

⇒ Spring Batch jobs 은 state를 외부 DB에 유지하기에 stateless 라고 볼 수 있음. 이러한 stateless함이 확장을 용이하게 함.

반응형

'TIL > Spring & Spring Batch' 카테고리의 다른 글

Spring Batch 성능 최적화(1)  (0) 2023.10.28
스프링 프록시 팩토리  (0) 2023.05.24

댓글