Cloud computing lessons learned
It’s coming up on 3 years now of writing, deploying and managing various types of applications in the cloud now. Here are a few things I’ve learned over the years.
Cloud Vendor Selection
Picking the best cloud vendor is like looking for unicorns. It’s not gonna happen. I have yet to find a vendor that has everything I need. That’s why I have apps deployed at Amazon, Rackspace and GoGrid.
Amazon AWS
Amazon was the first cloud vendor I went with, so I’m most comfortable with their infrastructure, api’s and products. I don’t like Amazons slow file-system performance, it can be a killer for certain applications. I also feel like Amazon is trying to eBay me to death with all sorts of transactional fees. Don’t be fooled by their low instance/hr costs. Trust me, they make it up on the back-end.
Rackspace
Rackspace, known for their oft-repeated “fanatical support”, is the newest cloud vendor I plan on deploying applications with. I’ve been looking at Rackspace (aka Mosso back in the day) for a while now, but their costs and server-management features kept me from becoming a customer. Not so anymore.
The support that you get from Rackspace is definitely fanatical and sometimes borderline maniacal. Rackspace really goes out of their way to get the job done. Amazon’s support is not even in the same league as Rackspace.
The cloud servers from Rackspace are probably the fastest out there. I’ve ran my own benchmarks against my applications and Rackspace has always come out on top. The Cloud Servers management console is simple, yet gets the job done. The iPhone app is great also. In fact it’s too good. My two-year old son was able to open my iPhone and spin up an instance a few months back.
So what don’t I like about Rackspace? DFW in a nutshell. When their Dallas data-center goes down, Web 2.0 goes dark. To be fair, some of the outages at the DFW facility was not the direct fault of Rackspace. You really can’t mitigate trucks knocking out power transformers. But it seems like the DFW facility was brought online under some Faustian deal.
It also would have been nice to have some sort of load-balancing solution instead of rolling my own.
GoGrid
And last but not least is GoGrid. The one early win I had with GoGrid was their support for Windows servers at a reasonable price. Their support is great, but not maniacal. GoGrid also seems to keep pumping out new products and feature enhancements at a pretty good rate. They tend to keep themselves competitive with all other cloud vendors.
GoGrid’s pricing is also competitive. I love that they don’t charge for inbound traffic. GoGrid introduced their own CDN last year. I have not personally tried it, but it’s nice knowing that it’s there and I don’t have to offload my CDN hosting to another vendor.
Free load balancer is also a very nice win.
I’m still waiting for Ubuntu support from GoGrid. CentOS is nice, but I roll with Ubuntu nowadays. Is it that hard to support? The GoGrid management interface is nice and gets the job done for the most part. It can be a bit buggy at times. But a quick refresh usually fixes the issue.
Free load balancer is great. Re-creating your load balancer when you have to add another server to the pool – not so great.
While I’ve been with GoGrid, I have not seen that many datacenter outages. But GoGrid or certain GoGrid customers seem to be magnets for DDoS attacks.
Backup and Disaster Recovery Strategy
If you don’t have a backup and disaster recovery plan you might as well be playing with depleted uranium. Having a backup and disaster recovery plan is critical to any type of solution if it’s running in the cloud or on dedicated hardware.
Besides coming up with a plan, make sure you test your plan. “Theoretical” is a four-letter word when it comes to backup and disaster recovery.
NoSql does not mean NoHeadaches
I’m a big fan of NoSql databases. So much so, I started GoNoSql.com to talk about the latest in NoSql databases. But that does not mean I’m going to use MongoDB or Riak on every project I work on. Pick the right tool for the job.
But If you do decide to take the red pill and go down that NoSql rabbit hole, you better understand the quirks of your tool. Your HBase / Hadoop cluster may be bad-ass, but how are you going to back it up? As a side note, Cosmin Lehene has written a great two-part article (Part One, Part Two) on his experiences with HBase/Hadoop at Adobe.
Irrational Exuberance
Does your application or service really need to be in the cloud?
I’ve spoken with a few startups who have insisted from Day 1 that their application or service needs to be running in the cloud. So I ask them, why and how did they come to that determination. Most say we need to be in the cloud to be successful from Day 1 or we won’t be taken seriously if we are running on a $59/mo. VPS plan. Fail on so many levels.
Most applications don’t need the flexibility or scale that comes with cloud computing. That lowly $59 VPS will work for quite a while. But don’t forgot about backups! In fact most of my applications are running on VPS servers. I’m slowly moving things over to Linode (referral link). I’m really impressed with what Linode has to offer. Everything just works.
Don’t fall into the premature optimization trap or feel you have to deploy into the cloud because everyone else is doing it. Get lean and do a bit of customer development to find out who your customers are and what pain points you are trying to solve. I’m sure you will find out that you are probably not going to get a million uniques during your first month in business.
Automation and Repeatable Processes
Manual-intervention is the process killer. Manual-intervention is the little-death that brings obliteration. I will face my automation fear. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see it’s path. Where the automation fear has gone, there will be nothing. Only I will remain.
While I may not have the parts for the Bene Gesserit order, take the advice and try to automate as much as you can. Automation saves time and grants predictability. Once a process has been automated, make sure it is repeatable.
Monitoring and Management
While it’s easy to sign-up with a cloud vendor and spin up a few servers. It’s not so easy to manage your new creation. If your lucky enough to have a technical founder or someone on your staff who understands the care and feeding of servers, your one step to winning the battle. If not, abandon hope all ye who enter here.
I’ve been working with Linux, Windows, AS/400′s, blah, blah, blah for years and I still learn new things everyday. Googling the Intertubes won’t make you a server management expert overnight either. Select a company that offers maniacal support (hint, hint) or hire somebody to keep your bloody infrastructure up and running.
I even have a virtual assistant who babysits my servers. Mind you theres not much to do since a lot of processes are automated. But when something does go wrong, I can sleep well at night. No more getting woken up at 2am when my cron scripts detects du %use is at 99%. Oh snap!
Related posts:

Erik:
Thank you for your thoughtful comments which we have reviewed and discussed. If there is anything in particular we can do for you please let us know. We appreciate the critical feedback and also your encouraging words.
Thank you also for your business,
John Keagy
CEO
GoGrid
John,
Thanks for the comment, I appreciate it. I think pretty highly of GoGrid. I just referred a new customer to you yesterday. Based on their requirements, you guys were the perfect fit. I look forward to working more with GoGrid in the future.
Nice one… did not know that. thx