One of the most interesting aspects of deploying applications is figuring out how to scale them. There’s many options, from simple scale out and scale up to more advanced architectural designs that take advantage of external, application switching services.

The flexibility in the latter has become more obvious with the advent of not just cloud computing , but its underlying virtualized auto-scaling technologies. Combined with more targeted scalability strategies, infrastructure services provide a more operationally and financially efficient means of scaling applications on-demand with little to no human intervention.

Sharding streams is a variation on a more general theme of sharding at the application layer. It involves an architectural design based on the JSON Activity Streams 1.0 specification that separates and scales individually (hyper-local scaling) services based on a particular facet of the “activity”.

SHARDING ACTIVITY STREAMS

Let’s first take a look at an example of an Activity Stream. You’ll note there are quite a few descriptors – verb, target, object – any of which might be a good choice on which to base a scalability domain.