17:35 February 6, 2017

# Provisioning

/or why I stopped worrying and learned to love the cloud/

When "the Cloud" rose to prominence as a marketing term circa 2008, I thought this was the most glazed over I had ever seen programmers. I mean, really? "The Cloud"? You have computers. You have VMs. What is the point of this "the Cloud"?

Now that it's 2016, I've decided to embrace the term.

The Cloud means that it doesn't matter where you run things. Your laptop is the Cloud. AWS can be your cloud. Or maybe GCE. A bank of servers is the Cloud.

The big difference between your laptop and, say, AWS, is if you want a bunch of computing resources, you're going to have a much harder time scaling up your laptop. Whereas, for AWS, click a button...or run a shell command...or enact an ASG, and poof, more computing resources. Now of course these run somewhere. Somewhere there's a whole bunch of metal-oxide semiconductors etched by very fine wavelengths and doped by ions falling through an electrostatic drop (or what not) generating heat doing computation.

But the point is that it shouldn't matter where your software is run. AWS has some great resources. It also has things I like less. What scares me are AWS-only solutions. Or RAX-only solutions. Or only-in-my-special-datacenter only solutions. Because what I care about is solving problems by developing software. I'll be the first ot say that sometimes -- wait, no, just about always -- you have to special-case something to get something done. Because in the end what matters is solving the problems of the non-hypothetical variety.

## So I thought you said something about provisioning?

I did! So let's just make the claim that modern computing is about VMs. Or, better yet, containers. Now there's nothing in your laptop that directly imposes a limit on the VMs or containers if can host...you eventually just run out of resources. Because, after all, you only have so many logic gates and capacitors and disk platters.

In order to scale arbitrarily, you need programmatic control to spin up containers to the point that you are not capacity limited.

Now, here's where I'm going to learn to love the Cloud and say that, by the same token, software should be irrespective of this provisioning process.

Think salt-cloud. You give it some configuration. It makes an AWS EC2 instance. Or it makes a Rackspace instance. Or you write a plugin and it makes whatever kind of instance you want.

(For the reader: what about a salt-cloud k8 adaptor?)

## Bare metal