The Architecture Tax Nobody Budgets For: Why Your AI Agent Demo Won't Survive Production
Thomas Kunnumpurath
VP Systems Engineering · Solace

Last month, a Fortune 100 airline showed me their agentic AI proof of concept. It was impressive — a chatbot that could rebook flights, check loyalty status, and escalate to a human agent. Clean React frontend, four LLM-powered agents coordinated through a Python orchestrator, everything running on a single Kubernetes cluster. The demo took two minutes and got a standing ovation from their CTO.
Then I asked one question: “What happens when two agents need to act on the same passenger record simultaneously?”
Silence.
That silence is the architecture tax. And almost nobody budgets for it.
The Demo Trap
Here’s the pattern I see repeatedly as I lead the Americas Solutions Engineering effort for Solace Agent Mesh: teams build agentic AI systems that work beautifully in demo conditions — single user, single region, synchronous orchestration, happy path only. Then they try to take it to production and discover that the hard problem was never the AI. It was the infrastructure between the agents.
The conventional wisdom in the agentic AI space right now is that the orchestration layer is the interesting problem. Pick your framework — LangGraph, CrewAI, AutoGen — wire up your agents, define your tools, tune your prompts, and you’re done. The architecture is treated as a solved problem because HTTP works, right?
This is exactly backwards. I’ve spent nearly two decades learning this lesson across progressively higher stakes: at Deutsche Bank where messaging infrastructure carried millions of trades per second, at Capital One where event-driven identity verification had to handle authentication spikes without dropping a single request, and now at Solace where I watch enterprise after enterprise hit the same wall with AI agents that they hit fifteen years ago with microservices.
The orchestration logic is the easy part. The communication substrate is where production systems live or die.
What Actually Breaks
Let me be specific about the failure modes, because hand-waving about “scale” isn’t useful.
Temporal coupling kills availability. When Agent A calls Agent B synchronously over HTTP, Agent A’s availability is now bounded by Agent B’s availability. Chain four agents together and your system availability is roughly 0.99^4 — about 96%. That sounds fine until you realize it means 15 days of downtime per year if each agent only achieves three nines. In the airline scenario, that’s thousands of stranded passengers whose rebookings silently fail.
Fan-out without backpressure causes cascading failure. An agent that discovers ten relevant tools and invokes all of them simultaneously can easily overwhelm downstream services. I’ve seen this exact pattern in trading systems — a market data burst triggers a cascade of downstream processing that saturates the message bus. The solution at Deutsche Bank was never “add more capacity.” It was guaranteed delivery with flow control baked into the messaging layer. The same principle applies to agent-to-agent communication.
Discovery is not a one-time event. Most agentic frameworks treat capability discovery as a startup task — scan available tools, build a registry, go. But in production, agents come and go. New capabilities deploy mid-conversation. The airline might add a weather-delay compensation agent on Tuesday that the rebooking agent needs to know about on Wednesday. Without dynamic, topic-based discovery — where agents subscribe to capability announcements rather than polling a static registry — your system is perpetually stale.
This is where event-driven architecture isn’t just useful — it’s structurally necessary.
The Pattern That Actually Works
What I’ve learned shipping Solace Agent Mesh into production environments is that agentic AI systems need the same architectural primitives that trading systems needed a decade ago:
Asynchronous, guaranteed delivery between agents. Decouple the producer from the consumer. Let the messaging layer handle retry, persistence, and flow control. This is not a nice-to-have — it’s the difference between a demo and a system that runs at 3 AM when nobody’s watching.
Dynamic topic hierarchies for capability routing. Instead of hardcoding agent-to-agent connections, publish capabilities on structured topic trees: agents/airline/rebooking/v2/available. Other agents subscribe to the topics they care about. When a new capability appears, subscribers discover it automatically. This is the exact pattern that made Solace’s event mesh work for trading at Deutsche Bank — dynamic topic routing that didn’t require redeploying consumers when producers changed.
Event-driven orchestration, not procedural orchestration. The orchestrator doesn’t call agents in sequence. It emits an intent event. Agents that can fulfill that intent respond. The orchestrator aggregates responses. This pattern is inherently resilient because adding or removing an agent doesn’t change the orchestrator’s code — it changes the topic subscriptions.
Here’s a concrete example. In one manufacturing deployment, we have agents monitoring equipment sensors via MQTT, agents running predictive maintenance models, and agents managing spare parts inventory. The sensor agent publishes to factory/line-3/sensor/vibration/anomaly. The maintenance agent subscribes to factory/*/sensor/*/anomaly. The inventory agent subscribes to factory/line-3/maintenance/parts-needed. Nobody configured point-to-point connections. The topic hierarchy IS the architecture.
The Actionable Takeaway
Before you write a single line of agent orchestration code, answer these five questions:
- What happens when an agent is unavailable for 30 seconds? If the answer is “the whole workflow fails,” you have temporal coupling.
- Can you add a new agent capability without redeploying the orchestrator? If not, you’ve hardcoded your topology.
- What is your backpressure mechanism? If the answer is “we’ll scale horizontally,” you haven’t thought about cascading failure.
- How do agents discover each other’s capabilities at runtime? If the answer is a static config file, you’ll be editing it at 2 AM.
- Can you replay a failed agent interaction from the last known good state? If not, your guaranteed delivery is actually best-effort delivery with extra steps.
If you can’t answer all five, the gap isn’t in your AI models or your prompt engineering. It’s in your communication infrastructure.
The Deeper Lesson
I’ve watched this movie before. In 2012, everyone was excited about microservices. By 2015, everyone was drowning in synchronous REST calls between forty services and wondering why their “distributed system” had worse availability than the monolith it replaced. The answer then was the same as the answer now: the architecture between the components matters more than the components themselves.
Agentic AI is microservices with natural language interfaces and nondeterministic behavior. That makes the infrastructure problem harder, not easier. The agents are smarter, but the physics of distributed systems haven’t changed. Messages still need to be delivered. Failures still need to be handled. Discovery still needs to be dynamic.
The teams that will win the agentic AI race aren’t the ones with the best models. They’re the ones who budget for the architecture tax upfront — who treat the communication layer as a first-class architectural decision rather than an afterthought papered over with HTTP and hope.