I've been a user of GraphQL and Apollo's tooling for quite a while. I want to say seven years now, maybe. First time I started playing with Apollo, I've been using it for quite a while.
And like, one of the things that, honestly, I love about it is actually very much treating it... like you said, it's an API for the consumer, like the client, the front end. And the way that we use it internally and we used it in the past was we had a plethora of APIs that existed that were either ours, external APIs that might be owned by somebody else, and a smattering of... you said SOAP earlier and I laughed because I've definitely put GraphQL in front of a SOAP API in the past seven years of my life. Like that does happen.
And the thing that I always found like beautiful and interesting about it is it really provides a nice decoupling point between what backend engineers are doing and what frontend engineers need. And we've kind of taken the approach at MassDriver, like we use it internally, that the graph is owned by the front end team. They're the ones that are making the clients that interact with our software. And it's like the backend team very much owns like the outside their domains and sometimes it'll be an RPC API or gRPC, sometimes it'll be REST, and sometimes it'll be other GraphQL APIs. But like they're all getting unified in this one layer that makes the most sense for the clients. And you know, that's super beneficial to us.
It feels like it makes the team move much faster because we're not always shipping... like we ship our business features, we ship like the outside of our domain, and then we don't have to think as much through like what's it going to look like to the client because the team that's building that goes, "You know what, we're going to make up what this looks like for the client." I feel like it's a really freeing technology.
You've used the term, and you mentioned just earlier, declarative architecture. So you know, you've compared this to Kubernetes in the past, like this declarative architecture. Can you kind of expand on what you mean by that in like the world of querying and interacting with APIs?
Yeah, I think across the stack there's this movement toward a component based or declarative approach to things that were previously done with code, with bespoke code. So Kubernetes, for example, we used to write code to deploy software to package it and install it and run it on machines.
And the benefit of Kubernetes is there's a standard approach now and it's not just that I can quickly spin up a bunch of my containers and I don't have to worry if the underlying host moves. There's all kinds of benefits to these architectures.
Now that everybody agrees on Kubernetes as a common standard, it lets other companies build products that are based on that architecture. So we've got all of these cloud native networking products, we've got all of these observability products that take advantage of the commonality you get when you're on Kubernetes.
So you might think like Kubernetes is for companies that have a million containers running on like tens of thousands of machines. It's a Google thing and most companies wouldn't need anything quite so powerful. But it turns out it's great for architectures and teams of all sizes because you get all of these network effects as more and more of the ecosystem starts to align around that.
And that's the story with APIs. If you think about the way that software gets connected to APIs today, we're still in that older world of everything done by hand. So there's the backend for frontend pattern. Every time I want to build a new application, especially in a larger organization, I'm probably going to have to adapt the APIs that I've already got to this new use case. The way you do that, more often than not, is you write some service, it's handwritten, it's never the code that people are most excited about investing in. It's just this thing you have to do.
Instead of that, we can do it in a platform based way where you say, "Okay, here's my queries." If I'm writing a React app, I just staple the query to the React component - that's what you were getting at a minute ago - and there's nothing more to do. The system understands how to feed the data from the cloud to the client. And again, there's all these other benefits.
Like now we have an observability story. One of the really great things about GraphQL is that a GraphQL scheme is fine-grained. We have this idea of individual types and fields in GraphQL. So you can ask questions if you're using GraphQL like, "Which of the actual fields coming back from my REST service are being used and by which clients?"
I think we should pause here and, you know, if I were king for a day, right? Store your currency values as integer cents, not float, and your life will be so much better. Everybody should take that lesson to heart. I built a big piece of software earlier in my life where I didn't know that at first. It cost me more time than I care to admit before I addressed that.
It's more than just the static types, so GraphQL came out of actually a mobile development pain point at Facebook originally.
One way to think about GraphQL is it's the first API that was really designed around the needs of the application developer and not the service developer. I think if you really digest what that means, it has a lot of interesting implications and explains a lot about how and why it spread.
It's not just a static typing, GraphQL is designed to have its own documentation embedded in the schema. So that's documentation that's written in English, or whatever, but like natural language. And there's another kind of form of documentation with comments that you can put into GraphQL. And what we have found... you're spot on with this point about agentic systems... is it makes GraphQL semantic.
Like when we think about all the APIs that you've got, if we define them in the form of a GraphQL schema - which is just a way to... it's configuration, it's just explaining what the endpoints are and what they mean. There's an actual like semantic description of, "These are the objects, this is how those objects relate to each other."
I've got a customer object. I've got a user object. There's a way to talk about all of the customers that a particular user has. I guess that's a silly example, but you get the idea.
It's a visual graph. Like we can draw it on the screen - there's an Apollo tool for that. And we have found that when you hand that to an agent, it is very interesting how much more the agent can do. Partly, the agent understands it better.
Yeah, I mentioned agentic DevOps. So there's a lot of excitement. And that's a safe place to start, I think, for a lot of companies, because it's internal, it's developers that you trust and that are probably forward-thinking with AI.
The big exciting thing is... we're an application development company, at the end of the day, we're here to help people write great software... What's great software going to look like in the future?
I think what's going to happen is you're going to see a pretty blurry line between a traditional application and something based around an LLM. Some kind of intelligent app. It's going to be hyper personalized. It's going to have context, not just state, but context from the LLM half of the picture. But that context is going to affect what you see on the screen and vice versa.
We're really excited about what that means because in a lot of the current, traditional applications, you're constrained. You're constrained by how many screens you have or... you probably can't ship an update to the mobile app every day that changes the way the app works. Your customers would get frustrated.
But AI actually lets us personalize the whole app experience top to bottom for each user. Think about a bank. A bank has an interesting problem because they have to somehow serve the needs of an older retiree and a twenty something person who has very different ideas of what their bank is and what they want to do with their bank. To do all that with one app is just so hard. But I think there's a world where AI lets us have different experiences depending on what we want, what our preferences are, and it can learn from that.
So there's a lot to do. If we just think about the future of the frontend stack. How all these pieces fit together. What that means for how they talk to systems and services and APIs. I think a lot's going to change and MCP is part of the story because that gives us a protocol.
But if I told you about HTTP, if I handed you the HTTP spec back in the early 90s, and said go predict the web of two thousand and eight, I think it would have been a big leap. A lot of things I think are going to emerge from these patterns as we see how it all plays out.