Engineering the Future of Software
29–31 Oct 2018: Tutorials & Conference
31 Oct–1 Nov 2018: Training
London, UK

Akka Cluster vs Kubernetes - Clustering solutions showdown

Adam Sandor (Container Solutions), Fabio Tiriticco (Fabway)

Who is this presentation for?

software architect, senior developer

Prerequisite knowledge

Attendees should have at least some experience building distributed systems using either Akka or Kubernetes (or similar container orchestration technology).

What you'll learn

Audience members will gain a better understanding of both Kubernetes and Akka. Further they will be able to make sounds architectural decisions when to use one or both of these technologies in their projects.

Description

Kubernetes is on a steady march towards becoming the world’s commodity platform to run distributed services. It orchestrates applications packaged as Docker containers, which makes it more versatile than platforms bound to a single technology stack. Despite being technologically agnostic, it offers a great deal of control, implementing different distributed patterns.

Akka is the most popular toolkit to distribute JVM applications. Architectures based on the Actor model enable location transparency, asynchronous messaging and the “share nothing” approach, which leads to seamless scalability from day one. Akka’s clustering module ties Nodes together, which in turn run Actors. This is very similar to how Kubernetes gathers Nodes into a cluster and runs Containers on top of it. Akka Cluster however has no control over resource allocation, isolation and provisioning.

We came together as experts in Akka and Kubernetes, and battled it out to see who’s favourite technology is better suited for building modern distributed applications. Is Kubernetes the end of Akka Cluster? Does Akka Cluster offer more to JVM-based applications than Kubernetes does? Or is there reason for friendly coexistence?

In this talk we explore different patterns of using Kubernetes together, or in place of Akka Cluster. We will show pros and cons of each approach to give the audience guidance in navigating the conflicting and overlapping aspects of the two technologies. Patterns include:

Running an Akka Cluster on top of Kubernetes with a fixed set of Nodes.
Integrating Akka Cluster with Kubernetes to provide dynamic resource allocation based on internal Akka Cluster metrics.
Distributing an Akka Actor System purely using Kubernetes.
Microservices on Kubernetes without using Akka

During our research we have built examples of these patterns to underpin and demonstrate our conclusions with working code. This code will be made available publicly on Github.

Photo of Adam Sandor

Adam Sandor

Container Solutions

Adam moved from application development to a consultancy career in cloud native computing. His life currently revolves around building distributed systems using Kubernetes and related Cloud Native technologies. He currently works at Amsterdam-based consultancy Container Solutions.

Photo of Fabio Tiriticco

Fabio Tiriticco

Fabway

Tech Lead, Reactive Architect and Scala Developer. Community guy at the root – I’m the organiser of the [Reactive Amsterdam](https://www.meetup.com/Reactive-Amsterdam/) meetup. Long distance bicycle touring and fingerpicking guitar.

Leave a Comment or Question

Help us make this conference the best it can be for you. Have questions you'd like this speaker to address? Suggestions for issues that deserve extra attention? Feedback that you'd like to share with the speaker and other attendees?

Join the conversation here (requires login)