Event Driven Workflows - Andrew Wormald, Luno

Learn how event-driven workflows can break down complex business logic using DAGs, with features like parallel processing, scheduling, and visualization. Based on Luno's production use.

Key takeaways
  • Event-driven workflows help break down complex business logic into sequential steps while maintaining deterministic behavior and process visualization

  • The solution uses a directed acyclic graph (DAG) approach, meaning workflows can only move forward and cannot revisit previous nodes

  • Built with interfaces for data storage and event streaming, allowing flexibility to use different technologies (Kafka, RabbitMQ, Reflex) through adapters

  • Provides built-in support for:

    • Timeouts and scheduling (cron)
    • Parallel processing
    • Role-based sharding
    • Process visualization (Mermaid diagrams)
    • Test helpers and acceptance testing
  • Uses the outbox pattern for handling events, providing strong consistency but with some latency tradeoff

  • Focuses on idempotency - consumers should be idempotent to handle duplicate events safely

  • Supports GDPR compliance through data deletion capabilities while maintaining workflow history

  • Designed to work with existing infrastructure rather than requiring new systems/services

  • Currently in production use at Luno for critical paths like customer onboarding and payment processing

  • Core design goals:

    • Sequential processing
    • Distributed architecture
    • Loose coupling
    • Scalability
    • Process visualization
    • Complex business logic handling