Justin du Coeur (jducoeur) wrote,
Justin du Coeur

More on Scala and scalability: Akka

Continuing from the previous thought: wandering around through the Scala Days presentations, I came across this neat presentation on the Akka Project. This is the latest evolution of the work that Jonas Boner has been doing for a while now, and it's getting to the point of being ready for industrial-grade apps.

High concept (through my own particular lens, anyway) -- Erlang is a kind of sucky language, but it got one thing totally right: by baking an Actor-style architecture in from the beginning, properly-written Erlang apps wind up astonishingly scalable and fault-tolerant, often orders of magnitude better than what you would typically get from more conventional languages. Scala picked up the Actor concept early on, but the built-in version of Actors is somewhat half-baked. The Akka project took these ideas and has carried them *much* further, picking up all the best concepts from the Erlang world and blending them neatly into a Scala environment. It adds concepts like easy remoting, STM to produce distributed transactions across Actors, lots of APIs, and so on.

Mind, it's not perfect yet. I find the actual client APIs still a bit low-level and clunky: it needs the sort of robust clustering capabilities that the Norbert project is building, so that you stop having to worry about which node a particular Actor can be found on. And the questions at the end point out some places where more research is needed -- for example, you can't distribute transactions across the network yet. (OTOH, that's a pretty hard problem, so I'm not going to fault them much for it. I would recommend trying to avoid Transactions in an Actor-oriented system as much as possible anyway.)

Overall, this is turning into a very compelling platform for server development. I've been saying for a long time now that the world needs a really good Scala-based XMPP server (which could be fabulously useful if done right); it sounds like Akka is probably the platform that that should be built on top of. In general, the above presentation is well worthwhile if you are interested in modern scaling techniques -- while the Hadoop-style MapReduce approach is very well-known, Actors are still less known than they should be, given that they are *clearly* the right architecture for many communication-centric apps...
Tags: programming

  • Post a new comment


    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 1 comment