Refreshing a gateway when a child update is pushed


We are running an Apollo Gateway along with a couple client ones where when an update is pushed (deployed) to a child graph server we call an endpoint on the gateway which basically runs gateway.load():

async function schemaRefresh(req, res) {
  dlog('Refreshing Gateway Schemas');

  const { schema, executor } = await graphServer.config.gateway.load({});

  const schemaDerivedData = await graphServer.generateSchemaDerivedData(schema);

  graphServer.schema = schema;
  graphServer.schemaDerivedData = schemaDerivedData;
  graphServer.config.schema = schema;
  graphServer.config.executor = executor;
  graphServer.requestOptions.executor = executor;

  res.json({ status: 'reloaded' });

As of version v0.23.0 the load() function is not available. We have kept our graph servers at 2.22.2 to work around this and would now like to get everything up to date and refactor what is needed to do so. There is a GitHub issue out there to add load() back, though it is growing quite old, I am thinking its because there are better ways to do this.

I guess my first question, is what is the recommended method for handling child deployments so that the Gateway can get the new schema? It looks like Apollo studio may be an option, though I don’t know if clients would want to introduce another party to their configuration.

Our main graph contains 6 services (sub-graphs) and a gateway service. Each of these services are in their own repository, and are deployed separately as needed. Are there any other solutions for us to tell the gateway to refetch the schema? Do we need to restart the gateway so it fetches on startup?

Thank you in advance for your time,