Why I Love Akka: Video With Kikia Carter
Listen to Kikia Carter, Principal Enterprise Architect, describe why Akka makes her life easier, and why it's the right match for cloud native applications. Note: some edits have been made to transcript below to improve flow and readability.
"Akka is a perfect match for cloud native applications because cloud, by nature, assumes distribution, and Akka is a programming model that is built for distribution out of the box. It's not something that's bolted on in the end. It is modeled after the world, after objects, after things, after people, after networks."
How does Akka make your life easier?
"If I'm honest about it, Akka didn't make my life easy at first. It was a new paradigm, it was a new way of thinking about programming, and it wasn't something that I initially grasped right away. But the good news is, once I really started to dig into the actor model and truly get an understanding about what it meant to model the world around you, to model state, to model message passing, to model resilience and elasticity, that's when it actually clicked to me that this really fits and this really helps me to solve the problems that I have at hand.
It allowed me to make progress on problems that, using other paradigms, I probably wouldn't have made the same progress on. So that's really how Akka helped me a lot."
Why is Akka the ideal match for cloud native applications?
"One of the reasons I think that Akka is a perfect match for cloud applications is because cloud, by nature, assumes distribution, and Akka is a programming model that is built for distribution out of the box. It's not something that's bolted on in the end. It's not a model. The actor model itself is not something where you've kind of fit in how to distribute it. No, that's truly how it is. It is modeled after the world, after objects, after things, after people, after networks. This is something that truly fits with distributed people in general, distributed systems in general, distributed objects and things and IoT. That's what it is at its core.
So when you think about cloud native and distribution, you have to think about things like distributed state. The idea that you would separate your logic and your entities' state from the state itself, such as what's done in traditional three-tier architectures, and the idea of distributed is, "Hey, let's make a stateless application and put state somewhere else, separate from the application, and also let's distribute that and distribute the statelessness on top of it somewhere... " You get a real mismatch. You don't really solve the problems that you need to solve with distribution by doing it that way. You need to be close to your state. Your entities and the state of your entities need to be close to each other because what knows more about a state than the entity itself, the things that have taken commands or events or have actions.
I can tell you more about myself than other people can tell you about me. So, whether I keep a journal or something, "Hey, this is my journal that I've written in," and someone else can go and take this journal and maybe try to distribute it or copy it all over the place, but the quickest way to get the answer and the best interpretation for what's going on with me is to ask me. That's what actors allow you to do. Your actors allow you to ask and know and control the state of your entities within themselves, and it doesn't make you depend on state that can lie inside of a distributed data store somewhere else.
I think this idea of having a distributed system that takes distributed state as a first class citizen, not as something to be dealt with later, but as something that is core to the problem we're solving, is the future. This is the world, and that is what makes a system, or paradigm, or programming language, or toolkit "cloud native". That is why I find Akka a perfect match for cloud native. I think other people are going to go the same way, and that it's the future. We're going to find more people who understand that maintaining distributed state is one of the best ways to solve some of the problems of the distributed world that we live in."
Inspired by what Kiki 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.