Home / Companies / DBOS / Blog / Post Details
Content Deep Dive

GOTO Considered Harmful: Why Event-Driven is a Poor Architecture

Blog post from DBOS

Post Details
Company
Date Published
Author
Mike Stonebraker
Word Count
1,646
Company Posts That Month
12
Language
English
Hacker News Points
2
Post removed?
No
Summary

Event-driven programming is contrasted with workflow architecture for multi-step, stateful applications such as agentic AI systems and B2B ecommerce order processing, where external calls, failures, recovery, and human involvement require coordination. Using an order flow involving inventory, customer evaluation, payment, and fulfillment, the discussion argues that event-driven systems distribute sequencing across independent handlers and a message bus, while workflows make control flow and business logic explicit. Applications are classified by whether steps are dependent or independent and whether they require durability, allowing recovery without repeating completed work, or atomicity, ensuring an operation either fully completes or is effectively undone. Drawing on Dijkstra’s critique of GOTO statements, the paper contends that event-driven designs can obscure execution paths, complicate global rollback and compensation, and make cross-service debugging difficult because relevant information is scattered across handlers and logs. Durable workflow systems, by contrast, can track each workflow instance centrally, support recovery and compensation, and simplify tracing failures. Event-driven architectures are presented as suitable primarily for independent steps without durability or atomicity requirements, while durable workflows are recommended for most dependent, long-running, failure-prone applications.

Trends Found in this Post
Trend Post Mentions Total Month Mentions Posts Companies MoM
AI Agents 3 7,105 1,572 286 -11%
Use This Data

Use this post, company, and trend context to find content marketing opportunities, perform competitive analysis, or address product feature gaps via the Plushcap MCP server or the Plushcap API.