A fast engine with a low-level steering wheel
LinkedIn standardized on Kafka as the transport for all tracking data back in 2012, and Apache Samza was built the following year to solve the problems every application hit consuming that data — checkpointing, managing local state, handling failures, scaling out. It became a top-level Apache project in 2014. By the time this post was written in November 2018, Samza had over 3,000 applications running in production at LinkedIn, spanning anomaly detection, fraud, performance monitoring, notifications, and real-time analytics, and had reached a peak of 1.2 million messages per second on a single machine.
That engine, though, offered only a simple callback-based API operating at the level of an individual message. Anything more complex — a window, a join — had to be implemented by hand on top of it. Chaining logic together meant wiring multiple Samza jobs through raw Kafka topics, with one job’s output feeding the next job’s input.