GraphQL Federation

Advanced Ecosystem 🔴 Senior

Définition

Architecture où plusieurs services GraphQL indépendants (sous-graphes, un par domaine : utilisateurs, produits, commandes) sont composés en un unique schéma (supergraphe) servi par un routeur qui planifie et distribue chaque requête. Apollo Fédération 2 assouplit la propriété partagée des types et compose un supergraphe rétrocompatible avec les sous-graphes v1 ; Apollo Router en est l'exécuteur de référence.

Analogie

Un guichet unique de mairie : vous déposez un seul formulaire, l'agent d'accueil le découpe et interroge l'état civil, l'urbanisme et la voirie, puis vous rend une réponse assemblée.

Exemple de code

# Sous-graphe « avis » qui étend le type Product du sous-graphe « produits »
extend schema @link(url: "https://specs.apollo.dev/federation/v2.3",
                    import: ["@key", "@shareable"])

type Product @key(fields: "id") {
  id: ID!
  reviews: [Review!]!      # résolu ici, le reste vient de « produits »
}
type Review { id: ID!, rating: Int!, body: String }

# Le routeur reçoit { product(id) { name reviews { rating } } }
# et appelle les deux sous-graphes, puis fusionne par @key.

Cas d'usage

Plusieurs équipes possèdent chacune leur domaine et veulent une API GraphQL unifiée pour les fronts, sans monolithe de schéma.

Anti-pattern

Fédérer trois sous-graphes maintenus par la même équipe de quatre personnes : la complexité (composition, routeur, directives) dépasse le bénéfice ; un seul serveur GraphQL suffit.
#api#graphql#microservices

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre