Why I Love Akka: Video With Manuel Bernhardt
Take a moment to watch Manuel Bernhardt, Reactive Systems Consultant, describe how Akka makes his life easier, and why Akka is a great match for cloud native applications. Note: some edits have been made to transcript below to improve flow and readability.
"Akka is quite unique because only a few frameworks out there have really started to think about all of this in-memory state management problem, and Akka is at the forefront of that."
How does Akka make your life easier?
"For one thing, it helps me get work because my clients they need help with Akka :-) The other thing is that Akka was designed to help build distributed systems. Distributed systems are hard. They can be quite a headache. What Akka does is that it takes care of all the ground work for that.
There's really only two reasons why you should be building a distributed system where you shouldn't just stay on one node. The first reason is that you have so many things to do, so many resources to use: CPU, network, storage, bandwidth, whatever, that you can't fit it all on one machine, you can't scale up vertically anymore. So that's one reason.
The second reason is that you can run it all on one machine, but if that machine crashes, your application would be not available anymore. So you want this resilient, automatic fail-over. Akka provides all of these primitives where it takes care of doing automatic self-healing: cluster signaling, cluster sharding, distributed data, and other components that Akka provides are there to allow you to build an application that's really resilient, without having to build everything from the ground up. What's really good is that in its approach, Akka doesn't lie or try to hide the complexity behind it. It just says, "Hey, these are the guarantees we can give you, and you have to be careful and take this into consideration." Not that many technologies out there go to that length and try to be that explicit about all of the realities of the environment."
Why is Akka the ideal match for cloud native applications?
"If you look at the charter of the Cloud Native Computing Foundation, it says that it's there to help organizations build and run scalable applications in a highly dynamic environment: public cloud, private cloud, service meshes, etc. This highly dynamic and scalable aspect is something that Akka has covered from the start. Akka is actually designed to be running as a cluster, and it runs locally; this is just an optimization, the fact that it runs locally. It's home environment, where it's really like a fish in water, is the distributed aspect of it.
If you look at most technologies out there, they will be stateless technologies. Kubernetes, when it started, was all about containers and things built stateless. I mean, stateless is nice, but it's not all that. There is a large portion of problems that require state and fast state, state that's in memory somewhere. So not having it somewhere in the database when you don't have time to go there, because you need to have it around in memory. Akka can deal with running in these dynamic environments where nodes come in and out, where Kubernetes pods are reallocated, and so on. So I would say that that makes Akka a very good match for cloud native, and it's quite unique because only a few frameworks out there have really started to think about all of this in-memory state management problem. Akka is at the forefront of that."
Inspired by what Manuel has to say about Akka? Why not sit down with us to see Akka in action? We'll demo what Akka looks like in production as part of a subscription to Lightbend Platform, including observability, telemetry, and system health monitoring as well as Akka resilience and persistence enhancements.