Is Akka Right For You?
Tags: Scala, Cto, Akka, Developer Tools, Scala Programming

Is Akka Right For You?

What is Akka?

Akka is a developer toolkit designed to streamline the process of building and running heavy-duty distributed apps. Akka is ideal for individuals and companies that want to build programs in Scala and Java that can scale quickly while avoiding many of the issues associated with concurrent systems. Akka leverages the following features to achieve this:

Actors — The actor model is an abstract paradigm that was proposed by Carl Hewitt in 1973. An actor is a basic virtual entity that can receive messages. It can respond to these messages in a number of ways, including by completing functions, creating more actors, or sending messages to other actors in the network. Messages are received and queued in mailboxes associated with each actor. Actors are separate from each other and do not share memory.

“Let it crash” — “Let it crash” is an idea that allows for self-healing systems. Actors are built into “supervisor hierarchies” which allow child actors to crash without impacting overall performance.

Distributed infrastructure — Akka is designed to work seamlessly with distributed systems, allowing developers to extend app functionality without the need to test unrelated portions of code. Messages are passed to actors asynchronously.

Thinking about using Akka?

Keep in mind that Akka is a toolkit (not an infrastructure) that integrates into your existing runtime and is used to build Reactive programs, i.e. apps that are event-driven, scalable, responsive, and resilient.

LET’S TALK

What Are the Benefits of Akka?

One of the key benefits of Akka is that it enables developers to build highly-scalable systems that can expand or contract based on workload. This allows for a much more efficient and cost-effective use of resources. If you already rely on distributed systems to power your tech infrastructure, there are lots of reasons to add Akka to your toolkit.

Akka overcomes many of the challenges inherent in traditional object-oriented programming (OOP), especially in regard to large concurrent networks that need to deal with resource-intensive and variable workloads. Akka does away with mechanisms like synchronization locks and semaphores, which are required to mitigate problems associated with the use of shared memory.

Here’s a quick rundown of the main benefits of Akka:

01

Multi-threaded behaviors.

Allow programs to efficiently execute multi-threaded behaviors. The fact that actors deal with messages sequentially eliminates the need for synchronization controls.

02

Simple communications

Enables straightforward communication between different network components without complex infrastructure.

03

Scales based on workloads

Can be used to create a system that automatically scales based on workloads, due to the “independent” nature of actors.

04

Easy dealing with errors

Makes dealing with errors much easier thanks to hierarchical structures in which parent actors are built with contingencies to deal with “rogue” child actors.

05

Easy to set up and use with Scala and Java

Very easy to set up and use with Scala and Java. Best practices are straightforward and extensive documentation is available.

Who is Using Akka?

A number of well-known companies have had great results with Akka. In many cases, these organizations require extensive software infrastructure to deal with vast amounts of data.

Here are some of the most well-known examples:

Tapad is an ad-exchange platform that allows users to purchase targeted ad space on mobile devices. While the functionality is relatively straightforward at an abstract level, creating a system that can handle ad distribution, bidding, analytics, and more, all with a minimal time lag, is incredibly complex.

They use the actors model as the basis of most of their systems and have experienced very few issues. Akka has enabled Tapad to guarantee speed and flexibility smoothness in their programs, thus providing consistent results for both publishers and advertisers.

Sveriges Television is Sweden’s national public-funded television broadcaster. It was structured similarly to the British Broadcasting Corporation (BBC).

As you can probably imagine, SVT’s computer infrastructure has to deal with large quantities of data along with changeable levels of viewer demand. The actor system allows developers to add features and updates quickly without the need for extensive troubleshooting.

Thatcham is a UK not-for-profit research organization that works with the automotive industry to develop car safety features. It uses Akka to power its constantly-evolving cloud-based platform and deliver up-to-date information and reports to its many clients.

Previously, Thatcham relied on JMS (Java Messaging Service) but now prefers the flexibility of Akka, which, in the company’s experience, lends itself perfectly to complex design requirements.