I'm really stuck right now on #tenbysix. I'm having total architectural block. My brain just needs to code something to make progress, but it's not happening.
I'm going to brain dump on Billow.in, the project that I think is causing most of this blocking, and maybe that will free up some thoughts. This brain dump was brought to you by Moderat iii on repeat.
So I want to build a heroku clone, using as much already written software as possible, but without using anything proprietary (like Google Cloud Container Builder or Amazon Elastic Load Balancers) or any full packaged solutions (like Deis or CloudFoundry).
Some base requirements:
- Must support Ruby, Go, Python and Node.js.
- Must be able to deploy from a push to Github.
- Must be able to run multiple applications from one box.
- Must restart application if it dies.
- Must be able to assign DNS, and not need to change ever.
- Base monitoring must come for free.
- It needs to be as cheap as possible.
Right now what I'm trying to wrap my head around is what do I need to build after a git push, and then how do I run it?
I like how Otto figures out a lot of stuff for you, so you can have local and remote deployments be identical. One thought I had was to git push to Github, which would trigger a Travis build, which if successful would somehow push to Nomad. None of this workflow is supported yet, but it's something I think might work if I do a bunch of hacking on both projects.
Another thought is to start simpler. Use Packer to build AMIs, and just deploy those to EC2. Although now reading the packer docs, I could have packer build a docker container as well... so if I had a docker image, I could push that to Docker Swarm, and then just register that with some sort of admin tool which sets up load balancing and DNS.
Google has a tutorial on building a pipeline similar to what I'm proposing above, which could be interesting. Hashicorp also has a slide deck that shows a way to do a similar pipeline with just their tools.
Cool, ok, that brain dump helped. So I'm going to try and create a base packer setup that I can run on git push that outputs a docker image that I can run.
Stuff I worked on this week:
Projects I didn't touch: