L'importance de confirmer les commandes de contrôle en utilisant Delimobile comme exemple

Lors de la conception de systèmes IoT, par exemple le partage de voiture, il est très important de considérer les défaillances possibles. Sinon, vous trouverez une charge critique sur le support technique et l'insatisfaction des clients.


Parking "Skolkovskaya"

Les échecs se produisent partout. Mais dans le monde de «l'Internet des objets», c'est un état permanent. Lorsque vous travaillez avec des réseaux mobiles et du matériel, les plantages se produisent beaucoup plus souvent que dans le développement Web ou mobile.

La fiabilité des systèmes souffre pour diverses raisons, notamment des délais serrés et des budgets de développement limités. Mais l'IoT peut fonctionner si les échecs possibles ne sont pas refusés, mais acceptés et tentent de résoudre le problème. Si vous êtes intéressé, il y a un article intéressant sur les méthodes pour augmenter la tolérance aux pannes, mais maintenant c'est plus près du point.

Vous ouvrez la voiture depuis le téléphone, qu'est-ce qui pourrait mal tourner?


Les étapes peuvent dépendre de l'architecture du système, mais le scénario est généralement le suivant:

Vous cliquez sur le bouton "Réserver maintenant". Une commande est envoyée au serveur. Elle peut ou non marcher.

Vous cliquez sur le bouton "Ouvrir la voiture". Une commande est envoyée au serveur. Elle peut ou non marcher. Le serveur envoie une commande à la machine. Elle peut ou non marcher. Le périphérique intégré tente d'exécuter la commande. Elle peut ou non être remplie.

Vous cliquez sur le bouton "Start Trip". Une commande est envoyée au serveur. Elle peut ou non marcher. Le serveur envoie une commande à la machine. Elle peut ou non marcher. Le périphérique intégré tente d'exécuter la commande. Elle peut ou non être remplie.

Oui, c'est un problème superficiel et en fait insensé, mais maintenant nous ne considérerons que ceux-ci.

Supposons que toutes les équipes aient atteint et que tous les actionneurs aient fonctionné - succès! Cela peut être démontré aux investisseurs.

Quelque chose a mal tourné


Mais que se passe-t-il si, par exemple, la commande «Portes ouvertes» n'atteint pas la voiture?

Premièrement, le serveur devrait s'en informer. Pour que l'état réel de la machine soit synchronisé avec le serveur, un accusé de réception de commande (ACK) est généralement utilisé. Et une autre confirmation de l'exécution de l'équipe. Après tout, «l'équipe n'a pas été livrée» et «l'équipe n'a pas été exécutée» sont des événements différents et impliquent différentes tentatives de résolution.

Deuxièmement, (si le problème n'a pas pu être résolu, par exemple en renvoyant la commande), vous devez signaler l'erreur à l'utilisateur et ne pas la mettre dans l'état "trip".

Dans Delimobile, vous commencerez le voyage.

Et une conversation avec l'opérateur de support technique.

L'histoire


Je travaille à Skolkovo. En raison des difficultés d'accessibilité des transports, comme de nombreux collègues, je suis allé travailler et revenir tous les jours sur le covoiturage. Mais il y a 3 jours, dans la zone de stationnement, la connexion s'est détériorée. Pourquoi il y a des problèmes avec les communications mobiles au Centre d'innovation est une autre question, mais cette situation a donné lieu à un problème intéressant: les utilisateurs de Delimobile qui ont réservé une voiture ont été piégés.

Par la froide soirée du 24 septembre, je rentrais chez moi. Il a réservé une voiture et est venu vers elle.

Cliquez sur «Démarrer l'inspection», mais les portes ne se sont pas ouvertes.

- Eh bien, probablement, encore une fois, un échec de communication. J'en prendrai un autre. De plus, il y en a tellement!

Cliquez sur "Terminer la location" - "Vous êtes hors de la zone de stationnement"

J'appelle à l'appui, décris la situation. L'opératrice essaie d'ouvrir la porte. Échec. La musique. Les portes s'ouvrent. Je vous remercie

- Probablement les serveurs ont échoué. D'accord, allons-y. J'appuie sur "Commencer le voyage" - l'application a commencé à compter l'argent.

Ne démarre pas.

J'appelle à l'appui, décris la situation. L'opérateur essaie de permettre au moteur de démarrer. Échec. "Il n'y a aucun lien avec la machine."

- D'accord, fermons-le manuellement. Abaissez la vitre, sortez, appuyez sur le bouton de verrouillage central, fermez la vitre.

Le verre ne tombe pas. Apparemment, sans commande du serveur, la voiture ne met pas le contact. Mais il n'y a aucun lien.

- Ensuite, vous devez attendre le mécanicien. 1-1,5 heures.

"Mais il fait froid ici." Il y a 3-4 personnes supplémentaires autour des voitures Delimobile avec des téléphones. Peut-être que les fourrures leur ont déjà été envoyées ...

<portes de voiture soudainement fermées>

- Ah, c'est ça. Je vous remercie Je vais en minibus.

Comment les autres résolvent ce problème


Premièrement, s'il n'y a pas de communication avec la machine, elle ne devrait peut-être pas être affichée sur la carte.

Deuxièmement, si le serveur avait su que la commande d'ouverture des portes n'avait pas été exécutée, il ne m'aurait pas transféré en mode location. Ainsi, au lieu de 40 minutes dans le froid et d'une charge supplémentaire sur le support technique, je ne verrais qu'un message d'erreur.

Troisièmement, vous pouvez créer un canal de communication de secours - un deuxième modem avec un autre opérateur (j'avais Internet sur le téléphone). Ou Bluetooth, comme cela se fait dans Squirrel et YouDrive. (Peut-être que cette option n'est pas pour Delimobile, car elle augmentera les coûts de développement et de support, et DM est le moins cher parmi les masses)



En attendant, Delimobil enregistre les voitures «fermées manuellement» et charge son support technique faute de confirmation de la livraison des équipes de contrôle. Dans le même temps, les voitures sans communication sont visibles sur la carte et sont disponibles à la réservation.

Il s'agit d'un problème plus large.


Je suis sûr que les ingénieurs de Delimobile sont formidables. Ils ont résolu une mer de problèmes. Sérieusement. En effet, en plus de l'équipement et du système lui-même, il faut encore construire les processus de mise en service, de maintenance, de démantèlement, etc. Souvent, ces processus nécessitent également le développement de matériel et de logiciels.

Mais alors pourquoi une telle situation pourrait-elle se produire? À mon avis, il y a deux raisons probables.

Le premier problème probable réside dans le fait que différents sous-traitants de l'application, des serveurs et des équipements n'ont pas une conception de haut niveau de haute qualité de l'ensemble du système. Tout le monde a peut-être bien fait son travail, mais l'architecture globale a des problèmes.

La deuxième raison probable est inhérente à tant de projets en principe. Le fait est que pour démontrer (par exemple, aux investisseurs) il n'est pas difficile de faire un prototype. Cela suffira peut-être pendant plusieurs semaines, voire plusieurs jours. Cependant, la conception et le développement d'un système fiable peuvent prendre un mois, voire des années. Malheureusement, tous les gestionnaires efficaces ne le comprennent pas.

Souvent, un leadership efficace peut nécessiter de nouvelles fonctionnalités qui, selon eux, augmenteront les revenus de l'entreprise. En même temps, ils ne voient pas de potentiel commercial pour accroître la fiabilité.


Que faire




Localement, Delimobil doit résoudre le problème du stationnement à Skolkovo. Beaucoup de voitures y tournent. Il est peu probable qu'ils soient en mesure de s'entendre avec un opérateur mobile pour améliorer la qualité de la communication. Par conséquent, le résultat le plus probable me semble qu'ils interdiront d'y stationner et de transporter seuls des véhicules à Moscou. Résultat triste :( Pensez-vous qu'il est possible de résoudre ce problème d'une manière différente?

Globalement - les responsables techniques doivent défendre la nécessité d'augmenter la fiabilité. Au moins dans Delimobile, ils ont maintenant un argument.

PS Un merci spécial aux gars du support technique tourmentés. Ils sont polis et essaient de résoudre le problème.

Source: https://habr.com/ru/post/fr468765/


All Articles