Four defining characteristics of a social application are (1) people and things are both present in the data model, (2) a person can have a nearly unbounded number of relations between people and things, (3) the creation of a new relationship can be initiated at any time and from many sources, and (4) users will have the expectation that the network of relations will be exposed in fine detail as well as in the aggregate. In combination, these properties introduce read and write bottlenecks making scaling and performance more challenging compared to non-social applications.
At Clipboard, we’ve tackled this exact problem and have found a solution that begins with Riak. We model our social network in such a way that both nodes and edges are realized as Riak objects and we use Riak search to retrieve arbitrary slices of the network. To improve performance and scalability, we use a custom method for indexing objects, have multiple caching layers, and rely on four different methods for reducing write contention. In combination, we have a fast and robust service that is easy to maintain and evolve. This presentation describes our architecture and techniques with the goal of making the primary lessons applicable to other domains.
Sign in to add slides, notes or videos to this session