Selecting the right cloud provider
Published on 2015-12-31
Fortunately there are plenty of cloud server providers. Unfortunately when you start off on a project - maybe even your first project - it can be difficult to select a provider - it is a selection you want to do right as it becomes somewhat difficult to undo once you've started.
I have done projects using three different providers - and I'd like to share my findinds and compare them here - along with the afterthoughts that followed.
I will go through Amazon AWS, Rackspace and Digital Ocean. I have used AWS the least whereas I use Rackspace every day for mission critical systems at ABC Softwork. My personal websites (including this one) along with some backends for mobile apps etc. run on Digital Ocean.
As you can see Amazon has everything your heart desires! There is various kinds of virtual machines for computing - storage and delivery options - database and caching features. It is fantastic. Just cast another glance at the overview. It also include instrumentation, testing and everything you need to build a cloud based and/or SaaS business.
Three words: Elastic IP addresses! If you don't know what it is - it is the public IP address you get assigned from Amazon (IPv4 addresses don't grow on trees). They can be assigned/mapped to you (internal) instances inside the Amazon network. This might not seem like a big deal but it works perfectly with Blue-Green Deployment.
Everything you desire can be set up on AWS. Your entire setup (if kept on AWS) is billed monthly on one invoice.
Amazon has online courses and screencasts along with physical workshops and events. Most are free and give you ideas and solutions to common problems and issues you might have now or in the future.
It is overwhelming to say the least. A quick glance at the control panel is enough to make everyone feel a little dizzy. You have to be prepared to dive in and invest in learning the platform. When going with AWS you make a buy in that seems hard to reverse without changing workflows etc.
Rackspace is a cloud company. The setup you get has a lot of features. Not as many as AWS - but everything you need to get going with a nice solid setup ready to deliver a cloud solution. The feeling I am left with after using both AWS and Rackspace is that AWS is for huge scale B2C stuff whereas Rackspace is for B2B applications where features in the backend doesn't need to be as bleeding edge (please note: this is purely my gut feeling).
Rackspace offer virtual cloud servers in every flavor. Check out this creation dialog:
Changing the knobs gives you the possibility to tailor the VM/VPS to the specific need changing storage and memory sizes, number of CPUs, external storage and network speeds etc.
Amazon has load balancers instead of the elastic IP addresses on AWS. There is a running cost associated with the load balancers - along with a price for concurrent connections and traffic going through. To be fair the load balancers give way more features - like actual load balancing, SSL terminitation eg. This should be utilized to fully justify the added running cost.
The features that stand out at Rackspace is their support - escpecially the fanatical support. It is tailored teams that needs to offload some of the burden of maintaining servers and their setup.
Rackspace is frequently adding features to their platform. This is often done by adding (buying) smaller cloud providers to the company - this way we've got ObjectRocket recently and Mailgun - two fantastic services for building cloud applications that just fit like nice pieces in the puzzle.
The Rackspace platform is very capable and it is easy to get a full image of the features it holds.
Multi user management! The control panel has support for multiple users. But the implementation seems a bit klonky. Permissions for the services and different parts of the control panel isn't easy to separate and arrange in a way that actually fits the organization and roles in it. For example I don't need to generally be using an account that has full access to everything - but by limited my access just a little (from full admin) leave me unable to access the Mailgun subsystem.
Rackspace has been adding their own monitoring service for every VPS. It has an agent that can be automatically installed and checks are configured but to be fully awesome this feature need to be reworked to give a full overview (dashboard form) showing the infrastructure and green lights instead of the current small (almost invisible) indicators and notification via e-mail.
Digital Ocean is a relative small new company and their service is simple and cheap. Digital Ocean do not offer all the services and functions as either Amazon AWS or Rackspace - not even near.
Digital Ocean has one product. A droplet - a VPS and there is a very little configutation options - you basically choose from a variety of distributions or preconfigured applications (Wordpress eg.) and the size of the VPS along with the datacenter where you want to droplet to be located.
Droplets on Digital Ocean is just a virtual machine. It is very easy to understand. The price is fixed (except traffic - 1 TB included) and if you need anything like load balancing etc. you just spin up another machine and configure it to your needs.
This leave you with a setup that is very easy to emulate in a lab. It is a trivial task to spin up virtual machines (using Virtual Box eg.) to mach your server setup on Digital Ocean one-to-one.
Digital Ocean has a very nice blog where they provide guides to a wide array of these setups using their infrastructure.
You must prepare to do everything yourself. Everything!
There are almost no short cuts to anything - you can't magically setup a group of autoscaling machines behind a load balancer with replication etc. The ease of use and simplicity has conquored at Digital Ocean and these features are not (currently) found here.
Digital Ocean recently added support for multiple users for managing accounts - but much is still to be desired - especially for larger teams that require more differentiated user roles.
Think long. Think hard.
You might even need to run tests. Paying for these services by-the-hour is you keyword to just spend a day or two on each to test out everything you want to dive in to.
Making the correct platform choice might turn out to be a vital one. Put in some effort to make it right.