Join us for GraphQL Summit, October 10-12 in San Diego. Use promo code ODYSSEY for $400 off your pass.
Docs
Launch GraphOS Studio

Production readiness checklist

serversreclient

We recommend that you complete this checklist before your begins handling production traffic from clients.

In Apollo Studio

Server-side

  • For security, disable for all production GraphQL servers.
    • You can continue to view and fetch your GraphQL s from Apollo Studio.
  • Ensure that you've correctly configured managed federation.
  • Ensure that you've integrated rover subgraph check and rover subgraph publish into your CI/CD pipeline.
  • If your servers are listed as compatible with FEDERATED TRACING, ensure that you've enabled federated traces, and that you can view metrics as expected in Apollo Studio.
  • Consider adding caching layers.
  • Ensure that you've load-tested your graph.
    • Test loads should be representative of your current traffic (both in terms of volume and in terms of the actual s you execute in the test).
    • To investigate performance issues, use Apollo Studio to identify which s are performing slowly.
      • Look at execution times to identify slow areas of execution.
      • Whenever possible, avoid making multiple calls to s within a single .
      • Understand query plan execution to help understand slow s and optimize your to avoid them.

Apollo Gateway APQ example

This example uses both the buildService option and the RemoteGraphQLDataSource class to enable APQ to each .

import {ApolloServer} from '@apollo/server';
import {startStandaloneServer} from '@apollo/server/standalone';
import {ApolloGateway, RemoteGraphQLDataSource} from '@apollo/gateway';
import {readFileSync} from 'fs';
const gateway = new ApolloGateway({
supergraphSdl: readFileSync('./supergraph.graphql').toString(),
buildService: ({url}) => {
return new RemoteGraphQLDataSource({url, apq: true});
}
});
const server = new ApolloServer({
gateway
});
// Note the top-level await!
const {url} = await startStandaloneServer(server);
console.log(`🚀 Server ready at ${url}`);
Next
Home
Edit on GitHubEditForumsDiscord