Skip to content

Instantly share code, notes, and snippets.

@calebamiles
Last active December 14, 2015 18:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save calebamiles/feca84da6b36ed2c87fa to your computer and use it in GitHub Desktop.
Save calebamiles/feca84da6b36ed2c87fa to your computer and use it in GitHub Desktop.
CPI Creation Pre-Flight Checklist
  • Machine properties
    • What predefined types are supported
    • Are custom machine types supported
    • Can arbitrary machine settings be provided at creation time
      • Are they available within the machine
      • Can they be updated after the machine has started
    • How many machines can be created by default
      • How can this limit be raised
  • Is it possible to upload custom machine images
    • What image formats are supported (qcow2,raw,vmdk)
    • Are there any operating system restrictions
      • Are any software packages required or recommended
    • Can machine images be made outside of the provider
  • What virtualization types are supported (hypervisor not packaging)
  • What support exists for persistent disks
    • Is the lifecycle of a persistent disk independent of the machine it is attached to
    • What are the size constraints on an individual disk
    • How many disks can be created
    • Are there any restrictions on the number of disks which can be attached to a single machine
    • Is disk I/O configurable; what are the maximum and minimum throughput and is this per disk or is I/O shared among a pool of disks
  • What support exists for ephemeral disks
    • Is it possible to create disks that have a lifecycle associated with a machine
      • Can emepheral disks be specified at machine creation time
      • Will the contents survive a machine power cycle
    • Are there limits on the number or size of ephemeral disks which can be attached to a machine
  • General disk handling
    • Are disk attachment hints available outside the machine, do disk attachment hints from the IaaS correlate in any way with attachment hints inside the machine (e.g. UUID, device name)
    • Can disks be attached and detached at any time (e.g. does the machine have to be stopped)
    • Can a snapshot be created from a disk at any time (e.g. does the disk have to be detached from the machine)
  • Software defined networking
    • Can multiple networks be created
    • Is creating a network with an arbitrary CIDR block supported
    • Can a network be devided into multiple subnets
    • Is it possible to assign a machine an arbitrary static ip
    • Is DHCP supported
    • Is DNS available
    • Is it possible to automatically assign public IP addresses
    • Is IPv6 supported
    • How many networks can be created
    • Is network performance customizable, are network throughput settings defined on a network, machine, or both
    • Can a specific static public address be associated with a machine
      • Does this address have a lifecycle independent of the machine
      • Can this address be assigned to another machine
  • Firewall support
    • Can inbound and outbound traffic rules be specified
    • Are traffic rules applied to a machine, a network, or both
    • If firewall rules can be applied to a machine, can they be set at any time during the machine lifecycle
    • Can firewall rules be modified after creation
  • Is it easy to program against
    • Is an SDK available in Ruby or Golang
      • Are they open source; what license is used
    • Is a RESTful API documented
  • Are products besides compute and block storage available
    • Load balancing
    • Blob storage
      • Is a custom API used or is there an S3/Swift compatible API exposed
    • Relational database
  • Availability zones
    • Are availability zones a first class concept
    • What resources can or cannot be moved accross availability zones
    • Is it possible to clone resources into different availability zones
  • Responsiveness and reliability
    • Does creating a new machine take roughly one minute, five minutes, ten minutes or more
    • Does the speed at which machines are created depend on how many machines have already been created
    • Are machines created on shared hardware
      • Is it possible to create machines on dedicated hardware
    • For hosted solutions, can an SLA be purchased
    • What is the advertised relaibility of the solution
  • Pricing considerations
    • Can machines be requested at a "market" price (e.g AWS Spot Instances)
    • Can machines be requested at a cheaper price with less reliable service (e.g. GCE Preemptable VMs or AWS Burst Instances)
  • Hosted Regions
    • Are geographically distributed service regions available
      • Are mutliple access credentials required to address multiple regions
      • Are any regions isolated or special (e.g. China)
  • On premise installation
    • How many machines are required for a standard installation of the solution
    • Is there a single machine development version available
    • Are there hosting providers for the solution
  • Are GCE concepts/naming similar to AWS's?

  • How's GCE's responsiveness?

  • How's GCE's reliability?

    • API reliability (i.e. starting a VM fails 30% of the time)
    • Infrastructure reliability (i.e. after 2 days, I was unable to SSH into my VM)
  • Security features. How does it measure up to AWS?

  • Anything else we need to know?

  • For hosted solutions are there any unique regions (e.g. China) how do they compare with "standard" regions

  • For on premise solutions how hard is it to deploy (number of machines, software available as binaries)

  • For on premise solutions, is there a local development version and how full featured is it

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment