Discussion about infrastructure
After reading all: http://www.slideshare.net/bobtfish/docker-confjune2014 http://nerds.airbnb.com/smartstack-service-discovery-cloud/ http://clockworkcubed.com/2014/05/consul-and-synapse-service-discovery-and-elastic-load-balancing/ http://jasonwilder.com/blog/2014/02/04/service-discovery-in-the-cloud/ http://jasonwilder.com/blog/2014/07/15/docker-service-discovery/ http://www.consul.io/intro/vs/smartstack.html http://igor.moomers.org/smartstack-vs-consul/ I feel this is the path: https://coreos.com/blog/docker-dynamic-ambassador-powered-by-etcd/
Ouh, I'm getting excited :)
So the idea would be to have a manifest file for each of app we support.
I will write a BDD scenario: Given a user (john) wants to access his wordpress the first time And the user has already an account with indiehosters When he goes to his app store page And he clicks on wordpress Then he is redirected to john.indiegue.st/wordpress And our user sees a waiting page Then our backend catches this http request And our backend understands that there is no wordpress for this user And our backend read the manifest file for wordpress And our backend satisfies MySQl dependencie (Given a user (john) wants to access his mysql the first time...) And our backend satisfies all dependencies And our backend send the http request to the service ambassador And the service ambassador responds
The idea is that I don't want poor failover made by hand. Technology is mature for kickass failover. I want to have a rocking service. When one of the VM is down, I don't want the service down for the user :) So yes, one MySQL per user, but a replicated master-master one! And every services consuming MySQL are able to do it so, even if one MySQL instance is down :)
I'm still hoping that we don't have to write this manifest file, and could handle it at the Fleet or Docker level.
And about some services that are shared among users (mail, jabber..), I strongly believe we should use the same scemas as for users. We should dog food it ;) It's not a special case, it's just that the user is Michiel instead of John ;)
And I don't think we will run backup of services of each others (cross hosters). I will personaly have 3 VMs, and they'll backup each other. It's either that, or we share a common cluster (3 VMs also, but we can grow them to more).