Pendant que tout le monde fĂȘtait mon anniversaire, je rĂ©parais le cluster jusqu'au matin - et les dĂ©veloppeurs m'ont imputĂ© leurs erreurs

Pendant que tout le monde fĂȘtait mon anniversaire, je rĂ©parais le cluster jusqu'au matin - et les dĂ©veloppeurs m'ont imputĂ© leurs erreurs

Voici une histoire qui a changĂ© Ă  jamais mon approche du travail devops. À l'Ă©poque prĂ©-Covid, bien, bien avant eux, alors que les gars et moi planifiions simplement notre propre entreprise et travaillions en indĂ©pendant sur des commandes alĂ©atoires, une offre est tombĂ©e dans mon panier.

L'entreprise qui a Ă©crit ceci Ă©tait une sociĂ©tĂ© d'analyse de donnĂ©es. Elle traitait quotidiennement des milliers de demandes. Ils nous ont dit : les gars, nous avons ClickHouse et nous voulons automatiser sa configuration et son installation. Nous voulons qu'Ansible, Terraform, Docker et tout cela soient stockĂ©s dans Git. Nous voulons un cluster de quatre nƓuds avec deux rĂ©pliques chacun.

C’est une demande standard, il y en a des dizaines, et vous avez besoin d’une solution standard tout aussi bonne. Nous avons dit « ok » et aprĂšs 2-3 semaines, tout Ă©tait prĂȘt. Ils ont acceptĂ© le poste et ont commencĂ© Ă  migrer vers un nouveau cluster Clickhouse Ă  l'aide de notre utilitaire.

Personne ne voulait ni ne savait comment bricoler Clickhouse. Ensuite, nous avons pensĂ© que c'Ă©tait leur principal problĂšme, et c'est pourquoi la station-service de l'entreprise a simplement donnĂ© le feu vert Ă  mon Ă©quipe pour automatiser le travail au maximum, afin de ne plus jamais y aller moi-mĂȘme.

Nous avons accompagnĂ© le dĂ©mĂ©nagement, d'autres tĂąches sont apparues : mise en place des sauvegardes et du monitoring. Au mĂȘme moment, la station-service de cette compagnie a fusionnĂ© avec un autre projet, nous laissant comme commandant l'un des nĂŽtres - Leonid. Lenya n'Ă©tait pas un gars trĂšs douĂ©. Un simple dĂ©veloppeur qui s'est soudainement retrouvĂ© Ă  la tĂȘte de Clickhouse. Il semble que c’était sa premiĂšre mission de gĂ©rer quelque chose, et cet immense honneur l’a fait se sentir frappĂ© par les Ă©toiles.

Ensemble, nous avons commencĂ© Ă  faire des sauvegardes. J'ai suggĂ©rĂ© de sauvegarder immĂ©diatement les donnĂ©es originales. Prenez-le, zippez-le et jetez-le Ă©lĂ©gamment dans du c3. Les donnĂ©es brutes valent de l’or. Il y avait une autre option : sauvegarder les tables elles-mĂȘmes dans Clickhouse, en les gelant et en les copiant. Mais Lenya a trouvĂ© sa propre solution.

Il a annoncĂ© que nous avions besoin d'un deuxiĂšme cluster Clickhouse. Et Ă  partir de maintenant, nous Ă©crirons les donnĂ©es sur deux clusters : le cluster principal et le cluster de sauvegarde. Je lui dis, Lenya, ce ne sera pas une sauvegarde, mais une rĂ©plique active. Et si des donnĂ©es commencent Ă  se perdre en production, la mĂȘme chose se produira sur votre sauvegarde.

Mais Lenya a fermement saisi le volant et a refusé d'écouter mes arguments. Nous avons longuement discuté avec lui dans le chat, mais il n'y avait rien à faire - Lenya était en charge du projet, nous étions juste embauchés par des enfants de la rue.

Nous avons surveillĂ© l'Ă©tat du cluster et facturĂ© uniquement le travail des administrateurs. Administration pure de Clickhouse sans entrer dans les donnĂ©es. Le cluster Ă©tait disponible, les disques allaient bien, les nƓuds allaient bien.

Nous ne savions pas que nous avions reçu cette commande suite à un terrible malentendu au sein de leur équipe.

Le responsable Ă©tait mĂ©content de la lenteur de Clickhouse et de la perte parfois de donnĂ©es. Il a confiĂ© Ă  sa station-service la tĂąche de le dĂ©couvrir. Il a compris du mieux qu'il pouvait et a conclu que nous avions juste besoin d'automatiser Clickhouse - c'est tout. Mais comme il est vite devenu Ă©vident qu’ils n’avaient pas du tout besoin d’une Ă©quipe de dĂ©veloppeurs.

Tout cela s’est avĂ©rĂ© trĂšs, trĂšs douloureux. Et le plus offensant, c'est que c'Ă©tait le jour de mon anniversaire.

Vendredi soir. J'ai fait une réservation dans mon bar à vins préféré et j'ai invité les potes.

Presque avant de partir, nous recevons une tĂąche pour crĂ©er un alter, nous la terminons, tout va bien. Modification passĂ©e, Clickhouse confirmĂ©. Nous allons dĂ©jĂ  au bar et ils nous Ă©crivent qu'il n'y a pas assez de donnĂ©es. Nous avons calculĂ© que tout semble suffire. Et ils sont partis faire la fĂȘte.

Le restaurant était bruyant un vendredi. AprÚs avoir commandé des boissons et de la nourriture, nous nous sommes allongés sur les canapés. Pendant tout ce temps, mon slack était lentement inondé de messages. Ils ont écrit quelque chose sur le manque de données. J'ai pensé : le matin est plus sage que le soir. Surtout aujourd'hui.

Vers onze heures, ils ont commencé à appeler. C'était le chef de l'entreprise... «Il a probablement décidé de me féliciter», ai-je pensé avec beaucoup d'hésitation et j'ai décroché le téléphone.

Et j'ai entendu quelque chose comme : « Vous avez foirĂ© nos donnĂ©es ! Je te paie, mais rien ne marche ! Vous Ă©tiez responsable des sauvegardes, et vous n’avez rien fait ! RĂ©parons-le !" - mais encore plus grossier.

- Tu sais quoi, fous le camp ! Aujourd'hui, c'est mon anniversaire, et maintenant je vais boire, et ne pas me lancer dans vos produits faits maison de juin Ă  partir de merde et de bĂątons !

C'est ce que je n'ai pas dit. Au lieu de cela, j’ai sorti mon ordinateur portable et je me suis mis au travail.

Non, j'ai bombardé, j'ai bombardé comme un diable ! Il a lancé un «Je vous l'avais bien dit» caustique dans le chat - parce que la sauvegarde, qui n'était pas du tout une sauvegarde, - bien sûr, n'a rien sauvegardé.

Les garçons et moi avons compris comment arrĂȘter manuellement l'enregistrement et tout vĂ©rifier. Nous nous sommes en fait assurĂ©s que certaines donnĂ©es n'Ă©taient pas Ă©crites.

Nous avons arrĂȘtĂ© l'enregistrement et comptĂ© le nombre d'Ă©vĂ©nements qui se produisaient chaque jour. Ils ont tĂ©lĂ©chargĂ© davantage de donnĂ©es, dont seulement un tiers n’a pas Ă©tĂ© enregistrĂ©. Trois fragments avec 2 rĂ©pliques chacun. Vous insĂ©rez 100.000 33.000 lignes – XNUMX XNUMX ne sont pas enregistrĂ©es.

La confusion était totale. Tout le monde se disait de se faire foutre à tour de rÎle : Lenya y est allée en premier, suivie de moi et du fondateur de l'entreprise. Seule la station-service qui nous a rejoint a tenté de détourner nos appels et notre correspondance vers la recherche d'une solution au problÚme.

Personne n'a compris ce qui se passait réellement

Les gars et moi avons été tout simplement époustouflés lorsque nous avons réalisé qu'un tiers de toutes les données non seulement n'étaient pas enregistrées, mais étaient perdues ! Il s'est avéré que l'ordre dans l'entreprise était le suivant : aprÚs insertion, les données étaient supprimées de maniÚre irrévocable, les événements étaient gaspillés par lots. J'imaginais comment Sergei convertirait tout cela en roubles perdus.

Mon anniversaire a Ă©galement Ă©tĂ© jetĂ© Ă  la poubelle. Nous nous sommes assis au bar et avons gĂ©nĂ©rĂ© des idĂ©es, essayant de rĂ©soudre l'Ă©nigme qui nous avait Ă©tĂ© lancĂ©e. La raison de la chute de Clickhouse n’était pas Ă©vidente. C'est peut-ĂȘtre le rĂ©seau, peut-ĂȘtre les paramĂštres Linux. Oui, quoi que vous vouliez, il y a eu suffisamment d'hypothĂšses.

Je n'ai pas prĂȘtĂ© le serment du dĂ©veloppeur, mais c'Ă©tait malhonnĂȘte d'abandonner les gars Ă  l'autre bout du fil - mĂȘme s'ils nous blĂąmaient pour tout. J’étais sĂ»r Ă  99 % que le problĂšme ne rĂ©sidait pas dans nos dĂ©cisions, ni de notre cĂŽtĂ©. Les 1% de chances que nous ayons fait une erreur brĂ»laient d'anxiĂ©tĂ©. Mais peu importe de quel cĂŽtĂ© se trouvait le problĂšme, il fallait le rĂ©gler. Laisser les clients, quels qu’ils soient, avec une fuite de donnĂ©es aussi terrible est trop cruel.

Nous avons travaillé à la table du restaurant jusqu'à trois heures du matin. Nous avons ajouté des événements, inséré une sélection et nous sommes partis combler les lacunes. Lorsque vous gùchez les données, voici comment procéder : vous prenez les données moyennes des jours précédents et vous les insérez dans celles qui sont foutues.

AprÚs trois heures du matin, mon ami et moi sommes allés chez moi et avons commandé une biÚre au marché de l'alcool. J'étais assis avec un ordinateur portable et des problÚmes avec Clickhouse, un ami me disait quelque chose. En conséquence, au bout d'une heure, il a été offensé par le fait que je travaillais et que je ne buvais pas de biÚre avec lui, et il est parti. Classique - J'étais un ami de Devops.

À 6 heures du matin, j'ai recréé la table et les donnĂ©es ont commencĂ© Ă  affluer. Tout a fonctionnĂ© sans aucune perte.

Ensuite, c'Ă©tait dur. Tout le monde s’est reprochĂ© la perte de donnĂ©es. Si un nouveau bug Ă©tait survenu, je suis sĂ»r qu'il y aurait eu une fusillade

Dans ces combats, nous avons finalement commencé à comprendre : l'entreprise pensait que nous étions ceux qui travaillaient avec des données et surveillions la structure des tableaux. Ils ont confondu les administrateurs avec les revendeurs. Et ils sont venus nous demander quelque chose de différent des administrateurs.

Leur principal reproche est le suivant : bon sang, vous Ă©tiez responsable des sauvegardes et vous ne les avez pas faites correctement, vous avez continuĂ© Ă  gaspiller les donnĂ©es. Et tout cela avec des tapis rembobinables.

Je voulais justice. J'ai dĂ©terrĂ© la correspondance et joint des captures d'Ă©cran de tout le monde, oĂč Leonid les oblige de toutes ses forces Ă  faire la sauvegarde qui a Ă©tĂ© effectuĂ©e. Leur station-service a pris notre parti aprĂšs mon appel tĂ©lĂ©phonique. Plus tard, Lenya a admis sa culpabilitĂ©.

Le chef d’entreprise, au contraire, n’a pas voulu rejeter la faute sur ses propres collaborateurs. Les captures d’écran et les mots n’ont eu aucun effet sur lui. Il pensait que puisque nous Ă©tions des experts ici, nous devions convaincre tout le monde et insister sur notre dĂ©cision. Apparemment, notre tĂąche Ă©tait d'apprendre Ă  Lenya et, de plus, de le contourner, qui a Ă©tĂ© nommĂ© chef de projet, pour aller Ă  l'essentiel et lui faire personnellement part de tous nos doutes sur le concept de sauvegarde.

La conversation dĂ©bordait de haine, d’agression cachĂ©e et non cachĂ©e. Je ne savais pas quoi faire. Tout est au point mort. Et puis ils m'ont conseillĂ© le moyen le plus simple : Ă©crire un message personnel au manager et organiser un rendez-vous avec lui. Vasya, les gens dans la vraie vie ne sont pas aussi rapides que dans le chat. Le patron a rĂ©pondu Ă  mon message : viens, pas de question.

C'était la rencontre la plus effrayante de ma carriÚre. Mon allié du client - STO - n'a pas trouvé le temps. Je suis allé à la réunion avec le patron et Lena.

Encore et encore, je rejouais notre possible dialogue dans ma tĂȘte. J'ai rĂ©ussi Ă  arriver trĂšs tĂŽt, une demi-heure Ă  l'avance. J'ai commencĂ© Ă  devenir nerveux, j'ai fumĂ© 10 cigarettes, j'ai compris, c'est tout, je suis seul, putain. Je ne pourrai pas les convaincre. Et il entra dans l'ascenseur.

Alors qu'il se relevait, il frappa si fort le briquet qu'il le cassa.

En consĂ©quence, Lenya n'Ă©tait pas prĂ©sente Ă  la rĂ©union. Et nous avons eu une super conversation sur tout avec le patron ! Sergei m'a parlĂ© de sa douleur. Il ne voulait pas « automatiser Clickhouse » – il voulait « faire fonctionner les requĂȘtes ».

Je n’ai pas vu de chĂšvre, mais un type bien, soucieux de ses affaires, plongĂ© dans le travail 24h/7 et XNUMXj/XNUMX. Le chat nous attire souvent des mĂ©chants, des canailles et des gens stupides. Mais dans la vie, ce sont des gens comme vous.

Sergei n'avait pas besoin de quelques dĂ©veloppeurs Ă  embaucher. Le problĂšme qu’ils s’étaient posĂ© s’était avĂ©rĂ© bien plus important.

J’ai dit que je pouvais rĂ©soudre ses problĂšmes – c’est juste un travail complĂštement diffĂ©rent, et j’ai un ami qui travaille pour ça. Si nous avions su dĂšs le dĂ©but que c’était un accord pour eux, nous aurions Ă©vitĂ© beaucoup de choses. Il est tard, mais nous avons rĂ©alisĂ© que le problĂšme rĂ©sidait dans une mauvaise gestion des donnĂ©es et non dans l'infrastructure.

Nous nous sommes serrĂ©s la main, ils ont augmentĂ© notre salaire deux fois et demie, mais Ă  condition que je prenne absolument tout le dĂ©sordre avec leurs donnĂ©es et Clickhouse pour moi. Dans l'ascenseur, j'ai communiquĂ© avec ce mĂȘme type DI Max et je l'ai mis en contact avec le travail. Il a fallu pelleter toute la grappe.

Il y avait beaucoup de dĂ©chets dans le projet adoptĂ©. En commençant par la « sauvegarde » mentionnĂ©e. Il s’est avĂ©rĂ© que ce mĂȘme cluster « de secours » n’était pas isolĂ©. Ils ont tout testĂ© dessus, le mettant parfois mĂȘme en production.

Nos dĂ©veloppeurs internes ont créé leur propre outil d'insertion de donnĂ©es personnalisĂ©. Il a travaillĂ© comme ceci : il a regroupĂ© les fichiers, exĂ©cutĂ© le script et fusionnĂ© les donnĂ©es dans un tableau. Mais le principal problĂšme Ă©tait qu’une Ă©norme quantitĂ© de donnĂ©es Ă©tait acceptĂ©e pour une simple demande. La requĂȘte rejoint les donnĂ©es toutes les secondes. Tout cela pour un seul chiffre : le montant par jour.

Les dĂ©veloppeurs internes ont mal utilisĂ© l’outil d’analyse. Ils se rendirent Ă  la grafana et rĂ©digĂšrent leur demande royale. Il a tĂ©lĂ©chargĂ© des donnĂ©es pendant 2 semaines. Il s’est avĂ©rĂ© que c’était un beau graphique. Mais en rĂ©alitĂ©, la demande de donnĂ©es Ă©tait toutes les 10 secondes. Tout cela s'accumulait dans une file d'attente parce que Clickhouse n'avait tout simplement pas supprimĂ© le traitement. C’est lĂ  que se cachait la raison principale. Rien ne fonctionnait dans Grafana, les demandes restaient dans une file d'attente et des donnĂ©es anciennes et non pertinentes arrivaient constamment.

Nous avons reconfigurĂ© le cluster, refait l'insertion. Les dĂ©veloppeurs internes ont réécrit leur « inserteur Â» et celui-ci a commencĂ© Ă  partager correctement les donnĂ©es.

Max a rĂ©alisĂ© un audit complet de l'infrastructure. Il a prĂ©sentĂ© un plan de transition vers un backend Ă  part entiĂšre. Mais cela ne convenait pas Ă  l’entreprise. Ils attendaient de Max un secret magique qui leur permettrait de travailler Ă  l'ancienne, mais seulement efficacement. Lenya Ă©tait toujours en charge du projet et il n'a rien appris. Parmi tout ce qui lui Ă©tait proposĂ©, il choisit Ă  nouveau son alternative. Comme toujours, ce fut la dĂ©cision la plus sĂ©lective
 la plus audacieuse. Lenya pensait que son entreprise avait un chemin particulier. Épineux et plein d'icebergs.

En fait, c’est lĂ  que nous nous sommes sĂ©parĂ©s – nous avons fait ce que nous pouvions.

Pleins de connaissances et de sagesse issues de cette histoire, nous avons ouvert notre propre entreprise et nous sommes forgĂ©s plusieurs principes. Nous ne commencerons plus jamais Ă  travailler de la mĂȘme maniĂšre qu’à l’époque.

DJ Max nous a rejoint aprÚs ce projet, et nous travaillons toujours trÚs bien ensemble. Le cas Clickhouse m'a appris à réaliser un audit complet et approfondi de l'infrastructure avant de commencer les travaux. Nous comprenons comment tout fonctionne et acceptons ensuite les tùches. Et si auparavant nous nous précipitions immédiatement pour entretenir l'infrastructure, nous réalisons désormais d'abord un projet ponctuel, qui nous aide à comprendre comment la mettre en état de marche.

Et oui, nous Ă©vitons les projets avec des infrastructures merdiques. MĂȘme si c'est pour beaucoup d'argent, mĂȘme si c'est par amitiĂ©. Il n’est pas rentable de mener des projets malades. RĂ©aliser cela nous a aidĂ© Ă  grandir. Soit un projet ponctuel pour remettre de l'ordre dans l'infrastructure, puis un contrat de maintenance, soit nous passons par lĂ . PassĂ© un autre iceberg.

PS Donc si vous avez des questions sur votre infrastructure, N'hésitez pas à faire une demande.

Nous organisons 2 audits gratuits par mois, peut-ĂȘtre que votre projet en fera partie.

Source: habr.com

Achetez un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Achetez un hĂ©bergement web fiable avec protection DDoS, serveurs VPS et VDS | ProHoster