CloudState

Towards Serverless 2.0

Why?

“We predict that serverless computing will grow to dominate the future of cloud computing.”

Bringing stateful services, fast data/streaming, and the power of reactive technologies to the Cloud Native ecosystem breaks down the final impediment standing in the way of a Serverless platform for general-purpose application development—with true elastic scalability, high resilience, and global deployment, in the Kubernetes ecosystem.

The Serverless movement today is very focused on the automation of the underlying infrastructure, but it has to some extent ignored the equally complicated requirements at the application layer, where the move towards Fast Data, streaming, and event-driven stateful architectures creates all sorts of new challenges for operating systems in production.

Stateless functions is a great tool that has its place in the cloud computing toolkit, but for Serverless to reach the grand vision that the industry is demanding of a Serverless world while allowing us to build modern data-centric real-time applications, we can't continue to ignore the hardest problem in distributed systems: managing state—your data.

The CloudState project takes on this challenge and paves the way for Serverless 2.0. It consists of two things:

  1. A standards effort—defining a specification, protocol between the user functions and the backend, and a TCK.
  2. A reference implementation—implementing the backend and a set of client API libraries in different languages.

CloudState's reference implementation is leveraging Knative, gRPC, Akka Cluster, and GraalVM running on Kubernetes, allowing applications to not only scale efficiently, but to manage distributed state reliably at scale while maintaining its global or local level of data consistency, opening up for a whole range of new addressable use-cases.

Read more about why we started the CloudState project, the limitations of current Serverless platforms, and the way CloudState are addressing them, and the new use-cases it opens up for in this section in the documentation.

Join us in making this vision a reality!

~

Jonas Bonér, CTO and co-founder of Lightbend and creator of Akka, talks about the need for Serverless to evolve to handle state at KubeCon Barcelona 2019:

What?

State
Provides scalable, configurable, state management strategies to relieve this responsibility from the developers.
Operations
Scale services intelligently and provide in depth observability.
Productivity
Allow developers to focus on their domain problem, rather than how state is managed.

CloudState is a specification, protocol, and reference implementation for providing distributed state management patterns suitable for Serverless computing. The current supported and envisioned patterns include:

  • Event Sourcing
  • Conflict-Free Replicated Data Types (CRDTs)
  • Key-Value storage
  • P2P messaging
  • CQRS read side projections

CloudState is polyglot, which means that services can be written in any language that supports gRPC, and with language specific libraries provided that allow idiomatic use of the patterns in each language. CloudState can be used either by itself, in combination with a Service Mesh, or it is in envisioned that it will be integrated with other Serverless technologies such as Knative.

Read more about the design, architecture, techniques, and technologies behind CloudState in this section in the documentation.

~

Watch this live-coding screencast by James Roper to learn more:

Contribute

Are you interested in being part of CloudState? We would love to have you!

Our mailing list and Gitter channel are good places to start with open ended discussions about CloudState. The GitHub issue tracker is a good place to raise issues, including bug reports and feature requests. You can also follow us on Twitter.