What is scale? Is it the number of customers a company has? Is it the number of products that are sold? Is it the amount of revenue the company makes? Is it the amount of infrastructure one has? Or is it the number of features the product has? Well, it can be all of this or none of this. When an organization talks about scale it is not just a number. When an economist talks about it, again it’s not just a number. For an economist, the scale is about doing more with less. Scale is about perspective, about relationship between two or more variables that ultimately help you generate optimum value for your efforts.
Consider this, let’s say you are into making a lollipop. Selling 10 lollipops you earn $100 revenue of which $10 is you profit and $90 is the cost. When you increase you production you start selling 100 lollypops and earn $1000 revenue with $100 as your profit and $900 as cost. Did you really benefit from the scale here? In absolute terms, of course. In terms of ratios though, nothing has changed. Your costs are still 90% of the revenues, your cost per lollipop is still $9. Is this the scalability you would like to achieve for a sustainable business? From economic perspective, there is zero gain from this scaling as the law of economies of scale has not been realized. What if your costs actually shoot up and become $950? You are indeed not benefited from the scale. What if tomorrow, the demand for lollipops shrinks suddenly and you end up selling only 50 of them? Would your costs still be at 90% or what if the extra infrastructure that you have bought for higher production pushes your costs to $800? This is a very simple example, but the point here is that when you talk about scalability, it is not just the gigantic numbers we throw out, it is about the relationship between them and how do you benefit the most out of it.
Check out this cartoon from xkcd on what scale is not:
A good scalable system, whether it is manufacturing or IT, inherently must have two properties:
- Higher the scale (of production), lower must be the cost per unit of produce
- It must be a bidirectional scalability, meaning, it should be possible to scale upwards for higher demands and scale downward for lower demands with minimal impact on cost per unit of production.
The first property comes from economics while second comes from technology. This is what the entire cloud computing economy is based on. If this is not considered while designing a software system on cloud, it may turn out to be a futile exercise of following the herd on to the cloud without reaping the true benefits of a truly scalable application and cloud infrastructure.
It is important to understand that scalability does no come as an off the shelf product, just hosting your site on cloud won’t make it scalable. It is important to understand that true scalability lies in the design. The design of not just the infrastructure but also the software would eventually impact the total scalability. Think of it in terms of web 2.0 practices. Had there been no extensive use of ajax methods and caching techniques, we would still be loading pages after pages jamming the networks, overloading the servers, apart from tiring the users with 90s internet.
While the established big players have already learned the tricks of the trade through experience and past failures, they have indeed evolved with and helped building the right ecosystem for computing scalability, the most startups don’t see the opportunity to do it right since the first step of implementation. Let’s talk about all these factors that would affect scalability and how a startup/new project can cope with it in detail in further posts.