“Share Nothing Architecture” redefined

"Share Nothing Architecture" is a common pattern for scaling out Web applications.

Generally speaking, the idea is to remove dependency between the scaling units, which in the case of a Web application means the Web Servers. Once these units become independent from each other, you can easily scale them just by adding more units. You can then load-balance the incoming requests among the different Web Servers.

Due to lack of alternatives, common practice for making Web Servers independent was to remove the shared-state from the servers into a shared file system, assuming that it would scale.  Because of that, the thinking is that if your application is a service, and requires low-latency, this approach may not work.

Today we have better ways to remove data dependency, without putting the data into a shared file system — which may eventually become a bottleneck. We partition it and store it in-memory. Sounds familiar ?

So unlike the original definition, with the introduction of In-Memory-Data-Grids we can refer to "Shared Nothing Architecture" as architecture for scaling low-latency applications as well. Space-Based Architecture is one approach for implementing this in a high throughput/low latency environment.