Working with Cloudstate and Akka Serverless
Use of Cloudstate and Akka Serverless together allows you to focus on what is important to you—writing your code.
APIs for service development.
Runtime state management that ensures responsiveness, resilience, and elasticity.
Akka Serverless provides:
A deployment platform that includes integrated logging and monitoring.
Two interfaces for working with your services and projects—the browser-based console and the
akkaslscommand line tool:
In terms of a typical application lifecycle, the main tasks include:
Design event-driven microservices by identifying the domain objects (entities) that will encapsulate your data and business logic and choose the best persistence model for each.
Code entities using languages and tools that you already know.
Package your services in containers.
Deploy your containers using simple browser or command-line tools. Run in production, at scale, immediately, paying only for what you actually use.
The following sections provide more details on the development process.
Cloudstate uses gRPC, which is not tied to any programming language, for communication between services. Cloudstate includes connectors to gRPC for a growing number of programming languages. If you don’t see your chosen language just let us know, it may already be in the works!
Currently, Cloudstate supports:
To write your business logic, you of course will need to know how to code in your chosen language. However, you will not need to learn a substantially different paradigm for using that language: The API for Cloudstate itself is compact and straightfoward. See the Cloudstate Java support Javadoc as an example.
gRPC is a language-agnositc open-source framework for communications between services. It is not necessary for you to learn the details of gRPC, or how to write gRPC clients in your language of choice. Cloudstate handles all of that for you. You only need to define services and the schemas for their entities using a gRPC protocol. See Writing gRPC descriptors for more details.
Similar to a microservice, each Cloudstate service is a unit of functionality that typically manages a single entity—a domain object with data items. For example, an entity might represent a device in an IOT application, a customer in a banking application, or a shopping cart in a retail application. The Cloudstate API provides data management for your services and their entities. You are responsible for writing the code that encapsulates state and domain logic.
Following the event-driven pattern, a service consumes and acts on messages relating to its entity. A
shopping cart entity might have messages that operate on it such as
getCart. At runtime, Cloudstate manages multiple entity instances, each of which has a unique identifier. For more information, see how to Design services and Develop services.
When you are ready to run your services, you use package them into a container image. How you create the container for your service depends on the language and build system of your development technology. Next, you will publish the container to a registry. To deploy to Akka Serverless, you must provide access to the registry containing your images.
An Akka Serverless project contains one or more containers. An container contains one or more services. Akka Serverless scales the services in a container together.
An container can hold all or some of an application’s services. You have the flexibility to implement and deploy only the services with the most stringent requirements with Akka Serverless.
For more information, see:
You can use the Akka Serverless console or the
akkasls command line interface (CLI) to deploy your project. Once deployed to the Akka Serverless platform, the system manages the container, scales it, and integrates it with both the necessary state (data) and other services—whether internal or external to Cloudstate.
For more information see Deploying a packaged service.