Hypercube. Wie wir Entwicklern Testgeräte zur Verfügung gestellt haben und diese nicht verloren haben

Es ist unmöglich, mobile Anwendungen ohne Testgeräte vollständig zu testen und zu debuggen. Es sollte viele solcher Geräte geben, da sich derselbe Code auf verschiedenen Modellen unterschiedlich verhält. Aber wie organisiert man die Gerätebuchhaltung? Wie können Entwickler und Tester schnell und unbürokratisch dazu gebracht werden, ein bestimmtes Smartphone in der erforderlichen Konfiguration zu bekommen?


Ich heiße Alexey Lavrenyuk. Sie können mich als einen der Autoren von Yandex.Tank und einen Redner zum Thema Belastungstests kennen . Dann habe ich den Stromverbrauch von Handys gemessen. Jetzt mache ich Yandex.Rover in einem Team von unbemannten Fahrzeugen (und manchmal Mondschein als Weihnachtsmann ). Und zwischen den Telefonen und dem Rover befand sich Hypercube.


Vor ein paar Jahren kam der Leiter der mobilen Entwicklung zu unserer Abteilung für Lasttests und beschwerte sich über die Situation mit Testgeräten. Handys wanderten von Hand zu Hand, um das Telefon zu finden und schnell zu finden, war ein Problem. Wir hatten bereits Erfahrung mit mobilen Geräten: Wir haben ein digitales Amperemeter gebaut, um deren Energieverbrauch zu messen. Aus diesem Grund haben wir beschlossen, Kollegen zu helfen und schnell eine coole Sache zu erledigen: Es schien nur drei Monate zu funktionieren. Ich lache über mich selbst, naiv, ab 2020 und erzähle, was uns wirklich erwartet hat.




Servicekonzept und erste Ideen


Wir waren einer der wenigen in Yandex, die Eisenvorrichtungen zusammenbauten. Darüber hinaus haben wir uns im Mobilbereich bestens auskennt. Für mich war die Idee des Dienstes offensichtlich: Sie müssen die Telefone an den Hub anschließen und ihre Verfügbarkeit und Bewegung im Büro über USB verfolgen. Das Design passt in einen Serverschrank.


So habe ich mir den Prozess vorgestellt:


  1. Wir zeichnen Telefone über USB auf. Alle Telefone im Schrank sind über USB verbunden. Das Telefon wird aufgeladen, und es werden Informationen angezeigt, darunter die Geräte-ID (eine eindeutige Kennung, die bei einigen chinesischen Geräten nicht immer eindeutig ist), anhand derer Sie ein Telefon von einem anderen unterscheiden können. Übrigens können Sie anhand der Kennung, die ein USB-Gerät im Allgemeinen hat, alles verfolgen: Schließen Sie beispielsweise einen normalen USB-Stick an Ihre Autoschlüssel an und führen Sie automatisch eine Aufzeichnung der Schlüssel.
  2. Wir lesen Benutzer auf einem Abzeichen. Wir identifizieren jeden, der das Telefon aus dem Schrank nimmt, anhand eines Ausweises (eines Ausweises, an dem Sie jeden Yandex-Mitarbeiter erkennen können). Nachdem ein Mitarbeiter den Schrank geöffnet hat, wird angenommen, dass er alle Bewegungen der Telefone im Schrank ausgeführt hat.
  3. Alle Bewegungsinformationen werden zentral im Service gespeichert. Wir sehen, wo und mit wem sich jedes Handy befindet. Wir können Statistiken verfolgen: Welche Modelle sind beliebter, welche Handys fehlen.

Es können viele solcher Schränke vorhanden sein, die Informationen zu allen Mobilgeräten befinden sich jedoch an einem Ort. Alle Cubes (Schränke) sind kombiniert und logisch miteinander verbunden und bilden zusammen einen großen Hypercube (daher der interne Name des Service).


Die Idee hat allen gefallen, wir haben angefangen zu arbeiten.


Hypercube. Starten Sie


Wir haben einen Helpdesk für den RFID-Leser und den Intel NUC-Mini-Computer eingeschaltet. Wir kauften einen Arduino, ein elektrisches Schloss, einen Schrank für Netzwerkgeräte (er war kleiner als ein Serverschrank, aber mit den gleichen „Schienen“ zur Befestigung der Geräte).




TK und die Einkaufsliste haben wir natürlich nicht bekommen. Wir wussten nicht genau, welches Schrankmodell passen würde, wie viele Schrauben und Meter Draht benötigt werden. Die Anforderungen an das Kabinett änderten sich unterwegs entsprechend den Wünschen der Teams. Wir haben zum Beispiel vereinbart, dass wir 40 Mobiltelefone in einem Schrank aufbewahren und den Schrank auf den Nachttisch stellen, da es klein und unbequem ist, sich dorthin zu lehnen.




Regale für Telefone


Wir haben uns lange überlegt, wie wir die Regale bequem machen können. Yandex hatte Gestelle, um Telefone zu demonstrieren oder Schnittstellen zu testen. Wir dachten, die Gestelle wiederzuverwenden, aber sie passten nicht sehr gut zu uns: Die Telefone dort schalteten den Bildschirm für den Benutzer wie in einem Schaufenster ein - wir brauchen ihn nicht. Wir wollten den Platz im Schrank optimieren und haben uns daher entschlossen, selbst Regale zu bauen.


Es gab die Idee, die Telefone wie Bücher fest einzulegen. Zu diesem Zweck suchten wir in Schreibwarengeschäften nach Trennwänden, versuchten, CD-ROM-Halter und Verkaufsregale zu verwenden - alles von. In experimenteller Weise wurden Kunststoffecken eines abgeschnittenen Separators aus einem Kabelkanal mit Schmelzkleber auf ein Regal geklebt. Das „Buchlayout“ hat sich als sehr erfolgreich erwiesen und hat uns gut gefallen.




Nur wenige Orte und viele Drehkreuze


Am unteren Rand des Schranks war nur wenig Platz für vier 10-Port-Hubs und Intel NUC - wir waren weit davon entfernt, sie zum ersten Mal dorthin zu schieben. Die Schranktür war nicht zum Befestigen des Schlosses gedacht - wir haben viel Heißkleber, Holzklötze und eine Bügelsäge verwendet. Ich möchte Sie daran erinnern: Das Projekt wurde von einer Lasttest-Gruppe durchgeführt, keiner von uns hatte Erfahrung mit einer Mühle an einem Kaffeepunkt.




Service-Prototyp


Wir haben uns schnell darum gekümmert: Wir haben eine Seite erstellt, auf der die Position der Telefone angegeben ist, und sie direkt in unseren Auslastungstestservice gestellt. Nur weil Sie so schnell und mühelos ausprobieren konnten, was passiert ist.


Der erste funktionierende Prototyp


Wir haben den ersten Hypercube seit drei Wochen gesammelt. Er sah so aus:




Zunächst beschlossen wir, den Prototyp in unserem Büro in Moskau zu testen (der Kunde war in Jekaterinburg). Er hat sich mit dem mobilen Yandex.Browser-Team bekannt gemacht - wir kannten sie bereits aus dem Yandex Volta- Projekt (eine neuere Version des Berichts ist hier ). Diese Jungs kennen sich mit dem Stromverbrauch aus.


Erster Test


Wieder Regale


Es stellte sich heraus, dass Heißkleber Kunststoffecken auf Metallregalen nicht gut hält. Wir sind zurück auf die Idee der Telefonständer. Ich habe lange überlegt, wie das ideale Regal im Schrank aussehen soll. Jetzt scheint es möglich zu sein, es in 15 Minuten zu zeichnen. Am Ende stellte sich heraus, dass es nicht ganz so war wie in der ersten Skizze, aber hier ist, was ich damals gezeichnet habe:




Wir nahmen die gekauften Regale für Serverschränke und legten die gefrästen Trennwände aus Plastikfolie, die wir auf Bestellung herstellten, darauf. Dieser Entwurf hat bis heute überlebt.




Unbequeme Hubs


Die Hubs für die ersten Schränke waren mit einem Netzschalter, Tasten ohne Verriegelung, standardmäßig ausgeschaltet. Daher musste ich nach jedem Neustart alle vier Hubs mit den Händen einschalten. Wir haben Yandex SpeechKit so angeschlossen, dass der Würfel sagt, wenn die Hubs ausfliegen: "Mir geht es nicht gut, bitte rufen Sie die verantwortliche Person an." Wenn eine Person hereinkommt, werden Sie von der Stimme aufgefordert, die Hubs zu überprüfen. Und der Sprachassistent begann, Mitarbeiter mit Namen und Stimme anzurufen, die wie viele Telefone nahmen.


Sperrproblem


Es gab mehrere Iterationen mit der Burg. Als ich am Anfang nach Schlössern für den Prototyp suchte, fand ich die einzige Option, die mir zusagte - "Sheriff": klein, stark und sehr witzig gemacht (ich habe noch keine Analoga gesehen). Es schloss perfekt, aber um den Schrank zu öffnen, musste die Tür leicht gedrückt werden. Nicht alle Benutzer haben dies verstanden, daher haben wir beschlossen, die Sperre zu ändern.


Sie nahmen den "Sheriff" mit einer Feder, die die Tür drückte. Der Schrank öffnete sich perfekt - aber er begann schlecht zu schließen und blieb offen (und betrachtete sich als geschlossen). Dies lag daran, dass der Schließsensor separat vom Schloss installiert wurde, die Tür ein Spiel hatte und der Sensor manchmal funktionierte, bis die Tür geschlossen wurde. Die Einrichtung war unrealistisch.


Einmal mehr haben wir das Schloss gegen den nächsten „Sheriff“ ausgetauscht, der nicht mehr so ​​witzig gebaut war, sondern direkt einen Verschlusssensor eingebaut hat. Das Schloss arbeitete am Prototyp, aber nachdem es im ersten Schrank in Betrieb genommen wurde, begann es zu greifen. Ich musste mit einem Tamburin tanzen: zerlegen, schmieren, mit einer Feile feilen. Mit halbem Kummer landete er.


Nach den ersten Tests wurde klar: Entwickler und Tester mögen das Gehäuse, sie nutzen es aktiv. Dies ist praktisch: Sie können die Geräte überwachen und im Webdienst nach dem richtigen suchen, anstatt Ihre Kollegen zu fragen: „Wer hat dieses Telefon jetzt?“. Wir haben die wichtigsten Probleme identifiziert: unbequeme USB-Hubs, die Sie mit den Händen einschalten müssen, lange USB-Kabel von schlechter Qualität (die Anschlüsse sind abgebrochen und die Kabel haben sich verheddert), ein schlechtes Schloss und unzuverlässige Fachteiler, die die ganze Zeit heruntergefallen sind. Die Arbeit ging weiter.


Hyperraum-Erweiterung


Der Manager aus der Projektmanagementabteilung - er half uns auch bei der Organisation des Outsourcings für die Regale - war bei Yandex aktiv in der internen PR tätig: Er ging zu verschiedenen Teams und sprach über unseren wunderbaren Service. Wir trafen uns mit Vertretern anderer Abteilungen und erhielten unerwartet interne Bestellungen für mehrere Dutzend Schränke. Es ergab sich ein düsteres Bild: Lasttester montieren wochenlang mit dem gesamten Team manuell Schränke aus dem, was gerade zur Hand ist.


Wir stellten fest, dass wir Hilfe bei der Montage brauchten. Zuvor war es notwendig, die Kosten für eine Instanz des Schranks und sein Design für die Produktion in kleinem Maßstab zu optimieren.


Auszubildender


Eineinhalb Sommermonate lang haben wir es geschafft, einen Praktikanten zu finden, der ein bisschen löten, bohren und codieren konnte. Damit haben wir den alten Schrank auf dem Raspberry Pi überarbeitet (um den teuren und unnötigen Intel NUC loszuwerden) und einen weiteren Schrank für den Einbau in Helpdesks in Moskau und St. Petersburg zusammengestellt (es gibt clevere Leute, die unseren Benutzern helfen, mit dem Prototyp fertig zu werden und zu geben) nützliches Feedback).


Budget Alternativen


Um die Kosten zu optimieren, haben wir die unangemessen teuren Komponenten des Prototyps ersetzt: den Intel NUC-Mini-Computer (25.000 Rubel) und den RFID-Leser (5.000 Rubel). Sie fanden auf AliExpress einen alternativen Reader für 150 Rubel und wechselten von einem Mini-Computer für 3,5 Tausend Rubel zu Raspberry Pi.


Auf der neuen Plattform hatten wir einige Probleme. Zunächst stellte sich heraus, dass das Relais für die Schlösser nicht schaltet, da RPi 3,3 V liefert und mechanische Relais für 5 V ausgelegt sind. Ich musste auf Solid State schalten. Dann haben wir herausgefunden, dass es keine Uhr auf der Karte gibt und es nicht funktioniert, die Zeit über NTP zu messen: Ohne die richtige Zeit können Sie sich nicht im Büronetzwerk authentifizieren (wir haben eine spezielle Erweiterungskarte mit einer Uhr für RPi gefunden).


Das bezauberndste Problem war mit iPhones. Sobald das sechste iPhone in das RPi eingefügt wurde, war es über das Netzwerk nicht mehr verfügbar. Ein vorbeikommender Projektmanager (und in der Vergangenheit ein strenger Administrator) hat uns dabei geholfen, dies herauszufinden. Es stellte sich heraus, dass die Netzwerkkarte auf dem RPi über USB geschieden war und die iPhones einen Buggy-Service provozierten, um den USB-Bus fertigzustellen. Dieses Problem tauchte zum ersten Mal im Minsker Büro auf, die Jungs konnten es schnell reproduzieren und Feedback geben, was uns sehr geholfen hat. Sie haben das Problem gelöst, als sie die grafische Oberfläche abgerissen haben (wenn ich mich recht erinnere), weil der Dienst darin integriert war.


Schränke wachsen


Es gab eine Debatte über die Größe des Kabinetts. Jemand hielt es für notwendig, doppelt so viele Telefone in einem Schrank unterzubringen, jemand, dass große Schränke im Büro unpraktisch waren. Und dann stellten wir fest, dass wir bereits alle kleinen Schränke in Moskauer Geschäften gekauft hatten und die nächste Lieferung erst in drei Monaten erfolgen würde. Die Debatte endete von alleine.


Sie beschlossen, alle folgenden Schränke groß zu machen. Mit Blick auf die Zukunft sage ich: Es hat sich als die richtige Entscheidung herausgestellt. Auf der Basis eines großen Schranks ist es einfacher geworden, Elektronik zu platzieren, 80 Telefone wurden nicht mehr darin platziert. Darin zwischen den Schienen befanden sich Standardserver von 19 Zoll. In einem kleinen Schrank reichte der Abstand zwischen den Schienen nicht aus.




Webentwicklung und UX


Wir steckten unseren Zauberstab in eines der internen Webentwicklungs-Frameworks, stellten fest, dass es gut war, und zogen die Telefonplatte von Django nach React. Aber es war klar, dass nur ein Tablet niemandem passen würde. Die Geo-Services-Abteilung hat uns die Aufgabe auf mehreren Bildschirmen vorgestellt.


Ich musste ein Webentwicklungsteam zusammenstellen. Wir wurden mit einem Produktdesigner beauftragt, der die Interaktion der Benutzer mit dem Service gründlich durchdachte. Er machte praktische Aufkleber auf den Schränken, platzierte die Schränke auf der Bürokarte, studierte den Support-Chat, um besser zu verstehen, was Benutzer wollen. Kurz gesagt, ich habe das Projekt in Bezug auf die Benutzererfahrung unter meine Fittiche genommen.


Webentwickler übernahmen das Frontend und implementierten schnell Design-Layouts. Wir haben etwas Ähnliches wie Yandex.Markt in kleinerem Maßstab: Sie kommen herein, wählen ein Telefon, Sie gehen, um es in einem Schrank abzuholen. Der Traum ist einfach.




Irgendwo hier wurde uns klar, dass das Projekt auf das gesamte Yandex ausgedehnt werden musste. Wir haben Ausgaben vereinbart, um Fehler zu korrigieren und die Servicequalität erheblich zu verbessern: Es gab ein allgemeines Budget für den Kauf von Schränken, Ersatzteilen und Werkzeugen. Mit der Hilfe von Pasha Melnikov, dem damaligen Leiter der Gruppe der Eisen-RnD-Projekte und jetzt bei Yandex.Station, ist es uns gelungen, mit einem externen Unternehmen eine Vereinbarung über die Herstellung von Serienschränken zu treffen, die unsere Anforderungen berücksichtigt.


Neue Version von Hubs


Wir haben eine andere Version der Hubs ohne Netzschalter gekauft. Jetzt musste man nicht mehr in den Schrank klettern und die Hubs nach einem Neustart einschalten. Wir haben einen Prototyp manuell zusammengebaut - es hat perfekt funktioniert. Aber als wir ihn nach Jekaterinburg schickten, erhielten wir sofort Beschwerden, dass das Kabinett einige Telefone nicht sieht. Verstanden dies nur an Ort und Stelle. Es stellte sich heraus, dass die neuen Hubs eine andere Topologie aufweisen (selbst für dasselbe Hub-Modell in verschiedenen Serien kann die Topologie variieren).


Sowohl der alte als auch der neue Hub mit 10 Anschlüssen bestehen aus drei USB-Chips mit vier Anschlüssen. Aber in der alten Nabe mit dem Einschaltknopf stecken zwei Chips in einem und in der neuen sind sie durch eine "Girlande" verbunden. Die Anzahl der Ports ist gleich, aber die Tiefe der Verschachtelung ist unterschiedlich. In Häfen mit großer Schachtelungstiefe wurden alte Telefone nicht erkannt. Es ist gut, dass sie alt und nicht sehr notwendig waren. Wir haben das Problem der Kopfschmerzen gelöst, indem wir den Kopf abgehackt haben: Wir haben nur neuere Telefonmodelle für den Schrank genommen, und wir haben auf die Implementierung unserer eigenen Hubs gewartet. Die Software musste es ermöglichen, verschiedene USB-Topologiekonfigurationen für verschiedene Schränke festzulegen.


Eigene Hubs


Gemeinsam mit Pasha haben wir begonnen, einen eigenen externen USB-Hub zu entwickeln. Es war erforderlich, das Problem der gekauften Hubs zu lösen und die vom Benutzer gewünschten Geräte hervorzuheben und das Aufladen moderner Telefone zu beschleunigen. Dafür verwendeten wir leistungsstarke Netzteile und unterstützten die neuesten Standards. Die Hubs konnten externe Temperatursensoren anschließen, sodass wir sie in jedem Regal steuern können. Die Größen wurden so gewählt, dass zwei in einem Gehäuse installierte Hub-Karten genau in das 19-Zoll-Server-Rack passen. Hubs hatten ein niedriges Profil, um Platz zwischen den Regalen zu sparen - im Allgemeinen erwiesen sie sich als cool und modern. Pasha wird detaillierter über dieses Projekt auf Habré berichten.




Versammlung


Die Montage von Bauteilen auf Basis von gekauften Schränken wurde ebenfalls ausgelagert. Nach unseren Berechnungen sollte das Montageteam ein paar Abende überstehen, doch aufgrund des Überflusses an Handarbeit dauerte es einige Wochen. Drähte, die nicht standardgemäß gemäß den mit einem Stift auf einer Packungsbeilage gezeichneten Schemata verbunden sind, manuelles Löten, fehlende vorgefertigte Sitze für Bauteile und fertige Bauteile selbst ... Die Schränke wurden im wahrsten Sinne des Wortes fertiggestellt: Löcher für Schlösser wurden gebohrt und herausgeschnitten von einem Schleifer für andere Bauteile.


Näher an der Produktion


Wir haben schon davon geträumt, Schränke in die Produktion zu geben. Wir haben entschieden, dass es zur Beschleunigung notwendig ist, die Produktion zu vereinfachen und den Anteil des Outsourcings zu erhöhen.


Peripheriekarte


Entwickelte die Peripherieplatine und aktualisierte die Komponenten. Jetzt wird es mit einem einzigen Kabel an den Raspberry Pi und alle anderen Komponenten mit Standardsteckern angeschlossen.


Wir haben eine Uhr für RPi auf dem Brett aufgestellt: Vorher haben wir eine separate fertige Komponente aufgeklebt, die wir in einem Geschäft gekauft haben. Wir haben auch einen DC / DC-Wandler (früher gab es ein separates Netzteil) und eine RS-485-Schnittstelle installiert, sodass wir das Kabelgewebe loswerden konnten. Zuvor haben wir sie manuell von Punkt zu Punkt verbunden, indem wir sie in einen der RPi-Stifte gelötet oder geklebt haben. Wir haben das Diagramm überprüft, den Eintrittspunkt für den Draht und das gewünschte Loch gesucht - und das bei jedem Draht der Reihe nach. Es war sehr zeitaufwendig und verursachte Montagefehler. Das neue Board verwendete Telefonbuchsen.



Es stellte sich später heraus: Bei der Verkabelung habe ich nicht berücksichtigt, dass Sie den RS-485-Chip an gut definierte RPi-Beine anschließen müssen. Ich musste die Version des Boards aktualisieren. Als ich die RS-485-Leistungsentkopplungskomponente zeichnete, habe ich nicht darauf geachtet, dass auf dem Datenblatt der Mikrochip von unten und nicht von oben zu sehen ist, und als ich ihn zum ersten Mal einschaltete, gab er ein „Bang!“ Mit einem charakteristischen Geruch von sich. Ich musste den Chip auf der Rückseite der Platine für die gesamte erste Platinenserie neu löten.




Neue Schrankversion


Gekaufte Schränke passen nicht mehr zu uns. Sie sahen seltsam aus, weil sie für den Server bestimmt waren und nicht für das Büro, und sie mussten auch von Hand modifiziert werden. Es hat viel Zeit in Anspruch genommen und das Ergebnis war handwerklich. Wir beschlossen, unsere eigenen Schränke in der Fabrik in Arzamas herzustellen.


Wir haben die Fabrik gebeten, einen modifizierten Schrank auf der Basis ihres Standard-Serverschranks zu montieren: Größe ändern, Schloss einbauen, die erforderlichen Steckverbinder herausziehen, Löcher für die Befestigung der Elemente bohren. Sie zeichneten Skizzen der Regale, machten einen Fall für die Elektronikeinheit (RPi und ihre Freunde), einen Fall für die Nabe. Als es um das Schloss ging, änderte der Konstrukteur der Fabrik die gekaufte Option geringfügig, und es begann besser zu funktionieren. Ein Fehlerbericht mit einer Pull-Anfrage zum Finalisieren des Eisens wurde an die Autoren des Sheriffs gesendet.


Es ist sehr praktisch, dass jetzt alle Schaltschranksteuerungselektroniken in einem Gehäuse zusammengefasst sind, das auf vier Schrauben montiert ist. Es kann separat vom Schrank zusammengebaut werden, es ist einfach, das Ganze zu entfernen und zu ersetzen, wenn es kaputt ist.






In Testschränken waren die Drähte verwechselt, die Stecker flogen aus der Nabe und brachen, und manchmal nahmen die Mitarbeiter die Drähte mit. Wir haben uns entschlossen, die Drähte fest an den Regalen zu befestigen, ohne die Möglichkeit zu haben, die Drähte zu wechseln. Ich habe eine Skizze gezeichnet - und die Fabrik hat sie uns in Eisen verkauft.





Natürlich sind wir mehrmals nach Arzamas gefahren: um zu verhandeln, die Produktion aufzubauen, um das Ergebnis zu akzeptieren. Dadurch haben wir die Schränke fast komplett fertiggestellt, es blieb ihnen nichts anderes übrig, als sie in Betrieb zu nehmen. Aber das ist eine andere Geschichte.




Übrigens, wenn Sie Arzamas besuchen, gehen Sie zum Burger in der Mitte: es ist cool.


In der nächsten Serie


Jetzt werden unsere Würfel im Unternehmen aktiv eingesetzt. Wir haben uns sogar die Namen dafür ausgedacht: Stanley Cube, Maggi Cube, Arnie Cube (Arnold Schwarzenegger, sechs Teile) usw.


In naher Zukunft werden Kollegen mit Ihnen Geschichten über das Schicksal des Dienstes teilen. Zum Beispiel darüber, wie Yandex.Hub entwickelt wurde. Oder darüber, wie einige Häfen der Hubs anfingen, "taub zu werden". Am "numbed" -Port kann man die Trennung von USB-Geräten nicht erkennen, auch in Kernelmeldungen gibt es nichts. Aber alles normalisiert sich, wenn Sie das Telefon aus dem Anschluss entfernen und es zurückstecken. In der Zwischenzeit schreiben die Jungs Artikel für Sie - versuchen Sie selbst zu erraten, warum dies sein könnte.

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


All Articles