Apollo Federation enables the division of a single GraphQL API's implementation across multiple back-end services, each with its own schema representing different parts of the combined API. A gateway receives incoming queries, splits them among required services, and combines their responses into a single response returned to the client. This setup provides a clean API surface area and helps control data access by limiting each service's data store access. Apollo Federation was adopted for Odyssey to persist users' progress through courses while associating it with the User type from Apollo Studio's GraphQL API. The implementation gives teams separation of concerns, enabling different teams to work on different products and features without interfering with each other. Setting up federation involved creating a local PostgreSQL database, building an Apollo Server, and defining a federated schema using the `buildFederatedSchema` function. Entities were used to extend the User type from the Studio subgraph in the Odyssey subgraph, allowing for controlled access and separation of concerns. The setup also enabled testing queries with `_entities` stubs to avoid running another server locally. With federation, teams can reduce duplication, make changes independently, and improve frontend code by only sending requests to one source.