Batch 프로그램

민성재·2022년 3월 27일
0
post-thumbnail

배치 프로그램 (Batch Processing)일괄 처리라고도 한다.

일괄 처리라는 의미는 개별적으로 요청이 오는 것을 실시간으로 통신하는 것이 아닌, 한번에 모아서 일괄적으로 처리하는 것을 의미한다. 보통 배치는 정해진 특정한 시간에 실행 된다.

1. 대량의 데이터를 처리한다.

2. 특정 시간에 실행된다.

3. 일괄적으로 처리한다.

라는 특징을 가지는데, 배치 프로그램을 쓰는 이유는 간단하다. 업무의 효율성을 증대하기 위함이다.

보통 이러한 배치 프로그램은 은행 정산시스템, 성적처리, 급여 명세서등등 유사한 업무를 한번에 일괄 처리하여 시간과 비용을 절감하는 곳에 쓰인다.

특정 시간은 보통 사용자가 적은 새벽시간을 많이 이용하며 사용자에게 즉각적인 응답에 필요없는 서비스에 적용하면 좋다. 이 시간대를 제외하면 자원을 거의 소비하지 않는 것이 특장점이다.
또한 자동화된 서비스이기 때문에 한번 프로그래밍 해두면 더 이상 신경쓰지 않아도 된다.

스프링에서도 Spring Batch 를 제공하는데, 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 리소스 관리 등 대용량 처리에 필요한 기능을 제공한다.


위와 같이 @EnableBatchProcessing 어노테이션을 통해 배치 기능을 활성화 한다.

스프링 프레임 워크에서 사용하며 스프링의 특성을 모두 가진다. DI, AOP 등등..

스프링 배치는 위와 같이 사용자와의 상호작용 없이 반복적으로 데이터를 트랜잭션 단위로 처리 할 수 있도록 구현되어 있고, 개발자는 데이터 처리에 대한 비즈니스 로직에만 집중하여 배치 프로세스를 작성한다.

많은 거래가 이뤄지는 커머스 서비스의 경우엔 하루 거래량이 수백만 건이며, 한달이면 억단위가 넘어갑니다. 이를 실시간 집계하려고 쿼리로 해결하기엔 조회시간이나 서버 부하가 심각합니다.
그래서 매일 새벽, 전날 매출 집계 데이터를 만들어 배치를 하면 성능과 부하를 동시에 잡을 수 있습니다.

  • 주기적인 배치 프로세스
  • 동시적인 배치 프로세스: 작업의 병렬 처리
  • 단계별 엔터프라이즈 메시지 기반 처리
  • 대규모 작업에 대한 병렬 배치 프로세스
  • 실패 후 수동 또는 예약 된 재시작
  • 단계별 순차 처리
  • 부분 처리: 레코드 건너 뛰기 (예: 롤백 시)
  • 배치 작업 처리의 단위가 작은 경우, 기존 저장 프로시저/스크립트가 있는 경우 전체 배치에 대 한 트랜잭션 처리
profile
민성재 개발 블로그

0개의 댓글