Cuando se diseñan sistemas IoT, por ejemplo, el uso compartido de automóviles, es muy importante considerar posibles fallas. De lo contrario, encontrará una carga crítica en el soporte técnico y la insatisfacción del cliente.
Estacionamiento "Skolkovskaya"Las fallas ocurren en todas partes. Pero en el mundo del "Internet de las cosas", este es un estado permanente. Cuando se trabaja con redes móviles y hardware, los bloqueos ocurren con mucha más frecuencia que en la web o el desarrollo móvil.
La fiabilidad de los sistemas se ve afectada por varias razones, incluidos plazos ajustados y presupuestos de desarrollo limitados. Pero IoT puede funcionar si no se niegan las posibles fallas, sino que se aceptan e intentan resolver el problema. Si está interesado, hay un
artículo interesante sobre métodos para aumentar la tolerancia a fallas, pero ahora está más cerca del punto.
Abres el auto desde el teléfono, ¿qué podría salir mal?
Los pasos pueden depender de la arquitectura del sistema, pero el escenario generalmente es este:
Hace clic en el botón "Reservar ahora". Se envía un comando al servidor. Ella puede o no caminar.
Hace clic en el botón "Abrir automóvil". Se envía un comando al servidor. Ella puede o no caminar. El servidor envía un comando a la máquina. Ella puede o no caminar. El dispositivo integrado está intentando ejecutar el comando. Puede o no cumplirse.
Hace clic en el botón "Iniciar viaje". Se envía un comando al servidor. Ella puede o no caminar. El servidor envía un comando a la máquina. Ella puede o no caminar. El dispositivo integrado está intentando ejecutar el comando. Puede o no cumplirse.
Sí, esto es una cantidad superficial y realmente una cantidad increíble de problemas, pero ahora consideraremos solo estos.
Supongamos que todos los equipos han alcanzado y todos los actuadores han funcionado: ¡éxito! Se puede demostrar a los inversores.
Algo salió mal
Pero, ¿qué sucede si, por ejemplo, el comando "Puertas abiertas" no llega al automóvil?
En primer lugar, el servidor debería enterarse de esto. Para que el estado real de la máquina se sincronice con el servidor, generalmente se utiliza el reconocimiento de comandos (ACK). Y otra confirmación de la ejecución del equipo. Después de todo, "el equipo no ha sido entregado" y "el equipo no ha sido ejecutado" son eventos diferentes e implican diferentes intentos de resolución.
En segundo lugar, (si el problema no se pudo resolver, por ejemplo, al reenviar el comando), debe informar el error al usuario y no ponerlo en el estado de "disparo".
En Delimobile comenzarás el viaje.
Y una conversación con el operador de soporte técnico.
La historia
Yo trabajo en Skolkovo. Debido a las dificultades con la accesibilidad al transporte, como muchos colegas, fui a trabajar y volví todos los días a compartir el automóvil. Pero hace 3 días, en la zona de estacionamiento, la conexión se deterioró. Por qué hay problemas con las comunicaciones móviles en el Centro de Innovación es otra cuestión, pero esta situación dio lugar a un problema interesante: los usuarios de Delimobile que reservaron un automóvil quedaron atrapados.
En la fría noche del 24 de septiembre, volvía a casa. Él reservó un auto y se acercó a ella.
Hizo clic en "Iniciar inspección", pero las puertas no se abrieron.
- Bueno, probablemente, nuevamente, un fallo de comunicación. Me llevaré otro. ¡Además, hay tantos!
Hizo clic en "Finalizar alquiler" - "Está fuera de la zona de estacionamiento"
Llamo en apoyo, describo la situación. El operador está intentando abrir la puerta. Fracaso La musica Puertas abiertas Gracias
- Probablemente los servidores fallaron. Ok, vamos Presiono "Iniciar el viaje": la aplicación comenzó a contar el dinero.
No comienza
Llamo en apoyo, describo la situación. El operador está tratando de permitir que arranque el motor. Fracaso "No hay conexión con la máquina".
- Bien, cerrémoslo manualmente. Baje el cristal, salga, presione el botón de bloqueo central, cierre el cristal.
El vidrio no se cae. Aparentemente, sin un comando del servidor, el automóvil no enciende el encendido. Pero no hay conexión.
- Entonces debes esperar al mecánico. 1-1.5 horas.
"Pero hace frío aquí". Hay 3-4 personas más alrededor de los autos Delimobile con teléfonos móviles. Tal vez las pieles ya les han sido enviadas ...
<las puertas del auto se cerraron repentinamente>
Ah, eso es. Gracias Iré en minibús.
Cómo otros resuelven este problema
En primer lugar, si no hay comunicación con la máquina, quizás no debería mostrarse en el mapa.
En segundo lugar, si el servidor supiera que el comando para abrir las puertas no se había ejecutado, no me habría transferido al modo de alquiler. Entonces, en lugar de 40 minutos en frío y una carga adicional de soporte técnico, solo vería un mensaje de error.
En tercer lugar, puede crear un canal de comunicación de respaldo: un segundo módem con otro operador (tenía Internet en el teléfono). O Bluetooth, como se hace en Squirrel y YouDrive. (Quizás esta opción no sea para Delimobile, ya que aumentará los costos de desarrollo y soporte, y DM es el más barato entre las masas)
Mientras tanto, Delimobil guarda los autos "cerrados manualmente" y carga su soporte técnico debido a la falta de confirmación de la entrega de los equipos de control. Al mismo tiempo, los automóviles sin comunicación son visibles en el mapa y están disponibles para reservar.
Este es un problema más amplio.
Estoy seguro de que los ingenieros de Delimobile son geniales. Resolvieron un mar de problemas. En serio De hecho, además del equipo y el sistema en sí, todavía es necesario construir procesos para la puesta en marcha, mantenimiento, desmantelamiento, etc. A menudo, estos procesos también requieren el desarrollo de hardware y software.
Pero, ¿por qué podría surgir tal situación? En mi opinión, hay dos razones probables.
El primer problema probable son los diferentes contratistas para la aplicación, los servidores y el equipo sin un diseño de alto nivel de alta calidad de todo el sistema. Puede que todos hayan hecho bien su trabajo, pero la arquitectura general tiene problemas.
La segunda razón probable es inherente a tantos proyectos en principio. El hecho es que para demostrar (por ejemplo, a los inversores) no es difícil hacer un prototipo. Quizás esto sea suficiente por varias semanas o incluso días. Sin embargo, el diseño y desarrollo de un sistema confiable puede llevar un mes, o incluso años. Desafortunadamente, no todos los gerentes efectivos entienden esto.
A menudo, el liderazgo efectivo puede requerir nuevas características que creen que aumentarán los ingresos de la compañía. Al mismo tiempo, no ven potencial comercial para aumentar la confiabilidad.
Que hacer

A nivel local, Delimobil necesita resolver el problema del estacionamiento en Skolkovo. Muchos autos están inactivos allí. Es poco probable que puedan ponerse de acuerdo con un operador móvil para mejorar la calidad de la comunicación. Por lo tanto, el resultado más probable me parece que prohibirán estacionar allí y transportar vehículos a Moscú por su cuenta. Resultado triste :( ¿Crees que es posible resolver este problema de una manera diferente?
A nivel mundial, los gerentes técnicos deben defender la necesidad de aumentar la confiabilidad. Al menos en Delimobile, ahora tienen una discusión.
PD: Gracias especiales a los atormentados chicos de soporte técnico. Son educados y tratan de resolver el problema.