Building scalable & resilient apps with realtime GraphQL, event-sourcing and serverless
With event-driven serverless functions, we get an auto-scalable, resilient backend which is perfect for processing asynchronous actions and stateless workloads. With no servers to provision and near-zero ops-tasks, it is easy for developers to write and deploy these complex logic as functions or microservices.
Architecting the frontend of applications to consume a fundamentally async backend is still a challenge. GraphQL subscriptions and live-queries offer an opportunity to design a “reactive” contract between the backend and the frontend. In this model, an app makes a GraphQL mutation and then runs a GraphQL subscription to get updates as they happen. The business logic in serverless functions gets triggered automatically after an API call that modifies state (a mutation) and app gets success/error updates as and when they happen.
I will start with how microservices are typically setup and how they need to be refactored to being event-driven for meeting scale and resilience demands. I will them motivate serverless compute options like serverless functions and serverless containers and how they fit in with an event-driven model. I will then motivate a realtime GraphQL API layer and its benefits over traditional REST APIs especially in the asynchronous event-driven context. I will end with a live or recorded demo of building a simple “3 factor” workflow for placing and processing an e-commerce order.