Reactive business platforms are the future of the modern enterprise. In, Reactive Manifesto: The Next Visicalc and the future of Business Technology, I ruminated about how the future needs to be reactive, responsive to business events. The more you think about it, the largest enterprises have already started to move in the direction of building business platforms that react to the customer. What exactly is a Reactive Business Platform and how can you or your team build one with publicly available technologies in the open source or cloud worlds?
Earlier we covered how to design scalable business platforms with the “SMACK” stack, as well as a deeper dive into Spark, one of the real-time data processing frameworks which allow for distributed computing. As part of a series, this post focuses on how to “react” to streams of information or events in the fastest way possible without delay.
Akka (for JVM Languages) was created by Phillip Haller to bring actor-based concurrent systems similar to ones in Erlang to the Scala and Java languages. Akka.NET (for C#/.NET languages) was created by Petabridge’s Aaron Stannard because he wanted something like Akka in .NET/C#.
Akka allows business platform builders the ability to create systems that are asynchronous and distributed by design that is high-performing and resilient. The technology allows architects to create a system that is built for the cloud with elasticity through built-in load balancing, routing, and partitioning. Imagine making an army of small tiny (code) bots that are formed as a hierarchy listening for messages to do something and get it done as soon as possible. Imagine that army of tiny bots in different servers all talking together.
Akka code is created in a hierarchy so that messages are sent to the next level down from a “Supervisor” actor that keeps track of ones it’s tracking.
Akka is not the only way to achieve what Akka does. There are “server-less” architectures such as AWS Lambda or Azure Functions which can basically do the same thing. Serverless architectures is another deep subject that we can get into later.
Right now, as part of the SMACK stack, it’s the most lightweight way of taking messages from Kafka and saving them to Cassandra and sending off a message to a Kafka queue to do something else in Spark down the line. People have built web crawlers, ETL Frameworks, and energy grid monitoring systems with Akka.
How can you evaluate if Akka is for your project? Here are some good starting tutorials to get your hands dirty. My favorite is the Akka.net Web Crawler which has a real-time web monitor that shows whats being crawled.
- Crawling the Web using Actors
- Building an ETL Framework with Akka and Scaldi
- Tutorial: write a scalable, fault-tolerant, network chat server and client (Scala)
- ASP.NET and Windows Service Microservices with Akka.Cluster
In our next article, we’ll cover how Cassandra, the best-distributed database in the world, can help build web-scale business platforms. If you want me or our company, to come and talk to your company about data modernization, real-time data platforms, or Akka, feel free to email me or my team at Anant.
- Part 1/6: Scaling Business Platform Performance with Spark, Mesos, Akka, Cassandra, Kafka, Kubernetes
- Part 2/6: Distributed Real-time Data Processing with Spark in Business Platforms
- Part 3/6: Reactive Business Platform Applications & Services with Akka
- Part 4/6: Resilient & Scalable Business Platform Database with Cassandra
- Part 5/6: Real-time Data Pipeline & Streaming Platform with Kafka
- Part 6/6: Scalable Business Platform Development & Data Operations with Kubernetes & Mesos