Solo.io Adds GraphQL to Gloo Mesh and Gloo Edge
Service mesh integration software provider Solo.io has added support for GraphQL to its Gloo Mesh and Gloo Edge products, bringing the popular API query language to both its Istio-based service mesh and its Envoy-based API gateway. In all, the company will be adding “a GraphQL server, resolvers, a GraphQL schema generator, and schema stitching for GraphQL — all driven by declarative configuration” to its products, it said in a statement.
Earlier this year, the company added a legacy SOAP integration, bringing support for a decades-old XML messaging protocol, and now the company moves in the opposite direction, bringing GraphQL support to a realm where GraphQL is not traditionally seen: microservices and the Istio service mesh.
According to Solo.io CEO and founder Idit Levine, the idea for bringing GraphQL has been around since the beginning.
“When we started the company, I recognized that there is a big link between what GraphQL was trying to do and what an API gateway is trying to do,” she said. “I felt that, you know, what’s special about API gateway is that it’s trying somehow to glue — and that’s why the platform’s name is ‘Gloo’ — but it’s not creating any relationship between those services. That’s usually falling on the UI team. The UI team is going to one service, requesting the data, going to the second service, and they basically graph it together. That’s exactly what GraphQL is trying to do.”
While the idea may have been around since the beginning, Solo.io CMO Erik Frieberg explained that it hadn’t arrived until now because it is “very complex and hard” to implement.
“You need to have a solid understanding of GraphQL, Envoy and Istio. Not at the user level, but at a source code level,” said Frieberg. “You then need to write C++ code for the Envoy filter chain as well as other enhancements. Lastly, it takes time. We have been working on this for over a year and the time and complexity to create this are beyond what most organizations can deliver.”
Unlike other GraphQL implementations, Solo.io provides GraphQL without the need for a separate GraphQL server. Instead, all of the GraphQL functionality is built directly into the Envoy proxy, which forms the basis for both the Gloo Edge API Gateway and the Istio service mesh that sits at the center of Gloo Mesh.
Other implementations, of which Levine says there is only one other on the market to this end, require the user to essentially build a GraphQL server, while Solo.io turns on GraphQL functionality with a simple flag, the net effect of which being the ability to query microservices using GraphQL.
“Solo.io’s GraphQL module embeds a GraphQL server natively into Gloo Mesh and Gloo Edge enabling federated GraphQL queries of your APIs,” said Frieberg. “This combines the developer-friendly GraphQL query language for APIs with Istio’s ability to secure, manage, and observe application traffic across microservices.”
Part of the benefit of using Envoy as the GraphQL server, in this case, is that the user also can leverage Solo’s other features, such as routing, rate limiting, load balancing, and global failover, as well as security features like role-based access control (RBAC).
Frieberg explains that GraphQL, like other API protocols, should be looked at as “another tool in the toolbelt,” which comes with both pros and cons.
“It exposes a single endpoint, responds with precisely the data the client requests and also ensures compatibility as your APIs change over time,” said Frieberg. “But those benefits come with a slight performance hit. For east-west traffic, this is less of a concern because of the reduction queries and reduction in roundtrip calls to get data.”
This initial release, which the company said will be commercially available later this year as a separately licensed module for Gloo Edge and Gloo Mesh, is just the beginning, however. Frieberg explained that access to GraphQL queries was the first hurdle, but managing the complexity is something to focus on next.
“Even though we released this 1.0, there’s tons of other areas we can innovate around to add value to our customers because a lot of it has to do with the scope,” said Frieberg. “You can start small and everything’s easily understandable, but when you start to get to tens of thousands or hundreds of thousands of APIs that you’re exposing, now information and understanding and sharing and just interacting become big issues. You can’t digest a complete GraphQL API that’s that big, so how do you break them up?”