Erlang has made popular the notation of asynchronous message passing as means of distribution and Scaling. While the idea of “actors” is fundamentally simple, how do we, the software engineers, make use of this abstraction to develop real life, scalable systems? This talk designs a scalable distributed search service using Akka and Scala using the “zen” of Actor based design. It covers the practical aspects of how to scale out with akka’s new experimental clustering API. We’ll investigate how to dynamically determine when to further shard an application and how to rebalance a distributed system when adding new nodes to a cluster. We’ll cover Akka-specific concepts and APIs, like partitions and cluster membership events.