DELIVERY2022-01-14BY JONAS "JO" CARLIN

Note: keeping deployment velocity during integration phases

Three practical tactics we use to keep shipping during large integration projects without breaking production.

deliveryintegrationsdeploymentvelocity

Large integrations—migrating auth providers, switching payment processors, adopting new infrastructure—tend to slow everything else down.

The instinct is to freeze deploys until "the big thing" is done.

That instinct is dangerous. A deploy freeze rarely lasts as long as planned, and when it breaks, the backlog floods production all at once.

We prefer to keep shipping.

Here are three tactics that let us maintain deployment velocity even when a large integration is in flight.

1. Make the integration opt-in until it's proven

The new thing lives behind a feature flag or configuration toggle.

The default is "old path."

This means:

  • unrelated features can deploy and work normally
  • the integration work can be tested in prod without user impact
  • rollback is a config change, not a scrambled revert

We only flip the default once the new path has handled real traffic successfully for a reasonable window.

2. Deploy integration changes in small, boring increments

A large integration is almost never "one deploy."

We break it into steps:

  • add new config, deploy, verify nothing changed
  • wire up the new client with a no-op call, deploy, check logs
  • enable the new path for 1% of non-critical operations
  • gradually expand

Each step is individually safe and reversible.

If something breaks, we know which step caused it.

3. Document what's temporarily frozen

Sometimes part of the system does need to be quiet.

When that's true, we write it down explicitly:

  • what can't change right now (e.g., "don't touch the checkout flow config")
  • why (e.g., "payment provider migration is reading that config in a new way")
  • when it will unfreeze (date or milestone)

This keeps other work moving and prevents accidental conflicts.

Takeaways

  • Long deploy freezes accumulate risk instead of reducing it.
  • Large integrations should be opt-in behind flags until they're stable.
  • Breaking integrations into small, boring steps keeps each deploy low-risk.
  • If something must freeze temporarily, document it explicitly with a clear end condition.

Further reading