One of the hottest buzz words in the Valley today is “Cloud”. You see it on accident-inducing billboards like Microsoft’s “Virtualization alone does not a cloud make”. You hear murmurs while grocery shopping like “Omg, Apple’s coming out w/ the iCloud–it’s gonna be sick!”. But before you call Microsoft for some meditation lessons or march down to the Apple store for an iCloud 5, take a reality check with me.
The Cloud will not make your web application better. If your application sucks now, it will not get any better in the Cloud because normally the code for your application will be exactly the same whether you run it on your own servers or on Amazon’s. There are many ways the Cloud can help your cause but most of these relate to infrastructure and not your core application.
The Cloud isn’t for everybody. There are cases where you shouldn’t leverage Cloud Computing. For example, if you’re feeling adventurous with the law and start a gambling website where latency and security are top concerns, it might be prudent to your buy your own hardware up front. With your own hardware, you always have more control.
The Cloud isn’t always cheaper. Depending on your needs, it might be more expensive to host your application in the Cloud than on your own hardware. For example, Amazon’s rates for various instance sizes scales with CPU and memory. In many cases, your application will need some of the more powerful and expensive instances. At some point, it will make more sense to ‘buy’ than to ‘rent’ these instances.
Some of the hype is true.
What can Cloud do for me (an engineer)? The Cloud allows web developers to abstract further away from the hardware we see as less predictable and more frustrating than code. Just as programmers have moved beyond writing less code (think 70s and punch-cards) and beyond worrying about memory allocation (think coding in C), the Cloud allows us to worry less about infrastructure. The Cloud allows us to easily setup as many environments as we need for our code. For example, in a typical web startup, you probably need a “staging” environment where developers can experiment, a “qa” environment where QA can verify release candidates, and a “production” environment for the real deal. Depending on your needs, there can be other variations of code + data required (e.g. a “sandbox” environment for partners), but the Cloud, in conjunction with services like Engineyard, gives us the ability to easily manage this complexity. The Cloud helps engineers focus on the important stuff.
What can Cloud do for me (an entrepreneur)? The Cloud is a driving force for lowering the barrier of entry for new web-based technology. More importantly, the lower costs allow entrepreneurs to test ideas overnight with practically beer money. In my first startup 5 years ago, we paid over six figures up front to buy our own servers. Today, you could launch for 1000s if not 100s of dollars a month. Beyond the initial phase where we can quickly test our ideas, the Cloud also allows us to scale our application and business if the architecture is designed well. With proper planning and frameworks like Ruby on Rails, entrepreneurs can give birth to ideas and help them mature into a business or die a quick death. Yes, “fail early and fail often” is brought to you inexpensively by the Cloud.
The Cloud means progress for engineers and entrepreneurs. It can mean the difference between evaluating 1 or 10 ideas a year by reducing development time and costs. With a potential order-of-magnitude boost in the evolution of ideas, we are moving forward indeed.