Back to Insights
Integration2 days agoJustin Pennington

Real-Time Is a Cost, Not a Compliment: Setting a Latency Budget per Integration

Real-Time Is a Cost, Not a Compliment: Setting a Latency Budget per Integration

Somewhere in the first integration meeting, someone says "it should be real-time," and nobody argues. It sounds like the premium option. It sounds like the answer a serious company gives. Six months later that same team is debugging webhook retries at 11pm because an order didn't make it from the website into the ERP, and nobody can tell whether it failed, succeeded twice, or is still sitting in a queue.

Real-time isn't a quality level. It's an architectural choice with a price tag — in build time, in operational complexity, and in the number of ways your system can quietly break. The useful question isn't "can we make this instant?" It's "how stale can this data be before someone makes a bad decision?"

Start With the Decision, Not the Data

Every integration exists so a human or a system can act on information. So work backward from the action.

If your warehouse team picks orders in waves twice a day, an order that lands in the ERP within fifteen minutes and one that lands within four hours produce identical outcomes. If your sales team checks commission numbers on Monday mornings, a nightly sync is not a compromise — it's correct. But if a customer service rep is on the phone looking at an account balance, or your site is showing available inventory to a buyer about to check out, staleness turns into a refund, an oversell, or a lost deal.

For each flow between systems, write one sentence: who acts on this, how often, and what goes wrong if the data is an hour old? That sentence is your latency budget. Most organizations discover that only a handful of their flows need sub-minute freshness, and the rest were built that way out of habit.

What Real-Time Actually Obligates You To

When you commit to event-driven, near-instant syncing, you're also committing to a set of problems that batch jobs mostly sidestep:

  • Idempotency. The same event will get delivered twice. Your system must recognize it and not create a duplicate invoice.
  • Ordering. An update can arrive before the record it updates. You need logic for "this doesn't exist yet."
  • Retries and backoff. The target system will be down, rate-limited, or slow. Something has to hold the message and try again without flooding the API.
  • Partial failure. Three records sync, two fail. There is no clean "the job ran" status — only a growing list of individual exceptions someone has to own.
  • Observability. You can't eyeball a stream the way you can read a batch log. You need dashboards, alerting, and a dead-letter queue that a real person checks.

None of this is exotic. All of it is work. And all of it is ongoing work, not one-time work — which is the part that gets underestimated when the integration is scoped.

The Underrated Virtue of a Batch Window

A scheduled job that runs at 2am has a property real-time streams don't: it has a beginning and an end. You can tell whether it completed. You can diff the source and target and reconcile counts. When it fails, it fails as one unit you can inspect, fix, and re-run — not as forty-three scattered records in unknown states.

Batch also lets you transform data properly. You can validate the whole set, catch the records with missing cost centers, and reject them as a group with one clear report, rather than having bad data trickle into your ERP one row at a time all day long.

There's an operational benefit too. A nightly cutoff creates a natural reconciliation rhythm: yesterday is closed, today is in progress. Finance teams understand that model intuitively. Continuous sync blurs the line and makes "as of when?" a permanent question.

The Pattern That Usually Wins: Hybrid

In practice, most mid-market integrations should be event-triggered for a short list of time-sensitive flows and batch for everything else — with a nightly reconciliation sweep running underneath the real-time layer regardless.

That sweep is the part teams skip, and it's the part that saves them. Events get dropped. Webhooks fail silently. A reconciliation job that compares record counts and key fields between systems every night catches the drift before a customer does. It turns "we think the systems are in sync" into something you can actually verify.

Write It Down Before You Build It

Before the next integration gets scoped, build a simple table: each data flow, the consuming system, the person or process that acts on it, the agreed latency budget, and the chosen mechanism. Review it with the operators who live with the consequences, not just the people building it. You will almost certainly find flows that were over-engineered and one or two that were quietly under-served.

That document becomes the spec — and, later, the thing you check when someone asks why the dashboard is showing yesterday's number.

If you're staring at a web of syncs nobody fully understands, or planning an ERP-to-CRM-to-website connection and want to get the architecture right the first time, reach out to Infraxio. We'll map the flows, set honest latency budgets, and build integrations your team can actually operate.