Why this matters#

Most organisations that buy or build communications end up with several systems that overlap: a marketing tool and a support inbox that both send WhatsApp messages, a CRM and a messaging platform that both store contacts, two products from an acquisition that do similar things. The usual instinct is to merge them into one. Sometimes that is right. Often it is expensive and makes both worse. This piece explains the alternative, connecting systems through published interfaces ("federation"), what it requires, what it costs, and a simple test for choosing between the two. It applies equally to a buyer choosing between an all-in-one suite and several specialised tools.

Why merging can destroy value#

Products that serve different audiences differ in ways that look like duplication and are not.

A tool for developers and a tool for non-technical small-business owners may both send WhatsApp messages. Merging them can produce one product that is too complicated for the second audience and too constrained for the first. The "duplication" was the adaptation to each audience.

The general form: when two systems share a mechanism but not a user, the mechanism is incidental and the user is the essence. Consolidating on the mechanism risks throwing away the essence.

Merge, federate, or buy a suite: the trade-offs#

Merge into one systemFederate (connect via published interfaces)Buy one all-in-one suite
Fits different user groupsPoorly: one design for allWell: each keeps its own designDepends on the suite's breadth
Consistency of dataStrong: one databaseNeeds discipline: one owner per factStrong inside the suite
Speed of changeSlower: shared releasesFaster: each deploys aloneSet by the vendor's roadmap
Operational costLower once doneHigher: network calls, versioningLower for you; paid in licence fees
Exit and replacementHard: everything is entangledEasier: replace one part at a timeHard: the whole stack moves together
Best whenSame user, same jobDifferent users, shared customersSmall team, standard needs

There is no universally right column. The rest of this piece is about doing the middle one well when it is the right choice.

What federation actually requires#

Four things, in this order.

What federation requires, in order

  1. 01Published contracts

    Not shared code

  2. 02Consistent identity

    Who is calling, and on whose behalf

  3. 03Consistent conventions

    Not a shared database

  4. 04One direction of authority per fact

    Exactly one source of truth; the copies may lag

1. Published contracts, not shared code. Each system exposes a documented interface, such as an OpenAPI description or an event schema (CloudEvents is one open standard for describing events), and consumes others' interfaces. Shared libraries create a coupling with most of the costs of a merge and few of the benefits, because nobody can deploy independently any more.

2. Consistent identity. This is the hard one, and the one most federations skip. Systems calling each other need to prove who they are and on whose behalf they act, with an audit trail and a way to revoke access. Without it you get shared secrets in configuration files, which is a merge by other means. See service-to-service identity.

3. Consistent conventions, not a shared database. Agree on how a contact is identified, how timestamps are formatted, how errors are shaped and how webhooks are signed. Do not agree on one schema: that is a merge wearing a different hat.

4. One direction of authority per fact. For every piece of data, exactly one system is the source of truth, and the others hold copies that are explicitly allowed to be slightly out of date. Two systems that both believe they own consent state will diverge, and the divergence may be discovered by a regulator.

Federation is not "leave the systems alone". Systems that share nothing are not federated, just separate. Federation is a specific set of published commitments, and the work is in the commitments rather than the code.

What each system publishes, bottom to top

  1. Its own data

    Never shared wholesale. Ownership stays where the system is operated and accountable.

  2. A stable identity

    Something another system can refer to without knowing how it is stored internally.

  3. A published contract

    The interface, versioned, with a deprecation policy. This is the only coupling that exists.

  4. An identity bridge

    How a subject in one system corresponds to a subject in another, and who may assert it.

  5. Delegated authority

    A scoped, revocable, time-bound grant. One system acting for another, with proof.

  6. Shared evidence

    The audit trail spanning the boundary, so a question can be answered across it.

The bottom layer is what merging destroys. The top three are what merging is usually attempting to buy, and they can often be had without it.

The delegation pattern#

A useful shape is often for one system to delegate to another rather than duplicate it.

If one product already has issued credentials, a published specification and a signed webhook dispatcher, while another has the strongest model of a particular domain, the answer is not necessarily to move code between them. The first can call the second, rather than reimplementing what the second already does well.

Nothing moves. Both keep their audiences. The capability becomes available through an interface that was already designed to be called.

One system acting for another, safely

  1. 01Establish the identity

    Each system has a verifiable identity of its own. Not a shared secret, not an API key in a config file.

  2. 02Request a scoped grant

    Narrow: this action, this subject, this window. A grant that is broad because narrow was inconvenient is the vulnerability.

  3. 03Issue with an expiry

    Short-lived and renewable beats long-lived and forgotten. The expiry is the safety property.

  4. 04Act, and carry the proof

    Every action taken under delegation records which grant authorised it.

  5. 05Revoke independently

    One system withdrawing a grant must not require the other's cooperation, or it is not revocation.

Without step five, you have integration rather than federation. The difference only becomes visible on the day you want to disconnect.

What federation costs#

It is not free, and being honest about the costs matters:

  • Network calls where a function call would have done, with the latency and failure modes that implies.
  • Versioning discipline. A published contract you can change unilaterally is not a contract. Interfaces cannot be changed on a Friday afternoon.
  • Duplicated read models. Each system holds a projection of others' data, and projections drift.
  • Duplicated effort. Several systems may each do their own version of something a shared service would do once.
  • Coordination for anything that genuinely crosses the boundary.

What you buy: no single change takes everything down, each product moves at its own pace, each carries its own regulatory weight, and any one of them can be replaced, sold or retired without unpicking the others.

The trade is deliberate: you accept operational complexity to keep product independence. That is worth it when the products serve different people, and usually not otherwise. For three services that are really one product, federation is overhead with a nicer name.

What it costsWhat it buys
CallsNetwork calls where a function call would have doneNo single change takes everything down
ChangeVersioning discipline: no Friday-afternoon contract changesEach product moves at its own pace
DataDuplicated read models that driftEach carries its own regulatory weight
EffortDuplicated effort, and coordination across the boundaryAny one part can be replaced, sold or retired alone
Worth it when the products serve different people. For three services that are really one product, it is overhead with a nicer name.

The test#

Before merging two systems, ask: do they have the same user?

Not the same buyer. Not the same organisation. The same person, doing the same job, on the same day.

If yes, merging is usually right: the separation is costing you. If no, consider federating, and stop measuring the duplication as though it were pure waste.

Before merging two systems

  1. 01Do they have the same user — the same person, doing the same job, on the same day?
    Yes
    Merging is usually right: the separation is costing you
    No
    Consider federating, and stop counting the duplication as pure waste
Not the same buyer, and not the same organisation.

What to take away#

Publish contracts, bridge identity, delegate with scoped and revocable grants, and share evidence across the boundary. Keep each piece of data where it is accountable. Accept some duplication as the price of independent failure and independent change, and check honestly whether you could disconnect one system tomorrow.

Where to go next#

Sources

Every claim worth checking, with somewhere to check it.

  1. OpenAPI SpecificationOpenAPI Initiative
  2. CloudEventsCloud Native Computing Foundation
  3. Standard WebhooksStandard Webhooks
  4. Bounded Contextmartinfowler.com
  5. RFC 8693: OAuth 2.0 Token ExchangeIETF