During our latest joint webinar with our partner Lightbend, we discussed building future-proof system architecture.
We highlighted the importance of architecture flexibility and the role of Reactive Architecture and Cloud-Native architecture in supporting adaptability while achieving resilience and elasticity.
We also highlighted the importance of loose coupling and decoupling in achieving flexibility, and demonstrated how to achieve this using innovative Reactive application concurrency tools that are supported by Lightbend such as Akka.
You can easily achieve resilience, self-healing, elasticity and autoscaling by combining Kubernetes and Akka.
During the Q&A session we received the same good question in different forms over and over again; why Akka if you have Kubernetes (K8S)?
K8S is covering the cluster orchestration, supporting auto-scaling and resilience on the nodes or the pods level.
Pods are the smallest deployable units of computing that you can create and manage in Kubernetes.Kubernetes Documentation
K8S will monitor and manage the cluster based on the performance matrix generated out of those pods, i.e. CPU, memory utilization and more.
How about the application layer then?
How the auto-scaling and self-healing will be handled within the application instances or node?
K8S will not be able to help with that, another layer such as Akka need to look after the application communication, remoting, concurrency & parallel processing, responding to application failure, implementing resilience design patterns such as bulkheading and circuit-breakers on the application node level.
In short, Kubernetes is looking after elasticity, auto scaling and resilience outside the nodes while Akka and other reactive application tools are looking after those within the application layer and the nodes.
After all, Kubernetes will not be able to fix a poorly designed application that is prone to failure and lacking resilience and elasticity.
The below Lightbend diagrams will help with understanding the concept
Logic Keepers is a software solutions and services company, we educate software developers and architects on how to design and build responsive resilient, elastic and flexible solutions, more on our Modern Application Architecture Workshops here.