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

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

Voici l'histoire qui a définitivement changé ma façon d'aborder le travail en DevOps. Cela remonte à l'époque d'avant la pandémie, bien avant que cela se produise, lorsque mes collÚgues et moi envisagions de créer notre propre entreprise et faisions du freelancing pour des commandes occasionnelles. Une proposition m'est parvenue sur Telegram.

L'entreprise qui a formulĂ© la demande Ă©tait spĂ©cialisĂ©e dans l'analyse de donnĂ©es. Chaque jour, elle traitait des milliers de requĂȘtes. Ils sont venus vers nous en disant : les gars, nous avons ClickHouse et nous voulons automatiser son installation et sa configuration. Nous voulons Ansible, Terraform, Docker et que tout cela soit conservĂ© dans Git. Nous voulons un cluster de quatre nƓuds avec deux rĂ©plicas chacun.

Une demande classique, parmi des dizaines d'autres, avec le besoin d'une solution standard tout aussi efficace. Nous avons dit « d'accord » et aprĂšs 2-3 semaines, tout Ă©tait prĂȘt. Ils ont acceptĂ© le travail et ont commencĂ© Ă  migrer vers le nouveau cluster ClickHouse avec notre utilitaire.

Personne chez eux ne voulait ou ne savait s'occuper de ClickHouse. À ce moment-lĂ , nous pensions que c'Ă©tait leur principal problĂšme, c'est pourquoi le CTO de l'entreprise a donnĂ© le feu vert Ă  mon Ă©quipe pour automatiser autant que possible les opĂ©rations, afin de ne plus avoir Ă  s'en mĂȘler.

Nous avons accompagnĂ© la migration et d'autres tĂąches ont surgi : mettre en place des sauvegardes et une surveillance. À ce moment-lĂ , le CTO de cette entreprise s'est retirĂ© pour un autre projet, nous laissant comme commandant l'un de ses gars — Leonid. LĂ©onid n'Ă©tait pas trĂšs douĂ©. C'Ă©tait un simple dĂ©veloppeur qui s'est soudainement retrouvĂ© chef de ClickHouse. Il semblait que c'Ă©tait sa premiĂšre nomination Ă  un poste responsable et l'honneur qui lui Ă©tait confĂ©rĂ© lui a donnĂ© un peu de prĂ©tention.

Ensemble, nous avons commencĂ© Ă  travailler sur les sauvegardes. J'ai proposĂ© de sauvegarder immĂ©diatement les donnĂ©es sources. Simplement les prendre, les compresser et les envoyer Ă©lĂ©gamment dans un S3 quelconque. Les donnĂ©es sources sont prĂ©cieuses. Il existait aussi une autre option : sauvegarder les tables mĂȘmes dans ClickHouse, en utilisant des freezes et des copies. Mais LĂ©onid a inventĂ© sa propre solution.

Il a annoncĂ© qu'il nous fallait un second cluster ClickHouse. DĂ©sormais, nous Ă©cririons des donnĂ©es sur deux clusters — le principal et le de sauvegarde. Je lui ai dit, Ă©coute LĂ©onid, cela ne sera pas une sauvegarde mais une rĂ©plique active. Et si des donnĂ©es commencent Ă  disparaĂźtre en production, ta sauvegarde ne contiendra pas autre chose.

Mais LĂ©onid s'accrochait fermement au pilotage et refusait d'Ă©couter mes arguments. Nous avons longtemps discutĂ© dans le chat, mais il n'y avait rien Ă  faire — LĂ©onid dirigeait le projet, nous n'Ă©tions que des gars embauchĂ©s de la rue.

Nous avons surveillĂ© l'Ă©tat du cluster et avons facturĂ© uniquement le travail des administrateurs. Administration propre de ClickHouse sans interfĂ©rer avec les donnĂ©es. Le cluster Ă©tait accessible, les disques en bon Ă©tat, les nƓuds en ordre.

Nous ne soupçonnions pas encore que nous avions reçu cette commande en raison d'une terrible incompréhension au sein de leur équipe.

Le responsable Ă©tait mĂ©content que ClickHouse fonctionne lentement et que des donnĂ©es soient parfois perdues. Il a demandĂ© Ă  son CTO de s'en occuper. Ce dernier a fait de son mieux et a conclu qu'il fallait simplement automatiser ClickHouse — et c'Ă©tait tout. Mais comme il s'est rapidement avĂ©rĂ©, ils n'avaient pas du tout besoin d'une Ă©quipe de devops.

Tout cela a été découvert de maniÚre trÚs, trÚs douloureuse. Et le plus ennuyeux, c'était le jour de mon anniversaire.

Vendredi soir. J'avais réservé une table dans mon bar à vin préféré et j'avais invité des amis.

Presque juste avant de sortir, nous avons reçu une petite tĂąche pour faire une alternative, nous l'avons accomplie, tout Ă©tait OK. L'alternative est passĂ©e, ClickHouse a confirmĂ©. Nous Ă©tions dĂ©jĂ  prĂȘts Ă  aller au bar, et on nous Ă©crit qu'il manque des donnĂ©es. Nous avons comptĂ© — apparemment, tout est suffisant. Et nous sommes partis faire la fĂȘte.

Le restaurant Ă©tait bruyant comme un vendredi. AprĂšs avoir commandĂ© des boissons et de la nourriture, nous nous sommes affalĂ©s sur des canapĂ©s. Pendant tout ce temps, ma Slack Ă©tait lentement inondĂ©e de messages. Ils parlaient de manque de donnĂ©es. J'ai pensĂ© — le matin est plus sage que le soir, surtout en ce jour.

Vers onze heures, ils ont commencé à m'appeler. C'était le responsable de l'entreprise... "Il a probablement décidé de me féliciter", ai-je pensé trÚs incertainement, puis j'ai décroché.

Et j'ai entendu quelque chose du genre : "Vous avez perdu nos donnĂ©es ! Je vous paie, mais rien ne fonctionne ! Vous Ă©tiez responsables des sauvegardes, et vous n'avez rien fait ! RĂ©parez ça !" — mais encore plus grossiĂšrement.

— Tu sais quoi, va te faire voir ! Aujourd'hui, c'est mon anniversaire, et je vais picoler, pas m'occuper de tes bricolages douteux !

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

Non, j'Ă©tais en furie, j'Ă©tais vraiment en colĂšre ! J'ai balancĂ© dans le chat des "je l'avais dit" acerbes — parce que la sauvegarde, qui n'Ă©tait pas du tout une sauvegarde, n'a bien sĂ»r rien sauvĂ©.

Avec les gars, nous avons trouvĂ© comment arrĂȘter manuellement l'enregistrement et tout vĂ©rifier. Nous avons vraiment confirmĂ© qu'une partie des donnĂ©es ne s'Ă©crivait pas.

Nous avons arrĂȘtĂ© l'enregistrement, comptĂ© le nombre d'Ă©vĂ©nements qui s'y trouvaient au cours de la journĂ©e. Nous avons ajoutĂ© encore des donnĂ©es, mais seulement un tiers n'a pas Ă©tĂ© enregistrĂ©. Trois shards avec 2 rĂ©pliques. Tu insĂšres 100 000 lignes — 33 000 ne s'enregistrent pas.

C'était le chaos total. Tout le monde s'envoyait balader à tour de rÎle : le premier à partir là-bas était Léon, suivi de moi et du fondateur de l'entreprise. Le CTO, qui venait juste de rejoindre, essayait de gérer nos appels avec des cris et nos messages pour trouver une solution au problÚme.

Ce qui se passait rĂ©ellement — personne ne comprenait.

Nous Ă©tions complĂštement sidĂ©rĂ©s, rĂ©alisant qu'un tiers de toutes les donnĂ©es ne s'enregistraient pas juste — elles Ă©taient perdues ! Il s'est avĂ©rĂ© que l'ordre dans l'entreprise Ă©tait tel : aprĂšs insertion, les donnĂ©es Ă©taient supprimĂ©es de maniĂšre irrĂ©versible, les Ă©vĂ©nements se perdaient par paquets. J'ai imaginĂ© comment Sergey convertissait tout cela en roubles non perçus.

Mon anniversaire aussi a Ă©tĂ© jetĂ© Ă  la poubelle. Nous Ă©tions assis dans un bar, gĂ©nĂ©rant des idĂ©es, essayant de rĂ©soudre le rĂ©bus lancĂ©. La raison de la chute de ClickHouse n'Ă©tait pas Ă©vidente. Peut-ĂȘtre Ă©tait-ce le rĂ©seau, peut-ĂȘtre un problĂšme de configuration de Linux. N'importe quoi, suffisamment d'hypothĂšses ont Ă©tĂ© formulĂ©es.

Je n'avais pas prĂȘtĂ© le serment des dĂ©veloppeurs, mais abandonner les gars au bout du fil Ă©tait dĂ©loyal — mĂȘme s'ils nous blĂąmaient pour tout. J'Ă©tais sĂ»r Ă  99 % que le problĂšme ne venait pas de nos solutions, pas de notre cĂŽtĂ©. 1 % de chance que ce soit nous qui ayons merdĂ© me brĂ»lait d'angoisse. Mais peu importe oĂč se trouvait le problĂšme — il fallait le corriger. Laisser les clients, peu importe qui ils Ă©taient, avec une telle terrible fuite de donnĂ©es — c'Ă©tait trop cruel.

Nous avons travaillĂ© jusqu'Ă  trois heures du matin Ă  la table d'un restaurant. Nous ajoutions des Ă©vĂ©nements, faisions des insert select — et nous avons commencĂ© Ă  combler les lacunes. Quand tu as perdu des donnĂ©es, tu procĂšdes de cette façon : tu prends les donnĂ©es moyennes des jours prĂ©cĂ©dents et tu les insĂšres dans celles qui sont perdues.

AprĂšs trois heures du matin, mon pote et moi sommes rentrĂ©s chez moi, avons commandĂ© de la biĂšre Ă  un magasin d'alcool. Je me suis retrouvĂ© avec mon ordinateur portable et les problĂšmes de ClickHouse, mon ami me racontait quelque chose. Au bout d'une heure, il s'est fĂąchĂ© parce que je travaillais et ne buvais pas de biĂšre avec lui, et est parti. Classique — il a Ă©tĂ© ami avec un devops.

À 6 heures du matin, j'ai recréé la table Ă  nouveau, et les donnĂ©es ont commencĂ© Ă  ĂȘtre chargĂ©es. Tout a fonctionnĂ© sans pertes.

AprÚs cela, c'était difficile. Tout le monde s'accusait mutuellement de la perte de données. Si un nouveau bug apparaissait, je suis sûr qu'une fusillade aurait commencé.

Dans ces disputes, nous avons enfin commencĂ© Ă  comprendre — dans l'entreprise, ils pensaient que nous Ă©tions les gars qui s'occupent des donnĂ©es et veillent Ă  la structure des tables. Ils ont confondu les admins avec les DBA. Et ils sont venus nous demander non pas en tant qu'administrateurs.

Leur principale plainte Ă©tait — c'est quoi ce bordel, vous Ă©tiez responsables des sauvegardes et vous ne les avez pas faites correctement, vous avez perdu des donnĂ©es. Et tout cela avec des gros mots.

Je voulais de la justice. J'ai dĂ©terrĂ© la correspondance et j'ai joint tous les Ă©crans oĂč Leonid exige de toutes ses forces de faire une sauvegarde comme celle qui avait Ă©tĂ© faite. Leur CTO s'est rangĂ© de notre cĂŽtĂ© aprĂšs mon appel tĂ©lĂ©phonique. Par la suite, Leonid a reconnu sa faute.

Le chef de l'entreprise, au contraire, ne voulait pas blùmer les siens. Les captures d'écran et les mots n'avaient pas d'effet sur lui. Il pensait que puisque nous étions des experts ici, nous aurions dû convaincre tout le monde et maintenir notre décision. Il semblerait que notre tùche était d'enseigner à Leonid et, en plus de contourner lui, le responsable du projet, d'arriver au chef et de lui exprimer toutes nos doutes sur le concept des sauvegardes.

Le chat dĂ©bordait de haine, d'agressivitĂ© cachĂ©e et non cachĂ©e. Je ne savais pas quoi faire. Tout semblait ĂȘtre dans une impasse. Et lĂ , on m'a conseillĂ© la mĂ©thode la plus simple — Ă©crire en privĂ© au directeur et convenir d'une rĂ©union avec lui. Vasya, les gens dans la vie ne sont pas aussi osĂ©s que dans le chat. En rĂ©ponse Ă  mon message, le patron a dit : viens, pas de problĂšme.

C'Ă©tait la rencontre la plus dĂ©sagrĂ©able de ma carriĂšre. Mon alliĂ© chez le client — le CTO — n'a pas pu trouver le temps. Sur le chemin, j'allais voir le patron et Leonid.

Je repassais encore et encore dans ma tĂȘte notre dialogue possible. J'ai mĂȘme rĂ©ussi Ă  arriver trĂšs en avance, une demi-heure Ă  l'avance. Le stress a commencĂ©, j'ai fumĂ© dix cigarettes. Je comprenais, c'Ă©tait fini — j'Ă©tais seul. Je ne pouvais pas les convaincre. Et j'ai pĂ©nĂ©trĂ© dans l'ascenseur.

Pendant que je montais, j'ai tellement fait couiner mon briquet que je l'ai cassé.

Finalement, Leonid n'Ă©tait pas prĂ©sent Ă  la rĂ©union. Et nous avons trĂšs bien parlĂ© avec le patron ! Sergey m'a parlĂ© de sa douleur. Il ne voulait pas « automatiser ClickHouse » — il voulait que « les requĂȘtes fonctionnent ».

Je n'ai pas vu un salaud, mais un bon gars, préoccupé par son entreprise, plongé dans le travail 24/7. Le chat nous dépeint souvent des méchants, des scélérats et des idiots. Mais dans la vie, ce sont des gens comme toi.

Sergey n'avait pas besoin de quelques DevOps freelance. Le problÚme qu'ils avaient rencontré était beaucoup plus important.

J'ai dit que je pouvais rĂ©soudre ses problĂšmes — c'est juste un tout autre travail, et j'ai un ami DBA pour cela. Si nous avions su dĂšs le dĂ©part que c'Ă©tait pour eux, nous aurions Ă©vitĂ© beaucoup de choses. Il est trop tard, mais nous avons compris que le problĂšme venait d'un mauvais travail sur les donnĂ©es, et non de l'infrastructure.

Nous avons Ă©changĂ© des poignĂ©es de main, notre tarif a grimpĂ© de deux fois et demie, mais avec la condition — je prends absolument tout le casse-tĂȘte de leurs donnĂ©es et de ClickHouse sur moi. Dans l'ascenseur, j'ai contactĂ© le DBA Max et l'ai intĂ©grĂ© au projet. Il fallait refondre tout le cluster.

Il y avait beaucoup de dĂ©chets dans le projet acceptĂ©. À commencer par le « backup » mentionnĂ©. Il s'est avĂ©rĂ© que ce mĂȘme cluster de « backup » n'Ă©tait pas isolĂ©. On testait tout dessus, et parfois mĂȘme on le mettait en production.

Les dĂ©veloppeurs internes avaient créé leur propre « injecteur » de donnĂ©es. Il fonctionnait comme ceci : il traitait des fichiers en lot, exĂ©cutait un script et ajoutait des donnĂ©es dans la table. Mais le principal problĂšme Ă©tait que d'Ă©normes quantitĂ©s de donnĂ©es Ă©taient acceptĂ©es pour une simple requĂȘte. La requĂȘte joignait les donnĂ©es par seconde. Tout cela pour un seul chiffre — la somme de la journĂ©e.

Les dĂ©veloppeurs internes utilisaient mal l'outil d'analyse. Ils allaient sur Grafana, Ă©crivaient leur requĂȘte royale. Elle extrayait des donnĂ©es sur 2 semaines. Cela faisait un joli graphique. Mais en rĂ©alitĂ©, la requĂȘte de donnĂ©es s'exĂ©cutait toutes les 10 secondes. Tout cela s'accumulait dans la file d'attente, car ClickHouse ne pouvait tout simplement pas traiter le tout. C'est lĂ  que se cachait la vraie raison. Rien ne fonctionnait dans Grafana, les requĂȘtes Ă©taient bloquĂ©es en attente, et des donnĂ©es anciennes et non pertinentes arrivaient constamment.

Nous avons reconfiguré le cluster, retravaillé l'insertion. Les développeurs internes ont réécrit leur « injecteur », et il a commencé à sharder les données correctement.

Max a effectué un audit complet de l'infrastructure. Il a détaillé un plan de transition vers un backend complet. Mais cela n'a pas satisfait l'entreprise. Ils attendaient de Max un secret magique qui permettrait de travailler de la vieille maniÚre, mais de maniÚre efficace. Le projet était toujours sous la responsabilité de Léna, qui n'avait rien appris. Parmi tout ce qui avait été proposé, il a une fois de plus choisi sa propre alternative. Comme d'habitude, c'était la plus audacieuse... la plus courageuse. Léna pensait que son entreprise avait un chemin spécial. Semé d'embûches et rempli d'icebergs.

En fait, c'est lĂ -dessus que nous nous sommes sĂ©parĂ©s — nous avons fait ce que nous avons pu.

Avec des expĂ©riences passĂ©es et enrichis de cette histoire, nous avons lancĂ© notre entreprise et dĂ©fini plusieurs principes pour nous-mĂȘmes. Aujourd'hui, nous ne commençons jamais un projet de la mĂȘme maniĂšre qu'Ă  l'Ă©poque.

Le développeur Max a rejoint notre équipe aprÚs ce projet et nous travaillons toujours trÚs bien ensemble. Le cas de ClickHouse nous a appris à réaliser un audit complet et approfondi de l'infrastructure avant de commencer un travail. Nous comprenons comment tout fonctionne, puis nous acceptons les tùches. Si auparavant nous étions tentés de gérer l'infrastructure immédiatement, nous faisons maintenant d'abord un projet ponctuel qui aide à comprendre comment la remettre en état de marche.

Et oui, nous Ă©vitons les projets avec une infrastructure dĂ©faillante. MĂȘme pour beaucoup d'argent, mĂȘme par amitiĂ©. GĂ©rer des projets problĂ©matiques n'est pas rentable. Prendre conscience de cela nous a permis de grandir. Soit nous faisons un projet ponctuel pour remettre en ordre l'infrastructure, suivi d'un contrat de maintenance, soit nous passons tout simplement notre chemin. En Ă©vitant un autre iceberg.

P.S. Donc, si vous avez des questions sur votre infrastructure, n'hésitez pas à laisser une demande.

Nous proposons 2 audits gratuits par mois, peut-ĂȘtre que votre projet sera sĂ©lectionnĂ©.

Source : habr.com

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