Feedback thread: Future deprecation of serviceList in ApolloGateway

So, going to share a bit of a hot take here. :stuck_out_tongue: I want to start by being VERY CLEAR that this is my attempt to be honest and not to be hostile. I love Apollo and the products this team pumps out!

I’ve been a massive fan of federation and my team was a very early adopter of it. I understand the advantages/disadvantages of managed versus unmanaged but thus far we have gone with unmanaged for three reasons:

1.We like the dynamic nature of being able to deploy a single microservice and the changes in schema be picked up immediately… especially when doing local development. It’s nice to not have to restart services.
2.We don’t have any plans to utilize Apollo Studio for a variety of reasons.
3. There isn’t a stable, well-documented way to do home-grown managed federation.

What worries me about this deprecation, and the direction I’ve seen Apollo seeming to go, is it seems that there is a push for “use our paid services or else”. This is a major step back from the typical monetized open source model that I typically see where it is more “Here’s an awesome open source product. Here are additional features/functionality/support that you CAN use to add additional value.”

This change to remove serviceList, with a lack of stable and documented way to NOT use studio, is anti-open source, in my opinion, because it leaves zero options for consumers who are not in the Studio ecosystem.

For this to be “fair” open source product that doesn’t back consumers into a corner and that doesn’t leave consumers stranded, consider either…

  1. Leave serviceList as is or
  2. Provide VERY CLEAR alternatives for consumers not using the Studio ecosystem.

Again, trying to provide this outside prospective as a consumer who loves the library. :slight_smile:

6 Likes

Hey all, firstly thank you for everyone’s input. I know this is a hot topic and I appreciate everyone’s willingness to contribute to the conversation.

I don’t think what we’re proposing is a contentious change, so I’d like to make at least this bit perfectly clear in case there was any misunderstanding. We have every intention of supporting past functionality with the replacement we’re proposing. Use of the word “deprecating” may have sent the wrong message, since our plan is to replace this bit of API with something entirely more capable than just polling your services. The new API should be inclusive of all existing use cases while supporting a reactive model that we’d like to recommend going forward.

I’ve opened a GH issue and expect to start work on this change as soon as I reasonably can, which realistically should be some time this month. There’s something of a proposal written in there which I’m happy to refine/concretize if anything is unclear, but I think there’s enough there for others to chime in and provide feedback. I’m very interested in hearing if there are any gaps for existing use cases, so I encourage anyone to look and participate.

4 Likes

This change has landed to the v0.x branch and is available as an alpha for testing. I encourage anyone interested in these changes to try it out and provide any feedback! I expect to release this on both v0.x and v2 late this week / early next week.

npm install @apollo/gateway@0.46.0-alpha.0

The PR: feat(gateway): Implement new `supergraphSdl()` config option for dynamic gateway updates by trevor-scheer · Pull Request #1246 · apollographql/federation · GitHub

Thanks again!

4 Likes

This is now officially released for both latest branches of the @apollo/gateway package :tada:

v0.46.0 (latest tag)
v2.0.0-alpha.4 (latest-2 tag)

1 Like