I’m using EC2, I just can’t use Amazon Linux. Let me explain…

Solve for Dev/Prod Parity

My company is committed to the principal of dev/prod parity to minimize deployment failures. That means our development environment is as close as possible to our production environment. Unfortunately, Amazon Linux is not super accessible. It’s not published such that it can be installed on desktops, laptops, or local virtualization environments like VirtualBox. It seems there are ways to hack it, but it isn’t an out-of-the-box sort of thing.

So, there are two options for selecting an OS to run in the cloud:

  1. Use Amazon Linux. Develop, test and deploy in EC2 (always-on instance).
  2. Use a more accessible distro (e.g. Ubuntu which has local and cloud images). Develop and test locally and deploy in EC2.

#1 is costly where micro or small instances can’t do the job. Also, I’m uncomfortable being perpetually on-the-clock (until the day cloud computing becomes a dirt-cheap commodity).

So that leaves #2!

Not a Great Pitch

Amazon advertises some key features of Amazon Linux. I see little value-add:

  1. AWS Integration - It’s plenty easy to install the AWS API tools on other distros. Also, CloudInit supports a particular configuration management strategy, which is not the one we use. Also, CloudInit fails dev/prod parity =)
  2. Secure Configuration - The advertised security features (i.e. disable root, enable SSH key pairs) are basic. Those should be implemented always. I can reduce non-critical packages to limit the threat surface just as well as Amazon can. Also, it’s straight-forward to automatically apply security updates.
  3. Package repository access - ok, Amazon Linux wins. It will be blazing fast to hit their package repo. I don’t understand their point about data transfer charges. The last I checked there is no fee for data transferred into EC2 from the internet. So it should be mostly free to pull packages from non-Amazon repositories.
  4. Lightweight - Here they just repeat their point about security and non-critical packages.
  5. Available in All Regions, Formats, and Architectures - It seems the Ubuntu cloud images are just as broadly available.
  6. AWS Support - Clearly they will be better at supporting their OS on their own platform. The value is a bit hard to quantify, though. And of course you have to pay extra for support.

Ideally…

The theoretically best solution to dev/prod parity is to use a cloud that you can install locally such as OpenStack. I think this platform lacks the maturity of AWS.