After nearly a month of experimenting with all kinds of Docker management engines, for lack of a better term, I think I’ve decided what I’m going to go with. Well almost.
The entire point of this project is to figure out how to excessively scale WordPress and then move on to another platform that’s completely immutable. I’ll tell you about it when we get there. For now, lets look at the options I’ve reviewed over the last few weeks.
Not happening. This project has changed so much since I saw it two weeks ago. I really don’t feel like trying to keep up to date on what’s going on. And, after playing with it for a few days, it seems extremely coupled to Google Compute. In fact, most of their documentation speaks directly to it. I’m not ok with that. I don’t want to be tied to any one provider.
Probably not happening. Deis is so simple. In a way, I kind of fell in love with it. The contributors are a great group of people, but it’s lacking on some key features.
As of right now (version 1.3), they don’t support any kind of plugin system for getting MySQL or PostgreSQL up and running. In case you didn’t know, Deis is a DIY PaaS (much like Heroku). In fact, you can use Heroku BuildPacks to launch your containers. For some, that may be all they want/need … in fact, its all I really need. But this is about being <em>excessively</em> scalable.
Out of all of these, this one was my favorite… except for how brittle the services are that run the cluster. I think I broke my cluster at least 4-5 times just by deploying an application. On the plus side, I had to document everything trying to get it to be “not brittle”. So, there’s going to be a nice little tutorial for anyone who needs it, in the very near future.
Mesos / Marathon
YES. I think I’m going to go with Mesos/Marathon. It has super powers and isn’t limited to docker. It can schedule any command and scale easily. Another thing, Mesos is a platform. I can spool up a Hadoop cluster and cassandra for those crazy contests my brother and I like to hack on… or just run a blog on it; which is the whole intent of doing this.
Now that I’ve decided on a platform, it’s just a matter of figuring out how the application is going to be structured in a highly available way, and then doing it. There’s a ton of blog work out there detailing people’s setups with virtual machines, so it will (hopefully) just be a matter of replicating it with docker and other services.