Nobody sits in a planning meeting and decides to build an unmanageable web of integrations. It never happens that way.
What happens is smaller and more reasonable every single time: one system needs to talk to another, an engineer wires up a direct connection because it is Tuesday and the deadline is Friday, and it works.
Then it happens again. And again. And months later, nobody can say with confidence what breaks if a particular field in a particular system changes, and the answer to can we add this one new integration has quietly become let us check with three teams first.
|
YOU ARE ALREADY HERE IF: 1. A routine schema change in one system now requires checking multiple other teams before anyone will approve it. 2. The person who understands how two specific systems connect no longer works at the company. 3. An incident gets diagnosed by someone tracing a webhook through three services, not by reading documentation. 4. A “quick integration” now gets quoted in weeks instead of days, and nobody can fully explain why. |
Point-to-point integration, connecting each system directly to every other system it needs to reach, has a complexity curve that is easy to describe and easy to ignore.
Connections scale roughly as the number of systems squared, not linearly, which means the pain does not arrive gradually. It arrives late, and then all at once.
|
5 systems → 10 connections · 10 systems → 45 connections |
At five systems, ten direct connections is annoying but survivable; most teams can still hold that map in their heads.
At ten systems, forty-five connections is a different category of problem. Nobody holds that in their head.
Every new system added after that point does not add one new connection; it adds one new connection for every system already in place, which is exactly why integration work that used to take days starts quietly taking weeks, without any single change explaining why.
It starts with a correct decision initially. A direct API connection between two systems, built by whoever owned the deadline that week, is genuinely the right call when there are three or four systems in play, data requirements are stable, and nobody is planning to add a fifth system anytime soon. That is not a mistake. That is a reasonable engineering tradeoff, made honestly, under real constraints.
The mistake, if there is one, is not revisiting that tradeoff once the conditions that justified it stop being true.
A pattern that made sense at four systems does not automatically stop making sense at nine; it just quietly gets more expensive with every addition, and because no single addition looks dramatic on its own, nobody notices the trend until the cumulative weight of it is already sitting on the team’s shoulders.
We described a version of this same erosion pattern, a system quietly falling behind what the business actually needs while everyone attributes the slowdown to something else, in why your release cycle is not actually an AI problem.
Integration sprawl is frequently the real, unexamined cause hiding underneath a symptom that gets blamed on something else entirely.
It rarely breaks as a dramatic outage. It breaks as friction, long before it breaks as downtime.
A schema change in one system, something as small as renaming a field or changing a data type, ripples silently into every direct connection touching it.
If three other systems consume that field, someone has to know all three, update all three, and test all three, or something downstream quietly starts receiving bad data without throwing an obvious error.
A webhook that has worked reliably for two years starts failing intermittently once a fourth consumer gets added to it, because it was never built to fan out that far; it was built to notify one system, and now it is doing the job of four.
An engineer gets paged for an incident in a system they do not own, because the actual root cause is three hops upstream in an integration nobody currently on the team remembers building.
The instinct once the pain becomes visible is usually to add more observability: better logging, more alerts, a dashboard tracking every integration’s health.
That helps you see the sprawl more clearly. It does nothing to reduce it. Monitoring makes a fragile architecture easier to watch fail. It does not make the architecture less fragile.
The actual fix is structural, not observational: reducing how many direct, one-off connections exist in the first place. That usually means routing integrations through a central layer, an integration hub or a well-governed API gateway, so each system connects once, to the hub, instead of once to every other system it needs to reach.
The complexity curve flattens because adding a new system now means one new connection, not one new connection per existing system. This is the same underlying diagnosis behind the broader Systems Integration stage of platform modernization: the goal is not more visibility into a fragile pattern; it is replacing the pattern itself.
|
Approach |
New System Adds | Who Can Reason About the Whole Map |
|---|---|---|
|
Point-to-point |
One connection per existing system |
Nobody, past roughly ten systems |
| Integration hub | One connection, to the hub |
Whoever owns the hub, at any scale |
Forrester’s Julie Mohr has made a version of this point simply: managing technical debt and rationalizing services does not become optional just because a company has moved everything to the cloud, and it was never the vendor’s job to prevent it in the first place. Sprawl is sprawl, whether it lives on-premises or across a dozen SaaS platforms. The tools changed. The discipline required did not.
The cost shows up first as velocity: feature work that used to take days now needs a dependency review, and morale, engineers spending real time keeping a fragile system upright instead of building anything new.
It shows up later as risk: a system nobody fully understands anymore is a system nobody can confidently say is secure, compliant, or safe to change. Neither of those costs appears on an invoice, which is exactly why they accumulate for so long before anyone treats them as a real problem worth fixing on purpose.
None of this requires ripping out working systems to fix. It requires an honest map of what actually connects to what, and a deliberate decision about which connections deserve to keep being direct and which ones need to move through something more durable. That mapping exercise is usually cheaper and faster than most engineering teams assume, and it is the difference between fixing this on your own schedule and fixing it during an incident.
A Modernization Readiness Audit maps your actual integration surface and tells you honestly where the sprawl already is, before it picks the moment to break for you.
API Strategy, Platform Strategy, SaaS Development, Systems Integration
An enterprise deal usually gets signed by the people least equipped to know whether it is technically achievable. That is not a criticism of sales; it is how the roles are supposed to work. But a contract that promises a specific integration timeline, a specific uptime guarantee, or a specific data migration, without engineering confirming […]
Platform Strategy, SaaS Development, Systems Integration
An API serving ten clients and an API serving a hundred are not the same system wearing a bigger traffic number. The rules that hold at one scale stop holding at the other, whether anyone wrote them down or not. What follows is not a wish list. It is the specific discipline, in versioning, rate […]
Build vs. Buy, Ecommerce, Platform Strategy
Three answers exist to “what should we build our store on,” and all three are correct, for different businesses. Shopify. Headless. Fully custom. The mistake is not picking the wrong one in one direction. The mistake is picking based on which option sounds most sophisticated in a board meeting instead of which one matches the […]