“Do I still need LangGraph once I go event-driven?” — the question mixes up three independent choices. WHERE code runs and HOW it talks are separate dials (see
Topology vs Communication). This lab is the third dial:
WHO decides the order — a central conductor, or no conductor at all.
Dimension
🧠 Orchestration (LangGraph)
📡 Choreography (events)
Who decides order
The LangGraph graph
Each agent, on its event
Shared state
One state object
None — payload per event
Change the flow
Edit one graph
Add / remove a subscriber
Debugging
One linear trace
Reconstruct from event log
Coupling
Conductor is a hub
Loosely coupled
Failure / retry
Central, built-in (+ HITL)
Per-consumer retry + DLQ
Best when
Complex branching, HITL
Many independent reactions, spikes
So — is LangGraph still required?
Not as the system's conductor — pure choreography needs none. But you rarely throw it away: it relocates inside an agent, orchestrating that agent's own reasoning (draft → critique → refine, retries, human review). Events connect the agents; LangGraph runs the thinking inside one. EDA and LangGraph are different layers, not competitors.