Multimaster Webapps

The server side of a web site should be scalable in processing power and storage. The app logic is fine with running multiple copies of itself. The datastore is the hang-up. CouchDB is the solution I'm focued on. The setup is simple, a 'server' exists as a pairing of an application server and a CouchDB instance. Servers can come online at will and the couchdb instances are set to replicate with each other. It should be trivial to change the number of running servers, including across data centers. One performance metric here is time to consistency.

When two servers with conflicting data are syncing documents, a merge conflict can occur. CouchDB has a default merge conflict resolution - longest history wins and for the same history count, highest ascii md5hash/rev value wins.

My next server-side project, a rewrite of the back-end, will use this approach.