It is a cold winter day in Dublin. A good friend of mine, an excellent software architect and entrepreneur, is finally ready to deploy his application. The last few months had been the toughest. He had spent almost 3 years building his dream. Being a perfectionist is not easy.
Dealing with those new damned servers was the hardest part. High scalability, reliability and availability do not come cheap, he thinks. Although they are essential concerns to his business however, they are not core.
Sometimes, during the process of building his application, I politely challenged his views. My Agile attitude screams for a “build cheap and fail fast” approach: build incrementally, release, see what works, and adapt.
Way too many startup companies waste tons of energy upfront setting up expensive hardware infrastructures. One day, their applications will handle all the extreme scalability problems that success will bring. Sadly, for most startups, that day will never come.
On the other side of the ocean, the Microsoft Professional Developer Conference (PDC) is taking place. I’m there, in a huge room with thousands of other developers. Ray Ozzie announces Windows Azure, the new “operating system” for cloud computing. People beside me take pictures, clap, and type on their keyboards frenetically. By now, many will have already twitted or blogged about Azure’s capabilities and features: automated service management, service hosting environment, load balancing, cloud storage, rich developer experience, and so forth.
Listening to the announcement, I begin to realize that it has never been so easy to attain load balancing, massive scalability and availability for any of my applications. Ever.
Expensive data centers will be completely replaced or augmented by “the cloud”, a set of pay-per-use configurable servers that companies won’t have to maintain directly. Microsoft is not the first company to provide a cloud computing solution but, for what I have seen so far, Windows Azure raises the bar to a whole new level.
In the next few months, Microsoft will evolve the product based on community feedback and, even more importantly, will disclose the pricing model and service level agreements. Windows Azure may allow us to affordably defer important decisions about how many servers we need to reliably support and scale our applications to the very latest responsible moment: when the popularity and needs of our applications will justify it. I have great hopes.