Federation Dynamique : Tunneling des sous-graphes GraphQL locaux en production

Quick answer
Federation Dynamique : Tunneling des sous-graphes GraphQL locaux: localhost tunnel answer
A localhost tunnel gives your local app a public HTTPS URL without opening router ports, which is useful for demos, QA, mobile testing, and provider callbacks.
How do I expose localhost without opening ports?
Use a reverse HTTPS tunnel. Your machine connects outbound to the tunnel service, and the public URL forwards requests back to your local app.
When should I use a localhost tunnel?
Use one for webhook testing, OAuth callbacks, client demos, QA previews, mobile device checks, and short-lived development reviews.
Vous ne devriez pas avoir à lancer 50 microservices sur votre ordinateur portable simplement pour tester une seule modification de schéma GraphQL. Cet article décompose l’architecture des tunnels de sous-graphes — comment intégrer sans effort votre code local dans un super-graph cloud en direct sans la surcharge de faire fonctionner toute la stack localement.
1. Le changement de paradigme : des API monolithiques aux super-graphes fédérés
GraphQL est apparu comme la réponse standard à la sur- ou sous-requête, offrant aux clients un point d’accès unique unifié. À mesure que les organisations se développaient, un serveur GraphQL monolithique devenait un goulot d’étranglement évolutif. Les déploiements se heurtaient, les conflits de schéma étaient quotidiens, et l’instabilité d’un seul service pouvait faire tomber tout le graphe.
Apollo Federation a abordé cela à un niveau architectural. En décomposant un schéma monolithique en sous-graphes spécifiques à un domaine, déployables indépendamment, différentes équipes peuvent gérer leurs parties respectives de l’API. Un processus de composition assemble ces fichiers SDL de sous-graphes en un seul super-graph. Une passerelle ou un routeur haute performance se place à la frontière, recevant les requêtes clients, construisant un plan de requête, et dispatchant des requêtes parallèles vers les sous-graphes sous-jacents.
Federation 2 — la spécification canonique actuelle — a introduit un modèle de propriété partagée plus clair, une fusion améliorée des types, et de nouvelles indications de composition pour détecter les erreurs plus tôt. Les schémas de sous-graphes optent pour cette intégration en appliquant la directive @link au type du schéma. Les directives spécifiques à Federation — @key, @shareable, @provides, @requires, @interfaceObject, etc. — codent les relations entre types à travers les frontières de service. La composition valide ces contrats statiquement et produit un artefact SDL de super-graphes consommé par le routeur à l’exécution.
Apollo Router Core est l’environnement d’exécution de référence pour cette architecture. Écrit en Rust, il repose sur trois principes de conception : la correction (conformité stricte aux spécifications GraphQL et Federation), la fiabilité (latence prévisible, empreinte mémoire, stabilité), et l’expérimentation sécurisée (drapeaux de fonctionnalités en runtime et hooks d’extensibilité qui laissent intactes les requêtes existantes).
Alors que Federation a résolu le problème d’échelle organisationnelle en production, il a créé un nouveau goulot d’étranglement dans la boucle de développement.
2. Le goulot d’étranglement du développement local
Dans une architecture fédérée avec dix, trente ou cinquante sous-graphes distincts, l’expérience développeur se dégrade rapidement. Ajouter un champ au sous-graph Inventory nécessite d’être sûr que la composition se fait proprement et que les requêtes inter-services — celles qui couvrent Products, Users, et Inventory — se résolvent toujours correctement.
Trois leviers d’évasion sont généralement utilisés, chacun avec ses coûts réels.
Exécuter toute la stack en local. Même avec Docker Compose, l’épuisement des ressources est quasi certain. La limitation CPU, les kills OOM, et les conflits de ports s’accumulent rapidement à mesure que le nombre de services augmente. Pour la plupart des ingénieurs, cela devient inviable au-delà de quelques sous-graphes.
Simuler les sous-graphes manquants. Un développeur peut faire tourner son service seul en local et stubber les autres. Le risque : dérive. Les mocks sont une photo instantanée ; staging et production sont des cibles mouvantes. Les bugs présents aux points de jonction réels entre services ne sont détectés qu’à l’intégration continue ou après fusion.
Pousser en environnement de staging. Cela préserve la fidélité mais réduit la boucle de feedback. Attendre qu’un pipeline CI/CD reconstruise et redéploie un conteneur pour tester un renommage de champ de schéma est une charge de productivité avec un impact disproportionné sur la vitesse d’itération.
Le problème sous-jacent est l’isolation : l’ordinateur du développeur est déconnecté du graphe connecté en cloud. Le tunneling de sous-graphes existe pour dissoudre cette barrière.
3. Ingress dynamique des sous-graphes : le pattern de tunneling
L’ingress dynamique des sous-graphes est un pattern architectural qui permet à un développeur de faire tourner un seul sous-graphes en local pendant qu’un agent de tunneling l’enregistre et route le trafic en direct depuis un super-graph staging cloud. Le développeur obtient une intégration complète avec le graphe réel sans faire tourner les autres services.
Le flux de données à l’exécution est simple.
Un client — une application ou un développeur dans Apollo Sandbox — envoie une requête au routeur du super-graph staging. Le routeur analyse l’opération et construit un plan de requête. Pour les champs résolus par des sous-graphes hébergés dans le cloud (Users, Reviews), il les récupère normalement. Pour tout champ appartenant au sous-graph en cours de développement (Inventory), il route la sous-opération via un tunnel sécurisé vers localhost:4000 sur la machine du développeur. Le processus local exécute les résolveurs, interroge les bases de données locales ou distantes, et renvoie la charge utile par le tunnel. Le routeur agrège tous les résultats partiels et renvoie une réponse unifiée au client.
Du point de vue du client, la réponse est indiscernable d’un super-graph entièrement hébergé dans le cloud. Du point de vue du développeur, le processus local est entièrement débogable — points d’arrêt, inspection des variables, traces de pile — avec du trafic en direct et composé.
4. Architecture centrale : trois composants
Une implémentation complète de tunneling de sous-graphes nécessite trois composants coordonnés.
4.1 Le sous-graphes local
C’est un serveur GraphQL compatible Federation tournant sur la machine du développeur. Tout langage et framework produisant un SDL de sous-graphes valide fonctionne : Node.js avec @apollo/subgraph, Python avec Strawberry, Go avec gqlgen, Kotlin avec DGS, etc. Le rechargement à chaud ou équivalent permet de voir immédiatement les changements de schéma sans redémarrage.
Le serveur doit exposer un port HTTP. Ce port est la cible vers laquelle le tunnel proxy le trafic.
4.2 L’agent de tunneling sécurisé
L’agent crée une connexion persistante et authentifiée entre la machine locale et un endpoint relais public, contournant NAT et pare-feux d’entreprise. Deux options de production sont couramment utilisées.
ngrok ouvre un flux multiplexé HTTP/2 vers l’infrastructure relais de ngrok et fournit une URL publique stable (ex. https://dev-inventory.ngrok.app). Les requêtes HTTP entrantes vers cette URL sont proxyées via le tunnel vers le port local désigné. L’authentification au niveau du tunnel — ngrok supporte OAuth 2.0, OpenID Connect, et mTLS — doit toujours être configurée lorsqu’on expose un serveur de développement ayant accès à des données ou secrets réels.
Cloudflare Tunnel (cloudflared) fonctionne selon le même principe. Un daemon cloudflared établit des connexions sortantes vers le réseau Edge de Cloudflare. Le trafic arrivant sur un nom d’hôte configuré chez Cloudflare est routé via ces connexions vers l’origine locale. Comme la connexion est sortie uniquement, aucune règle de pare-feu entrante n’est requise.
Les deux outils supportent des UI d’inspection de type webhook pour voir le flux HTTP brut du tunnel — utile pour déboguer les détails du protocole du sous-graph.
4.3 Le routeur cloud dynamique
C’est la pièce la plus complexe architecturalement. Le routeur cloud doit connaître l’URL du tunnel et la substituer à l’URL de staging interne du sous-graph cible.
En configuration statique, le SDL du super-graph encode l’URL de routage pour chaque sous-graphes via une directive join__Graph. Le routeur lit ces URLs au démarrage et envoie les sous-opérations en conséquence. Pour que le tunnel fonctionne, deux options : la composition doit être mise à jour pour intégrer l’URL du tunnel du sous-graph, ou le routeur doit être étendu pour surcharger l’URL à la demande sans recomposer.
Les deux approches sont valides selon les cas d’usage. Leurs compromis sont explorés dans les sections suivantes.
5. Implémentation étape par étape
Voici la séquence canonique en quatre étapes pour connecter un sous-graphes local à un super-graph staging.
Étape 1 : Démarrer le sous-graphes local
npm run dev --port 4000
# → Serveur en cours sur http://localhost:4000/graphql
Vérifiez que le serveur retourne un SDL de sous-graphes valide en introspectant le endpoint ou en utilisant un IDE GraphQL.
Étape 2 : Ouvrir le tunnel inverse
ngrok http 4000
# → Redirection vers https://dev-inventory.ngrok.app -e0 localhost:4000
L’URL publique est maintenant active. Toute requête POST vers https://dev-inventory.ngrok.app/graphql atteint votre résolveur local.
Étape 3 : Surcharger l’URL de routage du sous-graphes
Avec le CLI Rover, un fichier de configuration supergraph.yaml peut mélanger plusieurs sources de sous-graphes. Une référence à un super-graph staging existant peut être utilisée pour tirer tous les autres sous-graphes du registre tout en surchargeant l’entrée inventory avec l’URL du tunnel :
federation_version: =2.12.0
subgraphs:
products:
routing_url: http://products.staging.svc.cluster.local
schema:
graphref: mon-super-graph@staging
subgraph: products
users:
routing_url: http://users.staging.svc.cluster.local
schema:
graphref: mon-super-graph@staging
subgraph: users
inventory:
routing_url: https://dev-inventory.ngrok.app/graphql
schema:
subgraph_url: https://dev-inventory.ngrok.app/graphql
La fonctionnalité de miroir de sous-graphes de Rover (introduite récemment) peut hériter des URLs de routage et schémas d’un référentiel de studio existant, simplifiant la mise en place d’un super-graph local sans config complète — seule la surcharge du sous-graphes en développement doit être explicitement spécifiée.
Lancer rover dev démarre un routeur local qui interroge l’ensemble des sous-graphes mixtes, offrant un environnement de développement hybride local/remote sans toucher au cluster de staging partagé.
Étape 4 : Validation de bout en bout
Dirigez votre application frontend ou Apollo Sandbox vers l’endpoint du routeur local (par défaut http://localhost:4000). Exécutez une requête traversant les frontières des sous-graphes. Le terminal du développeur doit recevoir la sous-opération pour le sous-graphes tunnelé localement. Le routeur assemble tous les résultats partiels et renvoie la réponse unifiée.
6. Environnements partagés : Ingress dynamique basé sur les headers
L’approche ci-dessus présente un défaut opérationnel critique si appliquée au routeur de staging cloud partagé plutôt qu’au routeur local : mettre à jour l’URL du sous-graphes dans le routeur de staging pour pointer vers l’ordinateur du développeur A signifie que les requêtes de Développeur B — et le test automatisé QA — sont également routées vers la machine de Développeur A. Quand Développeur A ferme son ordinateur, tout l’environnement de staging partagé est cassé.
L’ingress dynamique basé sur les headers résout cela en maintenant le routage par développeur entièrement dans le scope de chaque requête plutôt que dans la configuration globale du routeur.
Mécanisme
Un développeur ajoute un header personnalisé à ses requêtes :
x-dev-routing: inventory=https://dev-inventory.ngrok.app
Le routeur inspecte ce header et, uniquement pour cette requête spécifique, surcharge l’URL sortante du sous-graphes inventory lors de l’exécution. Toutes les autres requêtes continuent de router vers le cluster de staging interne.
Implémentation avec scripts Rhai
Apollo Router supporte Rhai pour la manipulation en mémoire des headers, cookies, et contexte du routeur. Les scripts Rhai s’intègrent dans le cycle de vie de traitement des requêtes via des points d’entrée nommés : router_service, supergraph_service, execution_service, et subgraph_service. Le hook subgraph_service est appelé une fois par requête de sous-graphes dans un plan — si un plan se divise en trois sous-graphes, le hook s’exécute trois fois, chacun recevant le nom du sous-graphes cible.
Un script Rhai pour surcharge de routage basé sur headers :
fn subgraph_service(service, subgraph) {
let request_callback = |request| {
let routing_header = request.headers["x-dev-routing"];
if routing_header != () {
// Parse "subgraphName=https://tunnel-url" pairs
let parts = routing_header.split("=");
if parts.len() == 2 && parts[0].trim() == subgraph {
request.subgraph.uri = parts[1].trim();
}
}
};
service.map_request(request_callback);
}
Les benchmarks publiés par Apollo montrent une surcharge Rhai d’environ 100 µs en p95, ce qui en fait un choix adapté. Pour une logique non exprimable en Rhai — parsing JWT complexe, appels à des services externes, recherches en base — un coprocessor externe communiquant avec le routeur via HTTP est une alternative supportée, mais avec une surcharge d’environ 350 µs par étape, qui augmente avec le fan-out des sous-graphes.
Les coprocessors nécessitent un plan GraphOS Enterprise. Les scripts Rhai s’exécutent sur tous les niveaux du routeur, y compris le binaire open-source Apollo Router Core.
Propriétés d’isolation
Avec le routage basé sur headers, plusieurs développeurs peuvent tunneliser simultanément différents sous-graphes dans le même routeur de staging. Chaque requête porte son propre header de routage ; le script Rhai applique les overrides uniquement aux requêtes correspondantes. Du point de vue du routeur de staging, le graphe est toujours composé et disponible. La déconnexion d’un développeur n’affecte que ses propres requêtes.
7. Écosystème : outils supportant ces workflows
Apollo GraphOS et Rover CLI
Rover est l’outil en ligne de commande d’Apollo pour gérer les schémas fédérés. rover dev démarre une instance de routeur local — téléchargée automatiquement lors du premier lancement — qui récupère les schémas de sous-graphes depuis un référentiel GraphOS Studio et les assemble avec un ou plusieurs sous-graphes locaux. Le port par défaut du routeur est 4000.
Le format supergraph.yaml supporté par rover supergraph compose et rover dev permet de mixer trois types de sources de schémas : fichiers .graphql locaux, URLs d’introspection de sous-graphes en direct, et références à des schémas déjà publiés dans un GraphOS Studio. Un seul fichier de config peut tout mélanger, ce qui est idéal pour un workflow de tunneling.
Les versions récentes de Rover ont ajouté la fonctionnalité de miroir de sous-graphes, héritant toutes les URLs de routage et schémas d’un référentiel Studio existant, évitant de maintenir une config complète — seule la surcharge du sous-graphes en développement doit être explicitement spécifiée.
La version LTS actuelle d’Apollo Router est v2.10, sortie en décembre 2025, compatible avec Federation v2.12. La fin de support de v1.x est fixée au 31 mars 2026. Les équipes utilisant encore v1.x devraient avoir migré ; aucun changement de sous-graphes n’est requis pour celles déjà passées à Federation v2.
GraphQL Hive
GraphQL Hive, maintenu par The Guild, est une alternative open-source sous licence MIT à Apollo GraphOS. Il fournit un registre de schémas, validation de composition, analytics d’usage, et ses propres options de gateway (Hive Gateway en JavaScript et Hive Router en Rust). Le registre publie des super-graphes composés sur un CDN haute disponibilité supporté par Cloudflare, que les gateways interrogent pour les mises à jour.
Hive supporte des environnements de schémas branchés (development, staging, production par défaut) et la promotion de schémas entre ces cibles sans republiage des sous-graphes. Les équipes peuvent publier une URL de tunnel comme routing_url pour un sous-graphes dans la cible de développement tout en conservant celles de staging et production.
Le 12 mars 2025, Hive a migré des Jetons d’Accès par cible vers des Jetons d’Accès organisationnels, pouvant être scoping par projet, cible, ou nom de service. Les outils utilisant l’ancien drapeau --registry.accessToken doivent maintenant aussi spécifier un argument --target avec le slug ou UUID.
Hive Gateway et Hive Router
Hive Gateway (Node.js) et Hive Router (Rust) interrogent tous deux le CDN Hive pour l’artefact du super-graphes. Supportant la composition Federation standard, les URLs de tunnels de sous-graphes fonctionnent de la même manière : publier une URL de tunnel comme URL de routage pour un sous-graphes en développement, et la gateway route en conséquence.
8. Considérations de sécurité et d’opération
Authentification du tunnel
Exposer un serveur de développement local à Internet via une URL publique comporte des risques. Un acteur malveillant découvrant l’URL pourrait envoyer des opérations GraphQL arbitraires au processus local, qui fonctionne généralement avec des credentials de développeur et accès à des variables d’environnement, bases de données ou secrets.
Il faut appliquer une authentification au niveau du tunnel, pas seulement au niveau de l’application. Ngrok et cloudflared supportent OAuth 2.0 et mTLS au point relais. Le routeur cloud doit être configuré pour inclure un secret partagé ou un certificat client dans les requêtes relayées, validé par l’agent tunnel local avant de passer le trafic à l’application.
Ne jamais exposer une URL de tunnel atteignant un processus local avec accès en écriture à des bases de données de production ou staging sans mTLS ou équivalent.
Introspection et exposition du schéma
Lorsqu’un sous-graphes local est tunnelé dans un super-graph staging, le schéma et les politiques d’opération du super-graphes s’appliquent à la frontière du routeur. Cependant, si l’introspection du sous-graphes local est activée sans restriction, un appelant connaissant directement l’URL du tunnel peut introspecter le schéma hors des contrôles d’accès du super-graphes.
Apollo Router v1.0 et ultérieur désactive par défaut l’introspection en mode non-dev. Vérifiez que la configuration d’introspection du sous-graphes local correspond à la posture de sécurité adaptée aux données exposées.
Nullabilité et échecs partiels
Les environnements de développement locaux sont intrinsèquement volatils. Un développeur peut mettre un point d’arrêt, redémarrer le serveur en cours de requête, ou introduire une erreur de compilation qui arrête le processus. Ces conditions peuvent faire échouer le tunnel ou renvoyer une erreur sur la requête en cours.
Concevoir des schémas fédérés avec la nullabilité en tête limite la portée de ces échecs. Lorsqu’un sous-graphes ne répond pas, le routeur peut renvoyer null pour cette branche plutôt que de propager une erreur qui vide la réponse entière. La documentation Apollo sur la nullabilité recommande d’évaluer la nullabilité des entités référencées au cas par cas, selon les SLAs internes — il n’y a pas de réponse universelle, mais privilégier la nullable dans les jointures inter-services donne plus de flexibilité pour une dégradation gracieuse.
La directive @semanticNonNull, introduite dans la spécification de nullabilité et supportée expérimentalement par Apollo Kotlin et plusieurs frameworks serveur, offre une alternative plus expressive. Les champs annotés avec @semanticNonNull indiquent que le null n’apparaît qu’en présence d’un tableau d’erreurs, pas comme valeur métier valide. Cette distinction permet aux clients de générer des propriétés non-nullables dans du code typé tout en gérant le cas d’échec qu’un sous-graphes tunnelé hors ligne produirait.
Le support du @defer par le routeur est aussi pertinent ici. Lorsqu’un tunnel de sous-graphes local introduit une latence — par exemple, parce que le développeur débogue étape par étape — le client peut utiliser @defer pour recevoir immédiatement les parties non différées de la réponse et attendre le résultat local de façon asynchrone.
Tracing distribué à travers le tunnel
Le débogage d’un plan de requête complexe devient beaucoup plus difficile sans visibilité de trace de bout en bout. Lorsqu’une requête se divise entre des sous-graphes cloud et un sous-graphes tunnelé localement, la trace doit couvrir tous.
Apollo Router suit la spécification W3C Trace Context pour la génération et la propagation des IDs de trace. Les headers traceparent et tracestate sont automatiquement inclus dans les requêtes de sous-graphes. Si le sous-graphes local est instrumenté avec OpenTelemetry — utilisant @opentelemetry/instrumentation-graphql et un exporteur OTLP pointant vers un collecteur local ou partagé — ses spans apparaissent comme enfants du span du sous-graphes dans la trace distribuée.
La configuration de télémétrie du routeur se fait dans router.yaml sous la clé telemetry. Activer trace_context: true sous propagation assure la transmission des headers W3C :
telemetry:
exporters:
tracing:
propagation:
trace_context: true
otlp:
enabled: true
endpoint: "http://localhost:4317"
La cascade de traces — montrant le planificateur de requêtes du routeur, les spans de récupération parallèle des sous-graphes, et les spans du résolveur du sous-graphes — est l’outil de débogage le plus précieux pour l’analyse N+1 dans un workflow de tunneling.
9. Maturité opérationnelle : quoi standardiser pour les équipes
Pour les équipes allant au-delà de l’expérimentation individuelle vers une pratique de tunneling partagée, plusieurs normes opérationnelles réduisent la friction et évitent les incidents.
Automatisation du cycle de vie du tunnel. Les URLs de tunnel changent à chaque redémarrage de ngrok sauf si un domaine réservé est configuré (les plans payants supportent des sous-domaines stables). Ajouter la registration de l’URL dans le script de démarrage du dev plutôt que de faire une étape manuelle.
Coprocesseur vs Rhai pour la surcharge de routage. Les scripts Rhai s’exécutent directement dans le processus du routeur et ne nécessitent pas d’infrastructure supplémentaire. Pour la plupart des équipes, le pattern de parsing d’en-têtes décrit ci-dessus est adapté à Rhai. Les coprocessors sont appropriés lorsque la décision de routage nécessite un état externe — par exemple, une table de correspondance entre identifiants de développeurs et URLs de tunnel maintenue dans un store partagé.
Isolation du routeur de staging. Appliquer le pattern de routage basé sur headers au routeur de staging partagé, pas au remplacement global d’URL de sous-graphes. Le remplacement global est réservé aux branches de fonctionnalités à durée courte où le développeur possède tout l’environnement de staging.
Validation de la composition du schéma en CI. Même avec un tunnel local, les changements de schéma doivent passer une validation de composition avant fusion. rover subgraph check ou hive schema:check détecteront les changements incompatibles avec la composition courante du registre avant le merge.
Revue de sécurité pour le scope du tunnel. Définir et documenter quels sous-graphes peuvent être tunnelés. Ceux ayant accès en écriture à des données proches de la production doivent nécessiter une authentification renforcée au niveau du tunnel et faire l’objet d’une revue avant toute mise en ligne, même temporaire.
10. Conclusion
La promesse de la fédération GraphQL était l’autonomie des équipes — propriété indépendante, déploiement indépendant, itération indépendante. Les contraintes physiques du hardware de développement menaçaient cette promesse en rendant les tests locaux réalistes impraticables.
Le tunneling de sous-graphes la restaure. En routant le trafic d’un sous-graphes spécifique via un tunnel sécurisé vers l’ordinateur du développeur tout en laissant les autres en cloud, ce pattern offre un accès fidèle et débogable au graphe en direct sans son poids local.
Les outils ont beaucoup évolué. rover dev avec miroir de sous-graphes, le scripting Rhai d’Apollo Router, et les registres de schémas branchés de Hive constituent ensemble les éléments pour un workflow de production. La base stable actuelle est Apollo Router v2.x avec Federation v2.12 (version LTS de décembre 2025), v1.x ayant atteint la fin du support en mars 2026.
Le routage par header par requête est là où le pattern devient réellement scalable : plusieurs développeurs tunnelisant différents sous-graphes simultanément dans le même routeur partagé, chacun en totale isolation. C’est cette pratique qu’il faut standardiser.
Changelog
| Changement | Raison |
|---|---|
| Suppression des mots-clés cibles et du hook line du corps de l’article | Métadonnées de brouillon, pas contenu éditorial |
| Réécriture de la description du diagramme de la section 3 | Clarification du flux de données, différenciation du DNS de staging et du relais tunnel |
Mise à jour de la description de rover dev pour refléter le comportement actuel |
rover dev démarre un routeur local ; il ne modifie pas le cluster de staging cloud. Ajout du contexte de miroir de sous-graphes dans le changelog Rover |
Mise à jour de l’exemple supergraph.yaml à federation_version: =2.12.0 |
Version LTS actuelle de Federation (décembre 2025) ; version initiale non spécifiée |
| Ajout du contexte de la sortie Apollo Router v2.10 / Federation v2.12 (décembre 2025) et de la date de fin support v1.x (31 mars 2026) | Source : blog Apollo, décembre 2025 |
| Réécriture du script Rhai avec logique conforme à la documentation officielle | Script original plausible mais non sourcé ; réécrit pour correspondre à la signature du hook subgraph_service et accès aux headers selon API Rhai |
| Ajout des chiffres de performance pour coprocessor vs Rhai (~100 µs / ~350 µs) | Source : blog officiel Apollo sur les benchmarks d’extensibilité |
| Mention que les coprocessors nécessitent un plan GraphOS Enterprise | Source : documentation Apollo Router |
| Remplacement de la section WunderGraph | Changement de positionnement de WunderGraph, suppression pour cohérence |
| Réécriture de la section GraphQL Hive | Ajout de Hive Gateway v2, détails sur la migration des tokens, mécanisme CDN/Cloudflare, et fonctionnalités |
Ajout de la discussion sur @semanticNonNull dans la section 8 |
Pertinent pour la gestion des échecs, directive supportée expérimentalement par Apollo Kotlin 4 (août 2024) |
Extension de la section de tracing distribué avec snippet de router.yaml |
Basé sur la documentation officielle Apollo Router, propagation W3C confirmée |
| Ajout de la section 9 (Maturité opérationnelle) | Nouveauté pour adresser la standardisation, cycle de vie, isolation, validation CI, sécurité |
Related InstaTunnel pages
Continue from this article into the most relevant product guides and workflows.
Related Topics
Keep building with InstaTunnel
Read the docs for implementation details or compare plans before you ship.