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.
Legacy Modernization, Platform Strategy
Key Takeaways Modernization is a set of decisions, not a rewrite. For each system you choose one of five moves: keep, wrap, move, rebuild in slices, or retire. Start with a business reason you can write in one sentence, then map what you have before you touch any code. Change small slices while old and […]
Platform Strategy
The firm that writes your software owns it, unless your contract says otherwise. That is the starting point under US copyright law for software built by an outside firm, and the Copyright Office’s own guidance explains why. It is easy to miss, because nothing in a pitch, a proposal, or an invoice ever brings it […]
Digital Transformation, Platform Strategy
Picture the same Tuesday morning, a few months from now. Someone closes a deal in the CRM. The billing record updates itself in the background. Nobody opens a second tab. Nobody retypes a single detail. That is not a fantasy. It is what actually happens once this problem gets fixed, and it is a smaller […]