
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, .
Nous organisons 2 audits gratuits par mois, peut-ĂȘtre que votre projet en fera partie.
Source: habr.com
