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?
1 Answer
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.
-
Seems forcloud applications. I have client applications on mac/linux/windows. Dont understand how this manages those upgrades– AvbaSep 23, 2020 at 19:13
-
It all turns on how you determine the health of the clients - you mention that they are calling back - this is a form of telemetry. Analysis of the metrics of this telemetry can be used for canary deployments - but you need a controller to decide how many new deployments to pull into production, or in your case, clients to upgrade. Sep 24, 2020 at 4:41