|
Feb 06
2011
|
|
One of the biggest tragedies - and one that ENKI is often called upon to work around or repair after the fact - is that our customers don't write their applications for cloud deployment before they come to us wanting to deploy them. Often, other considerations dominate, such as rapid time-to-market, inadequate staffing to rewrite a demo application for production, or simply not knowing what is required. The result is that our successful customers have often had meltdowns where their architecture just couldn't cope with the traffic, no matter how much computing power was thrown at it - if it could even make use of the power available.
I've been beating the drum of efficient software for quite a while, starting with my article series on data center power consumption, but for applications that have to scale rapidly or highly, efficient software is not just desirable, it's required, since the consequences of writing inefficient software can have significant impact on your bottom line. I could go on about this, but today I want to talk about a different kind of efficiency, which is being able to scale efficiently.
Fundamentally the requirement is that you can add more virtual machines to your deployment and use them effectively without incurring unnecessary overhead or failure-propagating dependencies. This involves taking maximum advantage of parallelism, which includes avoiding some of the pitfalls that prevent it from working properly, including maintaining state in one of many parallel servers, having unneeded interdependence between servers or cores in an application, and relying on execution order across parallel instances.
What brought up this discussion was that I accidentally ran into a year-old article on building cloud-ready multicore applications. Hopefully you'll find it as interesting as I did.









