Build Stateful Cloud Native Applications

Tips and Best Practices for a Reliable System Architecture


Grab your copy

Not long ago, pretty much everything we coded was stateless–we put everything in SQL databases and called it up whenever needed. Things were simple until the explosion of user data and service expectations began to outpace our ability to innovate. Industry leading organizations started to see data-centric, stateful services as one piece of the puzzle, with cloud infrastructure, Kubernetes, and “serverless” functions (e.g. Amazon Lambdas) appearing later to fill the gaps.

So how do you manage the trade-offs presented? On one hand, stateless services are familiar and easy to work with, yet they aren’t ideal for complex or data-centric services at high scale. Stateful services answer this, yet require more consideration in the design phase, and currently aren’t supported well by short-lived lambda functions and other serverless infrastructure.

In this guide by Lightbend experts, we make the case that building your next application to be stateful makes sense when you can better understand the landscape, and how to prepare a system architecture to take advantage of running stateful services in a simple an efficient way. From the buzz around serverless to how message delivery and reliability guarantees work in stateful apps, our chapters cover:

  1. Serverless: Coming To A Town Near You | by Jonas Bonér
  2. Stateless VS Stateful Application Design | by Hugh McKee
  3. The State Of Distributed State | by Sean Walsh
  4. Messages, CQRS, And Event Sourcing In Stateful Applications | by Duncan DeVore
  5. Message Delivery & Reliability For Stateful Applications | by Hugh McKee