Während alle meinen Geburtstag feierten, reparierte ich den Cluster bis zum Morgen – und die Entwickler gaben mir die Schuld für ihre Fehler

Während alle meinen Geburtstag feierten, reparierte ich den Cluster bis zum Morgen – und die Entwickler gaben mir die Schuld für ihre Fehler

Hier ist eine Geschichte, die meine Herangehensweise an die Entwicklerarbeit für immer verändert hat. Damals, in der Zeit vor Corona, lange, lange vor ihnen, als die Jungs und ich gerade unser eigenes Unternehmen planten und im Rahmen zufälliger Aufträge freiberuflich arbeiteten, landete ein Angebot in meinem Warenkorb.

Das Unternehmen, das dies geschrieben hat, war ein Datenanalyseunternehmen. Sie bearbeitete täglich Tausende von Anfragen. Sie kamen mit den Worten zu uns: Leute, wir haben ClickHouse und wir wollen seine Konfiguration und Installation automatisieren. Wir möchten, dass Ansible, Terraform, Docker und alles in Git gespeichert werden. Wir wollen einen Cluster aus vier Knoten mit jeweils zwei Replikaten.

Es handelt sich um eine Standardanfrage, davon gibt es Dutzende, und Sie benötigen eine ebenso gute Standardlösung. Wir sagten „ok“, und nach 2-3 Wochen war alles fertig. Sie nahmen den Auftrag an und begannen mithilfe unseres Dienstprogramms mit dem Umzug in einen neuen Clickhouse-Cluster.

Niemand wollte oder wusste, wie man an Clickhouse herumbastelt. Dann dachten wir, dass dies ihr Hauptproblem sei, und deshalb gab die Tankstelle des Unternehmens meinem Team einfach grünes Licht, die Arbeit so weit wie möglich zu automatisieren, um nie wieder selbst dorthin zu fahren.

Wir haben den Umzug begleitet, weitere Aufgaben kamen hinzu – das Einrichten von Backups und das Monitoring. Im selben Moment fusionierte die Tankstelle dieses Unternehmens mit einem anderen Projekt, so dass einer unserer eigenen – Leonid – als Kommandant fungierte. Lenya war kein sehr begabter Kerl. Ein einfacher Entwickler, dem plötzlich die Leitung von Clickhouse übertragen wurde. Es scheint, dass dies sein erster Auftrag war, etwas zu leiten, und die überwältigende Ehre löste in ihm ein Gefühl von Starrsinn aus.

Gemeinsam machten wir uns daran, Backups zu erstellen. Ich habe vorgeschlagen, sofort die Originaldaten zu sichern. Nehmen Sie es einfach, schließen Sie es und werfen Sie es elegant in etwas c3. Rohdaten sind Gold. Es gab noch eine andere Möglichkeit – die Tabellen selbst in Clickhouse zu sichern, indem man sie einfrierte und kopierte. Aber Lenya hatte seine eigene Lösung.

Er kündigte an, dass wir einen zweiten Clickhouse-Cluster brauchen. Und von nun an werden wir Daten in zwei Cluster schreiben – den Haupt- und den Backup-Cluster. Ich sage ihm, Lenya, es wird kein Backup sein, sondern eine aktive Replik. Und wenn in der Produktion Daten verloren gehen, passiert das Gleiche auch bei Ihrem Backup.

Aber Lenya umklammerte das Lenkrad fest und weigerte sich, auf meine Argumente zu hören. Wir haben im Chat lange mit ihm geplaudert, aber es gab nichts zu tun – Lenya war für das Projekt verantwortlich, wir waren nur angeheuerte Kinder von der Straße.

Wir haben den Zustand des Clusters überwacht und nur die Arbeit der Administratoren in Rechnung gestellt. Reine Clickhouse-Verwaltung ohne Zugriff auf die Daten. Der Cluster war verfügbar, die Festplatten waren in Ordnung, die Knoten waren in Ordnung.

Wir wussten nicht, dass wir diesen Auftrag aufgrund eines schrecklichen Missverständnisses innerhalb ihres Teams erhalten haben

Der Manager war unzufrieden, dass Clickhouse langsam war und manchmal Daten verloren gingen. Er gab seiner Tankstelle den Auftrag, das herauszufinden. Er hat es so gut er konnte herausgefunden und ist zu dem Schluss gekommen, dass wir nur das Clickhouse automatisieren müssen – das ist alles. Aber es wurde schnell klar, dass sie überhaupt kein Entwicklerteam brauchten.

Das alles erwies sich als sehr, sehr schmerzhaft. Und das Beleidigendste war, dass es an meinem Geburtstag war.

Freitag Abend. Ich machte eine Reservierung in meiner Lieblingsweinbar und lud die Kumpels ein.

Kurz vor der Abreise erhalten wir den Auftrag, einen Altar zu erstellen, wir schließen ihn ab, alles ist in Ordnung. Änderung bestanden, Clickhouse bestätigt. Wir gehen schon zur Bar und sie schreiben uns, dass es nicht genügend Daten gibt. Wir haben berechnet, dass alles ausreichend zu sein scheint. Und sie gingen, um zu feiern.

An einem Freitag war es im Restaurant laut. Nachdem wir Getränke und Essen bestellt hatten, machten wir es uns auf den Sofas gemütlich. Die ganze Zeit über wurde mein Slack langsam mit Nachrichten überflutet. Sie haben etwas über fehlende Daten geschrieben. Ich dachte – der Morgen ist klüger als der Abend. Besonders heute.

Kurz vor elf begannen sie anzurufen. Es war der Firmenchef... „Wahrscheinlich habe ich beschlossen, mir zu gratulieren“, dachte ich sehr zögernd und nahm den Hörer ab.

Und ich hörte so etwas wie: „Sie haben unsere Daten vermasselt!“ Ich bezahle dich, aber nichts funktioniert! Sie waren für die Backups verantwortlich und haben überhaupt nichts getan! Lass es uns reparieren!" - nur noch unhöflicher.

- Weißt du was, verschwinde! Heute ist mein Geburtstag, und jetzt werde ich trinken und mich nicht auf Ihre im Juni hausgemachten Produkte aus Mist und Stöcken einlassen!

Das habe ich nicht gesagt. Stattdessen holte ich meinen Laptop hervor und machte mich an die Arbeit.

Nein, ich habe bombardiert, ich habe höllisch bombardiert! Er schüttete ein ätzendes „Ich habe es dir gesagt“ in den Chat – weil das Backup, das überhaupt kein Backup war, natürlich nichts rettete.

Die Jungs und ich haben herausgefunden, wie wir die Aufnahme manuell stoppen und alles überprüfen können. Wir haben tatsächlich dafür gesorgt, dass einige der Daten nicht geschrieben wurden.

Wir haben die Aufzeichnung gestoppt und die Anzahl der Ereignisse gezählt, die es pro Tag gab. Sie luden weitere Daten hoch, von denen nur ein Drittel nicht erfasst wurde. Drei Scherben mit jeweils 2 Repliken. Sie fügen 100.000 Zeilen ein – 33.000 werden nicht erfasst.

Es herrschte völlige Verwirrung. Jeder sagte sich abwechselnd, er solle sich verpissen: Zuerst ging Lenya dorthin, gefolgt von mir und dem Firmengründer. Lediglich die hinzugekommene Tankstelle versuchte, unser Geschrei und unsere Korrespondenz auf die Lösung des Problems umzuleiten.

Niemand verstand, was wirklich geschah

Die Jungs und ich waren einfach überwältigt, als wir feststellten, dass ein Drittel aller Daten nicht nur nicht aufgezeichnet wurden, sondern sogar verloren gingen! Es stellte sich heraus, dass die Reihenfolge im Unternehmen wie folgt lautete: Nach dem Einfügen wurden die Daten unwiderruflich gelöscht, die Ereignisse wurden stapelweise verschwendet. Ich stellte mir vor, wie Sergej das alles in verlorene Rubel umwandeln würde.

Auch mein Geburtstag wurde in den Müll geworfen. Wir saßen an der Bar, sammelten Ideen und versuchten, das vor uns liegende Rätsel zu lösen. Der Grund für den Sturz von Clickhouse war nicht offensichtlich. Vielleicht liegt es am Netzwerk, vielleicht sind es die Linux-Einstellungen. Ja, was auch immer Sie wollen, Hypothesen gab es genug.

Ich habe den Eid des Entwicklers nicht abgelegt, aber es war unehrlich, die Jungs am anderen Ende der Leitung im Stich zu lassen – selbst wenn sie uns für alles verantwortlich machten. Ich war mir zu 99 % sicher, dass das Problem nicht in unseren Entscheidungen lag, nicht auf unserer Seite. Die 1-prozentige Chance, dass wir es vermasselt hatten, war voller Angst. Aber ganz gleich, auf welcher Seite das Problem lag, es musste behoben werden. Es ist zu grausam, Kunden, egal wer sie sind, mit solch einem schrecklichen Datenleck zu belasten.

Wir arbeiteten bis drei Uhr morgens am Restauranttisch. Wir fügten Ereignisse hinzu, fügten eine Auswahl ein und machten uns daran, die Lücken zu füllen. Wenn Sie die Daten verfälschen, gehen Sie folgendermaßen vor: Sie nehmen die Durchschnittsdaten der vorherigen Tage und fügen sie in die verfälschten ein.

Nach drei Uhr morgens gingen mein Freund und ich zu mir nach Hause und bestellten ein Bier auf dem Alkoholmarkt. Ich saß mit einem Laptop und Clickhouse-Problemen da, ein Freund erzählte mir etwas. Infolgedessen war er nach einer Stunde beleidigt darüber, dass ich arbeitete und kein Bier mit ihm trank, und ging. Klassisch – ich war ein Freund von Devops.

Um 6 Uhr morgens habe ich die Tabelle erneut erstellt und die Daten begannen zu überfluten. Alles funktionierte ohne Verluste.

Dann war es schwer. Alle machten sich gegenseitig für den Datenverlust verantwortlich. Wenn ein neuer Fehler aufgetreten wäre, hätte es sicher eine Schießerei gegeben

In diesen Kämpfen begannen wir endlich zu verstehen, dass das Unternehmen dachte, dass wir diejenigen seien, die mit Daten arbeiten und die Struktur von Tabellen überwachen. Sie verwechselten Administratoren mit Händlern. Und sie kamen, um uns etwas anderes zu fragen als die Admins.

Ihre Hauptbeschwerde lautet: Was zum Teufel, Sie waren für die Backups verantwortlich und haben sie nicht ordnungsgemäß durchgeführt, Sie haben die Daten weiterhin verschwendet. Und das alles mit Wickelmatten.

Ich wollte Gerechtigkeit. Ich habe die Korrespondenz ausgegraben und Screenshots von allen beigefügt, in denen Leonid sie mit aller Kraft dazu zwingt, das erstellte Backup zu erstellen. Ihre Tankstelle hat sich nach meinem Anruf auf unsere Seite gestellt. Später gab Lenya seine Schuld zu.

Der Firmenchef hingegen wollte nicht seinen eigenen Leuten die Schuld geben. Screenshots und Worte hatten keine Wirkung auf ihn. Er glaubte, da wir hier Experten seien, müssten wir alle überzeugen und auf unserer Entscheidung bestehen. Anscheinend bestand unsere Aufgabe darin, Lenya beizubringen und darüber hinaus ihn, der zum Projektmanager ernannt wurde, zu umgehen, um zur Hauptsache zu kommen und ihm persönlich alle unsere Zweifel am Konzept der Backups auszudrücken.

Der Chat war voller Hass, versteckter und unverhohlener Aggression. Ich wusste nicht, was ich tun sollte. Alles ist zum Stillstand gekommen. Und dann haben sie mir den einfachsten Weg empfohlen – eine persönliche Nachricht an den Manager zu schreiben und ein Treffen mit ihm zu vereinbaren. Vasya, die Leute im wirklichen Leben sind nicht so schnell wie im Chat. Der Chef antwortete auf meine Nachricht: Komm, keine Frage.

Es war das gruseligste Treffen meiner Karriere. Mein Verbündeter vom Kunden – STO – fand keine Zeit. Ich ging mit dem Chef und Lena zum Treffen.

Immer und immer wieder spielte ich unseren möglichen Dialog in meinem Kopf ab. Es gelang mir, sehr früh anzureisen, eine halbe Stunde im Voraus. Ich wurde nervös, ich rauchte 10 Zigaretten. Ich verstand, das ist alles – ich bin verdammt noch mal allein. Ich werde sie nicht überzeugen können. Und er betrat den Aufzug.

Als er aufstand, schlug er so heftig gegen das Feuerzeug, dass es zerbrach.

Infolgedessen war Lenya nicht bei dem Treffen. Und wir hatten mit dem Chef ein tolles Gespräch über alles! Sergei erzählte mir von seinen Schmerzen. Er wollte Clickhouse nicht „automatisieren“, sondern „Abfragen zum Funktionieren bringen“.

Ich habe keine Ziege gesehen, sondern einen guten Kerl, der sich um sein Geschäft sorgt und rund um die Uhr in die Arbeit vertieft ist. Chat zieht uns oft als Bösewichte, Schurken und dumme Menschen an. Aber im Leben sind das Menschen wie Sie.

Sergei brauchte nicht ein paar Entwickler zu engagieren. Es stellte sich heraus, dass das Problem, das sie hatten, viel größer war.

Ich sagte, dass ich seine Probleme lösen könnte – es ist nur ein ganz anderer Job und ich habe einen Freund, der dafür arbeitet. Wenn wir von Anfang an gewusst hätten, dass dies ein Deal für sie ist, hätten wir viel vermieden. Es ist spät, aber wir haben erkannt, dass das Problem in der schlechten Datenverwaltung und nicht in der Infrastruktur liegt.

Wir schüttelten uns die Hand, sie erhöhten unser Gehalt um das Zweieinhalbfache, aber unter der Bedingung, dass ich den ganzen Schlamassel mit ihren Daten und Clickhouse absolut für mich aufnehme. Im Aufzug habe ich mit demselben DI-Typ Max kommuniziert und ihn mit der Arbeit verbunden. Es war notwendig, die gesamte Traube zu schaufeln.

Das angenommene Projekt enthielt viel Müll. Beginnend mit dem erwähnten „Backup“. Es stellte sich heraus, dass derselbe „Backup“-Cluster nicht isoliert war. Sie haben alles darauf getestet und es manchmal sogar in Produktion genommen.

Unsere hauseigenen Entwickler haben ihren eigenen benutzerdefinierten Dateneinfüger erstellt. Er arbeitete folgendermaßen: Er stapelte die Dateien, führte das Skript aus und führte die Daten in einer Tabelle zusammen. Das Hauptproblem bestand jedoch darin, dass für eine einfache Anfrage eine große Datenmenge akzeptiert wurde. Die Anfrage wurde jede Sekunde mit den Daten verknüpft. Alles im Interesse einer Zahl – der Menge pro Tag.

Interne Entwickler verwendeten das Analysetool falsch. Sie gingen zur Grafana und schrieben ihre königliche Bitte. Er hat zwei Wochen lang Daten hochgeladen. Es ist eine wunderschöne Grafik geworden. In Wirklichkeit erfolgte die Datenabfrage jedoch alle 2 Sekunden. All dies staute sich in einer Warteschlange, weil Clickhouse die Verarbeitung einfach nicht herausnahm. Hier wurde der Hauptgrund versteckt. In Grafana funktionierte nichts, Anfragen standen in der Warteschlange und ständig trafen alte, irrelevante Daten ein.

Wir haben den Cluster neu konfiguriert und die Einfügung neu vorgenommen. Die internen Entwickler haben ihren „Inserter“ neu geschrieben und er begann, die Daten korrekt zu teilen.

Max führte ein vollständiges Infrastrukturaudit durch. Er skizzierte einen Plan für den Übergang zu einem vollwertigen Backend. Doch das gefiel dem Unternehmen nicht. Sie erwarteten von Max ein magisches Geheimnis, das es ihnen ermöglichen würde, auf altmodische Weise zu arbeiten, aber nur effizient. Lenya war immer noch für das Projekt verantwortlich und er lernte nichts. Aus allen Angeboten wählte er erneut seine Alternative. Wie immer war dies die selektivste... mutigste Entscheidung. Lenya glaubte, dass sein Unternehmen einen besonderen Weg eingeschlagen habe. Dornig und voller Eisberge.

Eigentlich haben wir uns dort getrennt – wir haben getan, was wir konnten.

Voller Wissen und Weisheit aus dieser Geschichte eröffneten wir unser eigenes Unternehmen und formulierten mehrere Grundsätze für uns. Wir werden heute nie mehr so ​​mit der Arbeit beginnen wie damals.

DJ Max kam nach diesem Projekt zu uns und wir arbeiten immer noch großartig zusammen. Der Clickhouse-Fall hat mir gezeigt, wie man vor Arbeitsbeginn eine vollständige und gründliche Infrastrukturprüfung durchführt. Wir verstehen, wie alles funktioniert und nehmen erst dann die Aufgaben an. Und wenn wir uns früher sofort mit der Wartung der Infrastruktur beeilen würden, führen wir jetzt zunächst ein einmaliges Projekt durch, das uns hilft zu verstehen, wie wir es in einen funktionsfähigen Zustand versetzen können.

Und ja, wir vermeiden Projekte mit schlechter Infrastruktur. Wenn auch für viel Geld, auch aus Freundschaft. Es ist unrentabel, kranke Projekte durchzuführen. Die Erkenntnis, dass dies uns geholfen hat, zu wachsen. Entweder ein einmaliges Projekt, um die Infrastruktur in Ordnung zu bringen und dann einen Wartungsvertrag, oder wir fliegen einfach vorbei. Vorbei an einem weiteren Eisberg.

PS Wenn Sie also Fragen zu Ihrer Infrastruktur haben, Hinterlassen Sie gerne eine Anfrage.

Wir bieten 2 kostenlose Audits pro Monat an, vielleicht gehört auch Ihr Projekt dazu.

Source: habr.com

Kommentar hinzufügen