
GraphQL Federation vs. Individual APIs
- graphql-federation
- comparison
- individual-apis
Modern applications rarely rely on a single backend service. Product information, customer accounts, orders, and inventory often live in separate systems, each exposing its own API.
Clients can integrate with these APIs directly, but as applications grow, coordinating data across multiple services becomes increasingly complex.
GraphQL Federation offers a different approach. Instead of requiring every client to understand and integrate with individual services, federation brings them together into one unified GraphQL API.
The goal isn't to replace individual APIs. It's to make them work together as one coherent graph.
Working with individual APIs#
Connecting clients directly to backend APIs is often the simplest architecture.
Each service exposes its capabilities through REST, GraphQL, gRPC, or another protocol. Clients communicate with the services they need and process the responses.
This approach works particularly well when applications depend on only a few services or when those services expose clearly defined, independent functionality.
It also avoids introducing an additional gateway or aggregation layer.
However, as the number of services and clients grows, applications may need to understand more of the underlying architecture.
The challenge of integrating multiple APIs#
Consider an application that displays an order with customer information, purchased products, and shipping details.
If this information lives in separate services, the client may need to coordinate several API requests to assemble the complete view.
As more clients consume these services, several challenges can emerge:
- Multiple integrations: Every client must understand which services provide the data it needs.
- Repeated aggregation: Different applications may implement the same relationships between services.
- Network overhead: Dependent requests can introduce additional round trips, particularly on mobile connections.
- Tighter coupling: Changes to backend APIs may require updates across multiple clients.
These challenges don't make individual APIs a bad architectural choice. They arise when clients become responsible for coordinating data across an increasingly distributed system.
How GraphQL Federation changes the picture#
GraphQL Federation introduces a unified GraphQL API in front of independently developed services.
Each participating service contributes a source schema describing the types and fields it provides. Schema composition combines these definitions into one composite schema, while a GraphQL gateway coordinates requests across the services behind it.
Instead of knowing which services provide particular pieces of information, clients query a single, connected graph.
For example, a client can retrieve an order, its customer, and the purchased products through one GraphQL query:
query {
orderById(id: "123") {
total
customer {
name
}
items {
product {
name
price
}
}
}
}The gateway determines which services are responsible for the requested fields, executes the necessary operations, and assembles one response.
Clients no longer need to implement the relationships between these services themselves.
Because GraphQL allows clients to select the fields they need, different applications can consume the same graph without requiring separate endpoints for every use case.
The complexity of connecting services moves out of individual clients and into a shared API architecture.
Keep your existing services and APIs#
Adopting GraphQL Federation doesn't mean abandoning your existing APIs or technology stack.
Services can continue to be developed, deployed, and maintained independently. Their teams retain ownership of their implementations, databases, and release schedules.
GraphQL Federation defines how these services participate in a unified graph, rather than prescribing how they must be implemented internally.
With Fusion, this extends beyond GraphQL services.
Fusion can integrate existing GraphQL, REST, and gRPC APIs into the same graph, allowing organizations to connect services built with different technologies without rewriting them as GraphQL servers.
This makes federation particularly valuable for organizations with established API landscapes, where replacing existing services would be expensive or unnecessary.
Federation doesn't replace every API interaction#
Not every interaction benefits from going through a federated GraphQL gateway.
Direct API calls remain useful for service-to-service communication, event processing, bulk data transfers, and integrations that need access to a particular service.
Federation also introduces additional infrastructure, including a gateway and a schema composition process. Distributed queries can involve multiple network requests and require careful consideration of performance and service boundaries.
For applications consuming only a small number of independent APIs, this additional complexity may not be justified.
The value of federation grows when multiple clients need access to connected data distributed across independently owned services.
GraphQL Federation vs. individual APIs at a glance#
| Capability | Individual APIs | GraphQL Federation |
|---|---|---|
| Client integration | Multiple service endpoints | One unified GraphQL API |
| Data relationships | Coordinated by clients or integration layers | Defined within the graph |
| Data fetching | Service-specific requests | Client-selected GraphQL fields |
| Service ownership | Independent | Independent |
| API technologies | REST, GraphQL, gRPC, etc. | GraphQL subgraphs and supported API connectors |
| Cross-service execution | Managed by consumers or other services | Coordinated by the gateway |
| Operational complexity | Lower without an aggregation layer | Additional gateway and composition infrastructure |
When should you use GraphQL Federation?#
Use individual APIs directly when clients interact with a small number of services, their data requirements are straightforward, and introducing a unified API would add unnecessary complexity.
Consider GraphQL Federation when multiple applications need connected data from independently owned services, and maintaining those relationships separately in every client becomes expensive.
The two approaches can also coexist. Services can continue exposing their APIs directly while participating in a federated graph for applications that benefit from a unified data model.
Ultimately, federation is about making distributed systems easier to consume without sacrificing the independence of the services behind them.
Bring your APIs together with Fusion#
Fusion is a high-performance GraphQL gateway that connects GraphQL, REST, and gRPC APIs into one coherent graph.
It supports both the GraphQL Federation specification and Apollo Federation, allowing organizations to federate existing services while preserving their technology investments.
With Fusion, teams can continue developing their services independently while clients benefit from a single, connected API.
Explore how Fusion brings your existing APIs together, or see how it performs in our open GraphQL Federation benchmarks.
Explore Fusion | View Benchmarks
You might also like
View all
GraphQL Federation vs. Apollo Federation
Learn how GraphQL Federation evolves Apollo Federation into an open standard. Explore technical differences, backward compatibility, and Fusion support.

GraphQL Federation vs. Backend for Frontend (BFF)
Compare GraphQL Federation and the Backend for Frontend (BFF) pattern. Learn how they differ, when to use each, and how they work together.

GraphQL Federation vs. a GraphQL Monolith
Compare GraphQL Federation and monolithic GraphQL APIs. Explore modular monoliths, independent deployments, domain boundaries, and migration strategies.
