내가 다니고 있는 회사에서 굉장히 많은 데이터 처리를 한다.
batch로 데이터 처리를 하고 있지 않아서 spring batch 로 회사의 데이터 처리를 해보면 어떨까 생각해서 회사의 작은 스케줄 작업부터 변경해볼려고 한다.
나도 사실 배치라는 것을 잘몰라서 일단 배치란 무엇이고 spring batch를 왜 사용해야하는지 살펴볼려고 한다.
만약 중간에 더 괜찮은 프레임워크가 있다면 spring batch를 사용 안할 수 있다.
web 실시간 처리/ 상대적인 속도 / QA 용이성
batch 후속 처리 / 절대적인 속도 / QA 복잡성
web은 QA 분들이 테스트를 진행해주면 개발자가 생각하지 못한 부분을 발견해준다.
batch 프로그램은 db를 QA분들이 들여다 볼 수 없기 때문에 테스트 코드가 필수 이다.
우리 회사에서는 새벽마다 돌아가는 스케줄이 존재한다.
또한 실시간 처리가 어려운 대량의 데이터를 처리때문에 배치 애플리케이션이 필요해졌는데 간단히 설명하자면 기능 중에 하나가 상품마다 태그가 존재하고 그 태그의 명이나 값을 변경해주는 서비스가 존재한다. 그러면 해당 태그를 가지고 있는 모든 상품의 값이 변경되어야하는데 상품 수가 엄청 많다보니 해당 처리가 오래 걸린다.
Spring Batch에서는 모든 데이터를 메모리에 쌓지 않는 조회 방식이 기본 방식
findAll 방식으로 진행하면 안된다.
Job>Step>Tasklet