an innovative thought...
Revise. Rework. Revise. Rework. Revise.

shoestring scalability

October 23, 2006 – 12:50 am

Information technology resources are always limited and budgets are always tight.

The unfortunate side effect of this 21st century adage is a failure to effectively design web infrastructure for scalability or overemphasizing scalability and dedicating valuable resources too early. It is worth noting here, that the need to scale a web application is a nice problem to have; a nice problem that should be addressed, without exception, as you grow. Of course, if possible, it helps to have the right infrastructure in place from the outset. With virtualization technology for example, designing web infrastructure for scalability can be tackled in new ways with very limited resources.

When compared to traditional technology-based ventures, new web applications have reasonably low barriers to entry (at least with respect to initial investment). The costs associated with scaling and managing web applications however, can quickly become unreasonable. YouTube’s bandwidth costs alone are said to be close to $1 million per month (Source: Your Tube, Whose Dime?). This is not to mention the other hardware and maintenance costs of running a media-intensive Internet site. But with over $11 million in venture funding and, recently, Google’s bankroll and ad revenues, scaling is not YouTube’s highest priority to be sure.

How do you design web infrastructure for scalability without $11 million in venture funding?
Implement “shoestring scalability” by combining enterprise virtualization with existing and proven open-source tools. Keep it simple and scale vertically (adding local resources i.e. memory) and horizontally (adding nodes i.e. servers) as you grow.

Without getting into a discussion over using CentOS as opposed to Solaris or FreeBSD and MySQL, here is a conceptual diagram of a scalable solution on a shoestring:

REAL WORLD EXAMPLE (a Ruby on Rails application):


[ENLARGE]

This reflects a typical tiered design where web requests are distributed to the web application servers by a load balancer (in this case haproxy). Without the magic of virtualization, this scalable solution would have been impossible to support on a single physical server.

In this example, the physical layer is a Dual Xeon 3.0ghz with 4GB of memory. Early performance and load testing has indicated promising results all around, but as this solution undergoes real usage in a production setting, I will continue posting additional information.

As with any good design theory, this is not the perfect solution for every situation. It does however, support quick and easy horizontal and vertical scaling on a shoestring using commodity hardware. In addition, virtualization allows you to reallocate virtualized services to new hardware resources on-demand without fresh installs or cumbersome restores.

There are a variety of other applications for virtualization and paravirtualization when building scalable web applications. IMHO: virtualization is changing the rules and is well worth taking a serious look.

  1. 1 Trackback(s)

  2. Feb 4, 2007: Everything on a Shoestring » Blog Archive » the world is reacting to do the right thing

Post a Comment

innovatebigAlready a member?
Login
Login using Facebook:
Last visitors
Powered by Sociable!