I was wondering if anyone had any suggestions on what the right 'cloudy' way of doing things are. Should I spin up a VM on the cloud and use it forever like I do with a physical machine? Or should I constantly spin up and spin down VMs daily? My VMs are stateless.<p>Are there organizations that have chosen one path or the other and have had success? Links to blogs/articles would be appreciated
You should on GCE, but not on EC2: per-hour billing for EC2 means your 15 minute VM costs you 60 (aka 4x as much). We (sadly) have a 10 minute minimum, but the difference is pretty stark.<p>Once they got through some growing pains (rate limits per project), Travis CI has switched to a 1 VM per build model that they'll probably detail in future blog posts.<p><a href="https://blog.travis-ci.com/2016-04-07-migration-update" rel="nofollow">https://blog.travis-ci.com/2016-04-07-migration-update</a><p>Disclaimer: I work on GCE, so of course I want you to use it ;).
The <i>only</i> way AWS is cheaper than other providers is if you take advantage of the ability to spin up an EC2 instance from an image for just the time you need it, and spin it down when you don't.<p>If you're not using AWS, check to see how up/down affects your costs. Some will still charge you for VM's that are "down", meaning there is limited benefit (to you directly) to spinning them down.
If you have a stateless architecture, you should use Google's Preemptive VM. It is cheaper <a href="https://cloud.google.com/preemptible-vms/" rel="nofollow">https://cloud.google.com/preemptible-vms/</a>