Lagom 1.5 Released: Akka Management, Kubernetes, OpenShift, gRPC, Couchbase and more
The Lagom team and contributors are proud to announce the release of Lagom 1.5.0. This version builds on top of the 2.7.x series of Play, Alpakka Kafka 1.0, and the latest improvements on Akka and Akka Management. Here’s a list of improvements and updates.
Akka Management is a suite of tools for operating Akka powered applications. Akka Management uses a dedicated HTTP port to expose a few routes allowing remote inspection of the state of the Akka Actor System. For example, if the process is a member of an Akka Cluster, these endpoints will report if the node already joined the cluster.
Lagom exposes the Akka Management HTTP port out of the box. Lagom will add Health Check routes by default. You can reuse library provided health checks or plugin your own. For example, Lagom uses cluster status to determine when the node is healthy. This is called Cluster Membership Check and is provided by the Akka Cluster HTTP Management library.
Another improvement Lagom 1.5 introduces, thanks to the adoption of Akka Management, is the simpler, more robust cluster formation via Akka Cluster Bootstrap. Instead of using a static list of seed nodes or relying on convoluted custom scripts to build the list of seed nodes dynamically, Cluster Bootstrap discovers the existing nodes via plugins adapting Akka Cluster Bootstrap to your orchestration environment (e.g. Kubernetes, Marathon). A static list of seed nodes is still supported but we recommend migrating to Cluster Bootstrap.
Deployment with Kubernetes or Red Hat OpenShift
Lagom 1.5.0 will no longer support Lightbend Orchestration (which was Incubating). Despite accelerating the first deployment, using Lightbend Orchestration was producing friction and reducing flexibility to tune the deployment. Moving forward, there will be no automated handling of the deployment and the suggested way is to manually maintain the production settings, the deployment descriptors and related scripts.
If you are targeting OpenShift or Kubernetes environments the new Guide to Deploy Lightbend Applications covers all the steps and details (including a sample application) to set up and tune your system.
Support for gRPC
Lagom can integrate Akka gRPC for cross-service communication (currently incubating). The original HTTP/JSON-based transport is not disappearing but, instead, Lagom introduces gRPC so users can choose to expose alternative transports increasing the adoption of their services.
This feature drove some smaller improvements which non-gRPC users will also welcome.
Lagom already supported HTTP/2 since it is built on top of Play. In Lagom 1.5 we’ve reviewed all the necessary pieces so HTTP/2 can also be used on dev mode. In the same spirit, it is now also possible to use encrypted (TLS) communication on dev mode.
As a final improvement driven by the adoption of gRPC, Lagom 1.5 now supports Additional Routers (Java API / Scala API), which lets you embed any vanilla Play Router into a Lagom service. You are now able to easily reuse the Play and Akka building blocks whenever the Lagom API is not enough to complete the task at hand. Using Additional Routers it is trivial to reuse Play code you already had or extend Lagom with low-level features supported in Play but not exposed in Lagom directly (such as uploading files).
Couchbase persistence support
Lagom 1.5 also offers optional support for Couchbase as a new database option for persistent entities and read side processors through the Akka Persistence Couchbase module. Currently available in an Incubating early access release, Akka Persistence Couchbase has been built to work with Lagom 1.5 and the 1.0 release is coming soon. See the documentation for Couchbase Persistent Entities and Couchbase Read-Side support for more details.
Migrating from previous versions
This release introduces very little changes over the
1.5.0-RC2 so if you already moved to that version the upgrade should be trivial. If you are still using Lagom
1.4.x we recommend you first migrate to the latest version available of Lagom 1.4 series and then migrate to Lagom 1.5. If you are using a version older than
1.4.x, you should migrate one version at a time. For example: from
1.3.latest), then from
1.4.latest and finally to
1.5.x. Read the appropriate release notes and migration guides (Java / Scala) on each step.
We hope you enjoy this latest release of Lagom, and if you would like to contribute to this exciting OSS project, you can do so here: