High Availability Pattern
I'm dubious about whether to suggest this, but something that enabled easier high availability for a SS Service would be great. This would maybe be more like a recipe than a feature, but possibly with features to help support it.
We run a ServiceStack API Service which depends on redis and postgres, each with replication to secondary nodes which are readonly until we manually execute a failover command. Running multiple ServiceStacks on VPSs (or whatever) is easy, but having them co-ordinate is slightly trickier. So the type of thing I'm suggesting would include
- Digital Ocean recipe for running up multi-region VPSes with ServiceStack
- Endpoints for inter-node communication (for availability checking)
- DNS Setup guide (assuming this will be the simple HA technique)
- Each node having independent, but possibly co-ordinated config
- Support for "routing/proxying" back to master node (depending on DNS setup), so if slave node receives a request, it will execute as if on master, but with extra latency
- Live config reload (for automated failover) (e.g. change postgres connection string to x.x.x.x)
This is more an overall strategy than a single feature request, and is also something I would love to realize as I think a lot of this is the future, e.g. deploying stateless vagrant images to great-value clouds like DigitalOcean/Hetzner that encapsulates a stateless "blessed configuration" with redis / postgres / nginx (and maybe companion services like elastic search) pre-enabled, with extensibility hooks to enable CI deployments to the vagrant VM so they can be automatically updated and preferably without downtime.
Unfortunately this is going to have to wait till we're able to hire full-time System Administrators (dependent on whether SS ends up being successful) to be able to research, realize, document and productize re-usable/scriptable/automated solutions. Until then it would be good to farm the research out to the wider community to collect and collate a lot of information in the one place so others have some info to base informative decisions on.