Scale.Out

Today, I tried to explain the concept of Application Layering and Scale-out to a bunch of programmers. *It is always a challenge for architects to communicate with programmers*. Most of them could not understand why I recommended having all the logical layers (Presentation, Business and Data) in one machine if possible.

This is a common confusion I noticed among a lot of developers today. Most of them (including myself) have spent nearly a decade learning Windows DNA, COM and DCOM. The concept of splitting tiered-components to different servers are common in our mindset without giving much thought on the performance and complexity introduced by the architecture. For some of us, it is almost imperative that all systems should come with 3 machines when someone mentions n-tier!

Learn, Unlearn and Relearn.


It is always a challenge to unlearn what we know and relearn something new.

A lot of systems nowadays are built with scale-out in mind. The concept of scaling-out is to pack a number of commodity PCs (or servers) together into clusters to achieve the economic of scale. All servers will have the same configuration and more can be easily added (or removed) from the cluster depending on the workload. With this architecture, when a node in the cluster fails, other nodes can continue to work and therefore reducing downtime. Google uses this architecture. Read Google Cluster Architecture and Global Search Architecture.

Therefore, if we employ scale-out in our application architecture, we should put our logical layers into one server (and have them replicated when new servers are added) - as opposed to one machine for each logical layer.

What about the database?

One of them asked. Well, the database should be separately hosted on a SAN or on EMC storage. If it is a small system, a normal database server should suffice. From my experience, a database server's utilization rarely hits (and stays) 100% for most applications unless they are mission or business critical applications.


To read more about other scaling options and what to look out for in distributed applications in .NET, read MSDN.

No comments:

Post a Comment

Popular Post