Hypercube. Comment nous avons fourni aux développeurs des appareils de test et ne les avons pas perdus

Il est impossible de tester et de déboguer complètement des applications mobiles sans appareils de test. Il devrait y avoir de nombreux appareils de ce type, car le même code sur différents modèles se comporte différemment. Mais comment organiser la comptabilité des appareils? Comment faire pour que les développeurs et les testeurs rapidement et sans formalités administratives obtiennent un smartphone spécifique dans la configuration nécessaire?


Je m'appelle Alexey Lavrenyuk. Vous pouvez me connaître comme l'un des auteurs de Yandex.Tank et un conférencier sur le sujet des tests de charge . J'ai ensuite mesuré la consommation électrique des téléphones portables. Maintenant, je fais Yandex.Rover dans une équipe de véhicules sans pilote (et parfois au clair de lune comme le Père Noël ). Et entre les téléphones et le Rover se trouvait Hypercube.


Il y a quelques années, le responsable du développement mobile est venu dans notre service de test de charge et s'est plaint de la situation avec les appareils de test. Les téléphones se promenaient de main en main, choisir et trouver rapidement un téléphone était un problème. Nous avions déjà de l'expérience avec les appareils mobiles: nous avons construit un ampèremètre numérique pour mesurer leur consommation d'énergie. Par conséquent, nous avons décidé d'aider nos collègues et de faire rapidement une chose cool: cela semblait fonctionner pendant seulement trois mois. Je me moque de moi, naïf, à partir de 2020 et raconte ce qui nous attendait vraiment.




Concept de service et premières idées


Nous étions l'un des rares à Yandex à assembler des appareils en fer. De plus, nous connaissions le mobile. Pour moi, l'idée du service était apparente: vous devez connecter les téléphones au concentrateur et suivre leur disponibilité et leurs déplacements dans le bureau via USB. La conception tient dans une armoire de serveur.


Voici comment j'ai imaginé le processus:


  1. Nous conservons les enregistrements des téléphones via USB. Tous les téléphones de l'armoire sont connectés via USB. Le téléphone est en charge, et nous voyons des informations à ce sujet, y compris l'ID de l'appareil - un identifiant unique (en fait, pour certains appareils chinois, il n'est pas toujours unique), grâce auquel vous pouvez distinguer un téléphone d'un autre. Soit dit en passant, grâce à l'identifiant - que n'importe quel périphérique USB en général - vous pouvez garder une trace de tout: connectez une clé USB standard à vos clés de voiture, par exemple, et conservez un enregistrement automatique des clés.
  2. Nous lisons les utilisateurs sur un badge. Nous identifions tous ceux qui sortent le téléphone du placard à l'aide d'un badge (un laissez-passer permettant de reconnaître n'importe quel employé de Yandex). Après qu'un employé a ouvert l'armoire, on pense qu'il a fait tous les mouvements des téléphones dans l'armoire.
  3. Toutes les informations de mouvement sont stockées de manière centralisée dans le service. Nous voyons où et avec qui se trouve chaque téléphone mobile. Nous pouvons suivre les statistiques: quels modèles sont les plus populaires, quels téléphones manquent.

Il peut y avoir de nombreuses armoires de ce type, mais les informations sur tous les appareils mobiles qu'elles contiennent se trouvent au même endroit. Tous les cubes (armoires) sont combinés et connectés logiquement, et ensemble ils forment un grand Hypercube (d'où le nom interne du service).


Tout le monde a aimé l'idée, nous avons commencé à travailler.


Hypercube. Commencer


Nous avons pris un helpdesk le lecteur RFID et mini-ordinateur Intel NUC. Nous avons acheté un Arduino, une serrure électrique, une armoire pour les équipements réseau (elle était plus petite qu'une armoire serveur, mais avec les mêmes «rails» pour fixer l'équipement).




Bien sûr, nous n'avons pas reçu les savoirs traditionnels et la liste de courses. Nous ne savions pas exactement quel modèle d'armoire conviendrait, combien de boulons et de mètres de fil sont nécessaires. Les exigences pour le cabinet ont changé en fonction des souhaits des équipes. Nous avons convenu, par exemple, que nous allons stocker 40 téléphones portables dans une armoire, et nous allons mettre l'armoire sur la table de chevet, car il est petit et peu pratique de s'y pencher.




Étagères pour téléphones


Nous avons longtemps pensé comment rendre les étagères confortables. Yandex avait des racks pour démontrer les téléphones ou tester les interfaces. Nous avons pensé réutiliser les racks, mais ils ne nous convenaient pas beaucoup: les téléphones là-bas mettaient l’écran à l’utilisateur, comme dans une vitrine - nous n’en avons pas besoin. Nous voulions optimiser l'espace dans le placard, nous avons donc décidé de fabriquer nous-mêmes des étagères.


Il y avait une idée de mettre les téléphones à l'intérieur, comme des livres. Pour ce faire, nous avons cherché des séparateurs dans les papeteries, essayé d'utiliser des supports de CD-ROM, des étagères de magasin - tout ça. De manière expérimentale, les coins en plastique d'un séparateur à coupure d'un conduit de câble ont été collés sur une étagère avec un adhésif thermofusible. La «mise en page du livre» s'est avérée très réussie et nous l'avons aimé.




Peu d'endroits et de nombreux hubs


Au bas de l'armoire, il y avait peu d'espace pour quatre concentrateurs à 10 ports et Intel NUC - nous étions loin de la première tentative pour les y pousser. La porte de l'armoire n'était pas destinée à fixer la serrure - nous avons utilisé beaucoup de colle chaude, des blocs de bois et une scie à métaux. Permettez-moi de vous rappeler: le projet a été réalisé par un groupe de test de charge, aucun de nous n'avait d'expérience avec un broyeur à un point de café.




Prototype de service


Nous avons rapidement réglé ce problème: nous avons créé une page indiquant l'emplacement des téléphones et l'avons placée directement dans notre service de test de charge. Tout simplement parce que cela vous a permis d'essayer rapidement et presque sans effort ce qui s'est passé.


Le premier prototype fonctionnel


Nous avons récupéré le premier Hypercube en trois semaines. Il ressemblait à ceci:




Dans un premier temps, nous avons décidé de tester le prototype dans notre bureau Yandex à Moscou (le client était à Ekaterinbourg). Il s'est rendu dans l'équipe mobile de Yandex.Browser - nous la connaissions déjà du projet Yandex Volta (une version plus récente du rapport est ici ). Ces gars connaissent bien la consommation d'énergie.


Premier test


Etagères à nouveau


Il s'est avéré que la colle chaude ne tient pas bien les coins en plastique sur les étagères en métal. Nous revenons à l'idée des postes téléphoniques. J'ai longuement réfléchi à l'apparence de l'étagère idéale dans le placard. Il semble maintenant qu'il était possible de le dessiner en 15 minutes. Au final, cela s'est avéré pas tout à fait comme dans le premier croquis, mais voici ce que j'ai ensuite dessiné:




Nous avons pris les étagères achetées pour les armoires de serveurs, et en plus nous avons mis les séparateurs fraisés en feuille de plastique, que nous avons fabriqués sur commande. Cette conception a survécu à ce jour.




Concentrateurs peu pratiques


Les hubs des premières armoires étaient avec un interrupteur d'alimentation, des boutons sans verrouillage, éteints par défaut. Par conséquent, après chaque redémarrage, j'ai dû allumer les quatre concentrateurs avec mes mains. Nous avons connecté Yandex SpeechKit pour que le cube prononce si les concentrateurs volent: "Je ne vais pas bien, veuillez appeler la personne responsable." Quand une personne entre, la voix vous dit de vérifier les hubs. Et l'assistant vocal a commencé à appeler les employés par leur nom et leur voix, qui ont pris combien de téléphones.


Problème de verrouillage


Il y a eu plusieurs itérations avec le château. Lorsque je cherchais des serrures pour le prototype au tout début, j'ai trouvé la seule option qui me convenait - "Sheriff": petite, solide et très spirituelle (je n'ai pas encore vu d'analogues). Il se fermait parfaitement, mais pour ouvrir le placard, il fallait appuyer légèrement sur la porte. Tous les utilisateurs ne l'ont pas compris, nous avons donc décidé de changer le verrou.


Ils ont pris le «shérif» avec un ressort qui a poussé la porte. Le cabinet s'est parfaitement ouvert - mais il a commencé à se fermer mal et est resté ouvert (et s'est considéré fermé). En effet, le capteur de fermeture était installé séparément de la serrure, la porte avait un jeu et le capteur fonctionnait parfois jusqu'à la fermeture de la porte. Son installation était irréaliste.


Une fois de plus, nous avons changé la serrure pour le prochain «shérif», qui n'était plus d'une telle conception pleine d'esprit, mais d'un autre côté, un capteur de fermeture a été intégré directement dedans. La serrure a fonctionné sur le prototype, mais après l'avoir mis en service dans le tout premier coffret, elle a commencé à se saisir. J'ai dû danser avec un tambourin: démonter, lubrifier, limer avec une lime. Avec un chagrin de moitié, il s'est retrouvé.


Après les premiers tests, c'est devenu clair: les développeurs et les testeurs comme le cabinet, ils l'utilisent activement. C'est pratique: vous pouvez surveiller les appareils et rechercher le bon dans le service Web, plutôt que de demander à vos collègues: «Qui a ce téléphone maintenant?». Nous avons identifié les problèmes les plus importants: des concentrateurs USB gênants que vous devez allumer avec vos mains, de longs câbles USB de mauvaise qualité (les connecteurs se sont cassés et les fils se sont emmêlés), un mauvais verrou et des séparateurs d'étagère peu fiables qui sont tombés tout le temps. Le travail a continué.


Expansion de l'hyperespace


Le responsable du département de gestion de projet - il nous a également aidé à organiser l'externalisation pour les étagères - était activement engagé dans les relations publiques internes à Yandex: il est allé dans différentes équipes et a parlé de notre merveilleux service. Nous avons rencontré des représentants d'autres départements et, de façon inattendue, nous avons commencé à recevoir des commandes internes pour plusieurs dizaines d'armoires. Une image sombre a émergé: des testeurs de charge pendant des semaines avec toute l'équipe assemblent manuellement les armoires à partir de ce qui est à portée de main.


Nous avons réalisé que nous avions besoin d'aide pour l'assemblage. Avant cela, il était nécessaire d'optimiser le coût d'une instance de l'armoire et sa conception pour une production à petite échelle.


Stagiaire


Pendant un mois et demi d'été, nous avons réussi à trouver un stagiaire qui savait souder, percer et coder un peu. Avec lui, nous avons refait l'ancienne armoire sur le Raspberry Pi (pour se débarrasser du processeur Intel NUC cher et inutile) et assemblé une autre armoire pour une installation dans les services d'assistance à Moscou et à Saint-Pétersbourg (il y a des gars intelligents qui aideront nos utilisateurs à faire face au prototype et donner commentaires utiles).


Alternatives budgétaires


Pour optimiser le coût, nous avons remplacé les composants les plus déraisonnablement chers du prototype: le mini-ordinateur Intel NUC (25 000 roubles) et le lecteur RFID (5 000). Ils ont trouvé un lecteur alternatif sur Ali Express pour 150 roubles, et à partir d'un mini-ordinateur, ils ont déménagé vers Raspberry Pi pour 3,5 mille roubles.


Sur la nouvelle plateforme, nous avons rencontré plusieurs problèmes. Au début, il s'est avéré que le relais pour les serrures ne commutait pas, car RPi donne 3,3 V, et les relais mécaniques sont conçus pour 5 V. J'ai dû passer à l'état solide. Ensuite, nous avons découvert qu'il n'y a pas d'horloge sur la carte, et vous ne pourrez pas prendre de temps en utilisant NTP: vous ne pouvez pas vous authentifier dans le réseau du bureau sans l'heure correcte (nous avons trouvé une carte d'extension spéciale avec une horloge pour RPi).


Le problème le plus enchanteur était avec les iPhones. Dès que le sixième iPhone a été inséré dans le RPi, il est devenu indisponible sur le réseau. Un gestionnaire de projet de passage (et dans le passé un administrateur sévère) nous a aidés à comprendre cela. Il s'est avéré que la carte réseau du RPi était divorcée via USB, et les iPhones ont provoqué un service de buggy pour terminer le bus USB. Ce problème est apparu pour la première fois au bureau de Minsk, les gars ont pu le reproduire rapidement et donner leur avis, ce qui nous a beaucoup aidés. Ils ont résolu le problème en démolissant l'interface graphique (si je me souviens bien), car le service y était intégré.


Les armoires grandissent


Il y a eu un débat sur la taille du cabinet. Quelqu'un a pensé qu'il était nécessaire de mettre deux fois plus de téléphones dans un placard, quelqu'un - que les grandes armoires n'étaient pas pratiques à utiliser au bureau. Et puis nous avons constaté que nous avions déjà acheté toutes les petites armoires dans les magasins de Moscou, et la prochaine livraison ne serait que dans trois mois. Le débat s'est terminé seul.


Ils ont décidé d'agrandir toutes les armoires suivantes. Pour l’avenir, je dirai: ce fut la bonne décision. Sur la base d'une grande armoire, il est devenu plus facile de placer des appareils électroniques; 80 téléphones n'y étaient plus placés. Entre les rails se trouvait un serveur standard de 19 pouces. Dans une petite armoire, la distance entre les rails n'était pas suffisante.




DĂ©veloppement Web et UX


Nous avons poussé notre baguette sur l'un des cadres de développement Web internes, nous avons réalisé qu'il était bon et avons déplacé la plaque téléphonique de Django vers React. Mais il était clair que juste une tablette ne conviendrait à personne. Le département des géo-services a pensé et nous a fait comprendre la tâche sur plusieurs écrans.


J'ai dû brancher une équipe de développement Web. On nous a confié un concepteur de produit qui a entièrement pensé à l'interaction des utilisateurs avec le service. Il a fait des autocollants pratiques sur les armoires, a placé les armoires sur le plan du bureau, a étudié le chat de support afin de mieux comprendre ce que les utilisateurs veulent. Bref, j'ai pris le projet sous mon aile en termes d'expérience utilisateur.


Les développeurs Web ont pris les devants et ont rapidement mis en œuvre des dispositions de conception. Nous avons quelque chose de similaire à Yandex.Market sur une plus petite échelle: vous entrez, choisissez un téléphone, vous allez le chercher dans un placard. Le rêve est simple.




Quelque part ici, nous avons réalisé que le projet devrait être déployé sur l'ensemble du Yandex. Nous nous sommes mis d'accord sur les dépenses afin de corriger les erreurs et d'améliorer sérieusement la qualité de service: il y avait un budget général pour l'achat d'armoires, de pièces détachées et d'outils. Avec l'aide de Pasha Melnikov, le chef du groupe des projets de fer RnD (à l'époque, et maintenant il est engagé dans Yandex.Station), nous avons réussi à convenir avec une entreprise externe de la production d'armoires série en tenant compte de nos besoins.


Nouvelle version des hubs


Nous avons acheté une autre version des hubs, sans boutons d'alimentation. Maintenant, il n'était plus nécessaire de monter à l'intérieur de l'armoire et d'allumer les moyeux après un redémarrage. Nous avons assemblé un prototype manuellement - cela fonctionnait parfaitement. Mais lorsque nous l'avons envoyé à Ekaterinbourg, nous avons immédiatement commencé à recevoir des plaintes selon lesquelles le cabinet ne voyait pas de téléphones. Je n'ai compris cela que sur place. Il s'est avéré que les nouveaux concentrateurs ont une topologie différente (même pour le même modèle de concentrateur dans différentes séries, la topologie peut varier).


L'ancien et le nouveau concentrateur à 10 ports à l'intérieur se composent de trois puces USB avec quatre ports. Mais dans l'ancien hub avec le bouton d'alimentation, deux puces sont coincées en une, et dans la nouvelle elles sont reliées par une "guirlande". Le nombre de ports est le même, mais la profondeur d'imbrication est différente. Les anciens téléphones n'ont pas été détectés dans les ports avec une grande profondeur d'imbrication. C'est bien qu'ils soient vieux et pas très nécessaires. Nous avons résolu le problème d'une tête douloureuse en coupant la tête: nous venons de prendre des modèles de téléphone plus récents pour l'armoire, eh bien, nous attendions la mise en œuvre de nos propres concentrateurs. Certes, le logiciel devait permettre de définir différentes configurations de topologie USB pour différentes armoires.


Propres hubs


En collaboration avec Pasha, nous avons commencé à développer notre propre concentrateur USB externe. Il était nécessaire de résoudre le problème des concentrateurs achetés, mais aussi de mettre en évidence les appareils pour lesquels l'utilisateur est venu et d'accélérer la charge des téléphones modernes: pour cela, nous avons pris des alimentations puissantes et respecté les dernières normes. Les concentrateurs avaient la capacité de connecter des capteurs de température externes - afin que nous puissions le contrôler sur chaque étagère. Les tailles ont été choisies de manière à ce que deux cartes concentrateurs installées dans un seul boîtier s'insèrent exactement dans le rack de serveur 19 pouces. Les moyeux ont un profil bas pour économiser de l'espace entre les étagères - en général, ils se sont avérés cool et modernes. Pacha parlera plus en détail de ce projet sur Habré.




Assemblage


L'assemblage de composants sur la base d'armoires achetées a également été externalisé. Selon nos calculs, l'équipe de montage était censée faire face à quelques soirées, mais en raison de l'abondance du travail manuel, cela a duré quelques semaines. Des fils qui sont connectés de manière non standard selon les schémas dessinés avec un stylo sur un dépliant, une soudure manuelle, un manque de sièges prêts à l'emploi pour les composants et des composants finis eux-mêmes ... Les armoires ont été finies au sens littéral du mot: des trous ont été percés pour les serrures et figurés ont été découpés par un broyeur pour d'autres composants.


Plus proche de la production


Nous avons déjà rêvé de donner des armoires à la production. Nous avons décidé que pour accélérer, il fallait simplifier la production et augmenter la part de l'externalisation.


Carte périphérique


Conception de la carte périphérique et mise à jour des composants. Maintenant, il est connecté au Raspberry Pi avec un seul câble et à tous les autres composants avec des connecteurs standard.


Nous avons installé une horloge pour RPi sur la carte: auparavant, nous avons collé un composant prêt à l'emploi séparé, acheté dans un magasin. Nous avons également placé un convertisseur DC / DC (il y avait autrefois une alimentation séparée) et une interface RS-485: cela nous a permis de nous débarrasser de la nappe de fils. Auparavant, nous les connections manuellement d'un point à un autre en les soudant ou en les collant dans l'une des broches RPi. Nous avons vérifié le diagramme, regardé le point d'entrée du fil, cherché le trou souhaité - et donc avec chaque fil tour à tour. Cela prenait beaucoup de temps et provoquait des erreurs d'assemblage. La nouvelle carte utilisait des prises téléphoniques.



Il s'est avéré plus tard: lors du câblage, je n'ai pas pris en compte que vous devez connecter la puce RS-485 à des pattes RPi bien définies. J'ai dû mettre à jour la version de la carte. Lorsque j'ai dessiné le composant de découplage de puissance RS-485, je n'ai pas fait attention au fait que la fiche technique montre la puce à partir du bas, pas du haut, et quand je l'ai allumée pour la première fois, elle a fait un "Bang!" Avec une odeur caractéristique. J'ai dû ressouder la puce à l'arrière de la carte pour toute la première série de cartes.




Nouvelle version d'armoire


Les armoires achetées ont cessé de nous convenir. Ils avaient l'air étranges, car ils étaient destinés au serveur, et non au bureau, et ils devaient également être modifiés à la main. Cela a pris beaucoup de temps et le résultat a été artisanal. Nous avons décidé de fabriquer nos propres armoires à l'usine d'Arzamas.


Nous avons demandé à l'usine de monter une armoire modifiée sur la base de leur armoire serveur standard: changer la taille, installer la serrure, sortir les connecteurs nécessaires, faire des trous pour fixer les éléments. Ils ont dessiné des croquis des étagères, fait un boîtier pour l'unité électronique (RPi et ses amis), un boîtier pour le hub. En ce qui concerne le château, l'ingénieur concepteur de l'usine a légèrement modifié l'option achetée et cela a commencé à mieux fonctionner. Un rapport de bug avec une demande de retrait pour finaliser le fer a été envoyé aux auteurs du shérif.


Il est très pratique que tous les composants électroniques de commande de l'armoire soient désormais concentrés dans un seul boîtier, qui est monté sur quatre boulons. Il peut être assemblé séparément de l'armoire, il est facile à retirer et à remplacer le tout lorsqu'il est cassé.






Dans les armoires d'essai, les fils étaient confus, les connecteurs ont volé hors du moyeu et se sont cassés, et parfois les employés ont emporté les fils avec eux. Nous avons décidé de fixer fermement les fils aux étagères, tout en laissant la possibilité de changer les fils. J'ai dessiné un croquis - et l'usine nous l'a vendu en fer.





Bien sûr, nous sommes allés plusieurs fois à Arzamas: négocier, établir la production, accepter le résultat. En conséquence, nous avons obtenu les armoires presque complètement prêtes, il restait à les mettre en service. Mais c'est une autre histoire.




Au fait, si vous visitez Arzamas, allez au burger du centre: c'est cool.


Dans la prochaine série


Maintenant, nos cubes sont activement utilisés dans l'entreprise. Nous avons même trouvé des noms pour eux: Stanley Cube, Maggi Cube, Arnie Cube (Arnold Schwarzenegger, six pièces), etc.


Dans un avenir proche, des collègues partageront avec vous des histoires sur le sort du service. Par exemple, sur la façon dont Yandex.Hub a été développé. Ou comment certains ports des concentrateurs ont commencé à "devenir engourdis". Sur le port "engourdi", vous ne pouvez pas voir la déconnexion des périphériques USB, même dans les messages du noyau, il n'y a rien. Mais tout se normalise si vous retirez le téléphone du port et le restaurez. En attendant, les gars écrivent des articles pour vous - essayez de deviner par vous-même pourquoi cela pourrait être.

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


All Articles