All these technologies are to be assembled into a pre-built appliance. Most of it is the set of apps described in the title, but the real magic comes from a couple relatively static applications written in node.js. To increase capacity, we add more nodes. Should be zero configuration.
Under node.js there are services I have to write-
cluster management-- which is catch all for connecting new nodes to the cluster, or migrating off of nodes going away.
authoritativeDNS-- the cluster is it's own name servers. This say load can be balanced, and we can dynamically add customers custom domains to our app and support them right away,
Simple queue service, and cron service--- using node.js and redis.
This is tied into redis to cache dns records, static or unchanged pages using the etag couch provides, etc. The cluster manager reports the local nodes CPU load in redis as well, and so the dns knows to return address to direct traffic to nodes in the cluster that are less busy. This way apps can add customer dns so that our neophyte customers can get set up by merely putting out name servers into their registrar.
Most of the product functionality will be written in CouchApps, except for places where couchapp is limited..... Like showing multiple views on a page, and checking for uservauthentication. Don't want one customer to be able to see anthers private info. Well do that, and cron like tasks in node.js.
The reason for doing things this way is to make continuous deployment easier, but also to never have to reboot or change e servers much. The node.js services will be well tested and unchanging.
All of this will be built up using turnkey linux into an appliance. This can then be deployed on amazon or vps or wherever without the need for a load balancer in front. Since it does it's own dns and the authoritative dns is the cluster itself.
This should reduce maintenance to the bare minimum,and I can push out a new set of appliances over time and slowly migrate trafic to them once or twice a year when I need to update core funcationality.
I might go with web machine and raik instead of node.js and couch if I can find a compelling reason to, but the big holdup there is th question of how much of ahassle it would be to attach beam files to documents and get web machine to run them.
I know this is unconventional. I'm up for criticisms and suggestions, especially if there is a way to avoid writing all this code in node.js. Please don't tell me it is wrong because it's unconventional or that I don't need this flexibility. I want to just focus on the business and the product, if I could get this kind of capability from a hosted solution, i would, but I can't. (for instance, I need to download zip files nightly, unpack them, feed the data into a database, something I can't do on app engine, for instance, or cloudant, etc.)
Thanks. What do You think?