Log in to GraphQL Editor
Why you should try GraphQL?
Michal

Michał Tyszkiewicz

7/28/2020

Why you should try GraphQL?

GraphQL started at Facebook back in 2012, it was developed internally before being released as open-source in 2015. In 2018 the project was moved to the newly created GraphQL Foundation, hosted by the Linux foundation. GraphQL creator Lee Byron has stated his aim is to make it ubiquitous across web platforms. Let's look at how plausible that perspective is.

A bit of theory

GraphQL is a query language for APIs, its main advantage is allowing clients to define exactly what type of data is required. Developers create a schema that contains all the data clients can query through the service. This schema contains object types that determine the object you can request and the types it has. The schema is the basis all queries get checked against and then, after being validated, executed. Each field in the schema is attached to a function, called a resolver, which gets called to produce the values when a query is executed. GraphQL vs REST

A bit of practice

Let’s check out how it actually works by looking at a simple example like a forum, blog or social media. In our example let’s say users have four properties: username, email, location and ID and can create posts with titles. Now if you need to create a profile component that only shows the username and ID, you don't need the user’s email and location. With REST and other web service architectures, the API returns all user data and there’s no way to request specifically what you need without fetching unnecessary data. Doesn't sound like a big problem? Just look at Facebook accounts and how many variables they have and you’ll easily get why they started developing GraphQL.

Part of a GraphQL blog schema

GraphQL allows you to request exactly the parameters you want and the API responds with only the data you requested. It also does this via a single endpoint that handles all the client’s requests. That was just a basic query. One of the advantages of GraphQL is the ability to nest queries so it can be expanded to fetch a number of variables.

User data GraphQL query

Let’s go back to the above-mentioned example of a blog/forum/social media API. What if your profile component needs to be a bit more complex? We’ll make a query that requests some basic user info as well as post titles for that particular user so that the profile provides a glimpse of the user’s activity as well as basic information.

Why development teams are adopting GraphQL?

One of the surveys directed to a variety of companies having experience with GraphQL asked their CTOs and lead developers why they decided to pivot to GraphQL. The survey identified six main benefits (Development Velocity, Modularity, Scalability, Performance, Reliability, Security) and asked responders how strongly they would agree/disagree with the following statements:

  • We were able to speed up our development using GraphQL

  • We were able to scale our projects faster with GraphQL

  • It was easier to unify our APIs (e.g., Microservices, legacy endpoints, third-party services, etc.)

  • There has been an increase in performance using GraphQL

  • Our architecture is more stable, with decreased downtime, and fewer errors

The results are:

Chart presenting why companies adopted GraphQL

Source: Novvum @medium

Chart presenting benefits of implementing GraphQL

Source: Novvum @medium

The interpretation of the survey's results was summed up closed in the table below. The most important thought is that GraphQL managed to provide what teams were looking for that small to medium as well as large enterprise teams.

Team sizeWhat they wanted to achieveWhat they've achived
50-100 & 100+ devsFaster development speed, better scalability, better modularityFaster development, better scalability
10-50 devsBetter modularity, higher performanceFaster development, better infrastructure
up to 10 devsFaster development, better modularityFaster development, better scalability

Simple and flexible

GraphQL not only straightforward, but it's also extremely adaptable. GraphQL is client-driven and it’s creators emphasize they were focused on the needs of the client, not the server. That’s also why graphQL is so flexible so that it’s as easy as possible to use for clients. You can use GraphQL with:

  • Python,
  • React
  • Java,
  • C++,
  • PHP,

and a number of others as it’s meant to be a one size fits all solution that retrieves data regardless of the service, platform, or coding language. Can it become widely used across all platforms? Time will tell, but it certainly has all the tools for that.

Check out our other blogposts

How to convince your team to use GraphQL?
Tomek Poniatowicz
Tomek Poniatowicz
How to convince your team to use GraphQL?
3 min read
about 4 years ago
Recoil - experimental state management library for React
Tomek Poniatowicz
Tomek Poniatowicz
Recoil - experimental state management library for React
3 min read
over 3 years ago
Why you should try GraphQL?
Michał Tyszkiewicz
Michał Tyszkiewicz
Why you should try GraphQL?
5 min read
over 3 years ago

Ready for take-off?

Elevate your work with our editor that combines world-class visual graph, documentation and API console

Get Started with GraphQL Editor