I’m currently working on a very large system architecture problem focused on scalability in an environment with many unknown factors. In the process of coming up with an ideal solution, I’ve been researching the latest literature on system scalability, talking to consultants and browsing the musings of the gurus. Suffice it to say, there is a lot of dense architecture research on this topic and some divergence of opinion.
The interesting thing, though, is that the problem of how to address massive scalability has become urgent and commonplace in the Web 2.0 world of hyper-connectivity. Take for instance Pinterest, the online pinboard site for the sharing of stylish ideas hugely popular with Gen-X women. The site came out of beta in the summer of 2011. As of this writing Pinterest is the 32nd most popular web property in the US with over 11 million pageviews per week. Total pageviews having grown by over 120% in 3 months. Yet the pages are able to be served up on average in 1.043 seconds (statistics from Alexa).
Clearly the Pinterest team has, thus far, figured out how to handle for massive scalability. The thing is, unlike in the Web 1.0 world which many organizations are still stuck, any successful web property will have to grapple with how to scale in response to rapid and unpredictable growth.
In the paper ”Life Beyond Distributed Transactions: An Apostate’s Opinion” (Helland, 2007) Pat Helland of Amazon.com describes a system architecture for a nearly infinitely scalable system. The realization of Helland and many other have come to is that many of the tenants and sacred cows that many architects cling to for monolithic, limited usage applications simply do not hold true for massively scalable systems. The lack of flexibility and modularity extant in traditional n-tier application design prevent systems from being able to dynamically scale to demand.
There is an increasing industry trend to respond to this by focusing on dynamically scalable infrastructure, so called Infrastructure as a Service (IaaS). While this may solve problems in the short run, it is by no means a cost effective long term strategy. The point being that without ensuring the application architecture as well as the data and infrastructure architectures are designed to scale, you will eventually hit a performance wall, but long before that you will likely hit a cost wall.
Udi Dahan put it most succinctly in a recent post on his blog:
Scalability is a multi-dimensional cost function, where part of an architects job is to figure out which dimensions are significant for the system/business, and what the expectation for growth is across each axis. (Dahan, 2011)
A non-trivial task to be sure, especially when massive increase in system demand corresponds with hitting business goals such as aggressive revenue targets. But given today’s realities, solving this sort of problem should the core focus and value realization of systems architecture for any organization looking to leverage IT investment to its maximum potential.