SlideShare une entreprise Scribd logo
1  sur  41
Télécharger pour lire hors ligne
The Apollo and
GraphQL stack
How everything fits together
Sashko Stubailo
Open Source Lead, Apollo
@stubailo
The goal of the Apollo team and community:
Make building great
applications simpler and more
straightforward, with GraphQL.
Today's apps can be complex:
● Multiple frontends for different platforms
● Multiple backends where data lives
● Need for team coordination across different
languages, technologies, and contexts
In this presentation, I'd like to show you how Apollo
and GraphQL can address these concerns.
Let's set the stage...
React
Android
iOS
Angular
MongoDB
Oracle
Salesforce
PostgreSQL
Microservice
What is GraphQL?
Schema definition Query language Community of tools
Why does GraphQL have so many benefits?
GraphQL organizes the mess of
ad-hoc, underspecified
endpoints.
What is Apollo?
A set of projects designed to leverage GraphQL and work together
to create a great workflow.
Client-side tooling
● Apollo Client
● Apollo iOS
● Apollo Android
● Dev tools
● apollo-codegen
● eslint-plugin-graphql
Server-side tooling
● Apollo Server
● Graphql-tools
○ Schema creation
○ Mocking
○ Stitching
● Apollo Optics
Core benefits from Apollo + GraphQL
1. Easy, fast, and simple development
2. Better maintenance, security, and coordination, especially
between teams
3. Ultimate understanding into how your app data works
Let's look at them one by one.
1. Easy, fast, and simple
development
GraphQL is easier than ever before
Apollo Client
Apollo Server
BackendBackend Backend
React
Existing REST API
● Today, it's just as fast and easy to
build with GraphQL as any other
API technology.
● Huge benefits from a flexible and
declarative approach to data.
● Save time by describing what you
need, not how to get it
A GraphQL API in just a few lines of code
https://launchpad.graphql.com/v7mnw3m03
Easily attach GraphQL data to React
https://codesandbox.io/s/jvlrl98xw3
Adding new features to your app
● This is where GraphQL really shines
● In the UI, just add a new component
● Use the existing fields in a new way, or add a few,
but no need to create an entire new endpoint
● You can build on the work you've already done
● GraphQL is like a component-based API
Migrating an existing app
Spend less time managing data
● Less time worrying about data:
○ Loading state tracking
○ Normalizing and storing data
○ Error handling
○ Async request management
● Less time building new endpoints:
○ Just build the types and fields you need
What's the Apollo team's goal here?
● We want to make sure the best option is also the easiest
● You shouldn't have to decide between simple and complicated
● Huge focus on documentation to make things easy
● Constant improvement: Apollo Client 2.0 is 5x faster and 2x smaller
2. Safety and coordination
Check your API calls ahead of time
+
Use the interaction between GraphQL schema and queries.
Great article by Zach Silviera: https://zach.codes/supercharging-react-app-development/
eslint-plugin-graphql
apollo-codegen
Validating code across the stack
● Validate your frontend code is correct as you write it, using
eslint-plugin-graphql and static type generation with apollo-codegen
● Use a CI setup to check against newly deployed schemas to ensure
your frontend remains valid
● Find breaking changes in the schema with
@entria/graphql-findbreakingchanges. Extra useful when you don't
have the frontend code.
Mocking and Schema Stitching in graphql-tools
https://dev-blog.apollodata.com/graphql-tools-2-0-with-s
chema-stitching-8944064904a5
New workflows
● "GraphQL-First" - develop the schema in parallel with the frontend
using mocking, then connect them
● Using schema stitching, develop different parts of your API in isolation,
and combine with mocking to achieve a hybrid mocked/real API
● Eliminate unneeded blockers across teams
Why GraphQL?
● GraphQL is the only technology that combines a strongly-typed static
schema with a specific query language
● No "select * from users"
● Queries more often live next to UI code, not somewhere in a totally
different place, making it easier to connect UI+queries
3. Understanding your data
Understand the data available
● Same system for building and
validating the API makes it complete
reliable
● Opt-in systems like Swagger, or
manually maintained API docs, are
often incomplete or out of date
Query language
● No way to select * in GraphQL
● You know exactly which fields are
being accessed
● GraphQL is the only tech I know of that
combines a description of the API with
a requirement to ask for specific fields
Track API field usage with Optics
What to do with this information?
● Know which fields to target for deprecation
● Know where to start optimizing
● Move from fields to operations to see what is affected
Fine-grained data
requirements
● Without GraphQL, all similar requests
for data blend together
● It's hard to trace back to UI
performance
● You want to see information per query,
not per endpoint
Optics and devtools
Similar information, across the stack: The future of Apollo
Per-field performance
Easy to know where to fix the problem
● Client side: Avoid fetching fields, split up queries, @defer
● Server side: Make the server faster, do better caching
So what's the next step for GraphQL insights?
Apollo Tracing
Broad server support
● Node
● Ruby
● Scala (Sangria)
● Java
● Elixir
● OCaml
● Even Wordpress →
My hopes for the Apollo Tracing standard
● Performance data built into every GraphQL server
● Visualize data in more places, such as GraphiQL or Apollo
Client Devtools
● Support more kinds of information, for example underlying
backend timing
● Support for schema stitching
Let's work together on it!
Zooming out
The "Apollo Platform"
Apollo Optics
Apollo Client
Apollo Server
Backend Backend Backend
React, etc
Developer tools, code
analysis, and more
Apollo iOS/Android
Swift, Java
The future of the Apollo platform
● Continue to prioritize incremental adoption and integrate
with every technology imaginable
● More tools and features that take advantage of GraphQL
across the whole stack
● Build on more community-driven standards, like Tracing
Core benefits from Apollo + GraphQL
1. Easy, fast, and simple development
2. Better maintenance, security, and coordination, especially
between teams
3. Ultimate understanding into how your app data works
Now we see how using all of the tools together gets us these
benefits.
Important: We can choose which ones we want.
Let's help people
use GraphQL,
together!
Talk to me if you have ideas about
Apollo or GraphQL.
Sashko Stubailo
@stubailo
sashko@apollodata.com
summit.graphql.com
REACTBRAZIL for 25% off

Contenu connexe

Tendances

London React August - GraphQL at The Financial Times - Viktor Charypar
London React August - GraphQL at The Financial Times - Viktor CharyparLondon React August - GraphQL at The Financial Times - Viktor Charypar
London React August - GraphQL at The Financial Times - Viktor CharyparReact London Community
 
Scala on Rails #rakutentech
Scala on Rails #rakutentechScala on Rails #rakutentech
Scala on Rails #rakutentechKazuhiro Sera
 
Introduction to GraphQL (or How I Learned to Stop Worrying about REST APIs)
Introduction to GraphQL (or How I Learned to Stop Worrying about REST APIs)Introduction to GraphQL (or How I Learned to Stop Worrying about REST APIs)
Introduction to GraphQL (or How I Learned to Stop Worrying about REST APIs)Hafiz Ismail
 
RxJS - The Basics & The Future
RxJS - The Basics & The FutureRxJS - The Basics & The Future
RxJS - The Basics & The FutureTracy Lee
 
Redux and context api with react native app introduction, use cases, implemen...
Redux and context api with react native app introduction, use cases, implemen...Redux and context api with react native app introduction, use cases, implemen...
Redux and context api with react native app introduction, use cases, implemen...Katy Slemon
 
Hands on react native
Hands on react nativeHands on react native
Hands on react nativeJay Nagar
 
Reactive Programming
Reactive ProgrammingReactive Programming
Reactive ProgrammingZhentian Wan
 
Real-time GraphQL API with minimum coding and maximum benefit
 Real-time GraphQL API with minimum coding and maximum benefit Real-time GraphQL API with minimum coding and maximum benefit
Real-time GraphQL API with minimum coding and maximum benefitMikhail Asavkin
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React NativeRami Sayar
 
面向引擎——编写高效率JS
面向引擎——编写高效率JS面向引擎——编写高效率JS
面向引擎——编写高效率JSucarticle
 
Serverless Machine Learning Workshop
Serverless Machine Learning WorkshopServerless Machine Learning Workshop
Serverless Machine Learning WorkshopAlex Casalboni
 
New in Spring Framework 5.0: Functional Web Framework
New in Spring Framework 5.0: Functional Web FrameworkNew in Spring Framework 5.0: Functional Web Framework
New in Spring Framework 5.0: Functional Web FrameworkVMware Tanzu
 
ServiceWorkerとES6 Modules時代のTypescript開発考察
ServiceWorkerとES6 Modules時代のTypescript開発考察ServiceWorkerとES6 Modules時代のTypescript開発考察
ServiceWorkerとES6 Modules時代のTypescript開発考察Taketoshi 青野健利
 

Tendances (20)

Frontend as a first class citizen
Frontend as a first class citizenFrontend as a first class citizen
Frontend as a first class citizen
 
London React August - GraphQL at The Financial Times - Viktor Charypar
London React August - GraphQL at The Financial Times - Viktor CharyparLondon React August - GraphQL at The Financial Times - Viktor Charypar
London React August - GraphQL at The Financial Times - Viktor Charypar
 
Scala on Rails #rakutentech
Scala on Rails #rakutentechScala on Rails #rakutentech
Scala on Rails #rakutentech
 
Beyond The Rails Way
Beyond The Rails WayBeyond The Rails Way
Beyond The Rails Way
 
Introduction to GraphQL (or How I Learned to Stop Worrying about REST APIs)
Introduction to GraphQL (or How I Learned to Stop Worrying about REST APIs)Introduction to GraphQL (or How I Learned to Stop Worrying about REST APIs)
Introduction to GraphQL (or How I Learned to Stop Worrying about REST APIs)
 
RxJS - The Basics & The Future
RxJS - The Basics & The FutureRxJS - The Basics & The Future
RxJS - The Basics & The Future
 
Javantura v4 - FreeMarker in Spring web - Marin Kalapać
Javantura v4 - FreeMarker in Spring web - Marin KalapaćJavantura v4 - FreeMarker in Spring web - Marin Kalapać
Javantura v4 - FreeMarker in Spring web - Marin Kalapać
 
Redux and context api with react native app introduction, use cases, implemen...
Redux and context api with react native app introduction, use cases, implemen...Redux and context api with react native app introduction, use cases, implemen...
Redux and context api with react native app introduction, use cases, implemen...
 
Hands on react native
Hands on react nativeHands on react native
Hands on react native
 
Reactive Programming
Reactive ProgrammingReactive Programming
Reactive Programming
 
Real-time GraphQL API with minimum coding and maximum benefit
 Real-time GraphQL API with minimum coding and maximum benefit Real-time GraphQL API with minimum coding and maximum benefit
Real-time GraphQL API with minimum coding and maximum benefit
 
Rails Concept
Rails ConceptRails Concept
Rails Concept
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Native
 
Intro to javascript (4 week)
Intro to javascript (4 week)Intro to javascript (4 week)
Intro to javascript (4 week)
 
Gradle
GradleGradle
Gradle
 
面向引擎——编写高效率JS
面向引擎——编写高效率JS面向引擎——编写高效率JS
面向引擎——编写高效率JS
 
Serverless Machine Learning Workshop
Serverless Machine Learning WorkshopServerless Machine Learning Workshop
Serverless Machine Learning Workshop
 
New in Spring Framework 5.0: Functional Web Framework
New in Spring Framework 5.0: Functional Web FrameworkNew in Spring Framework 5.0: Functional Web Framework
New in Spring Framework 5.0: Functional Web Framework
 
ServiceWorkerとES6 Modules時代のTypescript開発考察
ServiceWorkerとES6 Modules時代のTypescript開発考察ServiceWorkerとES6 Modules時代のTypescript開発考察
ServiceWorkerとES6 Modules時代のTypescript開発考察
 
The GrapQL ecosystem
The GrapQL ecosystemThe GrapQL ecosystem
The GrapQL ecosystem
 

En vedette

How to GraphQL
How to GraphQLHow to GraphQL
How to GraphQLTomasz Bak
 
マイクロサービスにおけるクエリー言語について
マイクロサービスにおけるクエリー言語についてマイクロサービスにおけるクエリー言語について
マイクロサービスにおけるクエリー言語についてsz yudppp
 
How to GraphQL: React Apollo
How to GraphQL: React ApolloHow to GraphQL: React Apollo
How to GraphQL: React ApolloTomasz Bak
 
Sibelius Seraphini - Relay Modern
Sibelius Seraphini - Relay ModernSibelius Seraphini - Relay Modern
Sibelius Seraphini - Relay ModernReact Conf Brasil
 

En vedette (6)

How to GraphQL
How to GraphQLHow to GraphQL
How to GraphQL
 
マイクロサービスにおけるクエリー言語について
マイクロサービスにおけるクエリー言語についてマイクロサービスにおけるクエリー言語について
マイクロサービスにおけるクエリー言語について
 
How to GraphQL: React Apollo
How to GraphQL: React ApolloHow to GraphQL: React Apollo
How to GraphQL: React Apollo
 
Api gatewayの話
Api gatewayの話Api gatewayの話
Api gatewayの話
 
Sibelius Seraphini - Relay Modern
Sibelius Seraphini - Relay ModernSibelius Seraphini - Relay Modern
Sibelius Seraphini - Relay Modern
 
Rest ful api設計入門
Rest ful api設計入門Rest ful api設計入門
Rest ful api設計入門
 

Similaire à Sashko Stubailo - The GraphQL and Apollo Stack: connecting everything together

Create GraphQL server with apolloJS
Create GraphQL server with apolloJSCreate GraphQL server with apolloJS
Create GraphQL server with apolloJSJonathan Jalouzot
 
How easy (or hard) it is to monitor your graph ql service performance
How easy (or hard) it is to monitor your graph ql service performanceHow easy (or hard) it is to monitor your graph ql service performance
How easy (or hard) it is to monitor your graph ql service performanceLuca Mattia Ferrari
 
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 togetherSashko Stubailo
 
React and GraphQL at Stripe
React and GraphQL at StripeReact and GraphQL at Stripe
React and GraphQL at StripeSashko Stubailo
 
Graphql presentation
Graphql presentationGraphql presentation
Graphql presentationVibhor Grover
 
GraphQL API Crafts presentation
GraphQL API Crafts presentationGraphQL API Crafts presentation
GraphQL API Crafts presentationSudheer J
 
Modular GraphQL with Schema Stitching
Modular GraphQL with Schema StitchingModular GraphQL with Schema Stitching
Modular GraphQL with Schema StitchingSashko Stubailo
 
apidays LIVE Australia - Have your cake and eat it too: GraphQL? REST? Why no...
apidays LIVE Australia - Have your cake and eat it too: GraphQL? REST? Why no...apidays LIVE Australia - Have your cake and eat it too: GraphQL? REST? Why no...
apidays LIVE Australia - Have your cake and eat it too: GraphQL? REST? Why no...apidays
 
Kotlin REST & GraphQL API
Kotlin REST & GraphQL APIKotlin REST & GraphQL API
Kotlin REST & GraphQL APISean O'Brien
 
GraphQL-ify your APIs - Devoxx UK 2021
 GraphQL-ify your APIs - Devoxx UK 2021 GraphQL-ify your APIs - Devoxx UK 2021
GraphQL-ify your APIs - Devoxx UK 2021Soham Dasgupta
 
Adding GraphQL to your existing architecture
Adding GraphQL to your existing architectureAdding GraphQL to your existing architecture
Adding GraphQL to your existing architectureSashko Stubailo
 
API Management for GraphQL
API Management for GraphQLAPI Management for GraphQL
API Management for GraphQLWSO2
 
Training Week: GraphQL 2022
Training Week: GraphQL 2022Training Week: GraphQL 2022
Training Week: GraphQL 2022Neo4j
 
GraphQL Bangkok meetup 5.0
GraphQL Bangkok meetup 5.0GraphQL Bangkok meetup 5.0
GraphQL Bangkok meetup 5.0Tobias Meixner
 
Getting Started with Spring for GraphQL
Getting Started with Spring for GraphQLGetting Started with Spring for GraphQL
Getting Started with Spring for GraphQLVMware Tanzu
 
GraphQL @ Manc.JS (March 2018)
GraphQL @ Manc.JS (March 2018)GraphQL @ Manc.JS (March 2018)
GraphQL @ Manc.JS (March 2018)Chris Grice
 

Similaire à Sashko Stubailo - The GraphQL and Apollo Stack: connecting everything together (20)

Create GraphQL server with apolloJS
Create GraphQL server with apolloJSCreate GraphQL server with apolloJS
Create GraphQL server with apolloJS
 
How easy (or hard) it is to monitor your graph ql service performance
How easy (or hard) it is to monitor your graph ql service performanceHow easy (or hard) it is to monitor your graph ql service performance
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
 
React and GraphQL at Stripe
React and GraphQL at StripeReact and GraphQL at Stripe
React and GraphQL at Stripe
 
Graphql presentation
Graphql presentationGraphql presentation
Graphql presentation
 
GraphQL API Crafts presentation
GraphQL API Crafts presentationGraphQL API Crafts presentation
GraphQL API Crafts presentation
 
GraphQL for Native Apps
GraphQL for Native AppsGraphQL for Native Apps
GraphQL for Native Apps
 
Modular GraphQL with Schema Stitching
Modular GraphQL with Schema StitchingModular GraphQL with Schema Stitching
Modular GraphQL with Schema Stitching
 
apidays LIVE Australia - Have your cake and eat it too: GraphQL? REST? Why no...
apidays LIVE Australia - Have your cake and eat it too: GraphQL? REST? Why no...apidays LIVE Australia - Have your cake and eat it too: GraphQL? REST? Why no...
apidays LIVE Australia - Have your cake and eat it too: GraphQL? REST? Why no...
 
Kotlin REST & GraphQL API
Kotlin REST & GraphQL APIKotlin REST & GraphQL API
Kotlin REST & GraphQL API
 
GraphQL-ify your APIs - Devoxx UK 2021
 GraphQL-ify your APIs - Devoxx UK 2021 GraphQL-ify your APIs - Devoxx UK 2021
GraphQL-ify your APIs - Devoxx UK 2021
 
Graphql usage
Graphql usageGraphql usage
Graphql usage
 
React Flux to GraphQL
React Flux to GraphQLReact Flux to GraphQL
React Flux to GraphQL
 
Adding GraphQL to your existing architecture
Adding GraphQL to your existing architectureAdding GraphQL to your existing architecture
Adding GraphQL to your existing architecture
 
Graphql
GraphqlGraphql
Graphql
 
API Management for GraphQL
API Management for GraphQLAPI Management for GraphQL
API Management for GraphQL
 
Training Week: GraphQL 2022
Training Week: GraphQL 2022Training Week: GraphQL 2022
Training Week: GraphQL 2022
 
GraphQL Bangkok meetup 5.0
GraphQL Bangkok meetup 5.0GraphQL Bangkok meetup 5.0
GraphQL Bangkok meetup 5.0
 
Getting Started with Spring for GraphQL
Getting Started with Spring for GraphQLGetting Started with Spring for GraphQL
Getting Started with Spring for GraphQL
 
GraphQL @ Manc.JS (March 2018)
GraphQL @ Manc.JS (March 2018)GraphQL @ Manc.JS (March 2018)
GraphQL @ Manc.JS (March 2018)
 

Plus de React Conf Brasil

Matheus Lima - O que tem de funcional no React
Matheus Lima - O que tem de funcional no ReactMatheus Lima - O que tem de funcional no React
Matheus Lima - O que tem de funcional no ReactReact Conf Brasil
 
Sebastian Ferrari - Why React is good for business
Sebastian Ferrari - Why React is good for businessSebastian Ferrari - Why React is good for business
Sebastian Ferrari - Why React is good for businessReact Conf Brasil
 
João Gonçalves - Show do Milhão PWA com React (Caso de Sucesso)
João Gonçalves - Show do Milhão PWA com React (Caso de Sucesso)João Gonçalves - Show do Milhão PWA com React (Caso de Sucesso)
João Gonçalves - Show do Milhão PWA com React (Caso de Sucesso)React Conf Brasil
 
Marcelo Camargo - Let's dive into Babel: how everything works
Marcelo Camargo - Let's dive into Babel: how everything worksMarcelo Camargo - Let's dive into Babel: how everything works
Marcelo Camargo - Let's dive into Babel: how everything worksReact Conf Brasil
 
Kete Rufino e Christiano Milfont - Transformando um front-end legado em uma R...
Kete Rufino e Christiano Milfont - Transformando um front-end legado em uma R...Kete Rufino e Christiano Milfont - Transformando um front-end legado em uma R...
Kete Rufino e Christiano Milfont - Transformando um front-end legado em uma R...React Conf Brasil
 
Fernando Daciuk - The magic world of tests with Jest
Fernando Daciuk - The magic world of tests with JestFernando Daciuk - The magic world of tests with Jest
Fernando Daciuk - The magic world of tests with JestReact Conf Brasil
 

Plus de React Conf Brasil (6)

Matheus Lima - O que tem de funcional no React
Matheus Lima - O que tem de funcional no ReactMatheus Lima - O que tem de funcional no React
Matheus Lima - O que tem de funcional no React
 
Sebastian Ferrari - Why React is good for business
Sebastian Ferrari - Why React is good for businessSebastian Ferrari - Why React is good for business
Sebastian Ferrari - Why React is good for business
 
João Gonçalves - Show do Milhão PWA com React (Caso de Sucesso)
João Gonçalves - Show do Milhão PWA com React (Caso de Sucesso)João Gonçalves - Show do Milhão PWA com React (Caso de Sucesso)
João Gonçalves - Show do Milhão PWA com React (Caso de Sucesso)
 
Marcelo Camargo - Let's dive into Babel: how everything works
Marcelo Camargo - Let's dive into Babel: how everything worksMarcelo Camargo - Let's dive into Babel: how everything works
Marcelo Camargo - Let's dive into Babel: how everything works
 
Kete Rufino e Christiano Milfont - Transformando um front-end legado em uma R...
Kete Rufino e Christiano Milfont - Transformando um front-end legado em uma R...Kete Rufino e Christiano Milfont - Transformando um front-end legado em uma R...
Kete Rufino e Christiano Milfont - Transformando um front-end legado em uma R...
 
Fernando Daciuk - The magic world of tests with Jest
Fernando Daciuk - The magic world of tests with JestFernando Daciuk - The magic world of tests with Jest
Fernando Daciuk - The magic world of tests with Jest
 

Dernier

Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencessuser9e7c64
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonApplitools
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shardsChristopher Curtin
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolsosttopstonverter
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...OnePlan Solutions
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesKrzysztofKkol1
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITmanoharjgpsolutions
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesVictoriaMetrics
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfRTS corp
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?Alexandre Beguel
 
Zer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfZer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfmaor17
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxRTS corp
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorTier1 app
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsJean Silva
 

Dernier (20)

Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conference
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration tools
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh IT
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 Updates
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?
 
Zer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfZer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdf
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryError
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero results
 

Sashko Stubailo - The GraphQL and Apollo Stack: connecting everything together

  • 1. The Apollo and GraphQL stack How everything fits together Sashko Stubailo Open Source Lead, Apollo @stubailo
  • 2. The goal of the Apollo team and community: Make building great applications simpler and more straightforward, with GraphQL.
  • 3. Today's apps can be complex: ● Multiple frontends for different platforms ● Multiple backends where data lives ● Need for team coordination across different languages, technologies, and contexts In this presentation, I'd like to show you how Apollo and GraphQL can address these concerns. Let's set the stage... React Android iOS Angular MongoDB Oracle Salesforce PostgreSQL Microservice
  • 4. What is GraphQL? Schema definition Query language Community of tools
  • 5. Why does GraphQL have so many benefits? GraphQL organizes the mess of ad-hoc, underspecified endpoints.
  • 6. What is Apollo? A set of projects designed to leverage GraphQL and work together to create a great workflow. Client-side tooling ● Apollo Client ● Apollo iOS ● Apollo Android ● Dev tools ● apollo-codegen ● eslint-plugin-graphql Server-side tooling ● Apollo Server ● Graphql-tools ○ Schema creation ○ Mocking ○ Stitching ● Apollo Optics
  • 7. Core benefits from Apollo + GraphQL 1. Easy, fast, and simple development 2. Better maintenance, security, and coordination, especially between teams 3. Ultimate understanding into how your app data works Let's look at them one by one.
  • 8. 1. Easy, fast, and simple development
  • 9. GraphQL is easier than ever before Apollo Client Apollo Server BackendBackend Backend React Existing REST API ● Today, it's just as fast and easy to build with GraphQL as any other API technology. ● Huge benefits from a flexible and declarative approach to data. ● Save time by describing what you need, not how to get it
  • 10. A GraphQL API in just a few lines of code https://launchpad.graphql.com/v7mnw3m03
  • 11. Easily attach GraphQL data to React https://codesandbox.io/s/jvlrl98xw3
  • 12. Adding new features to your app ● This is where GraphQL really shines ● In the UI, just add a new component ● Use the existing fields in a new way, or add a few, but no need to create an entire new endpoint ● You can build on the work you've already done ● GraphQL is like a component-based API
  • 14. Spend less time managing data ● Less time worrying about data: ○ Loading state tracking ○ Normalizing and storing data ○ Error handling ○ Async request management ● Less time building new endpoints: ○ Just build the types and fields you need
  • 15. What's the Apollo team's goal here? ● We want to make sure the best option is also the easiest ● You shouldn't have to decide between simple and complicated ● Huge focus on documentation to make things easy ● Constant improvement: Apollo Client 2.0 is 5x faster and 2x smaller
  • 16. 2. Safety and coordination
  • 17. Check your API calls ahead of time + Use the interaction between GraphQL schema and queries.
  • 18. Great article by Zach Silviera: https://zach.codes/supercharging-react-app-development/
  • 21. Validating code across the stack ● Validate your frontend code is correct as you write it, using eslint-plugin-graphql and static type generation with apollo-codegen ● Use a CI setup to check against newly deployed schemas to ensure your frontend remains valid ● Find breaking changes in the schema with @entria/graphql-findbreakingchanges. Extra useful when you don't have the frontend code.
  • 22. Mocking and Schema Stitching in graphql-tools https://dev-blog.apollodata.com/graphql-tools-2-0-with-s chema-stitching-8944064904a5
  • 23. New workflows ● "GraphQL-First" - develop the schema in parallel with the frontend using mocking, then connect them ● Using schema stitching, develop different parts of your API in isolation, and combine with mocking to achieve a hybrid mocked/real API ● Eliminate unneeded blockers across teams
  • 24. Why GraphQL? ● GraphQL is the only technology that combines a strongly-typed static schema with a specific query language ● No "select * from users" ● Queries more often live next to UI code, not somewhere in a totally different place, making it easier to connect UI+queries
  • 26. Understand the data available ● Same system for building and validating the API makes it complete reliable ● Opt-in systems like Swagger, or manually maintained API docs, are often incomplete or out of date
  • 27. Query language ● No way to select * in GraphQL ● You know exactly which fields are being accessed ● GraphQL is the only tech I know of that combines a description of the API with a requirement to ask for specific fields
  • 28. Track API field usage with Optics
  • 29. What to do with this information? ● Know which fields to target for deprecation ● Know where to start optimizing ● Move from fields to operations to see what is affected
  • 30. Fine-grained data requirements ● Without GraphQL, all similar requests for data blend together ● It's hard to trace back to UI performance ● You want to see information per query, not per endpoint
  • 31. Optics and devtools Similar information, across the stack: The future of Apollo
  • 33. Easy to know where to fix the problem ● Client side: Avoid fetching fields, split up queries, @defer ● Server side: Make the server faster, do better caching So what's the next step for GraphQL insights?
  • 35. Broad server support ● Node ● Ruby ● Scala (Sangria) ● Java ● Elixir ● OCaml ● Even Wordpress →
  • 36. My hopes for the Apollo Tracing standard ● Performance data built into every GraphQL server ● Visualize data in more places, such as GraphiQL or Apollo Client Devtools ● Support more kinds of information, for example underlying backend timing ● Support for schema stitching Let's work together on it!
  • 38. The "Apollo Platform" Apollo Optics Apollo Client Apollo Server Backend Backend Backend React, etc Developer tools, code analysis, and more Apollo iOS/Android Swift, Java
  • 39. The future of the Apollo platform ● Continue to prioritize incremental adoption and integrate with every technology imaginable ● More tools and features that take advantage of GraphQL across the whole stack ● Build on more community-driven standards, like Tracing
  • 40. Core benefits from Apollo + GraphQL 1. Easy, fast, and simple development 2. Better maintenance, security, and coordination, especially between teams 3. Ultimate understanding into how your app data works Now we see how using all of the tools together gets us these benefits. Important: We can choose which ones we want.
  • 41. Let's help people use GraphQL, together! Talk to me if you have ideas about Apollo or GraphQL. Sashko Stubailo @stubailo sashko@apollodata.com summit.graphql.com REACTBRAZIL for 25% off