Choosing A Cloud Provider

AtTwin Engine Labs, we feel that the case for deploying your production code to cloud based environments has been clearly made and we do not support

We typically choose a provider out of a group of providers we and the community at large have had success with. For us, Digital Ocean, Heroku, and Amazon's EC2 have fit that bill. No matter the computational provider (the machine serving the requests made by your app) Amazon will more than likely find it's way into the stack - for either storage or CDN (Content Delivery Networks are used to get content to your users as fast as possible).

The primary factors to consider are:

  1. Price - Price per hour? Per machine? The details of how the host makes money.
  2. Compatibility - How well a provider will work with us, yourself, or an agency you're using.
  3. Scalability (Flexibility) - Does the host allow for complex infrastructures?
  4. Scalability (Ease) - Does the host allow scaling that doesn't require complex scripts and cluster configurations?
  5. Technical Flexibility - Does the host allow you to do whatever you need to technically, or are there constraints to consider?
  6. Support - What is the host responsible for and therefore on the hook for support for?

As a thought exercise, Heroku (built on Amazon services) would look like the following:

  1. Price - Per dyno or worker, $/mo
  2. Compatibility - Works well with your engineering process and pretty much any other capable shop like yours.
  3. Scalability (Flexibility) - Infrastructure is largely handled by Heroku and thus flexibility is pretty low, meaning truly custom architectures are difficult to achieve.
  4. Scalability (Ease) - Very simple; you can scale with a slider and moments later are at scale.
  5. Technical Flexibility - Lots of constraints. Web timeouts are strictly enforced, storage is not allowed on disk, etc. This means deployment to Heroku is not the same as deployment to a laptop, EC2 Instance, or Virtual Private Server with root access and disk space.
  6. Support - They are a PaaS (Platform as a Service) company and so are responsible for all things on and below the platform layer. Anything at the application layer (your engineers' code) is not supported by them.