TL;DR: Most teams that ask for "real-time" data would be fully satisfied with a dashboard refreshing every 30–60 seconds — which is micro-batch, not streaming, and costs a fraction of a true streaming stack. Reach for streaming only when your actual latency requirement is sub-minute and the business value of that latency is concrete, not aspirational. If you do need streaming, Kappa (one unified stream-first pipeline) is the sensible 2026 default over Lambda (separate batch and speed layers) unless you have strict correctness requirements that are genuinely expensive to encode in a pure streaming model — in which case a hybrid "Kappa plus lakehouse" pattern, not classic Lambda, is usually the right answer.
The most expensive mistake in this space isn't picking the wrong architecture — it's skipping the latency-requirement conversation entirely and defaulting to "real-time" because it sounds more sophisticated than batch. A startup running a full streaming stack for a retail dashboard that refreshes every 30 seconds is paying real-time infrastructure costs for a micro-batch requirement, and that gap compounds every month it goes unquestioned (Reliable Data Engineering, Medium).
Start with the actual latency requirement, not the architecture
Before choosing between batch, micro-batch, or true streaming, get a specific number: how stale can this data be before it stops being useful? Not "as fresh as possible" — an actual number, in seconds, minutes, or hours, tied to a real business decision or user-facing behavior that depends on it.
A useful rule of thumb from production experience: latency measured in hours calls for batch; sub-minute latency generally requires streaming; the space in between (roughly 15–60 seconds of acceptable delay) is exactly where micro-batching delivers most of streaming's benefit at a fraction of its cost (Manik Hossain, Medium). If your SLA tolerates 15–60 seconds, micro-batch gets you roughly 90% of the freshness benefit at about 50% of the cost of true streaming.
Most requests for "real-time data" turn out, on inspection, to actually mean "not stale by end of day" or "updated within the hour" — genuine sub-minute requirements are rarer than the phrase "real-time" gets used. A rough industry estimate: 80% or more of data workloads are well served by batch or micro-batch, with true streaming investment justified for the remaining 20% that has a concrete sub-minute requirement (Reliable Data Engineering, Medium). Ask what specific decision or user-facing behavior needs the data within your target window, and if nobody can name one, you likely don't need streaming yet.
Micro-batch vs. true streaming: the overhead crossover
Micro-batching processes small batches every few seconds to a couple of minutes rather than continuously — it's not "streaming lite," it's a genuinely different operational model with simpler failure semantics: a failed micro-batch retries as a unit, whereas a failed event in a true streaming pipeline needs per-event or per-partition failure handling (Conduktor).
There's a real crossover point where micro-batching stops being the efficient choice: at sub-second batch intervals, the fixed overhead of scheduling and coordinating a distributed job (tens to hundreds of milliseconds per job start) starts to dominate the actual processing time, making micro-batching less efficient than a genuinely continuous streaming engine (Conduktor). Practically: if your latency target is comfortably above a few seconds, micro-batch is usually both simpler and cheaper. If you're pushing toward sub-second freshness, the coordination overhead of repeated job starts makes true streaming the more efficient choice, not just the more sophisticated-sounding one.
Lambda vs. Kappa: what they actually trade off
Once you've confirmed you genuinely need streaming, the next decision is architectural: Lambda or Kappa.
Lambda architecture runs two parallel processing paths: a batch layer that reprocesses historical data for completeness and accuracy, and a speed layer that processes incoming data in real time for low latency, with a serving layer merging both views for queries (GeeksforGeeks). The batch layer is the source of truth for correctness; the speed layer trades some accuracy for immediacy, and gets corrected once the batch layer catches up.
Kappa architecture simplifies this to one path: treat everything as a stream, including historical reprocessing (replay the stream from an earlier offset rather than running a separate batch job) (Streamkap).
The real cost of Lambda isn't the extra infrastructure — it's logic drift. Maintaining two code paths that are each supposed to compute "the same" metric is where Lambda architectures actually go wrong in practice: the batch job and the streaming job end up with different windowing logic, different deduplication rules, and different handling of late-arriving events, and those two implementations quietly diverge over time until nobody fully trusts either output (RisingWave, 2026). This is a maintenance and correctness cost that compounds with every schema change and every engineer who touches only one of the two paths.
2026 default: start with Kappa for new systems, specifically because one pipeline and one semantics surface removes the drift risk entirely, and it's a strong fit for product experiences genuinely built on real-time signals (RisingWave, 2026).
Switch to something Lambda-like when correctness requirements are strict and expensive to encode purely in streaming — financial reconciliation, regulatory reporting, or any domain where a wrong number in a real-time view has real consequences and the correction has to be provably accurate, not just eventually consistent (RisingWave, 2026).
The 2026 answer often isn't pure Kappa either: Kappa + lakehouse
The more nuanced 2026 consensus is that neither pure Lambda nor pure Kappa is optimal for most systems that need both real-time views and durable historical analytics. The pattern gaining traction: a stream (Kafka or similar) as the source of truth and real-time processing layer, paired with an Iceberg-style lakehouse as the durable derived store for historical analytics, backfills, and ML training data — sometimes described as "Kappa plus lakehouse" (Flexera, 2026).
This gets you Kappa's single-semantics-surface benefit for real-time logic, while still having a properly optimized analytical store for the workloads (large historical scans, ML feature generation, ad-hoc analyst queries) that a stream isn't well-suited to serve directly. The lakehouse or warehouse question is worth working through once you've settled the stream-vs-batch question and are deciding where the durable copy of your data should live.
A decision framework
- Get a real latency number, tied to a specific decision or user-facing behavior. "As real-time as possible" isn't a requirement — it's the absence of one.
- Hours-scale tolerance → batch. Don't build streaming infrastructure to serve a requirement that a nightly or hourly job satisfies completely.
- 15–60 second tolerance → micro-batch, not true streaming. This captures nearly all of the "we need this fresher" requests that show up in practice, at meaningfully lower cost and operational complexity than a full streaming stack.
- Sub-minute, ideally sub-second → true streaming. Confirm this is a genuine product or business requirement, not a preference, before committing to the operational overhead (broker tuning, consumer lag monitoring, schema evolution discipline) a real streaming stack demands.
- If streaming is justified, default to Kappa unless you have a specific, named correctness requirement that's genuinely hard to encode in pure streaming — in which case look at Kappa + lakehouse before reaching for classic Lambda's dual-path complexity.
- Revisit the decision when requirements change, not preemptively. It's usually easier to add a streaming layer on top of a well-built batch/micro-batch foundation later than to have over-built streaming infrastructure sitting mostly idle against a batch-shaped workload today.
Where this interacts with the rest of your data stack
Whichever model you choose, the ingestion mechanism matters as much as the processing architecture. If your source of truth is a transactional database, CDC and Kafka Connect is usually the right way to get events into either a Kappa stream or a batch pipeline without hammering the source database with polling queries, though the failure modes look different depending on whether that CDC feed is landing in a streaming pipeline versus a batch one.
And regardless of latency model, the schema discipline question doesn't go away — a Kappa pipeline reprocessing from an earlier stream offset is exactly the scenario where an undocumented schema change silently breaks historical replay. Data contracts and schema registries are worth having in place before you lean on stream replay as your reprocessing strategy, not after the first replay fails halfway through.
Sources: Flexera — Kappa vs Lambda Architecture: A Detailed Comparison, RisingWave — Lambda vs Kappa Architecture: Which Is Better in 2026?, Streamkap — The Evolution from Lambda to Kappa Architecture, GeeksforGeeks — Lambda Architecture vs. Kappa Architecture, Conduktor — Micro-Batching: Near-Real-Time Stream Processing, Reliable Data Engineering, Medium — The Real Cost of Real-Time, Manik Hossain, Medium — Streaming vs Micro-Batching.
Syslabs' data engineering team helps clients size the right processing architecture to the actual latency requirement, not the trend, before committing to a build.