by: John “Chief NerdGiraffe” Cihocki
You probably hear about “the cloud” all the time, and how it’s fundamentally and rapidly changing the way internet technology is conceived and developed. But what does it mean for you, the tech entrepreneur with a tight budget, perhaps little or no technical skills, and limited runway?
In reality, “cloud” is just a generic term for an abstract pool of computing resources that you can use in virtual chunks. These chunks might be a virtual machine to run application servers, virtual storage areas for data, or even an individual virtual process to execute a task. It is not a singular concept, and there are many clouds out there in reality. Google, Amazon and Microsoft all have huge capacity clouds that provide some services to the unwashed masses, but even non-internet companies with large infrastructure footprints are migrating to their own private clouds (either with their own hardware or hosted by cloud providers like Savvis or Amazon) to reduce friction in hardware provisioning and decommissioning and making their capacity more elastic. Having some experience with such a company during such a shift, I should point out that this migration usually is not without its requisite “if it’s on the cloud does it really actually exist and oh my gosh where are the servers and do I still own my app holy shit holy shit”-style freak out.
But you are not a huge company, so what’s the point? Don’t worry, elasticity doesn’t only help when you’re a 500 pound gorilla. Not long ago, the main units of scalability of computing infrastructure when running web applications were physical servers and bandwidth. Servers have some inherent elasticity, mainly in number of application server instances, system RAM, and storage latency/throughput/size. Bandwidth is certainly scalable, but like physical servers, it’s expensive and costs the same whether 90% or 20% utilized. So, scaling horizontally generally meant adding and removing physical servers and megabit sized chunks of capacity and capital (that takes 5 years to fully depreciate, no less). Even if you were using a managed hosting provider, each server plus or minus makes a huge difference in cost and architectural complexity, not to mention that it’s a time consuming process and still requires expert technical domain knowledge. Today this is no longer a problem for you. Using cloud services, you can provision resources at a a much higher level and generally only pay for what you use bandwidth/capacity wise. Now you don’t need a server to run your prototype on, maybe you just need a small database and a PHP instance in the cloud with limited concurrency. The virtualization layer generally provides your fault tolerance now so that when, say, a hard drive somewhere lights on fire, your app won’t notice, and you don’t need to know the name/ssn/withholding status of the person whose beeper went off and had to wake up to go install a new one. Need to scale a little? Pay as you go.
But the cloud does more than just make creating a functioning, scalable rails app at http://myapp.com a free 10 minute operation. Because it makes it so easy to create large scale, stable infrastructures, there has been an explosion of internet scale, cloud based Software as a Service (SaaS) products that go way beyond infrastructure abstractions (like a MongoDB database instance) and have very low barriers to entry and reasonable prices. Want to SMS someone from your app? Use twilio. Want to respond to incoming emails? Use Google App Engine. Want to send massive quantities of email? Use Sendgrid. Want to store media such as images or video? Use Amazon S3. Want to deliver that media effectively at internet scale? Use a consumer CDN like Akamai or Amazon CloudFront. I can already hear you being worried about performance of all these distributed systems being chatty with one another. Well, if you’re using a cloud based managed hosting environment like Heroku, many of these services end up being co-located with your application stack since they use the same underlying cloud provider. This allows for communication over the cloud’s internal network which is very secure, high bandwidth, and low latency. More and more, tech startups succeed assembling or recombining these powerful high level tools into a rich new offering quickly and easily rather than building bottom up using low level tools like caches, queues, and databases. This is why we at Startup Giraffe see so many idea stage startups without technical founders — these days, there are a ton of possible combinations out there and you can build a lot of product for much smaller technical investment. So: Got an idea for a startup? Beyond basic feasibility exercises, focus on product for now. A lot of the technology is probably already out there.