Docker, appengine and the flexible environment

Update Nov 2017

I'm no longer running Ephemeral exchange on these platforms - instead it's now serverless, based on Firebase cloud functions.

For my Ephemeral Exchange project I needed to integrate a whole bunch of technologies for the front end development, but it also gave me some new challenges with other stuff that was new to me too. I had started with the intention of hosting Redis, my back end database on a Compute engine VM, the API as Node/express app on another VM and my front end stuff on Cloud storage. As usual, plans changed.

Appengine

When App engine first came out, you were stuck with PHP, Python or Java - none of which are my goto solutions. Then Go came along, but shortly afterwards it was announced that app engine was going to support Node. For us JavaScript developers, that's a perfect solution. In fact the way does that is by allowing containers to be hosted by appengine in what they call their flexible environment. They provide a prebuilt Node environment of course, but you can create any kind of containers and run that on app engine too. This means that there's not much point in bothering with spinning up your own VMs on compute engine. Instead just build a container with everything you need in it.

Docker

If you think about a VM as being an environment that's hosted by a host OS, but that has a virtual encapsulated OS - essentially a machine running on another - you still have to manage that as if it were a real machine. Docker is an application focused version of a VM, where you package your app and everything it needs (including an operating system to support it) into a container, then anything that can run Docker can run your App. The Docker Hub is a repository of containers that others have made and you can base your container on one of them - or you can start from scratch and build your own. In these pages I'll be going into Docker containers and showing some examples.