📑 목차
업무가 밀릴 때 “나중에 한 번에”가 맞는지 “지금 바로”가 맞는지 헷갈리는 순간이 있다
주문 정산, 로그 집계, 재고 반영 같은 작업을 처리해야 하는데, 시스템이 바쁠 때는 모든 요청을 즉시 처리하기가 어렵다는 고민이 생긴다.
반대로 사용자 화면에 바로 반영되어야 하는 값이 있는데, 기다렸다가 모아서 처리하면 불만이 커질 수 있다.
배치 처리와 실시간 처리는 일을 처리하는 타이밍을 다르게 가져가며, 선택에 따라 비용·성능·정확도·운영 난이도가 달라진다.
- 배치 처리와 실시간 처리가 각각 어떤 흐름으로 동작하는가
- 지연 허용 범위와 처리량 목표가 선택을 어떻게 바꾸는가
- 실무에서 자주 쓰이는 조합 패턴과 주의할 함정
- 비교표와 YES/NO 체크리스트로 빠른 판단 기준 만들기
- 정산 지연 이슈 사례로 확인·해결 절차 따라가기
배치와 실시간은 “언제 계산하고 언제 반영할지”를 정하는 처리 전략이다
개념 1: 배치 처리는 정해진 시점에 데이터를 모아 한꺼번에 처리한다
정의: 배치 처리는 일정 주기 또는 특정 조건에서 데이터를 모아 대량으로 처리하고 결과를 한 번에 반영하는 방식이다.
핵심 특징: 처리 시점을 모아서 잡기 때문에 시스템이 한가한 시간대에 큰 작업을 몰아 수행하기 쉽고, 처리 단위를 크게 가져가 효율을 높일 수 있다.
- 내부 동작 원리: 입력 데이터를 수집·누적하고, 예약된 트리거(시간/조건)로 작업을 실행해 결과 테이블 또는 파일로 출력한다.
- 범위: 대량 집계, 통계 산출, 정산, 리포트 생성처럼 “즉시 반영이 필수는 아닌 업무”에 잘 맞는다.
- 수명: 배치 결과는 스냅샷 성격이 강하다. 결과가 생성된 시점 이후의 변경은 다음 배치까지 반영되지 않는다.
- 정리 필요성: 배치 입력 원천(임시 테이블, 큐, 파일)이 쌓이면 디스크와 관리 비용이 늘어난다. 보관 기간과 삭제 정책이 필요하다.
주의점: 배치 실행 시간이 길어지면 “처리 창(window)”을 넘어갈 수 있다. 매일 새벽에 끝내야 하는데, 데이터가 늘어 새벽 내에 끝나지 않는 문제가 생길 수 있다.
주의점: 실패 시 재처리 전략이 없으면 수동 복구가 반복된다. 어디부터 다시 시작할지, 중복 실행해도 안전한지까지 설계해야 운영이 안정적이다.

개념 2: 실시간 처리는 이벤트가 발생할 때 가능한 빨리 처리해 바로 반영한다
정의: 실시간 처리는 요청이나 이벤트가 발생하는 즉시 처리 파이프라인을 태워 결과를 빠르게 반영하는 방식이다.
핵심 특징: 사용자가 행동한 결과가 화면에 바로 나타나거나, 이상 탐지처럼 즉시 대응이 필요한 업무에 유리하다. 지연이 짧을수록 사용자 경험과 운영 대응이 좋아진다.
- 내부 동작 원리: 요청 처리(동기) 또는 이벤트 발행 후 비동기 처리(큐/스트림)를 통해 결과를 빠르게 만들고 저장소에 반영한다.
- 범위: 결제 승인, 재고 차감, 알림 발송, 실시간 대시보드 등 “늦으면 의미가 줄어드는 업무”에 잘 맞는다.
- 제약: 트래픽이 몰릴 때 처리 지연이 발생할 수 있다. 처리량이 한계를 넘으면 큐가 쌓이거나 타임아웃이 늘어날 수 있다.
- 정리 필요성: 실시간 시스템도 재처리 로그, 실패 이벤트, 재시도 큐가 쌓인다. 모니터링과 정리 정책이 없으면 장애 때 폭발한다.
주의점: 실시간은 “항상 즉시”를 의미하지 않는다. 외부 연동이 느리거나 재시도가 붙으면 체감 지연이 늘고, 최종 반영이 지연되는 형태가 된다.
주의점: 실시간 처리의 실패는 사용자 경험에 바로 드러난다. 실패 처리와 보상 트랜잭션 같은 운영 설계가 빠져 있으면 즉시 장애로 이어진다.
선택 기준은 단순히 속도가 아니라 “지연 허용”과 “처리량 압박”에서 갈린다
배치와 실시간 중 무엇이 맞는지 판단할 때는 “바로 반영이 필요한가”를 첫 질문으로 두는 편이 빠르다.
그 다음에는 처리량, 비용, 데이터 정확도 요구 수준, 운영 복잡도를 함께 비교해야 선택이 흔들리지 않는다.

| 비교 항목 | 배치 처리 | 실시간 처리 |
|---|---|---|
| 반영 시점 | 정해진 주기/시간에 몰아서 반영 | 이벤트 발생 후 가능한 빨리 반영 |
| 지연 허용 | 분~시간 단위 지연이 허용될 때 유리 | 초~수 초 수준 지연을 목표로 할 때 유리 |
| 처리 효율 | 대량 처리에 효율적(오버헤드 감소) | 요청당 오버헤드가 커질 수 있음 |
| 트래픽 변동 | 피크 시간대를 피해서 실행 가능 | 피크 타임에 지연과 실패가 늘 수 있음 |
| 실패 복구 | 재실행·구간 재처리가 핵심 | 재시도·보상 처리·중복 방지가 핵심 |
| 운영 난이도 | 스케줄·처리 창 관리가 중심 | 지연·큐 적체·장애 전파 관리가 중심 |
표 제목: 배치 처리 vs 실시간 처리 핵심 비교
어떤 상황이면 무엇을 고르는가: YES/NO 체크리스트
- 질문: 사용자가 버튼을 누른 직후 결과가 화면에 보여야 하는가. YES: 실시간 처리(또는 실시간에 가까운 비동기 처리)가 맞다. NO: 배치 처리가 후보가 된다.
- 질문: 처리해야 할 데이터가 하루에 한 번 대량으로 쌓이는 형태인가. YES: 배치로 묶어 처리 효율을 올릴 수 있다. NO: 이벤트 단위로 실시간 처리하기가 더 자연스럽다.
- 질문: 피크 타임 트래픽이 급격히 치솟는가. YES: 실시간 처리만으로 버티기 어렵다면 큐 기반 완충 또는 배치로 일부를 미루는 전략이 필요하다. NO: 실시간 파이프라인을 단순하게 가져갈 수 있다.
- 질문: 결과가 5~10분 늦어져도 업무상 문제가 없는가. YES: 배치 또는 마이크로배치(짧은 주기 배치)가 적합하다. NO: 실시간 또는 준실시간 설계가 필요하다.
- 질문: 실패했을 때 “다시 실행”으로 복구가 쉬운가. YES: 배치가 운영에 유리할 수 있다. NO: 실시간은 중복 방지와 보상ளம் 설계가 필수다.
실전 예시: “정산 금액이 늦게 갱신되어 문의가 폭주하는” 상황
문제: 판매자 정산 화면에서 오늘 매출 합계가 늦게 반영되어, “매출이 사라졌다”는 문의가 반복적으로 들어온다.
왜 발생: 매출 합계를 배치로 계산하는데, 배치 실행 주기가 길거나 처리 시간이 늘어나면 최신 데이터가 화면에 반영되지 않는다. 특히 데이터가 늘면서 배치가 늦게 끝나면 지연 폭이 커진다.
어떤 선택이 적합: 정산은 최종 확정이 필요한 영역이라 배치가 잘 맞는 경우가 많다. 다만 사용자 경험을 위해 “임시 집계(준실시간)”를 제공하고, 최종 정산은 배치로 확정하는 혼합 구성이 자주 쓰인다. 즉시 반영이 꼭 필요한 지표와, 확정이 필요한 지표를 분리하는 방식이다.
잘못 쓰면 어떤 문제: 모든 것을 실시간으로 바꾸면 계산 비용이 급증하고, 피크 타임에 지연과 실패가 늘어날 수 있다. 반대로 배치만 고집하면 화면에 오래된 값이 계속 남아 신뢰가 떨어진다.
확인/해결: 먼저 “얼마나 늦게 반영되는지”를 수치로 기록하고, 배치가 늦어지는 원인이 입력 데이터 증가인지, 쿼리/집계 병목인지, 리소스 부족인지 분해해야 한다.
따라할 수 있는 확인 방법: 지연을 측정하고 처리 방식을 조정한다
- 정산 화면에 표시되는 집계 기준 시각을 확인한다(가능하다면 “마지막 갱신 시각”을 화면에 노출한다).
- 배치 스케줄과 실제 완료 시각을 로그에서 확인한다. 스케줄은 일정한데 완료 시각이 점점 늦어지면 처리량이 증가한 신호다.
- 배치 작업이 읽는 원천 데이터(주문/결제/환불)의 하루 증가량을 확인한다. 데이터 증가가 원인인지 먼저 판단한다.
- 배치 집계 쿼리의 실행 시간을 측정하고, 병목이 되는 구간(조인, 그룹화, 정렬)을 확인한다.
- 지연을 줄이기 위한 선택지를 순서대로 검토한다: 주기 단축(마이크로배치) → 집계 범위 축소(최근 구간만 우선) → 요약 테이블 도입 → 큐 기반 준실시간 집계 추가.
- 혼합 구성을 쓸 경우, 화면 문구를 정리한다. “실시간 추정치”와 “최종 확정치”가 무엇인지 사용자가 헷갈리지 않게 구분한다.
- 배치 실패 시 재처리 전략을 문서로 남긴다. 같은 구간을 다시 실행해도 중복 반영이 되지 않는 구조인지 확인한다.
현장에서 자주 쓰이는 혼합 패턴 2가지
패턴 1: 실시간으로 이벤트를 저장하고, 배치로 정산을 확정한다. 주문/결제 이벤트는 즉시 기록하되, 확정된 정산은 하루 1회 배치로 마감한다.
패턴 2: 마이크로배치로 체감을 줄이고, 야간 배치로 정확도를 맞춘다. 5분마다 간단 집계를 돌려 대시보드를 갱신하고, 밤에 전체 재집계로 오차를 정리한다.
결론
배치 처리는 지연을 허용하는 대신 대량 처리 효율과 운영 단순성을 얻는 방식이다.
실시간 처리는 빠른 반영을 얻는 대신 피크 타임 지연과 실패 설계를 감당해야 하는 방식이다.
지연 허용 범위와 처리량 압박을 먼저 고정하면, 배치·실시간·혼합 중 선택이 흔들리지 않는다.
- 다음에 읽으면 좋은 연계 주제: 메시지 큐로 실시간 처리의 피크를 완충하는 방법
- 다음에 읽으면 좋은 연계 주제: 멱등성(idempotency)으로 재시도와 중복 반영을 막는 설계
FAQ
배치 처리는 느리다는 뜻인가
그 의미는 “처리 속도”보다 “반영 시점”에 가깝다. 배치는 대량 처리 효율이 좋아서 한 번 실행될 때는 빠를 수 있지만, 결과가 주기적으로 반영되므로 사용자는 지연을 체감할 수 있다.
실시간 처리는 항상 동기로 처리해야 하는가
항상 그렇지는 않다. 사용자 요청에 즉시 응답하되, 실제 처리는 큐로 넘겨 빠르게 처리하는 비동기 구조도 실시간에 가까운 선택이 된다. 다만 최종 반영이 늦어질 수 있어 화면 정책을 함께 설계해야 한다.
혼합 구성을 쓰면 데이터가 서로 달라지지 않는가
서로 달라질 수 있다. 그래서 “추정치와 확정치”를 구분하고, 어떤 값이 기준인지 정책을 문서로 고정하는 방식이 흔히 쓰인다. 오차를 정리하는 야간 재집계나 재처리 규칙도 같이 둔다.
'전산학' 카테고리의 다른 글
| 메시지 큐(Message Queue) 기초: 서비스 간에 일을 안전하게 넘기는 비동기 통신 (0) | 2025.12.27 |
|---|---|
| 로그기반 복제와 마스터–슬레이브 구조: 전산학 데이터베이스를 안전하게 분산하는 방법 (0) | 2025.12.27 |
| 정규화와 비정규화: 데이터 중복을 줄이면서도 성능을 지키는 테이블 설계 (0) | 2025.12.26 |
| 인덱스와 조회 성능: 데이터베이스가 원하는 데이터를 빠르게 찾는 방법 (0) | 2025.12.26 |
| 성능 모니터링 지표 기초: CPU, 메모리, 디스크, 네트워크 수치를 해석하는 방법 (0) | 2025.12.26 |