Skip to main content
Bonsai Software
All field notes
Field Note27 August 20266 min read

Building integrations without middleware: what you learn

Building integrations without middleware is often the smartest choice, but only if you know the pitfalls before you hit them. We see it regularly: a company opts for direct API connections to avoid a MuleSoft license or Azure Integration Services, builds three integrations in three weeks, and six months later runs into exactly the three problems a central platform would have addressed. This is what experience in the field teaches.

By Yeslin Beljaars

Why companies choose direct API connections

The reasoning is understandable. A middleware platform like MuleSoft or Azure Integration Services comes with licensing costs, a learning curve, and an additional management layer. If you want to connect two or three systems, that feels like paying upfront for complexity you do not yet have. A direct REST connection between your WMS and your transport partner seems like the pragmatic path. You build an endpoint, write a small service that forwards messages, and you are in production before the end of the quarter. That works. Until it does not.

Pitfall 1: error handling without a safety net

In point-to-point integrations, error handling is the responsibility of the connection itself. There is no central broker to catch messages when an endpoint is temporarily unreachable. In practice, this means a timeout on the receiving end causes a message to silently disappear, unless you have built in retry logic, dead-letter queues, and alerting yourself. That is exactly the work middleware does for you. Without that foundation, teams often build something half-hearted: a log table in the database, a daily manual check, or simply the assumption that both sides are always available. On a busy operational day, when a supplier API schedules a maintenance window that was never communicated, the gaps become visible.

Pitfall 2: endpoint version management

External systems update their APIs. Sometimes with a version number in the path, sometimes not. If you have built five direct connections to five suppliers or partners and three of them release an API update in the same quarter, you have three separate projects to update. Without a middleware platform, you have no adapter layer that centralises the translation. Each connection is its own codebase with its own assumptions about the data format. With a small landscape of two or three connections, that is manageable. With ten or more, it becomes a quiet form of technical debt: the integrations run, but nobody knows exactly which versions of which endpoints are in use, and supplier updates are addressed reactively rather than planned.

Pitfall 3: monitoring without a central layer

Middleware platforms provide a dashboard by default: message volume, latency, error rates, per connection. Without such a platform, you have to build that observability yourself or go without it. What we see in practice: the first connections get logging, the third and fourth somewhat less, the fifth almost none because the project was under pressure. The result is that operationally you only discover a connection has gone silent when someone on the other end calls. Proactive monitoring, alerts for stalled message flows or unusual volumes, requires discipline and build time that is structurally underestimated in direct connections.

When building integrations without middleware is actually the smart choice

To be fair: there are good reasons not to use a middleware platform. If your landscape is small and stable, say two or three connections with systems whose APIs are mature and well documented, a platform adds cost and management overhead without proportional value. If the connection is internal, between systems you manage and version yourself, you do not need a central broker either. And if you are building a greenfield system where the architecture is API-native from the start, you can place integration responsibility within the core system itself rather than delegating it to a separate platform. The criterion is straightforward: if the integration landscape is going to grow, or if external parties are inconsistent or unpredictable in their API management, a central layer pays for itself. If it stays stable and small, a direct connection is simply good engineering.

What you can do if you build without middleware anyway

If the choice for direct API connections is deliberate and well-founded, three things make the difference. First: build error handling and retry logic in from day one, not as an afterthought. Second: document which API version is in use per connection and maintain a register, even if it is just a simple table. Third: set up alerting on message volume, not only on HTTP error codes. A connection that has gone silent often returns no error; it simply stops sending. These three measures address the biggest risks without requiring a full middleware platform. They cost time during the build, but that time is recovered the moment the first external API update or the first incident arrives.

Seeing this in your own operations?

Book a call

Frequently asked questions

When do you not need middleware for integrations?

If you have two or three connections with stable, well-documented APIs and you manage the integration landscape yourself, middleware adds more overhead than it delivers. For a small and stable landscape, a direct connection is the pragmatic choice.

What are the risks of point-to-point integrations without middleware?

The three biggest risks are: messages that silently disappear on a timeout without retry logic, version problems when external APIs update and you have no adapter layer, and the absence of central monitoring that means you only find out a connection is down when someone calls.

Is it cheaper to build integrations without a middleware platform?

In the short term, yes: no licensing costs and no learning curve. Over the longer term, it depends on how your landscape grows. More connections, more external parties, and more API updates make managing direct connections more expensive than maintaining a central layer.

How do you monitor integrations without middleware?

Set up logging on message volume per connection and build alerts for the absence of messages, not only for HTTP error codes. A connection that has gone silent often returns no error. Also document which API version is in use per connection, so updates from external parties do not come as a surprise.