I want to rollout software to clients (1m+) devices in a gradual fashion due to high risk. Ideally i would be able to target users based on analytical data i posses and decide if they should receive the upgrade. Currently we are using our homegrown server calls but they don’t hook to any analytics. Ive done quite a bit of research and haven’t found venders providing this type of functionality. Are there platforms (sort of like the “app store”) which have ways to gradually rollout updates to client machines?
It sounds like you are talking about Canary Analysis ? If so, Spinnaker has deployment based on canary analysis built on, using metrics provided by the application telemetry. To quote the Spinnaker docs:
Your application might send performance metrics which are published and available by default. You can also install a monitoring agent to collect more comprehensive metrics, and you can instrument your code to generate further metrics for that agent. In any case, you need to have access to a set of metrics, using some telemetry provider, which Kayenta can then use to make the canary judgment. Support is built in for Stackdriver, Datadog, Prometheus, Signalfx, and New Relic.
So, you use Spinnaker as a continuous deployment service and instrument the application with one of the supported mechanisms. Canary analysis can then be done to manage the roll-out of new version.