Distributed Async Await • A new programming model for the cloud - Dominik Tornow - NDC Oslo 2024

Learn how distributed async/await revolutionizes cloud programming by enabling seamless handling of long-running processes, failures, and state across distributed systems.

Key takeaways
  • Distributed async/await formalizes concurrent and distributed programming structures while preserving developer experience through functions and durable promises

  • Modern distributed applications face challenges with:

    • Long-lived executions (minutes to days)
    • Resource termination and process crashes
    • Cross-process coordination
    • State management across interruptions
    • Partial failures and partial ordering
  • Traditional solutions like HTTP calls and job queues have limitations:

    • HTTP requires maintaining connections
    • Job queues lose execution context
    • Both lack unified error handling
    • Poor composability and developer experience
  • Key advantages of distributed async/await:

    • Unified semantics for local and remote executions
    • Built-in failure handling and recovery
    • Resume semantics allow continuing from interruption points
    • Maintains execution identity and integrity across processes
    • Developer control over execution location and distribution
  • Core concepts:

    • Durable promises with stable IDs for coordination
    • Equivalent behavior between interrupted/resumed and continuous executions
    • Composable functions and promises as universal abstractions
    • First-class support for distribution in programming model
  • Practical benefits:

    • Sequential-style code for distributed systems
    • Automatic handling of partial failures
    • No manual state management needed
    • Natural expression of business logic
    • Simplified development of long-running workflows