An airline continuously received ticket lifecycle events through a GDS. Issuances, exchanges, refunds, cancellations, taxes and payment methods arrived through a message queue as deeply nested XML.
Consolidation relied on a handcrafted Spark Streaming implementation. Manual writes, fixed triggers and rules distributed across notebooks made the system hard to test and reprocess. Commercial analytics received consolidated information with days of latency.
Our mandate covered a ground-up replacement from the queue integration boundary to the business model. Before designing the architecture, we asked where low latency actually changed a decision. That question kept streaming complexity out of layers that did not need it.
Real-time only pays for itself when there is a decision on the other side that cannot wait for the nightly run.