The Missing Piece in the Kafka Stack: Durable Functions for Event-Driven Apps and AI Agents
Breakout Session
Kafka solved the hard part of event-driven architecture: a scalable, durable, replayable log with strong delivery guarantees. Stream processing (Kafka Streams, Flink) then made analytics and continuous computation first-class.
Yet when teams use Kafka to build event-driven applications - async or long running application logic - they still end up rebuilding the same reliability and correctness mechanisms: idempotency, retries, timers, state management, sagas/compensation, and exactly-once interactions across services. The result is a complex glue layer of infrastructure that’s difficult to reason about and hard to operate.
This talk shows how Restate complements the Kafka stack and provides the missing runtime layer for application and agent workloads. Restate takes the event-log idea, but flips the unit of abstraction from events to durable function invocations: a handler call becomes a persistent, resumable process with exactly-once semantics for execution, state, and service-to-service communication. Instead of stitching together consumers, databases, outboxes, schedulers, and workflow engines, developers write ordinary code, while Restate transparently persists progress, deduplicates, retries safely, and supports durable RPC, callbacks, and long waits.
We’ll walk through two concrete patterns:
From Kafka to a Durable Function handler and multi-step orchestration (e.g., payments or order fulfillment style flows)
Durable AI loops: tool-using agents that pause for human input, recover from partial failures, and remain observable and controllable
Finally, we’ll cover operational advantages: fine-grained introspection into each invocation and the ability to pause/resume/cancel/retry individual executions, thus turning “black box” event flows into debuggable, operable application processes.
Stephan Ewan
Restate