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 or any full packaged solutions.1
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:
Nothing concrete.
Projects I didn't touch:
/Nat
Footnotes
-
By proprietary I mean things like Google Cloud Container Builder or Amazon Elastic Load Balancers. By full packaged solutions I mean things like Deis or CloudFoundry. ↩