Tengo un software (Windows Server, un poco diferente a 'cosas' pero el principal es el mismo) que llama cada 24 horas; envía varios metadatos sobre sí mismo:
- nombre del cliente (o identificación única)
- Versión del software
- marca de tiempo de llamada / solicitud
- tipo de producto / id
El servicio web analiza los datos e inserta (o actualiza si el cliente tiene una fila existente) una fila en una base de datos.
De esta forma, los nuevos clientes se agregan automáticamente a la base de datos, los clientes existentes actualizan su marca de tiempo "visto por última vez" y siempre tenemos su última versión de software. Puedo ejecutar consultas DB que me dicen qué clientes están en versiones anteriores y / o qué clientes no han llamado por un tiempo.
También implementamos una actualización automática (piense en la actualización OTA) recientemente y debido a que este es un proceso crítico, implementamos una telemetría específica para esto, que registra:
- Versión actual.
- Versión a actualizar.
- Quién / cuándo lo autorizó (si se requiere la aceptación del cliente).
- Marcas de tiempo y códigos de estado para cada uno de los pasos principales.
Esto nos permite determinar si ciertos aspectos de la actualización automática están fallando y, en muchos casos, nos permite llamar al cliente a menudo antes de que noten que algo está mal.
La gran diferencia con las 'cosas' es que normalmente tiene limitaciones de memoria, por lo que para realizar una actualización OTA xxx Kb
de firmware necesita xxx Kb * 2
memoria disponible (firmware existente + memoria suficiente para almacenar nuevo firmware antes de comenzar la actualización real del firmware)