Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
shahidh_k
AWS Community Day
Bangalore
Architecture of scalable and resilient apps with
GraphQL, Amazon RDS and AWS Lambda
1
shahidh_k 2
I’m Shahidh
shahidh_k
The Problem
3
shahidh_k
Traditional architecture
App
Database
API
Payment microservice Restaurant microservice Delivery microservice
4
1...
shahidh_k
Moving towards scale & resilience
5
shahidh_k
Async architecture
App
Database
API
Event system
Payment processing
Restaurant approval
Delivery assignment
Asyn...
shahidh_k
Serverless
7
shahidh_k
Serverless 🎉
$ cat index.js
exports.function = (req, res) => {
res.json({"message": "Hello World"});
}
8
$ serve...
shahidh_k
Scalable!
● No OPS
● No VMs to manage
● Don’t need to worry about scaling
● Just write the code
● Deploy
● Scale...
shahidh_k
Resilient?
● Serverless functions are ephemeral
● No knowledge of state - async
● Trigger them on events
● Add r...
shahidh_k
Example: Food ordering app
Column | Value
-------------------+---------------------------------------
id | a705a...
shahidh_k
Order state machine with serverless
is_validated | false
is_paid | false
is_approved | false
is_agent_assigned |...
shahidh_k
Architecture Recap
● Microservices became serverless
functions
● Serverless functions are scalable by nature
● D...
shahidh_k
The cost
14
App
Database
API
Event system
Payment processing
Restaurant approval
Delivery assignment
Generic Eve...
shahidh_k
High level overview
Database
Event system
Payment
processing
Restaurant
approval
Delivery
assignment
Async serve...
shahidh_k
However, there’s still one
problem
When stuff happens asynchronously, how do I
get that info back to the app?
16
shahidh_k
GraphQL
17
shahidh_k
REST vs GraphQL
Product Brand Category
GET
PUT
POST
PATCH
DELETE
GET
PUT
POST
PATCH
DELETE
GET
PUT
POST
PATCH
DE...
shahidh_k
GraphQL changes the way
we think about UI + API
● UI First modelling
● Makes API usage more natural
● Maps UI co...
shahidh_k
GraphQL Subscriptions
Consume async info from the backend without
any worries
It’s as if REST had a WATCH verb
D...
shahidh_k
Let’s say I want to build...
21
shahidh_k
Without GraphQL
● Polling from the client
● Websockets - custom API
● Community fragmentation
● Various patterns...
shahidh_k
With GraphQL
● Standardised spec
● All GraphQL Clients are compatible with all
GraphQL Servers
● Client implemen...
shahidh_k
GraphQL Subscriptions
App Datastore
Process
payment
Validate
order
Agent
assignme
nt
Restauran
t approval
New Or...
shahidh_k
However, the cost is...
25
App
Database
API
Event system
Payment processing
Restaurant approval
Delivery assignm...
shahidh_k
Traditional
vs
GraphQL + Serverless
Architecture
26
shahidh_k
Traditional architecture
App
Database
API layer
Payment microservice Restaurant microservice Delivery microservi...
shahidh_k
Moving towards scale & resilience
App
Database
API
Event system
Payment processing
Restaurant approval
Delivery ...
shahidh_k
GraphQL & Serverless architecture
29
App
Database
Payment processing
Restaurant approval
Delivery assignment
Mut...
shahidh_k
Demo Time!
30
shahidh_k
Food ordering app
31
https://serverless-demo-aws.hasura.app/order-app
shahidh_k
Food ordering app - scalable
32
https://serverless-demo-aws.hasura.app/analytics-app
shahidh_k
Food ordering app - resilient
33
https://serverless-demo-aws.hasura.app/console
shahidh_k 34
Thanks
Questions?
Prochain SlideShare
Chargement dans…5
×

Architecture of scalable and resilient apps with GraphQL, Amazon RDS and AWS Lambda

113 vues

Publié le

Talk by Shahidh K Muhammed, Engineer, Hasura on the topic "Architecture of scalable and resilient apps with GraphQL, Amazon RDS and AWS Lambda" at AWS Community Day, Bangalore 2018

Publié dans : Technologie
  • Soyez le premier à commenter

Architecture of scalable and resilient apps with GraphQL, Amazon RDS and AWS Lambda

  1. 1. shahidh_k AWS Community Day Bangalore Architecture of scalable and resilient apps with GraphQL, Amazon RDS and AWS Lambda 1
  2. 2. shahidh_k 2 I’m Shahidh
  3. 3. shahidh_k The Problem 3
  4. 4. shahidh_k Traditional architecture App Database API Payment microservice Restaurant microservice Delivery microservice 4 1. Scalable? 2. Resilient?
  5. 5. shahidh_k Moving towards scale & resilience 5
  6. 6. shahidh_k Async architecture App Database API Event system Payment processing Restaurant approval Delivery assignment Async microservices 6
  7. 7. shahidh_k Serverless 7
  8. 8. shahidh_k Serverless 🎉 $ cat index.js exports.function = (req, res) => { res.json({"message": "Hello World"}); } 8 $ serverless functions deploy hello_world --trigger-http https://serverless.functions.net/hello_world $ curl https://serverless.functions.net/hello_world {"message": "Hello World"}
  9. 9. shahidh_k Scalable! ● No OPS ● No VMs to manage ● Don’t need to worry about scaling ● Just write the code ● Deploy ● Scale for “free” Graphic Source 9
  10. 10. shahidh_k Resilient? ● Serverless functions are ephemeral ● No knowledge of state - async ● Trigger them on events ● Add retries to the mix ● We have resiliency 10
  11. 11. shahidh_k Example: Food ordering app Column | Value -------------------+--------------------------------------- id | a705a43d-c55b-4a8a-ac16-80679bd02404 created_at | 2018-09-23 13:24:32.159024+00 user_id | eca786b6-73ae-44c7-b34f-1757af554464 is_validated | false is_paid | false is_approved | false is_agent_assigned | false 11
  12. 12. shahidh_k Order state machine with serverless is_validated | false is_paid | false is_approved | false is_agent_assigned | false is_validated | true is_paid | false is_approved | false is_agent_assigned | false is_validated | true is_paid | true is_approved | false is_agent_assigned | false is_validated | true is_paid | true is_approved | true is_agent_assigned | false is_validated | true is_paid | true is_approved | true is_agent_assigned | true Checks payment New order Validate order Restaurant approval Agent assignment Completed 12
  13. 13. shahidh_k Architecture Recap ● Microservices became serverless functions ● Serverless functions are scalable by nature ● Database events trigger async serverless functions ● Resiliency by event source tool instead of in the API code ● Moved specific failure handling logic to generic failure handling 13
  14. 14. shahidh_k The cost 14 App Database API Event system Payment processing Restaurant approval Delivery assignment Generic Event System Event system Async Serverless Fns Payment processing Restaurant approval Delivery assignment
  15. 15. shahidh_k High level overview Database Event system Payment processing Restaurant approval Delivery assignment Async serverless functions A Database API layer Payment microservice Restaurant microservice Delivery microservice Synchronous logic Asynchronous logic 15
  16. 16. shahidh_k However, there’s still one problem When stuff happens asynchronously, how do I get that info back to the app? 16
  17. 17. shahidh_k GraphQL 17
  18. 18. shahidh_k REST vs GraphQL Product Brand Category GET PUT POST PATCH DELETE GET PUT POST PATCH DELETE GET PUT POST PATCH DELETE ProductWithBrand 18
  19. 19. shahidh_k GraphQL changes the way we think about UI + API ● UI First modelling ● Makes API usage more natural ● Maps UI components to GraphQL queries ● Faster iterations - no back and forth b/n frontend-backend 19
  20. 20. shahidh_k GraphQL Subscriptions Consume async info from the backend without any worries It’s as if REST had a WATCH verb DatastoreApp 20
  21. 21. shahidh_k Let’s say I want to build... 21
  22. 22. shahidh_k Without GraphQL ● Polling from the client ● Websockets - custom API ● Community fragmentation ● Various patterns in different frameworks ● More work for the developer 22
  23. 23. shahidh_k With GraphQL ● Standardised spec ● All GraphQL Clients are compatible with all GraphQL Servers ● Client implementations available for all major platforms and frameworks ● Subscriptions: access to async info ● Less work for the developer 23
  24. 24. shahidh_k GraphQL Subscriptions App Datastore Process payment Validate order Agent assignme nt Restauran t approval New Order Complete 24
  25. 25. shahidh_k However, the cost is... 25 App Database API Event system Payment processing Restaurant approval Delivery assignment Generic Event System Event system Async Serverless Fns Payment processing Restaurant approval Delivery assignment GraphQL Server Subscriptions
  26. 26. shahidh_k Traditional vs GraphQL + Serverless Architecture 26
  27. 27. shahidh_k Traditional architecture App Database API layer Payment microservice Restaurant microservice Delivery microservice 27
  28. 28. shahidh_k Moving towards scale & resilience App Database API Event system Payment processing Restaurant approval Delivery assignment Async microservices 28
  29. 29. shahidh_k GraphQL & Serverless architecture 29 App Database Payment processing Restaurant approval Delivery assignment Mutation/Subscriptions Async serverless functions
  30. 30. shahidh_k Demo Time! 30
  31. 31. shahidh_k Food ordering app 31 https://serverless-demo-aws.hasura.app/order-app
  32. 32. shahidh_k Food ordering app - scalable 32 https://serverless-demo-aws.hasura.app/analytics-app
  33. 33. shahidh_k Food ordering app - resilient 33 https://serverless-demo-aws.hasura.app/console
  34. 34. shahidh_k 34 Thanks Questions?

×