SlideShare a Scribd company logo
Public Produced by Luca Ferrari Version 0.9
How easy (or hard) it is to monitor
your GraphQL service performance
by Luca Ferrari
EMEA Solution Architect
in Red Hat
Public Prepared by Luca Ferrari Version 0.9
Agenda
graphql {
what {
challenges
solutions
}
possible {
demo
}
questions(limit: None) {
answers(0:N)
}
}
Graphql boring definition
GraphQL is a query language for APIs and a runtime for fulfilling those queries with your
existing data.
GraphQL provides a complete and understandable description of the data in your API as well
as gives clients the power to ask for exactly what they need and nothing more.
It simplifies evolving APIs over time and enables powerful developer tools
Reference: graphql.org/learn
Quote
With great power comes great responsibility
Reference: graphql.org/learn
Quote
With great power comes great responsibility
Voltaire
Reference: graphql.org/learn
From ...
Reference: https://github.com/OlegIlyenko/presentation-graphql-introduction
… to
Reference: https://github.com/OlegIlyenko/presentation-graphql-introduction
Graphql advantages
Exact data fetching / Client specific shape of response: with GraphQL, you send a query to your API
and get exactly what you need, nothing more and nothing less. GraphQL minimizes the amount of data
that is transferred across the wire by being selective about the data depending on the client
application’s needs. Thus, a mobile client can fetch less information.
vs
Overfetching or Underfetching
Graphql advantages
One request, many resources / network efficiency: it makes it simple to fetch all required data with
one single request. The structure of GraphQL servers makes it possible to declaratively fetch data as it
only exposes a single endpoint.
vs
Multiple requests to get a composite result and Using network as an unlimited resource /
Network inefficient
Graphql advantages
Modern compatibility: Modern applications are now built-in comprehensive ways where a single
backend application supplies the data that is needed to run multiple clients.
GraphQL embraces these new trends as it can be used to connect the backend application and fulfill
each client’s requirements ( nested relationships of data, fetching only the required data, network usage
requirements, etc.) without dedicating a separate API for each client.
Schema stitching makes it possible to create a single general schema from different schemas. As a
result, each microservice can define its own GraphQL schema.
vs
Multiple APIs for omnichannel experience
Graphql advantages
Field level deprecation: As developers, we are used to calling different versions of an API and often
times getting really weird responses. Traditionally, we version APIs when we’ve made changes to the
resources or to the structure of the resources we currently have hence, the need to deprecate and
evolve a new version.
In GraphQL, it is possible to deprecate API’s on a field level. When a particular field is to be deprecated, a
client receives a deprecation warning when querying the field. After a while, the deprecated field may be
removed from the schema when not many clients are using it anymore.
vs
Versioning / Deprecation / Outdated documentation
Possible issues
1
Caching:
with REST you access resources with URLs,
and thus you would be able to cache on a
resource level. In GraphQL, this becomes
complex as each query can be different
even though it operates on the same
entity.
2
Query performance:
GraphQL gives clients the power to
execute queries to get exactly what they
need. It could also mean that users can ask
for as many fields in as many resources as
they want and build highly complex queries
that slow systems down
3
Security:
OIDC scopes, granular authz or rate limiting
might not be as easy to implement as with
REST services
4
Monitoring performance:
Measuring response time of a GraphQL
endpoint gives us almost no insight into the
health of our GraphQL API.
Performance Monitoring
Imagine a simple query:
query {
viewer {
name
bestFriend {
name
}
}
}
Now a new API client starts using our GraphQL API:
query {
viewer {
friends(first: 1000) {
bestFriend {
name
}
}
}
}
Performance Monitoring
● The queries are not so different, but the second one will see a much higher response time
● Response are slower as we serve more and more complex queries
● But what we really would like to know is the general behaviour of our backend given a comparable
workload
● We are not interested in monitoring the endpoint, but the queries.
● If we are running a private Graphql API with known clients we can control the situation, but
otherwise ...
Performance
monitoring
Observability
Observability is defined as the ability of the internal
states of a system to be determined by its external
outputs.
Observability consists of three pillars - metrics,
traces, and logs.
Drawing conclusions from any one of these pillars alone
is difficult.
Observability means bringing together the information
from all in a coordinated way toward finding bugs and
bottlenecks.
OpenTracing
Distributed tracing is a method used to profile and
monitor applications, especially those built using a
microservices architecture. Distributed tracing helps
pinpoint where failures occur and what causes poor
performance.
OpenTracing is comprised of an API specification,
frameworks and libraries that have implemented the
specification, and documentation for the project.
OpenTracing allows developers to add
instrumentation to their application code using APIs
that do not lock them into any one particular
product or vendor.
OpenTracing and OpenCensus have merged to form
OpenTelemetry!
OpenTelemetry is a collection of tools, APIs, and
SDKs.
You use it to instrument, generate, collect, and
export telemetry data (metrics, logs, and traces) for
analysis in order to understand your software's
performance and behavior.
Jaeger
● A product built at Uber
● Inspired by Dapper from Google
● Donated to CNCF
● Supported libraries in Go, Java, Node.js, Python, C++, C#
● Accepts span in Zipkin format for backward compatibility
● Emit prometheus metrics
Jaeger
Jaeger
Possible
solutions
Apollo Tracing extension
Apollo Tracing is a GraphQL extension for performance
monitoring that works with most popular GraphQL server
libraries, including Node, Ruby, Scala, Java, and Elixir, and it
enables you to easily get resolver-level performance
information as part of a GraphQL response.
Apollo Tracing works by including data in the extensions field
of the GraphQL response, which is reserved by the GraphQL
spec for extra information that a server wants to return. That
way, you have access to performance traces alongside the
data returned by your query
Reference: https://www.apollographql.com/blog/exposing-trace-data-for-your-graphql-server-with-apollo-tracing-97c5dd391385/
Instana tracing support
Instana offers tracing for GraphQL queries, mutations and
subscriptions. GraphQL tracing is currently supported for the
Ruby, Node.js and Java runtimes.
For each operation, we capture
● the operation type (query, mutation or
subscription-update),
● the operation name (if provided),
● all involved object types,
● the arguments used for each object type, and
● the selected fields for each object type.
Each time a client receives an update due to one of its active
GraphQL subscriptions, we trace this subscription update as a
call from the GraphQL server to the client.
Reference: https://www.instana.com/docs/ecosystem/graphql/
DataDog tracer plugin
DataDog Javascript Tracer provides out-of-the-box
instrumentation for many popular frameworks and libraries
by using a plugin system. By default all built-in plugins are
enabled.
This library is OpenTracing compliant. Use the OpenTracing
API and the Datadog Tracer (dd-trace) library to measure
execution times for specific pieces of code.
This plugin automatically instruments the graphql module.
The graphql integration uses the operation name as the span
resource name. If no operation name is set, the resource
name will always be just query, mutation or subscription.
Reference: https://datadoghq.dev/dd-trace-js/
NewRelic plugin
By using the New Relic Apollo Server plugin to instrument
your applications, you can get to the root cause of issues.
The plugin records the overall timing of the operations and
then parses the payload so you can uncover and diagnose the
cause of your slow GraphQL operations.
Distributed tracing goes further and provides the capability
to understand if the latency is coming from the application
itself or other services.
Reference: https://blog.newrelic.com/product-news/apollo-server-plugin/
Apollo OpenTracing plugin
Apollo Opentracing allows you to integrate open source
baked performance tracing to your Apollo server based on
industry standards for tracing.
➢ Request & Field level resolvers are traced out of the
box
➢ Queries and results are logged, to make debugging
easier
➢ Select which requests you want to trace
➢ Spans transmitted through the HTTP Headers are
picked up
➢ Use the opentracing compatible tracer you like
Reference: https://github.com/DanielMSchmidt/apollo-opentracing
Demo
Apollo server
Apollo Server is an open-source, spec-compliant GraphQL server that's compatible with any GraphQL client, including
Apollo Client.
You can use Apollo Server as:
● A stand-alone GraphQL server, including in a serverless environment
● An add-on to your application's existing Node.js middleware (such as Express or Fastify)
● A gateway for a federated data graph
Reference: https://www.apollographql.com/
Components
1. Apollo server with OpenTracing plugin
2. ReactJS client
3. Jaeger platform
Flow
ReactJS
client
Apollo server
resolver
axios
Github REST
API
Jaeger
platform
Demo time!
Demo time!
What just happened?
Feedbacks ?
Comments ?
Thank you

More Related Content

What's hot

How Apache Kafka® Works
How Apache Kafka® WorksHow Apache Kafka® Works
How Apache Kafka® Works
confluent
 
Using ANTLR on real example - convert "string combined" queries into paramete...
Using ANTLR on real example - convert "string combined" queries into paramete...Using ANTLR on real example - convert "string combined" queries into paramete...
Using ANTLR on real example - convert "string combined" queries into paramete...
Alexey Diyan
 
ISWC2023-McGuinnessTWC16x9FinalShort.pdf
ISWC2023-McGuinnessTWC16x9FinalShort.pdfISWC2023-McGuinnessTWC16x9FinalShort.pdf
ISWC2023-McGuinnessTWC16x9FinalShort.pdf
Deborah McGuinness
 
Building Microservices with Apache Kafka
Building Microservices with Apache KafkaBuilding Microservices with Apache Kafka
Building Microservices with Apache Kafka
confluent
 
Introduction to apache kafka
Introduction to apache kafkaIntroduction to apache kafka
Introduction to apache kafka
Dimitris Kontokostas
 
KSQL Intro
KSQL IntroKSQL Intro
KSQL Intro
confluent
 
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
Hyunmin Lee
 
ELK Stack
ELK StackELK Stack
ELK Stack
Eberhard Wolff
 
KafkaConsumer - Decoupling Consumption and Processing for Better Resource Uti...
KafkaConsumer - Decoupling Consumption and Processing for Better Resource Uti...KafkaConsumer - Decoupling Consumption and Processing for Better Resource Uti...
KafkaConsumer - Decoupling Consumption and Processing for Better Resource Uti...
confluent
 
今Serverlessが面白いわけ
今Serverlessが面白いわけ今Serverlessが面白いわけ
今Serverlessが面白いわけ
Yoichi Kawasaki
 
When NOT to use Apache Kafka?
When NOT to use Apache Kafka?When NOT to use Apache Kafka?
When NOT to use Apache Kafka?
Kai Wähner
 
Building a Replicated Logging System with Apache Kafka
Building a Replicated Logging System with Apache KafkaBuilding a Replicated Logging System with Apache Kafka
Building a Replicated Logging System with Apache Kafka
Guozhang Wang
 
Performance Tuning RocksDB for Kafka Streams' State Stores (Dhruba Borthakur,...
Performance Tuning RocksDB for Kafka Streams' State Stores (Dhruba Borthakur,...Performance Tuning RocksDB for Kafka Streams' State Stores (Dhruba Borthakur,...
Performance Tuning RocksDB for Kafka Streams' State Stores (Dhruba Borthakur,...
confluent
 
Extending the Apache Kafka® Replication Protocol Across Clusters, Sanjana Kau...
Extending the Apache Kafka® Replication Protocol Across Clusters, Sanjana Kau...Extending the Apache Kafka® Replication Protocol Across Clusters, Sanjana Kau...
Extending the Apache Kafka® Replication Protocol Across Clusters, Sanjana Kau...
HostedbyConfluent
 
10分でわかるOpenAPI V3
10分でわかるOpenAPI V310分でわかるOpenAPI V3
10分でわかるOpenAPI V3
Kazuchika Sekiya
 
FIWARE Tech Summit - FIWARE Cygnus and STH-Comet
FIWARE Tech Summit - FIWARE Cygnus and STH-CometFIWARE Tech Summit - FIWARE Cygnus and STH-Comet
FIWARE Tech Summit - FIWARE Cygnus and STH-Comet
FIWARE
 
Meet Up - Spark Stream Processing + Kafka
Meet Up - Spark Stream Processing + KafkaMeet Up - Spark Stream Processing + Kafka
Meet Up - Spark Stream Processing + Kafka
Knoldus Inc.
 
Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)
Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)
Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)
Keigo Suda
 
Qlik Tips: 実践!ExcelDataの抽出と加工.pptx
Qlik Tips: 実践!ExcelDataの抽出と加工.pptxQlik Tips: 実践!ExcelDataの抽出と加工.pptx
Qlik Tips: 実践!ExcelDataの抽出と加工.pptx
QlikPresalesJapan
 
コンテキストデータの永続化のための戦略
コンテキストデータの永続化のための戦略コンテキストデータの永続化のための戦略
コンテキストデータの永続化のための戦略
fisuda
 

What's hot (20)

How Apache Kafka® Works
How Apache Kafka® WorksHow Apache Kafka® Works
How Apache Kafka® Works
 
Using ANTLR on real example - convert "string combined" queries into paramete...
Using ANTLR on real example - convert "string combined" queries into paramete...Using ANTLR on real example - convert "string combined" queries into paramete...
Using ANTLR on real example - convert "string combined" queries into paramete...
 
ISWC2023-McGuinnessTWC16x9FinalShort.pdf
ISWC2023-McGuinnessTWC16x9FinalShort.pdfISWC2023-McGuinnessTWC16x9FinalShort.pdf
ISWC2023-McGuinnessTWC16x9FinalShort.pdf
 
Building Microservices with Apache Kafka
Building Microservices with Apache KafkaBuilding Microservices with Apache Kafka
Building Microservices with Apache Kafka
 
Introduction to apache kafka
Introduction to apache kafkaIntroduction to apache kafka
Introduction to apache kafka
 
KSQL Intro
KSQL IntroKSQL Intro
KSQL Intro
 
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
 
ELK Stack
ELK StackELK Stack
ELK Stack
 
KafkaConsumer - Decoupling Consumption and Processing for Better Resource Uti...
KafkaConsumer - Decoupling Consumption and Processing for Better Resource Uti...KafkaConsumer - Decoupling Consumption and Processing for Better Resource Uti...
KafkaConsumer - Decoupling Consumption and Processing for Better Resource Uti...
 
今Serverlessが面白いわけ
今Serverlessが面白いわけ今Serverlessが面白いわけ
今Serverlessが面白いわけ
 
When NOT to use Apache Kafka?
When NOT to use Apache Kafka?When NOT to use Apache Kafka?
When NOT to use Apache Kafka?
 
Building a Replicated Logging System with Apache Kafka
Building a Replicated Logging System with Apache KafkaBuilding a Replicated Logging System with Apache Kafka
Building a Replicated Logging System with Apache Kafka
 
Performance Tuning RocksDB for Kafka Streams' State Stores (Dhruba Borthakur,...
Performance Tuning RocksDB for Kafka Streams' State Stores (Dhruba Borthakur,...Performance Tuning RocksDB for Kafka Streams' State Stores (Dhruba Borthakur,...
Performance Tuning RocksDB for Kafka Streams' State Stores (Dhruba Borthakur,...
 
Extending the Apache Kafka® Replication Protocol Across Clusters, Sanjana Kau...
Extending the Apache Kafka® Replication Protocol Across Clusters, Sanjana Kau...Extending the Apache Kafka® Replication Protocol Across Clusters, Sanjana Kau...
Extending the Apache Kafka® Replication Protocol Across Clusters, Sanjana Kau...
 
10分でわかるOpenAPI V3
10分でわかるOpenAPI V310分でわかるOpenAPI V3
10分でわかるOpenAPI V3
 
FIWARE Tech Summit - FIWARE Cygnus and STH-Comet
FIWARE Tech Summit - FIWARE Cygnus and STH-CometFIWARE Tech Summit - FIWARE Cygnus and STH-Comet
FIWARE Tech Summit - FIWARE Cygnus and STH-Comet
 
Meet Up - Spark Stream Processing + Kafka
Meet Up - Spark Stream Processing + KafkaMeet Up - Spark Stream Processing + Kafka
Meet Up - Spark Stream Processing + Kafka
 
Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)
Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)
Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)
 
Qlik Tips: 実践!ExcelDataの抽出と加工.pptx
Qlik Tips: 実践!ExcelDataの抽出と加工.pptxQlik Tips: 実践!ExcelDataの抽出と加工.pptx
Qlik Tips: 実践!ExcelDataの抽出と加工.pptx
 
コンテキストデータの永続化のための戦略
コンテキストデータの永続化のための戦略コンテキストデータの永続化のための戦略
コンテキストデータの永続化のための戦略
 

Similar to How easy (or hard) it is to monitor your graph ql service performance

GraphQL across the stack: How everything fits together
GraphQL across the stack: How everything fits togetherGraphQL across the stack: How everything fits together
GraphQL across the stack: How everything fits together
Sashko Stubailo
 
Graphql presentation
Graphql presentationGraphql presentation
Graphql presentation
Vibhor Grover
 
Create GraphQL server with apolloJS
Create GraphQL server with apolloJSCreate GraphQL server with apolloJS
Create GraphQL server with apolloJS
Jonathan Jalouzot
 
Graphql
GraphqlGraphql
Graphql
Niv Ben David
 
Sashko Stubailo - The GraphQL and Apollo Stack: connecting everything together
Sashko Stubailo - The GraphQL and Apollo Stack: connecting everything togetherSashko Stubailo - The GraphQL and Apollo Stack: connecting everything together
Sashko Stubailo - The GraphQL and Apollo Stack: connecting everything together
React Conf Brasil
 
The Apollo and GraphQL Stack
The Apollo and GraphQL StackThe Apollo and GraphQL Stack
The Apollo and GraphQL Stack
Sashko Stubailo
 
GraphQL over REST at Reactathon 2018
GraphQL over REST at Reactathon 2018GraphQL over REST at Reactathon 2018
GraphQL over REST at Reactathon 2018
Sashko Stubailo
 
Graphql for Frontend Developers Simplifying Data Fetching.docx
Graphql for Frontend Developers Simplifying Data Fetching.docxGraphql for Frontend Developers Simplifying Data Fetching.docx
Graphql for Frontend Developers Simplifying Data Fetching.docx
ssuser5583681
 
Serverless GraphQL for Product Developers
Serverless GraphQL for Product DevelopersServerless GraphQL for Product Developers
Serverless GraphQL for Product Developers
Sashko Stubailo
 
GraphQL.pptx
GraphQL.pptxGraphQL.pptx
GraphQL.pptx
Preston Flossy
 
GraphQL.pptx
GraphQL.pptxGraphQL.pptx
GraphQL.pptx
Preston Flossy
 
Implementing OpenAPI and GraphQL services with gRPC
Implementing OpenAPI and GraphQL services with gRPCImplementing OpenAPI and GraphQL services with gRPC
Implementing OpenAPI and GraphQL services with gRPC
Tim Burks
 
apidays LIVE Paris - GraphQL meshes by Jens Neuse
apidays LIVE Paris - GraphQL meshes by Jens Neuseapidays LIVE Paris - GraphQL meshes by Jens Neuse
apidays LIVE Paris - GraphQL meshes by Jens Neuse
apidays
 
GraphQL - A query language to empower your API consumers (NDC Sydney 2017)
GraphQL - A query language to empower your API consumers (NDC Sydney 2017)GraphQL - A query language to empower your API consumers (NDC Sydney 2017)
GraphQL - A query language to empower your API consumers (NDC Sydney 2017)
Rob Crowley
 
GraphQL research summary
GraphQL research summaryGraphQL research summary
GraphQL research summary
Objectivity
 
apidays LIVE Australia 2020 - Have your cake and eat it too: GraphQL? REST? W...
apidays LIVE Australia 2020 - Have your cake and eat it too: GraphQL? REST? W...apidays LIVE Australia 2020 - Have your cake and eat it too: GraphQL? REST? W...
apidays LIVE Australia 2020 - Have your cake and eat it too: GraphQL? REST? W...
apidays
 
Camunda GraphQL Extension (09/2017 Berlin)
Camunda GraphQL Extension (09/2017 Berlin)Camunda GraphQL Extension (09/2017 Berlin)
Camunda GraphQL Extension (09/2017 Berlin)
Harald J. Loydl
 
How to Deploy a GraphQL API A Comprehensive Guide.docx
How to Deploy a GraphQL API A Comprehensive Guide.docxHow to Deploy a GraphQL API A Comprehensive Guide.docx
How to Deploy a GraphQL API A Comprehensive Guide.docx
ssuser5583681
 
GraphQL API Gateway and microservices
GraphQL API Gateway and microservicesGraphQL API Gateway and microservices
GraphQL API Gateway and microservices
Mohammed Shaban
 
Scaling your GraphQL applications with Dgraph
Scaling your GraphQL applications with DgraphScaling your GraphQL applications with Dgraph
Scaling your GraphQL applications with Dgraph
Karthic Rao
 

Similar to How easy (or hard) it is to monitor your graph ql service performance (20)

GraphQL across the stack: How everything fits together
GraphQL across the stack: How everything fits togetherGraphQL across the stack: How everything fits together
GraphQL across the stack: How everything fits together
 
Graphql presentation
Graphql presentationGraphql presentation
Graphql presentation
 
Create GraphQL server with apolloJS
Create GraphQL server with apolloJSCreate GraphQL server with apolloJS
Create GraphQL server with apolloJS
 
Graphql
GraphqlGraphql
Graphql
 
Sashko Stubailo - The GraphQL and Apollo Stack: connecting everything together
Sashko Stubailo - The GraphQL and Apollo Stack: connecting everything togetherSashko Stubailo - The GraphQL and Apollo Stack: connecting everything together
Sashko Stubailo - The GraphQL and Apollo Stack: connecting everything together
 
The Apollo and GraphQL Stack
The Apollo and GraphQL StackThe Apollo and GraphQL Stack
The Apollo and GraphQL Stack
 
GraphQL over REST at Reactathon 2018
GraphQL over REST at Reactathon 2018GraphQL over REST at Reactathon 2018
GraphQL over REST at Reactathon 2018
 
Graphql for Frontend Developers Simplifying Data Fetching.docx
Graphql for Frontend Developers Simplifying Data Fetching.docxGraphql for Frontend Developers Simplifying Data Fetching.docx
Graphql for Frontend Developers Simplifying Data Fetching.docx
 
Serverless GraphQL for Product Developers
Serverless GraphQL for Product DevelopersServerless GraphQL for Product Developers
Serverless GraphQL for Product Developers
 
GraphQL.pptx
GraphQL.pptxGraphQL.pptx
GraphQL.pptx
 
GraphQL.pptx
GraphQL.pptxGraphQL.pptx
GraphQL.pptx
 
Implementing OpenAPI and GraphQL services with gRPC
Implementing OpenAPI and GraphQL services with gRPCImplementing OpenAPI and GraphQL services with gRPC
Implementing OpenAPI and GraphQL services with gRPC
 
apidays LIVE Paris - GraphQL meshes by Jens Neuse
apidays LIVE Paris - GraphQL meshes by Jens Neuseapidays LIVE Paris - GraphQL meshes by Jens Neuse
apidays LIVE Paris - GraphQL meshes by Jens Neuse
 
GraphQL - A query language to empower your API consumers (NDC Sydney 2017)
GraphQL - A query language to empower your API consumers (NDC Sydney 2017)GraphQL - A query language to empower your API consumers (NDC Sydney 2017)
GraphQL - A query language to empower your API consumers (NDC Sydney 2017)
 
GraphQL research summary
GraphQL research summaryGraphQL research summary
GraphQL research summary
 
apidays LIVE Australia 2020 - Have your cake and eat it too: GraphQL? REST? W...
apidays LIVE Australia 2020 - Have your cake and eat it too: GraphQL? REST? W...apidays LIVE Australia 2020 - Have your cake and eat it too: GraphQL? REST? W...
apidays LIVE Australia 2020 - Have your cake and eat it too: GraphQL? REST? W...
 
Camunda GraphQL Extension (09/2017 Berlin)
Camunda GraphQL Extension (09/2017 Berlin)Camunda GraphQL Extension (09/2017 Berlin)
Camunda GraphQL Extension (09/2017 Berlin)
 
How to Deploy a GraphQL API A Comprehensive Guide.docx
How to Deploy a GraphQL API A Comprehensive Guide.docxHow to Deploy a GraphQL API A Comprehensive Guide.docx
How to Deploy a GraphQL API A Comprehensive Guide.docx
 
GraphQL API Gateway and microservices
GraphQL API Gateway and microservicesGraphQL API Gateway and microservices
GraphQL API Gateway and microservices
 
Scaling your GraphQL applications with Dgraph
Scaling your GraphQL applications with DgraphScaling your GraphQL applications with Dgraph
Scaling your GraphQL applications with Dgraph
 

More from Red Hat

Meetup 2023 - Gateway API.pdf
Meetup 2023 - Gateway API.pdfMeetup 2023 - Gateway API.pdf
Meetup 2023 - Gateway API.pdf
Red Hat
 
Meetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdfMeetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdf
Red Hat
 
Meetup 2022 - API Gateway landscape.pdf
Meetup 2022 - API Gateway landscape.pdfMeetup 2022 - API Gateway landscape.pdf
Meetup 2022 - API Gateway landscape.pdf
Red Hat
 
APIs at the Edge
APIs at the EdgeAPIs at the Edge
APIs at the Edge
Red Hat
 
Opa in the api management world
Opa in the api management worldOpa in the api management world
Opa in the api management world
Red Hat
 
Covid impact on digital identity
Covid impact on digital identityCovid impact on digital identity
Covid impact on digital identity
Red Hat
 
How do async ap is survive in a rest world
How do async ap is survive in a rest world How do async ap is survive in a rest world
How do async ap is survive in a rest world
Red Hat
 
The new (is it really ) api stack
The new (is it really ) api stackThe new (is it really ) api stack
The new (is it really ) api stack
Red Hat
 
The case for a unified way of speaking to things
The case for a unified way of speaking to thingsThe case for a unified way of speaking to things
The case for a unified way of speaking to things
Red Hat
 
What is the best approach to tdd
What is the best approach to tddWhat is the best approach to tdd
What is the best approach to tdd
Red Hat
 
Leverage event streaming framework to build intelligent applications
Leverage event streaming framework to build intelligent applicationsLeverage event streaming framework to build intelligent applications
Leverage event streaming framework to build intelligent applications
Red Hat
 
Using Streaming APIs in Production
Using Streaming APIs in ProductionUsing Streaming APIs in Production
Using Streaming APIs in Production
Red Hat
 
The independence facts
The independence factsThe independence facts
The independence facts
Red Hat
 
Api observability
Api observability Api observability
Api observability
Red Hat
 
Api service mesh and microservice tooling
Api service mesh and microservice toolingApi service mesh and microservice tooling
Api service mesh and microservice tooling
Red Hat
 
Api design best practice
Api design best practiceApi design best practice
Api design best practice
Red Hat
 
Certificate complexity
Certificate complexityCertificate complexity
Certificate complexityRed Hat
 
Lucamaf1 2949-db--winter2013-accomplishment
Lucamaf1 2949-db--winter2013-accomplishmentLucamaf1 2949-db--winter2013-accomplishment
Lucamaf1 2949-db--winter2013-accomplishmentRed Hat
 
certificate game theory
certificate game theorycertificate game theory
certificate game theoryRed Hat
 
statement of accomplishment - heterogeneous parallel programming
statement of accomplishment - heterogeneous parallel programmingstatement of accomplishment - heterogeneous parallel programming
statement of accomplishment - heterogeneous parallel programmingRed Hat
 

More from Red Hat (20)

Meetup 2023 - Gateway API.pdf
Meetup 2023 - Gateway API.pdfMeetup 2023 - Gateway API.pdf
Meetup 2023 - Gateway API.pdf
 
Meetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdfMeetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdf
 
Meetup 2022 - API Gateway landscape.pdf
Meetup 2022 - API Gateway landscape.pdfMeetup 2022 - API Gateway landscape.pdf
Meetup 2022 - API Gateway landscape.pdf
 
APIs at the Edge
APIs at the EdgeAPIs at the Edge
APIs at the Edge
 
Opa in the api management world
Opa in the api management worldOpa in the api management world
Opa in the api management world
 
Covid impact on digital identity
Covid impact on digital identityCovid impact on digital identity
Covid impact on digital identity
 
How do async ap is survive in a rest world
How do async ap is survive in a rest world How do async ap is survive in a rest world
How do async ap is survive in a rest world
 
The new (is it really ) api stack
The new (is it really ) api stackThe new (is it really ) api stack
The new (is it really ) api stack
 
The case for a unified way of speaking to things
The case for a unified way of speaking to thingsThe case for a unified way of speaking to things
The case for a unified way of speaking to things
 
What is the best approach to tdd
What is the best approach to tddWhat is the best approach to tdd
What is the best approach to tdd
 
Leverage event streaming framework to build intelligent applications
Leverage event streaming framework to build intelligent applicationsLeverage event streaming framework to build intelligent applications
Leverage event streaming framework to build intelligent applications
 
Using Streaming APIs in Production
Using Streaming APIs in ProductionUsing Streaming APIs in Production
Using Streaming APIs in Production
 
The independence facts
The independence factsThe independence facts
The independence facts
 
Api observability
Api observability Api observability
Api observability
 
Api service mesh and microservice tooling
Api service mesh and microservice toolingApi service mesh and microservice tooling
Api service mesh and microservice tooling
 
Api design best practice
Api design best practiceApi design best practice
Api design best practice
 
Certificate complexity
Certificate complexityCertificate complexity
Certificate complexity
 
Lucamaf1 2949-db--winter2013-accomplishment
Lucamaf1 2949-db--winter2013-accomplishmentLucamaf1 2949-db--winter2013-accomplishment
Lucamaf1 2949-db--winter2013-accomplishment
 
certificate game theory
certificate game theorycertificate game theory
certificate game theory
 
statement of accomplishment - heterogeneous parallel programming
statement of accomplishment - heterogeneous parallel programmingstatement of accomplishment - heterogeneous parallel programming
statement of accomplishment - heterogeneous parallel programming
 

Recently uploaded

Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Anthony Dahanne
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
Ortus Solutions, Corp
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Natan Silnitsky
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
Tendenci - The Open Source AMS (Association Management Software)
 

Recently uploaded (20)

Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 

How easy (or hard) it is to monitor your graph ql service performance

  • 1. Public Produced by Luca Ferrari Version 0.9 How easy (or hard) it is to monitor your GraphQL service performance by Luca Ferrari EMEA Solution Architect in Red Hat
  • 2. Public Prepared by Luca Ferrari Version 0.9 Agenda graphql { what { challenges solutions } possible { demo } questions(limit: None) { answers(0:N) } }
  • 3. Graphql boring definition GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API as well as gives clients the power to ask for exactly what they need and nothing more. It simplifies evolving APIs over time and enables powerful developer tools Reference: graphql.org/learn
  • 4. Quote With great power comes great responsibility Reference: graphql.org/learn
  • 5. Quote With great power comes great responsibility Voltaire Reference: graphql.org/learn
  • 8. Graphql advantages Exact data fetching / Client specific shape of response: with GraphQL, you send a query to your API and get exactly what you need, nothing more and nothing less. GraphQL minimizes the amount of data that is transferred across the wire by being selective about the data depending on the client application’s needs. Thus, a mobile client can fetch less information. vs Overfetching or Underfetching
  • 9. Graphql advantages One request, many resources / network efficiency: it makes it simple to fetch all required data with one single request. The structure of GraphQL servers makes it possible to declaratively fetch data as it only exposes a single endpoint. vs Multiple requests to get a composite result and Using network as an unlimited resource / Network inefficient
  • 10. Graphql advantages Modern compatibility: Modern applications are now built-in comprehensive ways where a single backend application supplies the data that is needed to run multiple clients. GraphQL embraces these new trends as it can be used to connect the backend application and fulfill each client’s requirements ( nested relationships of data, fetching only the required data, network usage requirements, etc.) without dedicating a separate API for each client. Schema stitching makes it possible to create a single general schema from different schemas. As a result, each microservice can define its own GraphQL schema. vs Multiple APIs for omnichannel experience
  • 11. Graphql advantages Field level deprecation: As developers, we are used to calling different versions of an API and often times getting really weird responses. Traditionally, we version APIs when we’ve made changes to the resources or to the structure of the resources we currently have hence, the need to deprecate and evolve a new version. In GraphQL, it is possible to deprecate API’s on a field level. When a particular field is to be deprecated, a client receives a deprecation warning when querying the field. After a while, the deprecated field may be removed from the schema when not many clients are using it anymore. vs Versioning / Deprecation / Outdated documentation
  • 12. Possible issues 1 Caching: with REST you access resources with URLs, and thus you would be able to cache on a resource level. In GraphQL, this becomes complex as each query can be different even though it operates on the same entity. 2 Query performance: GraphQL gives clients the power to execute queries to get exactly what they need. It could also mean that users can ask for as many fields in as many resources as they want and build highly complex queries that slow systems down 3 Security: OIDC scopes, granular authz or rate limiting might not be as easy to implement as with REST services 4 Monitoring performance: Measuring response time of a GraphQL endpoint gives us almost no insight into the health of our GraphQL API.
  • 13. Performance Monitoring Imagine a simple query: query { viewer { name bestFriend { name } } } Now a new API client starts using our GraphQL API: query { viewer { friends(first: 1000) { bestFriend { name } } } }
  • 14. Performance Monitoring ● The queries are not so different, but the second one will see a much higher response time ● Response are slower as we serve more and more complex queries ● But what we really would like to know is the general behaviour of our backend given a comparable workload ● We are not interested in monitoring the endpoint, but the queries. ● If we are running a private Graphql API with known clients we can control the situation, but otherwise ...
  • 16. Observability Observability is defined as the ability of the internal states of a system to be determined by its external outputs. Observability consists of three pillars - metrics, traces, and logs. Drawing conclusions from any one of these pillars alone is difficult. Observability means bringing together the information from all in a coordinated way toward finding bugs and bottlenecks.
  • 17. OpenTracing Distributed tracing is a method used to profile and monitor applications, especially those built using a microservices architecture. Distributed tracing helps pinpoint where failures occur and what causes poor performance. OpenTracing is comprised of an API specification, frameworks and libraries that have implemented the specification, and documentation for the project. OpenTracing allows developers to add instrumentation to their application code using APIs that do not lock them into any one particular product or vendor.
  • 18. OpenTracing and OpenCensus have merged to form OpenTelemetry! OpenTelemetry is a collection of tools, APIs, and SDKs. You use it to instrument, generate, collect, and export telemetry data (metrics, logs, and traces) for analysis in order to understand your software's performance and behavior.
  • 19. Jaeger ● A product built at Uber ● Inspired by Dapper from Google ● Donated to CNCF ● Supported libraries in Go, Java, Node.js, Python, C++, C# ● Accepts span in Zipkin format for backward compatibility ● Emit prometheus metrics
  • 23. Apollo Tracing extension Apollo Tracing is a GraphQL extension for performance monitoring that works with most popular GraphQL server libraries, including Node, Ruby, Scala, Java, and Elixir, and it enables you to easily get resolver-level performance information as part of a GraphQL response. Apollo Tracing works by including data in the extensions field of the GraphQL response, which is reserved by the GraphQL spec for extra information that a server wants to return. That way, you have access to performance traces alongside the data returned by your query Reference: https://www.apollographql.com/blog/exposing-trace-data-for-your-graphql-server-with-apollo-tracing-97c5dd391385/
  • 24. Instana tracing support Instana offers tracing for GraphQL queries, mutations and subscriptions. GraphQL tracing is currently supported for the Ruby, Node.js and Java runtimes. For each operation, we capture ● the operation type (query, mutation or subscription-update), ● the operation name (if provided), ● all involved object types, ● the arguments used for each object type, and ● the selected fields for each object type. Each time a client receives an update due to one of its active GraphQL subscriptions, we trace this subscription update as a call from the GraphQL server to the client. Reference: https://www.instana.com/docs/ecosystem/graphql/
  • 25. DataDog tracer plugin DataDog Javascript Tracer provides out-of-the-box instrumentation for many popular frameworks and libraries by using a plugin system. By default all built-in plugins are enabled. This library is OpenTracing compliant. Use the OpenTracing API and the Datadog Tracer (dd-trace) library to measure execution times for specific pieces of code. This plugin automatically instruments the graphql module. The graphql integration uses the operation name as the span resource name. If no operation name is set, the resource name will always be just query, mutation or subscription. Reference: https://datadoghq.dev/dd-trace-js/
  • 26. NewRelic plugin By using the New Relic Apollo Server plugin to instrument your applications, you can get to the root cause of issues. The plugin records the overall timing of the operations and then parses the payload so you can uncover and diagnose the cause of your slow GraphQL operations. Distributed tracing goes further and provides the capability to understand if the latency is coming from the application itself or other services. Reference: https://blog.newrelic.com/product-news/apollo-server-plugin/
  • 27. Apollo OpenTracing plugin Apollo Opentracing allows you to integrate open source baked performance tracing to your Apollo server based on industry standards for tracing. ➢ Request & Field level resolvers are traced out of the box ➢ Queries and results are logged, to make debugging easier ➢ Select which requests you want to trace ➢ Spans transmitted through the HTTP Headers are picked up ➢ Use the opentracing compatible tracer you like Reference: https://github.com/DanielMSchmidt/apollo-opentracing
  • 28. Demo
  • 29. Apollo server Apollo Server is an open-source, spec-compliant GraphQL server that's compatible with any GraphQL client, including Apollo Client. You can use Apollo Server as: ● A stand-alone GraphQL server, including in a serverless environment ● An add-on to your application's existing Node.js middleware (such as Express or Fastify) ● A gateway for a federated data graph Reference: https://www.apollographql.com/
  • 30. Components 1. Apollo server with OpenTracing plugin 2. ReactJS client 3. Jaeger platform
  • 33. Demo time! What just happened?