본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Batch Process

데이터를 축적하다가 일정 주기마다 일괄적으로 처리하는 방식

  • 사용자와의 상호작용 없이 대량의 데이터를 정해진 시점에 한꺼번에 처리한다.
  • 예: 은행의 일일 이자 계산·정산, 월말 급여 계산, 통계 집계, 야간 데이터 백업, 로그 정리
  • 이러한 처리를 수행하는 프로그램을 배치 프로그램이라 한다.

배치 프로그램 필수 요소

편집 원본 편집
요소 설명
대용량 데이터 대량의 데이터를 가져오고, 전달하고, 계산하고, 저장할 수 있어야 한다.
자동화 심각한 오류 상황 외에는 사용자 개입 없이 수행되어야 한다.
견고성 잘못된 데이터나 중복 데이터로 인한 예외 상황에서도 비정상 중단 없이 처리해야 한다.
안정성·신뢰성 오류가 발생하면 위치와 시간을 추적할 수 있도록 로그를 남기고 알려야 한다.
성능 다른 응용 프로그램의 수행을 방해하지 않고, 지정된 시간 내에 처리를 완료해야 한다.

배치 프로그램 유형

편집 원본 편집
  • 정기 배치: 일, 주, 월 단위 등 정해진 시점에 실행
  • 이벤트성 배치: 특정 조건이 충족될 때 실행
  • 온디맨드 배치: 사용자의 명시적 요구가 있을 때 실행

배치 스케줄러

편집 원본 편집
도구 특징
스프링 배치 Spring Source와 Accenture가 함께 만든 Java 배치 프레임워크. Job, Step, ItemReader·ItemProcessor·ItemWriter 로 구성하며 대용량 처리, 트랜잭션, 재시작 기능 제공. 실행 시점은 외부 스케줄러와 조합
Quartz Java 기반 오픈소스 작업 스케줄링 라이브러리. Scheduler, Job, JobDetail, Trigger 로 구성
cron 유닉스·리눅스의 기본 작업 스케줄러. crontab에 "분 시 일 월 요일 명령" 형식으로 등록
# 분 시 일 월 요일 명령
0 2 * * *     /home/app/backup.sh     # 매일 02:00
*/10 * * * *  /home/app/collect.sh    # 10분마다
0 9 * * 1-5   /home/app/report.sh     # 평일(월~금) 09:00

실시간 처리와 비교

편집 원본 편집
구분 배치 처리 실시간 처리
처리 시점 데이터를 모아 정해진 시점에 일괄 처리 데이터 발생 즉시 처리
응답 시간 길다(수 분~수 시간) 짧다(즉시)
자원 효율 한가한 시간대에 몰아서 처리하여 효율이 높음 항상 대기해야 하므로 자원 부담이 큼
적합한 업무 정산, 급여, 통계, 백업 온라인 거래(OLTP), 예약, 모니터링
  • 두 방식을 섞어 온라인 거래는 실시간으로 처리하고 집계·정산은 야간 배치로 처리하는 경우가 많다.
  • 관련 문서: 실시간 시스템
  • 배치 프로그램 필수 요소 5가지(대용량 데이터, 자동화, 견고성, 안정성·신뢰성, 성능)를 쓴다.
  • 배치 스케줄러 스프링 배치, Quartz, cron을 구분한다.
  • crontab 표현식을 해석하는 문제가 나올 수 있다.