Why Akka?

Why Akka?

What features can the Akka platform offer, over the competition?

Akka is an unified runtime and programming model for:

  • Scale up (Concurrency)
  • Scale out (Remoting)
  • Fault tolerance

One thing to learn and admin, with high cohesion and coherent semantics.

Akka is a very scalable piece of software, not only in the performance sense, but in the size of applications it is useful for. The core of Akka, akka-actor, is very small and easily dropped into an existing project where you need asynchronicity and lockless concurrency without hassle.

You can choose to include only the parts of akka you need in your application and then there’s the whole package, the Akka Microkernel, which is a standalone container to deploy your Akka application in. With CPUs growing more and more cores every cycle, Akka is the alternative that provides outstanding performance even if you’re only running it on one machine. Akka also supplies a wide array of concurrency-paradigms, allowing for users to choose the right tool for the job.

The integration possibilities for Akka Actors are immense through the Apache Camel integration. We provide Software Transactional Memory concurrency control through the excellent Multiverse project, and have integrated that with Actors, creating Transactors for coordinated concurrent transactions. We have Agents and Dataflow concurrency as well.

What’s a good use-case for Akka?

(Web, Cloud, Application) Services - Actors lets you manage service failures (Supervisors), load management (back-off strategies, timeouts and processing-isolation), both horizontal and vertical scalability (add more cores and/or add more machines). Think payment processing, invoicing, order matching, datacrunching, messaging. Really any highly transactional systems like banking, betting, games.

Here’s what some of the Akka users have to say about how they are using Akka: http://stackoverflow.com/questions/4493001/good-use-case-for-akka

Cloudy Akka

And that’s all in the ApacheV2-licensed open source project. On top of that we have a commercial product called Cloudy Akka which provides the following features:

  1. Management through Dashboard, JMX and REST
  2. Monitoring through Dashboard, JMX and SNMP
  3. Dapper-style tracing of messages across components and remote nodes
  4. A configurable alert system
  5. Real-time statistics
  6. Very low overhead monitoring agents (should always be on in production)
  7. Consolidation of statistics and logging information to a single node
  8. Data analysis through Hadoop
  9. Storage of statistics data for later processing
  10. Provisioning and rolling upgrades through a dashboard

Read more here.