클라우드 환경에서 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 |
댓글