Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rethinking Reactive Architectures with GraphQL

SQUER Solutions
March 23, 2021
310

Rethinking Reactive Architectures with GraphQL

WeAreDevelopers Live Days

SQUER Solutions

March 23, 2021
Tweet

Transcript

  1. asynchronous data streams. Space Time Collections Iterator Generator Value Getter

    Setter Promise Deferred Resolver Stream Reader Emitter
  2. 1 map(x => x*2) 2 3 6 the Destiny Operator

    Counter and Doubled should be bound.
  3. Stream Caller Receiver propagate change observe change The reactive programming

    paradigm is based on asynchronous streams which propagate change.
  4. YAMS — Yet Another Mail Service NEW 2021-04-11 — An

    important Email 2021-04-09 — Another important Email 2021-04-08 — Do you want to join my network? 2021-04-05 — Nigerian prince wants to send you money X your inbox contains 4 mails 1 NEW Mail Reload Controller Rest Client update UI Element update UI update UI
  5. YAMS — Yet Another Mail Service NEW 2021-04-11 — An

    important Email 2021-04-09 — Another important Email 2021-04-08 — Do you want to join my network? 2021-04-05 — Nigerian prince wants to send you money X your inbox contains 4 mails 1 NEW Mail Reload Websocket Client Email Email count() count() collect() filter() subscribe Email map()
  6. YAMS — Yet Another Mail Service NEW 2021-04-11 — Hello

    WeAreDevelopers! 👋 2021-04-09 — Another important Email 2021-04-08 — Do you want to join my network? 2021-04-05 — Nigerian prince wants to send you money X your inbox contains 5 mails 2 NEW Mail Websocket Client Email Email count() count() collect() filter() subscribe Email NEW 2021-04-11 — An important Email map()
  7. Reactive Programming ✅ Reactive Architectures 🥺 We take the same

    concepts from reactive programming and move them up to the system architecture. 🤞
  8. Internet has 4.7 Billion users. Facbook has 2.8 Billion users.

    Youtube has 2.1 Billion users. 2010 2020 The Internet has 1.4 Billion users. A single website may now handle twice as much traffic as the entire internet did a decade ago.
  9. We are resilient by supporting Back-Pressure Stream Provider Consumer events

    are stored until consumed Stream Provider Consumer A Consumer C Consumer B scaling out consumers We can scale-out by Location Transparency
  10. Microservice A Microservice B Microservice C Web Application Microservice C

    with high latency First Generation MicroServices Synchronous and without Backpressure Support
  11. Microservice A Microservice B Microservice C Web Application Microservice C

    with high latency Second Generation MicroServices Partially asynchronous with Queues Queue isolates bottleneck Queue Microservice C with high latency
  12. Web Application Stream Microservice usually Backend-For-Frontend (BFF) Microservice A Microservice

    B Microservice C Third Generation MicroServices Fully asynchronous & stream-centric
  13. Events as the System State Stream of Transactions Max sent

    David 100€ Max sent Maria 70€ David sent Maria 25€ User Balance David + 75 € Max - 170 € Maria + 95 € ➡ Event Sourcing 100% reliable audit log.
  14. Web Application Eventstore Microservice usually Backend-For-Frontend (BFF) FaaS A FaaS

    B FaaS C Forth Generation MicroServices EventSourced with FaaS
  15. FaaS A Web Application FaaS B FaaS C Eventstore Microservice

    often Backend-For-Frontend (BFF) HTTP Streaming Request/Response
  16. Lambda A Web Application Lambda B Lambda C Eventstore Microservice

    often Backend-For-Frontend (BFF) HTTP Streaming Request/Response
  17. Lambda A Web Application Lambda B Lambda C Eventstore GraphQL

    Microservice A Microservice B Microservice C Web Application ➡ pull-based push-based
  18. Lambda A Lambda B Lambda C GraphQL Step 1 Step

    2 Step 2 Car Brand Build Year Car Model Insurance Agent Customer ✅ This Is Correct Alfra Romeo Giulia, 2020 110PS, Diesel Step 1 Step 2 Step 2 Coverage 200 € 🏁 Sign Digital Do you accept 70% coverage for 200€? Eventstore GraphQL
  19. GraphQL Step 1 Step 2 Step 2 Car Brand Build

    Year Car Model Lambda A Insurance Agent Lambda B Lambda C Eventstore GraphQL Customer ✅ This Is Correct Alfra Romeo Giulia, 2020 110PS, Diesel Step 1 Step 2 Step 2 Coverage 250 € 🏁 Sign Digital Do you accept full coverage for 250€? Customers expect realtime syncronisation between channels.
  20. Mobile Banking Usage Show balance & last transactions: 93% Initiate

    new payment: 3% Any other functionality: 4%
  21. Microservice A Web Banking Microservice B Microservice C Eventstore GraphQL

    Projection Projections 1⃣ Projections act as read-models for a specific client. 2⃣ They subscribe to events & hydrate the projection. 3⃣ The client only reads from the projection.
  22. Microservice A Web Banking Microservice B Microservice C Eventstore GraphQL

    Projection Projections 1⃣ Projections act as read-models for a specific client. 2⃣ They subscribe to events & hydrate the projection. 3⃣ The client only reads from the projection.
  23. GraphQL Mobile Client Projection Microservice A Web Banking Microservice B

    Microservice C Eventstore GraphQL Projection Projections 1⃣ Projections act as read-models for a specific client. 2⃣ They subscribe to events & hydrate the projection. 3⃣ The client only reads from the projection. Show balance & last transactions: 93%
  24. This stuff is cool, but think twice, & ensure that

    reactive architectures really fit your problem at hand.
  25. Architectural Styles buy you options Reactive Architectures buy you mainly

    Resilience, Realtime Capabilities, Elasticity, & Extendibility. you pay by complexity. 💵