{"id":11280,"date":"2022-02-24T07:00:00","date_gmt":"2022-02-24T15:00:00","guid":{"rendered":"https:\/\/formtek.com\/blog\/?p=11280"},"modified":"2021-08-04T17:54:04","modified_gmt":"2021-08-05T01:54:04","slug":"graphql-simplifying-the-complexity-of-large-microservice-projects","status":"publish","type":"post","link":"https:\/\/formtek.com\/blog\/graphql-simplifying-the-complexity-of-large-microservice-projects\/","title":{"rendered":"GraphQL: Simplifying the Complexity of Large Microservice Projects"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">GraphQL is a query language used with APIs. It is a concise and flexible query language that lets clients pinpoint and return only required the data. It is interesting because it helps overcome some of these <a href=\"https:\/\/www.altexsoft.com\/blog\/engineering\/graphql-core-features-architecture-pros-and-cons\/\" data-type=\"URL\" data-id=\"https:\/\/www.altexsoft.com\/blog\/engineering\/graphql-core-features-architecture-pros-and-cons\/\">common problems that occur with a REST API architecture<\/a>:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Inefficient data loading<\/li><li>Fixed data structures for communication<\/li><li>Tedious coding to build and publish API updates<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Twitter is an example of one company that has adopted GraphQL.  Initially Twitter was written using Ruby-on-Rails, but the implementation grew to an unmanageable state.  Then Twitter engineers re-architected the platform to use microservices, but ultimately they made yet another move and decided to use GraphQL.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/twitter.com\/scosenza?lang=en\" data-type=\"URL\" data-id=\"https:\/\/twitter.com\/scosenza?lang=en\">Steve Cosenza<\/a>, Twitter Senior staff Engineer, <a href=\"https:\/\/thenewstack.io\/how-airbnb-and-twitter-cut-back-on-microservice-complexities\/\" data-type=\"URL\" data-id=\"https:\/\/thenewstack.io\/how-airbnb-and-twitter-cut-back-on-microservice-complexities\/\">said that<\/a> &#8220;while the microservices approach enabled increased development speeds at first it also resulted in a scattered and disjointed Twitter API. Independent teams designed and built endpoints for their specific use cases with little coordination. This led to fragmentation and, inevitably, a slowing of developer productivity.&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Twitter isn&#8217;t the only big tech company that has moved to GraphQL.  Netflix and AirBnB are other examples.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.linkedin.com\/in\/gogogarrett\/\" data-type=\"URL\" data-id=\"https:\/\/www.linkedin.com\/in\/gogogarrett\/\">Garrett Heinlen<\/a>, a Netflix software engineer, <a href=\"https:\/\/www.programmableweb.com\/news\/netflix-engineers-graphql-wins-over-rest-and-falcor\/elsewhere-web\/2019\/07\/19\" data-type=\"URL\" data-id=\"https:\/\/www.programmableweb.com\/news\/netflix-engineers-graphql-wins-over-rest-and-falcor\/elsewhere-web\/2019\/07\/19\">said that<\/a> &#8220;having this unified graph is going to allow us to answer questions from the product teams that we haven&#8217;t been able to answer before because the information was in siloed systems. Now, all the data in your organization is accessible and available, and you just build against it. GraphQL starts teams talking to each other on how they can evolve the schema. It improves the way\u00a0Front-end\u00a0and\u00a0Back-end\u00a0engineers work together. And it acts as a living source of\u00a0Documentation\u00a0for your system.&#8221;<\/p>\n<div class=\"lightsocial_container\"><div class=\"lightsocial_element\"><a class=\"lightsocial_a\" href=\"http:\/\/digg.com\/submit?url=https%3A%2F%2Fformtek.com%2Fblog%2Fgraphql-simplifying-the-complexity-of-large-microservice-projects%2F&amp;title=\" target=\"_blank\"><img decoding=\"async\" class=\"lightsocial_img\" src=\"https:\/\/formtek.com\/blog\/wp-content\/plugins\/light-social\/digg.png\" alt=\"Digg This\" title=\"Digg This\" \/><\/a><\/div><div class=\"lightsocial_element\"><a class=\"lightsocial_a\" href=\"http:\/\/www.reddit.com\/submit?url=https%3A%2F%2Fformtek.com%2Fblog%2Fgraphql-simplifying-the-complexity-of-large-microservice-projects%2F&amp;title=\" target=\"_blank\"><img decoding=\"async\" class=\"lightsocial_img\" src=\"https:\/\/formtek.com\/blog\/wp-content\/plugins\/light-social\/reddit.png\" alt=\"Reddit This\" title=\"Reddit This\" \/><\/a><\/div><div class=\"lightsocial_element\"><a class=\"lightsocial_a\" href=\"http:\/\/www.stumbleupon.com\/submit?url=https%3A%2F%2Fformtek.com%2Fblog%2Fgraphql-simplifying-the-complexity-of-large-microservice-projects%2F&amp;title=\" target=\"_blank\"><img decoding=\"async\" class=\"lightsocial_img\" src=\"https:\/\/formtek.com\/blog\/wp-content\/plugins\/light-social\/stumbleupon.png\" alt=\"Stumble Now!\" title=\"Stumble Now!\" \/><\/a><\/div><div class=\"lightsocial_element\"><a class=\"lightsocial_a\" href=\"http:\/\/buzz.yahoo.com\/buzz?targetUrl=https%3A%2F%2Fformtek.com%2Fblog%2Fgraphql-simplifying-the-complexity-of-large-microservice-projects%2F&amp;headline=\" target=\"_blank\"><img decoding=\"async\" class=\"lightsocial_img\" src=\"https:\/\/formtek.com\/blog\/wp-content\/plugins\/light-social\/yahoo_buzz.png\" alt=\"Buzz This\" title=\"Buzz This\" \/><\/a><\/div><div class=\"lightsocial_element\"><a class=\"lightsocial_a\" href=\"http:\/\/www.dzone.com\/links\/add.html?title=&amp;url=https%3A%2F%2Fformtek.com%2Fblog%2Fgraphql-simplifying-the-complexity-of-large-microservice-projects%2F\" target=\"_blank\"><img decoding=\"async\" class=\"lightsocial_img\" src=\"https:\/\/formtek.com\/blog\/wp-content\/plugins\/light-social\/dzone.png\" alt=\"Vote on DZone\" title=\"Vote on DZone\" \/><\/a><\/div><div class=\"lightsocial_element\"><a class=\"lightsocial_a\" href=\"http:\/\/www.facebook.com\/sharer.php?t=&amp;u=https%3A%2F%2Fformtek.com%2Fblog%2Fgraphql-simplifying-the-complexity-of-large-microservice-projects%2F\" target=\"_blank\"><img decoding=\"async\" class=\"lightsocial_img\" src=\"https:\/\/formtek.com\/blog\/wp-content\/plugins\/light-social\/facebook.png\" alt=\"Share on Facebook\" title=\"Share on Facebook\" \/><\/a><\/div><div class=\"lightsocial_element\"><a class=\"lightsocial_a\" href=\"http:\/\/delicious.com\/save?title=&amp;url=https%3A%2F%2Fformtek.com%2Fblog%2Fgraphql-simplifying-the-complexity-of-large-microservice-projects%2F\" target=\"_blank\"><img decoding=\"async\" class=\"lightsocial_img\" src=\"https:\/\/formtek.com\/blog\/wp-content\/plugins\/light-social\/delicious.png\" alt=\"Bookmark this on Delicious\" title=\"Bookmark this on Delicious\" \/><\/a><\/div><div class=\"lightsocial_element\"><a class=\"lightsocial_a\" href=\"http:\/\/www.dotnetkicks.com\/kick\/?title=&amp;url=https%3A%2F%2Fformtek.com%2Fblog%2Fgraphql-simplifying-the-complexity-of-large-microservice-projects%2F\" target=\"_blank\"><img decoding=\"async\" class=\"lightsocial_img\" src=\"https:\/\/formtek.com\/blog\/wp-content\/plugins\/light-social\/dotnetkicks.png\" alt=\"Kick It on DotNetKicks.com\" title=\"Kick It on DotNetKicks.com\" \/><\/a><\/div><div class=\"lightsocial_element\"><a class=\"lightsocial_a\" href=\"http:\/\/dotnetshoutout.com\/Submit?title=&amp;url=https%3A%2F%2Fformtek.com%2Fblog%2Fgraphql-simplifying-the-complexity-of-large-microservice-projects%2F\" target=\"_blank\"><img decoding=\"async\" class=\"lightsocial_img\" src=\"https:\/\/formtek.com\/blog\/wp-content\/plugins\/light-social\/dotnetshoutout.png\" alt=\"Shout it\" title=\"Shout it\" \/><\/a><\/div><div class=\"lightsocial_element\"><a class=\"lightsocial_a\" href=\"http:\/\/www.linkedin.com\/shareArticle?mini=true&amp;url=https%3A%2F%2Fformtek.com%2Fblog%2Fgraphql-simplifying-the-complexity-of-large-microservice-projects%2F&amp;title=&amp;summary=&amp;source=\" target=\"_blank\"><img decoding=\"async\" class=\"lightsocial_img\" src=\"https:\/\/formtek.com\/blog\/wp-content\/plugins\/light-social\/linkedin.png\" alt=\"Share on LinkedIn\" title=\"Share on LinkedIn\" \/><\/a><\/div><div class=\"lightsocial_element\"><a class=\"lightsocial_a\" href=\"http:\/\/www.technorati.com\/faves?add=https%3A%2F%2Fformtek.com%2Fblog%2Fgraphql-simplifying-the-complexity-of-large-microservice-projects%2F\" target=\"_blank\"><img decoding=\"async\" class=\"lightsocial_img\" src=\"https:\/\/formtek.com\/blog\/wp-content\/plugins\/light-social\/technorati.png\" alt=\"Bookmark this on Technorati\" title=\"Bookmark this on Technorati\" \/><\/a><\/div><div class=\"lightsocial_element\"><a class=\"lightsocial_a\" href=\"http:\/\/twitter.com\/home?status=Reading+https%3A%2F%2Fformtek.com%2Fblog%2Fgraphql-simplifying-the-complexity-of-large-microservice-projects%2F\" target=\"_blank\"><img decoding=\"async\" class=\"lightsocial_img\" src=\"https:\/\/formtek.com\/blog\/wp-content\/plugins\/light-social\/twitter.png\" alt=\"Post on Twitter\" title=\"Post on Twitter\" \/><\/a><\/div><div class=\"lightsocial_element\"><a class=\"lightsocial_a\" href=\"http:\/\/www.google.com\/buzz\/post?url=https%3A%2F%2Fformtek.com%2Fblog%2Fgraphql-simplifying-the-complexity-of-large-microservice-projects%2F\" target=\"_blank\"><img decoding=\"async\" class=\"lightsocial_img\" src=\"https:\/\/formtek.com\/blog\/wp-content\/plugins\/light-social\/google_buzz.png\" alt=\"Google Buzz (aka. Google Reader)\" title=\"Google Buzz (aka. Google Reader)\" \/><\/a><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>GraphQL is a query language used with APIs. It is a concise and flexible query language that lets clients pinpoint and return only required the data. It is interesting because it helps overcome some of these common problems that occur<span class=\"ellipsis\">&hellip;<\/span><\/p>\n<div class=\"read-more\"><a href=\"https:\/\/formtek.com\/blog\/graphql-simplifying-the-complexity-of-large-microservice-projects\/\">Read more &#8250;<\/a><\/div>\n<p><!-- end of .read-more --><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-11280","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/formtek.com\/blog\/wp-json\/wp\/v2\/posts\/11280","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/formtek.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/formtek.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/formtek.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/formtek.com\/blog\/wp-json\/wp\/v2\/comments?post=11280"}],"version-history":[{"count":1,"href":"https:\/\/formtek.com\/blog\/wp-json\/wp\/v2\/posts\/11280\/revisions"}],"predecessor-version":[{"id":11281,"href":"https:\/\/formtek.com\/blog\/wp-json\/wp\/v2\/posts\/11280\/revisions\/11281"}],"wp:attachment":[{"href":"https:\/\/formtek.com\/blog\/wp-json\/wp\/v2\/media?parent=11280"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/formtek.com\/blog\/wp-json\/wp\/v2\/categories?post=11280"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/formtek.com\/blog\/wp-json\/wp\/v2\/tags?post=11280"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}