
If you’re building modern systems, chances are you’ve already heard the buzzwords: Big Data, Hadoop, Kafka, Spark, Streaming. But have you ever wondered where this whole movement started and why stream processing even became a thing?
The Pre-Google Era: When the Web Was Indexed by Hand
Back in the early ’90s, the World Wide Web wasn’t searchable the way we know it today. In fact, until 1993, Sir Tim Berners-Lee maintained a hand-curated list of websites at CERN. No crawlers, no search engines — just a static HTML page with links.
Yahoo changed the game by launching a web directory, but it still wasn’t a “search engine” in the modern sense. The real breakthrough came when Google entered the scene with PageRank around 2000.
PageRank’s magic was simple yet powerful:
- Count the number of links pointing to a page.
- Combine that with the keywords on the page.
Better search results. But this idea created a monster problem: scale.
Enter Big Data: Google’s Realization
To run PageRank, Google needed to crawl the entire web, store it, and then repeatedly process it. That meant dealing with:
- Volume – billions of web pages.
- Variety – unstructured content in HTML, images, files.
- Velocity – new pages, updates, and links being added constantly.
Traditional databases like Oracle or SQL Server simply weren’t built for this. So Google designed their own systems and shared the blueprints through three legendary whitepapers:
- GFS (Google File System) – for distributed storage.
- MapReduce – for large-scale parallel data processing.
- BigTable – for fast, structured retrieval.
These papers inspired the open-source community to create Hadoop, which kickstarted the Big Data era.
Batch vs Real-Time: Why Hadoop Wasn’t Enough
Hadoop solved large-scale processing — but only in batches. You’d dump a mountain of data, run a MapReduce job, and wait minutes (or hours) for results. That worked for analytics, but not for time-sensitive needs.
Imagine fraud detection that alerts you after the fraudulent transaction is complete. Useless. Or patient vitals analyzed after the emergency. Too late.
That gap led to real-time stream processing frameworks like:
- Apache Kafka (event transport + storage)
- Spark Streaming
- Apache Flink, Storm, Samza
- Cloud services like Kinesis and Google Dataflow
Events: The Building Block of Streams
At the heart of real-time systems lies a simple concept: events.
- An event = an action performed by an actor.
Example: A customer buying something → Invoice Created event. - Events are continuous. Multiple invoices? That’s a stream of events.
- Events need to be transported and processed quickly by different systems: finance, shipping, loyalty, analytics.
So the challenge isn’t just storing data. It’s moving it, in real time, across multiple producers and consumers.
The Many-to-Many Problem
In a modern retail setup:
- Sources (producers): POS systems, online store, mobile app.
- Destinations (consumers): Finance, shipments, analytics, loyalty, inventory.
This creates a many-to-many relationship. Without a proper solution, you’d end up writing dozens of brittle, point-to-point pipelines.
Why Databases and File Transfers Failed
Developers initially tried to solve this by dumping events into shared databases or files. But:
- Databases were built for data-at-rest, not streaming.
- File transfers (CSV, XML dumps) were too slow for real-time.
- Remote procedure calls (RPC) created tight coupling.
None of these approaches scaled for millisecond-level, fault-tolerant streaming.
The Pub/Sub Model: A Better Way
The breakthrough came with publish/subscribe messaging. Instead of direct connections:
- Producers (publishers) send events to a broker.
- Consumers (subscribers) read from the broker whenever they need.
- Topics act like categories (similar to database tables).
This decoupling gave us:
- Time sensitivity – events delivered in milliseconds.
- Scalability – horizontal expansion as data grows.
- Reliability – guaranteed delivery despite failures.
- Flexibility – support for evolving data formats.
And this is where Apache Kafka shines.
Kafka: The Circulatory System of Data
Think of Kafka as the central nervous system of your architecture:
- Producers write events once.
- Kafka brokers store them durably in logs.
- Multiple consumers read at their own pace.
The result: real-time, distributed, fault-tolerant event streaming.
Categories of Real-Time Stream Processing
So where does stream processing actually show up? Here are five big categories:
- Incremental ETL – streaming database changes into warehouses/lakes.
- Example: Change Data Capture (CDC) pipelines.
- Real-Time Reporting – dashboards that update every few seconds.
- Example: Monitoring infra KPIs (CPU, network, latency).
- Real-Time Alerts – trigger notifications on thresholds/patterns.
- Example: ICU patient monitoring, supply chain alerts, traffic incidents.
- Real-Time Decision Making – apply business logic or ML models instantly.
- Example: Fraud detection, personalized gaming difficulty, ad-bidding.
- Online Machine Learning – continuously training models on live data.
- Example: Adaptive recommendation systems.
Each category increases in complexity, but they all rest on the same foundation: event-driven, real-time processing.
Wrapping Up
- Google’s search problems birthed Big Data.
- Hadoop gave us batch processing, but wasn’t enough.
- Businesses now need real-time insights → fraud detection, healthcare monitoring, personalization.
- The solution? Event-driven stream processing powered by Kafka and similar frameworks.
As a system designer, I see stream processing as the backbone of modern architecture. If batch was yesterday’s story, streams are today’s reality — and tomorrow’s necessity.