Transparent scalability is an elusive characteristic sought for successful software projects which inevitably outgrow themselves. A common way to approach the design of such applications is with the MapReduce pattern, which requires considerable foresight into how the application can be broken down into the functional map and reduce operations. A problem with this and similar approaches is the investment required at the beginning of development; the problem domain must be carefully analyzed and a solution crafted to support the predicted scalability needs. It would be preferable if applications could be developed simply and cheaply, then later, when necessary, made scalable without reworking the existing source code.
We present an approach to building transparently scalable applications using Swarm, a framework which enables code execution to “follow the data” within Scala’s serializable delimited continuations. Swarm abstracts the location of data across a distributed system from the developer, eliminating costly architectural and modeling requirements of popular distributed computing patterns and frameworks. We explain the design of an example implementation of a Twitter-like Web application which uses Swarm’s continuation-passing style collections, and show how the developer is unburdened by the complexity of scalability.
We demonstrate how this Swarm-based application can be transparently scaled without requiring changes to the code or accommodation by the architecture.