>_ Analyst Engineering

Batch vs Event-Driven: Why Timing Shapes Everything

Cover for a guide on batch vs event-driven processing and how timing shapes latency, failure modes, and customer experience.

Batch and event-driven processing differ in one thing, timing, and that single difference cascades into latency, failure modes, cost, and what the customer experiences. Knowing which is in play, and which should be, is core systems analysis.

Batch processing collects transactions and processes them together on a schedule; event-driven processing handles each transaction the moment it arrives. That is the core difference, and it is entirely about timing: batch processes a known, complete set at set times, while event-driven processes each item continuously as it occurs. From that one distinction flows everything else, the latency the customer feels, the way failures surface, the cost profile, and the complexity of the system. A systems analyst who can recognize which model is in play, and reason about which should be, understands a system’s behavior at a level that a feature-by-feature view never reaches.

In banking this is not an academic distinction. Many core systems are batch at their heart, built around end-of-day cycles, while customer expectations have moved to instant. The seam where a real-time front end meets a batch core is one of the most important and risky areas in modern payments, and understanding both sides is essential. This builds on the integration patterns that implement each model, and the domain context is in Break Into Banking.

What actually differs between batch and event-driven?

Everything that differs traces back to timing, but it is worth seeing how far the consequences reach, because they touch latency, failure handling, throughput, and consistency. Timing is the cause; these are the effects.

Latency. Batch introduces delay by design: a transaction waits for the next scheduled run. Event-driven processes immediately, so latency is low. Failure handling. In batch, failures surface in bulk at run time, and you deal with a set of failed records together, often re-running the batch. In event-driven, failures surface per transaction and must be handled individually with retries, dead-letter queues, and per-message recovery. Throughput and efficiency. Batch is efficient at volume because it amortizes overhead across many records processed together. Event-driven trades some of that efficiency for immediacy and scales differently, horizontally across consumers. Consistency. Batch processes a complete, known set, so consistency within a run is straightforward. Event-driven systems update independently and are only eventually consistent, with windows where services disagree.

Seeing this list makes the trade-off concrete: you are not choosing between old and new, you are choosing a timing model and accepting its consequences. The eventual-consistency consequence in particular drives a whole class of requirements, which is the event-driven requirements work, and the per-transaction failure handling is what makes Kafka testing its own discipline.

When should you use batch processing?

Use batch when high volumes can be processed together, immediate results are not required, and processing a complete, known set at once is an advantage. Plenty of serious work fits this description, which is why batch is not a legacy embarrassment but a deliberate choice for the right problems.

End-of-day settlement is the classic case: you process the full day’s transactions together, against a known cutoff, to settle positions. Reporting and reconciliation are the same, you want a complete, consistent set as of a point in time, not a moving target. Payroll, bulk payment files, statement generation, and large data migrations all suit batch, because the value is in processing the whole set correctly, and immediacy adds nothing. In these cases batch’s simplicity is a genuine benefit: a complete set, a defined run, a clear success-or-failure outcome you can reason about and re-run.

The requirements batch raises are distinct: what happens when the input file is late or missing, whether the batch is all-or-nothing or processes record-by-record with partial failures, how you handle a record that fails within an otherwise successful run, and how you reconcile the batch output against its source. These are real, important questions, and they are different from the questions a real-time system raises. Designing the reconciliation of batch outputs is the reconciliation design problem, and capturing these requirements precisely is functional analysis.

When should you use event-driven processing?

Use event-driven when each transaction must be handled as it arrives with low latency, and the value of immediacy outweighs the added complexity. Instant payments are the defining example: the customer expects the money to move now, so you cannot wait for a scheduled run.

Beyond instant payments, event-driven fits real-time fraud detection, where a delayed decision is a useless decision; live notifications, where the customer wants to know the moment something happens; and any system where decoupling services and scaling them independently is valuable. The pattern’s strengths, low latency, loose coupling, independent scaling, are exactly what these use cases need, and they are worth the cost of handling the hard parts.

And the hard parts are real. Event-driven processing forces you to handle ordering, because events can arrive out of sequence; duplicates, because delivery is usually at-least-once; retries, because individual transactions fail; and eventual consistency, because consumers update independently. Each is a requirement and a test case, not an afterthought. The duplicate problem alone is serious enough in payments to warrant its own discipline, idempotency testing, because an event processed twice can become a double debit. Choosing event-driven means signing up for this complexity deliberately, in exchange for immediacy, and the synchronous vs asynchronous trade-off sits underneath it.

How do batch and event-driven coexist in real systems?

In practice, large systems run both, with real-time event-driven front ends sitting on batch cores, and the seam between them is where much of the design and risk lives. This hybrid is the reality of modern banking, not a transitional state but a stable architecture.

The pattern is familiar: a customer submits an instant payment that is processed event-driven for immediacy, the money moves and the customer is notified in seconds. But behind the scenes, settlement, regulatory reporting, and reconciliation still run in batch, because those benefit from processing a complete set at defined times. The instant front end gives the customer the experience they expect; the batch core gives the bank the controlled, reconcilable settlement it needs. A payment therefore lives in both worlds, processed in real time and settled in batch, and the analyst has to understand how it crosses between them.

That crossing is the risky, interesting part. How does a real-time payment get represented in the batch settlement? What happens when the real-time system says a payment succeeded but the batch reconciliation finds a discrepancy? How do you keep the two views consistent when one is continuous and the other is periodic? These seam questions are where production incidents in hybrid systems originate, and answering them is exactly the systems analysis that the domain demands. Mapping how a transaction flows across the seam, and reconciling the two sides, is among the highest-value work in payments, and the technical depth to do it is in The Technical Skills Guide for BAs.

The takeaway

Batch and event-driven processing differ in timing, and that one difference shapes latency, failure modes, throughput, consistency, and the customer experience. Use batch when high volumes can be processed together and immediacy is not required, like settlement and reporting. Use event-driven when each transaction needs low-latency handling, like instant payments. And expect real systems to run both, with the seam between them being the area of greatest design and risk.

Recognize which model a system uses, understand the consequences it signs you up for, and pay close attention to the seam where the two meet. Start with Break Into Banking and The Technical Skills Guide for BAs, or browse everything at The Tech BA Toolkit.

Ahmed is a Senior Technical Business Analyst with 10+ years in banking and payments. He builds practical guides and tools for analysts at The Tech BA Toolkit.

Tags: Systems Analysis, Architecture, Event-Driven Architecture, Banking, Payments

Newsletter

Subscribe

Practical, no-fluff playbooks for technical analysts who analyze, code, test, and support. New articles straight to your inbox.

No spam. Unsubscribe anytime.