<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>GraphQL &#8211; Noise</title>
	<atom:link href="https://noise.getoto.net/tag/graphql/feed/" rel="self" type="application/rss+xml" />
	<link>https://noise.getoto.net</link>
	<description>The collective thoughts of the interwebz</description>
	<lastBuildDate>Mon, 27 Jan 2025 14:00:00 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>
	<item>
		<title>Over 700 million events/second: How we make sense of too much data</title>
		<link>https://noise.getoto.net/2025/01/27/over-700-million-events-second-how-we-make-sense-of-too-much-data/</link>
		
		<dc:creator><![CDATA[Constantin Pan]]></dc:creator>
		<pubDate>Mon, 27 Jan 2025 14:00:00 +0000</pubDate>
				<category><![CDATA[Analytics]]></category>
		<category><![CDATA[Bugs]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[deep dive]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[GraphQL]]></category>
		<category><![CDATA[Sampling]]></category>
		<category><![CDATA[sql]]></category>
		<guid isPermaLink="false">http://noise.getoto.net/?guid=f9a05ae9fe6026e15a99e751b3214ea6</guid>

					<description><![CDATA[Here we explain how we made our data pipeline scale to 700 million events per second while becoming more resilient than ever before. We share some math behind our approach and some of the designs of]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Reverse Searching Netflix’s Federated Graph</title>
		<link>https://noise.getoto.net/2024/04/05/reverse-searching-netflixs-federated-graph/</link>
		
		<dc:creator><![CDATA[Netflix Technology Blog]]></dc:creator>
		<pubDate>Thu, 04 Apr 2024 21:26:42 +0000</pubDate>
				<category><![CDATA[distributed-systems]]></category>
		<category><![CDATA[Elasticsearch]]></category>
		<category><![CDATA[eventing]]></category>
		<category><![CDATA[GraphQL]]></category>
		<category><![CDATA[Search]]></category>
		<guid isPermaLink="false">https://medium.com/p/222ac5d23576</guid>

					<description><![CDATA[By Ricky Gardiner, Alex Hutter, and Katie LefevreSince our previous posts regarding Content Engineering’s role in enabling search functionality within Netflix’s federated graph (the first post, where we identify the issue and elaborate on the indexing ...]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Introducing Timing Insights: new performance metrics via our GraphQL API</title>
		<link>https://noise.getoto.net/2023/06/20/introducing-timing-insights-new-performance-metrics-via-our-graphql-api/</link>
		
		<dc:creator><![CDATA[Jon Levine]]></dc:creator>
		<pubDate>Tue, 20 Jun 2023 13:00:47 +0000</pubDate>
				<category><![CDATA[Analytics]]></category>
		<category><![CDATA[GraphQL]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Speed Week]]></category>
		<guid isPermaLink="false">http://noise.getoto.net/?guid=4a26d97c07b470bfb71c233d139dd9a1</guid>

					<description><![CDATA[If you care about the performance of your website or APIs, it’s critical to understand why things are slow.  Today we're introducing new analytics tools to help you understand what is contributing to "Time to First Byte" (TTFB) of Cloudflare and your origin]]></description>
		
		
		<enclosure url="http://blog.cloudflare.com/content/images/2023/06/image1-15.png" length="0" type="" />

			</item>
		<item>
		<title>Migrating Netflix to GraphQL Safely</title>
		<link>https://noise.getoto.net/2023/06/14/migrating-netflix-to-graphql-safely/</link>
		
		<dc:creator><![CDATA[Netflix Technology Blog]]></dc:creator>
		<pubDate>Wed, 14 Jun 2023 17:59:46 +0000</pubDate>
				<category><![CDATA[distributed-systems]]></category>
		<category><![CDATA[GraphQL]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[Scale]]></category>
		<category><![CDATA[testing-tools]]></category>
		<guid isPermaLink="false">https://medium.com/p/8e1e4d4f1e72</guid>

					<description><![CDATA[By Jennifer Shin, Tejas Shikhare, Will EmmanuelIn 2022, a major change was made to Netflix’s iOS and Android applications. We migrated Netflix’s mobile apps to GraphQL with zero downtime, which involved a total overhaul from the client to the API layer...]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>How Netflix Content Engineering makes a federated graph searchable (Part 2)</title>
		<link>https://noise.getoto.net/2022/06/15/how-netflix-content-engineering-makes-a-federated-graph-searchable-part-2/</link>
		
		<dc:creator><![CDATA[Netflix Technology Blog]]></dc:creator>
		<pubDate>Wed, 15 Jun 2022 16:34:20 +0000</pubDate>
				<category><![CDATA[antlr]]></category>
		<category><![CDATA[Elasticsearch]]></category>
		<category><![CDATA[Gateway]]></category>
		<category><![CDATA[GraphQL]]></category>
		<category><![CDATA[Search]]></category>
		<guid isPermaLink="false">https://medium.com/p/49348511c06c</guid>

					<description><![CDATA[By Alex Hutter, Falguni Jhaveri, and Senthil SayeebabaIn a previous post, we described the indexing architecture of Studio Search and how we scaled the architecture by building a config-driven self-service platform that allowed teams in Content Enginee...]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>How Netflix Content Engineering makes a federated graph searchable</title>
		<link>https://noise.getoto.net/2022/04/12/how-netflix-content-engineering-makes-a-federated-graph-searchable/</link>
		
		<dc:creator><![CDATA[Netflix Technology Blog]]></dc:creator>
		<pubDate>Tue, 12 Apr 2022 17:16:41 +0000</pubDate>
				<category><![CDATA[data-mesh]]></category>
		<category><![CDATA[Elasticsearch]]></category>
		<category><![CDATA[GraphQL]]></category>
		<category><![CDATA[indexing]]></category>
		<category><![CDATA[Search]]></category>
		<guid isPermaLink="false">https://medium.com/p/5c0c1c7d7eaf</guid>

					<description><![CDATA[By Alex Hutter, Falguni Jhaveri and Senthil SayeebabaOver the past few years Content Engineering at Netflix has been transitioning many of its services to use a federated GraphQL platform. GraphQL federation enables domain teams to independently build ...]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>GraphQL global ID migration update</title>
		<link>https://noise.getoto.net/2021/11/16/graphql-global-id-migration-update/</link>
		
		<dc:creator><![CDATA[Andrew Hoglund]]></dc:creator>
		<pubDate>Tue, 16 Nov 2021 21:00:47 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[GraphQL]]></category>
		<category><![CDATA[Product]]></category>
		<guid isPermaLink="false">https://github.blog/?p=60724</guid>

					<description><![CDATA[All newly created GraphQL objects now have IDs that conform to a new format, which we refer to as "next IDs." Learn how to migrate older IDs to the new format and why we're making the change.]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Beyond REST</title>
		<link>https://noise.getoto.net/2021/02/25/beyond-rest/</link>
		
		<dc:creator><![CDATA[Netflix Technology Blog]]></dc:creator>
		<pubDate>Thu, 25 Feb 2021 18:30:03 +0000</pubDate>
				<category><![CDATA[GraphQL]]></category>
		<category><![CDATA[graphql-vs-rest]]></category>
		<category><![CDATA[microservices]]></category>
		<category><![CDATA[rapid-prototyping]]></category>
		<category><![CDATA[rest]]></category>
		<guid isPermaLink="false">https://medium.com/p/1b76f7c20ef6</guid>

					<description><![CDATA[<h4>Rapid Development with GraphQL Microservices</h4><p><em>by </em><a href="https://www.linkedin.com/in/daneavilla/"><em>Dane Avilla</em></a></p><p>The entertainment industry has struggled with COVID-19 restrictions impacting productions around the globe. Since early 2020, Netflix has been iteratively developing systems to provide internal stakeholders and business leaders with up-to-date tools and dashboards with the latest information on the pandemic. These software solutions allow executive leadership to make the most informed decisions possible regarding if and when a given physical production can safely begin creating compelling content across the world. One approach that is gaining mind-share within Netflix is the concept of <a href="https://dev.to/mrfrontend/graphql-microservices-architecture-by-apollo-1m75"><em>GraphQL</em> <em>microservices</em></a><em> </em>(GQLMS) as a backend platform facilitating rapid application development.</p><p>Many organizations are embracing GraphQL as a way to unify their enterprise-wide data model and provide a single entry point for navigating a sea of structured data with its network of related entities. Such efforts are laudable but often entail multiple calendar quarters of coordination between internal organizations followed by the development and integration of all relevant entities into a single monolithic graph.</p><p>In contrast to this “One Graph to Rule Them All” approach, GQLMS leverage GraphQL simply as an enriched API specification for building <a href="https://en.wikipedia.org/wiki/Create,_read,_update_and_delete">CRUD</a> applications. Our experience using GQLMS for rapid proof-of-concept applications confirmed two theories regarding the advertised benefits of GraphQL:</p><ul><li>The <a href="https://github.com/graphql/graphiql">GraphiQL</a> IDE displays any available GraphQL documentation right alongside the schema, dramatically improving developer ergonomics for API consumers (in contrast to the best-in-class <a href="https://swagger.io/tools/swagger-ui/">Swagger UI</a>).</li><li>GraphQL’s strong type system and polyglot client support mean API providers do not need to concern themselves with generating, versioning, and maintaining language-specific API clients (such as those generated with the excellent <a href="https://swagger.io/tools/swagger-codegen/">Swagger Codegen</a>). Consumers of GraphQL APIs can simply leverage the open-source GraphQL client of their preference.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*QupchUd58_jK8ObO"><figcaption><strong>Graph<em>i</em>QL: Auto-generated test GUI for the </strong><a href="https://swapi.dev/"><strong>Star Wars API</strong></a></figcaption></figure><p>Our experience has led to an architecture with a number of best-practices for teams interested in GQLMS as a platform for rapid development.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/511/0*N1kLX-1u7LI-9f9_"></figure><h4>Graphile</h4><p>During early GraphQL exploration efforts, Netflix engineers became aware of the <a href="https://graphile.org/">Graphile</a> library for presenting PostgreSQL database objects (tables, views, and functions) as a GraphQL API. Graphile supports <a href="https://www.graphile.org/postgraphile/smart-comments/#gatsby-focus-wrapper">smart comments</a> allowing control of various features by tagging database tables, views, columns, and types with specifically formatted PostgreSQL comments. Documentation can even be embedded in the database comments such that it displays in the GraphQL schema generated by Graphile.</p><p>We hypothesized that a <a href="https://www.docker.com/why-docker">Docker</a> container running a very simple NodeJS web server with the Graphile library (and some additional Netflix internal components for security, logging, metrics, and monitoring) could provide a “better REST than REST” or “REST++” platform for rapid development efforts. Using Docker we defined a lightweight, stand-alone container that allowed us to package the Graphile library and its supporting code into a self-contained bundle that any team can use at Netflix with no additional coding required. Simply pull down the defined Docker base image and run it with the appropriate database connection string. This approach proved to be very successful and yielded several insights into the use of Graphile.</p><p>Specifically:</p><ul><li>Use database views as an “API layer” to preserve flexibility in order to allow modifying tables without changing an existing GraphQL schema (built on the database views).</li><li>Use PostgreSQL <a href="https://www.postgresql.org/docs/11/rowtypes.html">Composite Types</a> when taking advantage of PostgreSQL <a href="https://www.postgresql.org/docs/9.5/functions-aggregate.html">Aggregate Functions</a>.</li><li>Increase flexibility by allowing GraphQL clients to have “full access” to the auto-generated GraphQL queries and mutations generated by Graphile (exposing CRUD operations on <em>all</em> tables &#38; views); then later in the development process, remove schema elements that did not end up being used by the UI before the app goes into production.</li></ul><h4>Database views as API</h4><p>We decided to put the data tables in one PostgreSQL schema and then define views on those tables in another schema, with the Graphile web app connecting to the database using a dedicated PostgreSQL user role. This ended up achieving several different goals:</p><ul><li>Underlying tables could be changed independently of the views exposed in the GraphQL schema.</li><li>Views could do basic formatting (like rendering TIMESTAMP fields as ISO8601 strings).</li><li>All permissions on the underlying table had to be explicitly granted for the web application’s PostgreSQL user, avoiding unexpected write access.</li><li>Tables and views could be modified within a single transaction such that the changes to the exposed GraphQL schema happened atomically.</li></ul><p>On this last point: changing a table column’s type would break the associated view, but by wrapping the change in a transaction, the view could be dropped, the column could be updated, and then the view could be re-created before committing the transaction. We run Graphile with <a href="https://www.graphile.org/postgraphile/usage-library/#api-postgraphilepgconfig-schemaname-options">pgWatch</a> enabled, so as soon as any updates were made to the database, the GraphQL schema immediately updated to reflect the change.</p><h4>PostgreSQL composite types</h4><p>Graphile does an excellent job reading the PostgreSQL <em>database</em> schema and transforming tables and basic views into a <em>GraphQL</em> schema, but our experience revealed limitations in how Graphile describes nested types when PostgreSQL <a href="https://www.postgresql.org/docs/9.5/functions-aggregate.html">Aggregate Functions</a> or <a href="https://www.postgresql.org/docs/9.5/functions-json.html">JSON Functions</a> exist within a view. Native PostgreSQL functions such as json_build_object will be translated into a GraphQL JSON type, which is simply a String, devoid of any internal structure. For example, take this simplistic view returning a JSON object:</p><pre>postgres_test_db=# create view postgraphile.json_object_example as<br>  select json_build_object(‘hello world’::text, 1, ‘2’::text, 3)<br>  as json;<br>postgres_test_db=# select * from postgraphile.json_object_example;<br>          json<br>— — — — — — — — — — — — -<br>{“hello world”: 1, “2”: 3}<br>(1 row)</pre><p>In the generated schema, the data type is JSON:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/550/0*XK9xj1dvJMYp0Oe9"></figure><p>The internal structure of the json field (the hello world and 2 sub-fields) is opaque in the generated GraphQL schema.</p><p>To further describe the internal structure of the json field — exposing it within the generated schema — define a composite type, and create the view such that it returns that type:</p><pre>postgres_test_db=# CREATE TYPE postgraphile.custom_type AS (<br>  "hello world" integer,<br>  "2" integer<br>);</pre><p>Next, create a function that returns that type:</p><pre>postgres_test_db=# CREATE FUNCTION postgraphile.custom_type(<br>  "hello world" integer,<br>  "2" integer<br>)<br>RETURNS postgraphile.custom_type<br>AS 'select $1, $2'<br>LANGUAGE SQL;</pre><p>Finally, create a view that returns that type:</p><pre>postgres_test_db=# create view postgraphile.json_object_example2 as<br>  select postgraphile.custom_type(1, 3)<br>  as json;<br>postgres_test_db=# select * from postgraphile.json_object_example2;<br> json<br>— — — -<br>(1,3)<br>(1 row)</pre><p>At first glance, that does not look very useful, but hold that thought: before viewing the generated schema, define comments on the view, custom type, and fields of the custom type to take advantage of Graphile’s smart comments:</p><pre>postgres_test_db=# comment on<br>  type postgraphile.custom_type<br>  is E’A description for the custom type’;<br>postgres_test_db=# comment on<br>  view postgraphile.json_object_example2<br>  is E’A description for the view’;<br>postgres_test_db=# comment on<br>  column postgraphile.custom_type.”hello world”<br>  is E’A description for hello world’;<br>postgres_test_db=# comment on<br>  column postgraphile.custom_type.field_2<br>  is E’@name field_two\nA description for the second field’;</pre><p>Now, when the schema is viewed, the json field no longer shows up with opaque type JSON, but with CustomType:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/623/0*BIBL5LiGYIoHQZXo"></figure><p>(also note that the comment made on the view — A description for the view — shows up in the documentation for the query field).</p><p>Clicking CustomType displays the fields of the custom type, along with their comments:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/564/0*h3EtRbTmVAoDDMO8"></figure><p>Notice that in the custom type, the second field was named field_2, but the Graphile smart comment renames the field to field_two and subsequently gets camel-cased by Graphile to fieldTwo. Also, the descriptions for both fields display in the generated GraphQL schema.</p><h4>Allow “full access” to the Graphile-generated schema (during development)</h4><p>Initially, the proposal to use Graphile was met with vigorous <a href="https://jobs.netflix.com/culture">dissent</a> when discussed as an option in a “one schema to rule them all” architecture. Legitimate concerns about security (how does this integrate with our <a href="https://en.wikipedia.org/wiki/Identity_management">IAM</a> infrastructure to enforce row-level access controls within the database?) and performance (how do you limit queries to avoid DDoSing the database by selecting all rows at once?) were raised about providing open access to database tables with a SQL-like query interface. However, in the context of GQLMS for rapid development of internal apps by small teams, having the default Graphile behavior of making all columns available for filtering allowed the UI team to rapidly iterate through a number of new features without needing to involve the backend team. This is in contrast to other development models where the UI and backend teams first agree on an initial API contract, the backend team implements the API, the UI team consumes the API and then the API contract evolves as the needs of the UI change during the development life cycle.</p><p>Initially, the overall app’s performance was poor as the UI often needed multiple queries to fetch the desired data. However, once the app’s behavior had been fleshed out, we quickly created new views satisfying each UI interaction’s needs such that each interaction only required a single call. Because these requests run on the database in native code, we could perform sophisticated queries and achieve high performance through the appropriate use of indexes, denormalization, clustering, etc.</p><p>Once the “public API” between the UI and backend solidified, we “hardened” the GraphQL schema, removing all unnecessary queries (created by Graphile’s default settings) by marking tables and views with the smart comment @omit. Also, the default behavior is for Graphile to generate mutations for tables and views, but the smart comment @omit create,update,delete will remove the mutations from the schema.</p><h4>Conclusion</h4><p>For those taking a <a href="https://blog.mirumee.com/schema-first-graphql-the-road-less-travelled-cf0e50d5ccff">schema-first</a> approach to their GraphQL API development, the automatic GraphQL schema generation capabilities of Graphile will likely unacceptably restrict schema designers. Graphile may be difficult to integrate into an existing enterprise IAM infrastructure if fine-grained access controls are required. And adding custom queries and mutations to a Graphile-generated schema (i.e. to expose a gRPC service call needed by the UI) is something we currently do not support in our Docker image. However, we recently became aware of Graphile’s <a href="https://www.graphile.org/postgraphile/make-extend-schema-plugin/">makeExtendSchemaPlugin</a>, which allows custom types, queries, and mutations to be merged into the schema generated by Graphile.</p><p>That said, the successful implementation of an internal app over 4–6 weeks with limited initial requirements and an <em>ad hoc </em>distributed team (with no previous history of collaboration) raised a large amount of interest throughout the Netflix Studio. Other teams within Netflix are finding the GQLMS approach of:</p><p>1) using standard GraphQL constructs and utilities to expose the database-as-API</p><p>2) leveraging custom PostgreSQL types to craft a GraphQL schema</p><p>3) increasing flexibility by auto-generating a large API from a database</p><p>4) and exposing additional custom business logic and data types alongside those generated by Graphile</p><p>to be a viable solution for internal CRUD tools that would historically have used REST. Having a standardized Docker container hosting Graphile provides teams the necessary infrastructure by which they can quickly iterate on the prototyping and rapid application development of new tools to solve the ever-changing needs of a global media studio during these challenging times.</p><img src="https://medium.com/_/stat?event=post.clientViewed&#38;referrerSource=full_rss&#38;postId=1b76f7c20ef6" width="1" height="1" alt=""><hr><p><a href="https://netflixtechblog.com/beyond-rest-1b76f7c20ef6">Beyond REST</a> was originally published in <a href="https://netflixtechblog.com/">Netflix TechBlog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>New global ID format coming to GraphQL</title>
		<link>https://noise.getoto.net/2021/02/10/new-global-id-format-coming-to-graphql/</link>
		
		<dc:creator><![CDATA[Wissam Abirached]]></dc:creator>
		<pubDate>Wed, 10 Feb 2021 18:00:33 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[GraphQL]]></category>
		<guid isPermaLink="false">https://github.blog/?p=56200</guid>

					<description><![CDATA[The GitHub GraphQL API has been publicly available for over 4 years now. Its usage has grown immensely over time, and we’ve learned a lot from running one of the largest public GraphQL APIs in]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Open Sourcing the Netflix Domain Graph Service Framework: GraphQL for Spring Boot</title>
		<link>https://noise.getoto.net/2021/02/03/open-sourcing-the-netflix-domain-graph-service-framework-graphql-for-spring-boot/</link>
		
		<dc:creator><![CDATA[Netflix Technology Blog]]></dc:creator>
		<pubDate>Wed, 03 Feb 2021 17:43:15 +0000</pubDate>
				<category><![CDATA[GraphQL]]></category>
		<category><![CDATA[microservice-architecture]]></category>
		<category><![CDATA[spring-boot]]></category>
		<guid isPermaLink="false">https://medium.com/p/92b9dcecda18</guid>

					<description><![CDATA[By Paul Bakker and Kavitha Srinivasan, Images by David Simmer, Edited by Greg BurrellNetflix has developed a Domain Graph Service (DGS) framework and it is now open source. The DGS framework simplifies the implementation of GraphQL, both for standalone...]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>How Netflix Scales its API with GraphQL Federation (Part 2)</title>
		<link>https://noise.getoto.net/2020/12/11/how-netflix-scales-its-api-with-graphql-federation-part-2/</link>
		
		<dc:creator><![CDATA[Netflix Technology Blog]]></dc:creator>
		<pubDate>Fri, 11 Dec 2020 14:32:51 +0000</pubDate>
				<category><![CDATA[edge-engineering]]></category>
		<category><![CDATA[GraphQL]]></category>
		<category><![CDATA[microservice-architecture]]></category>
		<category><![CDATA[Netflix]]></category>
		<category><![CDATA[observability]]></category>
		<guid isPermaLink="false">https://medium.com/p/bbe71aaec44a</guid>

					<description><![CDATA[In our previous post and QConPlus talk, we discussed GraphQL Federation as a solution for distributing our GraphQL schema and implementation. In this post, we shift our attention to what is needed to run a federated GraphQL platform successfully — from...]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>How Netflix Scales its API with GraphQL Federation (Part 1)</title>
		<link>https://noise.getoto.net/2020/11/09/how-netflix-scales-its-api-with-graphql-federation-part-1/</link>
		
		<dc:creator><![CDATA[Netflix Technology Blog]]></dc:creator>
		<pubDate>Mon, 09 Nov 2020 16:09:23 +0000</pubDate>
				<category><![CDATA[api gateway]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[edge-engineering]]></category>
		<category><![CDATA[GraphQL]]></category>
		<category><![CDATA[microservice-architecture]]></category>
		<guid isPermaLink="false">https://medium.com/p/ae3557c187e2</guid>

					<description><![CDATA[Netflix is known for its loosely coupled and highly scalable microservice architecture. Independent services allow for evolving at different paces and scaling independently. Yet they add complexity for use cases that span multiple services. Rather than...]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/

Object Caching 47/231 objects using Memcached
Page Caching using Disk: Enhanced 
Lazy Loading (feed)
Database Caching using Memcached

Served from: noise.getoto.net @ 2025-12-11 19:30:31 by W3 Total Cache
-->