The Cloud is one of those terms that gets thrown around a lot, but is not very well understood. Every other tech company these days makes promises that “all of your data is backed up in The Cloud”, or “No need to worry because everything is in The Cloud”. It’s very tempting to just nod your head seriously, and say “Hmm, yes, it’s a best practice to use The Cloud” without really understanding what it is and what its capabilities are.
Honestly, I was one of the folks who didn’t really understand what “The Cloud” was. I’m been a software developer for a number of years, so I consider myself fairly technical. Yet I have still had trouble making the mental shift from on-premise (physical servers you manage yourself) to the cloud. Moving from on-premise to the cloud requires more than just moving some bits around – you have to change the way you think about servers.
Back when I started my career as a software developer, the most common way to serve up a website was to have a beefy computer sitting in your office and point the DNS entry for your site to that server. If your website started to get more traffic, you’d make the investment of renting space in a data center, where your box would be tended to by professionals. There was a lot of work around ensuring that your box could be reached by the outside world, that it could talk to other servers nicely, and deployments were often an operation that required the attention of an entire team. If you wanted to have redundancy for downtime or be able to handle spikes in traffic, you would need to have additional servers ready to go at a moment’s notice. You often had to make a tradeoff between paying for servers to handle the maximum amount of traffic or allowing some requests to fail to save money.
Eventually, virtual machines (VMs) became efficient enough to run multiples of them on a single machine in a cost effective manner. It was suddenly possible to host a service without owning or renting a box at all. This eliminated one really big headache in managing a service: you could save an image of your virtual machine and spin a new one up if your old VM failed. This also made replication a little easier – If you could anticipate a spike in traffic, you could copy your VM and scale out as needed. This still required a lot of manual configuration of load balancers, but at least scaling seemed possible without having maximum capacity available at all times.
Now, this is the point where I had thought the story had stopped. The headache of managing servers seemed to be just one of those things you had to deal with, either by hiring an operations team or having your developers manage operations. At my last company, a small startup based in Seattle, we would spend 30-40% of our time just managing operations. That included trying to manage Postgres replication, handling Solr upgrades, handling space requirements for our Latent Semantic Indexer, and any other number of small operational tasks that add up to entire days of dev work. The only solution that I and every other engineer there could think of was to hire an operations guy to handle the workload. We just didn’t know that there is a better way.
I joined Microsoft late last year on the team that evangelizes the Azure platform. Over the past several months of working and learning about what the platform has to offer, I’m finally ready to start talking about it. There is a lot of value to be found in this platform. There are so many times where I’ve seen a feature and said “Man, I really wish we had had that at my last company”. I came into Microsoft very skeptical of the Azure platform. I thought of Microsoft as company that serves the enterprise, and that it didn’t have anything to offer small companies or startups. I’m happy to say that I was wrong.
There are so many features that Azure offers that can really empower developers to focus on their product and their customers and not have to worry about a lot of the operational woes of the past. Need to scale to demand? Azure has autoscale that allows you to scale your server farm up and down based on traffic. Need to store your data? Azure has SQL DB that scales on demand. Want to use open source solutions? Azure can accomodate you there, too. Just pick an image from the Azure gallery and you can enjoy most of the same convenience features you have with Microsoft solutions.
And this is what the cloud is really about; it isn’t just VMs on a rack somewhere. It isn’t some nebulous, fluffy concept. It’s a platform that enables you to be productive and focus on what matters to you.
But you don’t have to take my word for it: Check out Microsoft’s Cloud offerings today and see for yourself.