«Bitrix24»: «Ce qui est rapidement relevé n'est pas considéré comme tombé»

Aujourd'hui, le service « Bitrix24 » ne dispose pas de centaines de gigabits de trafic, ni d'un vaste parc de serveurs (bien qu'il y en ait, bien sĂ»r, un certain nombre). Mais pour de nombreux clients, c'est l'outil principal de travail dans l'entreprise, une application rĂ©ellement critique pour le business. Donc, des pannes — ce n'est absolument pas possible. Mais que se passe-t-il si une panne survient, mais que le service « ressuscite » si rapidement que personne ne s'en aperçoit ? Et comment rĂ©ussir Ă  rĂ©aliser un failover sans perte de qualitĂ© de service ni de clients ? Alexandre Demidov, directeur des services cloud de « Bitrix24 », a expliquĂ© sur notre blog comment le systĂšme de sauvegarde a Ă©voluĂ© au cours des 7 annĂ©es d'existence du produit.

«Bitrix24»: «Ce qui est rapidement relevé n'est pas considéré comme tombé»

Nous avons lancĂ© « Bitrix24 » sous forme de SaaS il y a 7 ans. La principale difficultĂ©, sans doute, Ă©tait la suivante : avant de le lancer au public sous forme de SaaS, ce produit existait simplement en tant que solution box. Les clients l'achetaient chez nous, l'installaient sur leurs propres serveurs, lançaient un portail d'entreprise — une solution globale pour la communication des employĂ©s, le stockage de fichiers, la gestion des tĂąches, le CRM, tout cela. Et nous avons dĂ©cidĂ© en 2012 que nous voulions le lancer en tant que SaaS, en gĂ©rant nous-mĂȘmes, en garantissant la tolĂ©rance aux pannes et la fiabilitĂ©. Nous avons acquis de l'expĂ©rience en cours de route, parce qu'auparavant, nous n'en avions tout simplement pas — nous n'Ă©tions que des fabricants de logiciels, pas des fournisseurs de services.

En lançant le service, nous savions que le plus important Ă©tait d'assurer la tolĂ©rance aux pannes, la fiabilitĂ© et la disponibilitĂ© constante du service, car si vous avez un site web ordinaire, un magasin par exemple, qui tombe pendant une heure — vous ĂȘtes le seul Ă  en souffrir, vous perdez des commandes, vous perdez des clients, mais pour le client lui-mĂȘme — cela ne lui importe pas beaucoup. Il est bien sĂ»r déçu, mais il va et achĂšte sur un autre site. En revanche, si c'est une application sur laquelle repose tout le travail de l'entreprise, la communication, les dĂ©cisions, la chose la plus essentielle est de gagner la confiance des utilisateurs, c'est-Ă -dire de ne pas les dĂ©cevoir et de ne pas tomber. Parce que tout le travail peut ĂȘtre paralysĂ© si quelque chose Ă  l'intĂ©rieur ne fonctionne pas.

Bitrix24 en tant que SaaS

Nous avons assemblĂ© le premier prototype un an avant le lancement public, en 2011. Nous l'avons construit en environ une semaine, l'avons examinĂ© et testĂ© — il fonctionnait mĂȘme. Autrement dit, on pouvait accĂ©der au formulaire, y entrer le nom du portail, un nouveau portail se dĂ©ployait, une base d'utilisateurs Ă©tait créée. Nous l'avons examinĂ©, Ă©valuĂ© le produit dans son ensemble, puis nous avons mis un an Ă  le peaufiner. Car nous avions un grand objectif : nous ne voulions pas crĂ©er deux bases de code distinctes, nous ne voulions pas maintenir un produit sur site sĂ©parĂ©ment des solutions cloud, — nous voulions faire tout cela dans le cadre d'un seul code.

«Bitrix24»: «Ce qui est rapidement relevé n'est pas considéré comme tombé»

Une application web typique Ă  l'Ă©poque consistait en un seul serveur, sur lequel tournait un code php, une base mysql, les fichiers Ă©taient tĂ©lĂ©chargĂ©s, des documents, des images Ă©taient placĂ©s dans un dossier upload – et tout cela fonctionnait. Malheureusement, il est impossible de lancer un service web critique sur cette base. La mise en cache distribuĂ©e n'est pas prise en charge, la rĂ©plication des bases de donnĂ©es n'est pas non plus supportĂ©e.

Nous avons formulĂ© les exigences : il s'agit de la capacitĂ© Ă  se dĂ©ployer dans diffĂ©rents emplacements, Ă  prendre en charge la rĂ©plication, et idĂ©alement Ă  ĂȘtre rĂ©parti dans diffĂ©rents centres de donnĂ©es gĂ©ographiquement dispersĂ©s. SĂ©parer la logique du produit et, en propre, le stockage des donnĂ©es. Être capable de se mettre Ă  l'Ă©chelle dynamiquement selon la charge, et mĂȘme sortir la partie statique. De ces considĂ©rations sont nĂ©es les exigences du produit que nous avons finalement dĂ©veloppĂ© tout au long de l'annĂ©e. Au cours de cette pĂ©riode, dans la plateforme, qui est devenue unique — pour les solutions sur site, pour notre propre service — nous avons mis en place le support des Ă©lĂ©ments nĂ©cessaires. Le support de la rĂ©plication mysql au niveau mĂȘme du produit : c'est-Ă -dire que le dĂ©veloppeur, qui Ă©crit le code — ne doit pas se prĂ©occuper de la façon dont ses requĂȘtes sont rĂ©parties, il utilise notre api, et nous savons bien rĂ©partir les requĂȘtes d'Ă©criture et de lecture entre les masters et les slaves.

Nous avons mis en place un support au niveau du produit pour diffĂ©rents systĂšmes de stockage d'objets cloud : Google Storage, Amazon S3 — en plus, le support d'OpenStack Swift. Cela a donc Ă©tĂ© pratique tant pour nous en tant que service, que pour les dĂ©veloppeurs qui travaillent avec la solution sur site : s'ils utilisent simplement notre api pour travailler, ils ne se prĂ©occupent pas de l'endroit oĂč le fichier final sera stockĂ©, que ce soit localement sur le systĂšme de fichiers ou s'il ira dans un stockage d'objets.

Au final, nous avons immédiatement décidé de nous réserver au niveau d'un centre de données entier. En 2012, nous avons entiÚrement démarré sur Amazon AWS, car nous avions déjà de l'expérience avec cette plateforme - notre propre site y était hébergé. Ce qui nous attirait, c'était que dans chaque région d'Amazon, il existe plusieurs zones de disponibilité - en gros, (dans leur terminologie) plusieurs centres de données, qui sont plus ou moins indépendants les uns des autres et nous permettent de nous réserver au niveau d'un centre de données entier : si celui-ci venait à tomber en panne, les bases sont répliquées en master-master, les serveurs d'applications web sont réservés, et la partie statique est stockée dans un espace de stockage objet s3. La charge est équilibrée - à l'époque, c'était avec l'elb d'Amazon, mais un peu plus tard, nous sommes passés à nos propres équilibreurs de charge, car nous avions besoin d'une logique plus complexe.

Ce que nous voulions, nous l'avons eu...

Toutes les choses de base que nous voulions assurer - la rĂ©silience des serveurs eux-mĂȘmes, des applications web, des bases de donnĂ©es - tout fonctionnait bien. Le scĂ©nario le plus simple : si l'une de nos applications web tombe en panne, tout est simple - elles sont retirĂ©es de l'Ă©quilibrage.

«Bitrix24»: «Ce qui est rapidement relevé n'est pas considéré comme tombé»

Les machines en panne Ă©taient marquĂ©es par l'Ă©quilibreur de charge (Ă  l'Ă©poque, c'Ă©tait l'elb d'Amazon) comme unhealthy, et la distribution de la charge Ă©tait arrĂȘtĂ©e. L'autoscaling d'Amazon fonctionnait : lorsque la charge augmentait, de nouvelles machines Ă©taient ajoutĂ©es au groupe d'autoscaling, et la charge Ă©tait rĂ©partie sur ces nouvelles machines - tout Ă©tait bien. Avec nos Ă©quilibreurs, la logique est Ă  peu prĂšs la mĂȘme : si quelque chose arrive au serveur d'applications, nous retirons les requĂȘtes, Ă©liminons ces machines, lançons de nouvelles et continuons Ă  travailler. Le schĂ©ma a lĂ©gĂšrement Ă©voluĂ© au fil des ans, mais il continue de fonctionner : il est simple, clair, et sans complications.

Nous travaillons partout dans le monde, les pics de charge des clients sont absolument diffĂ©rents, et, en toute honnĂȘtetĂ©, nous devons avoir la possibilitĂ© d'effectuer des opĂ©rations de maintenance sur n'importe quel composant de notre systĂšme Ă  tout moment - sans que les clients ne s'en aperçoivent. C'est pourquoi nous avons la possibilitĂ© de mettre hors ligne la base de donnĂ©es, tout en redistribuant la charge sur le deuxiĂšme centre de donnĂ©es.

Comment tout cela fonctionne-t-il ? — Nous redirigeons le trafic vers un centre de donnĂ©es opĂ©rationnel : si c'est une dĂ©faillance du centre de donnĂ©es, cela se fait entiĂšrement ; si ce sont nos travaux planifiĂ©s sur une base particuliĂšre, nous redirigeons une partie du trafic de ces clients vers le second centre de donnĂ©es, tout en suspendant la rĂ©plication. Si de nouvelles machines sont nĂ©cessaires pour les applications web en raison de l'augmentation de la charge sur le deuxiĂšme centre de donnĂ©es, elles dĂ©marrent automatiquement. Les travaux sont terminĂ©s, la rĂ©plication est rĂ©tablie et nous ramenons toute la charge. Si nous devons effectuer des travaux simultanĂ©s dans le deuxiĂšme DC, par exemple, installer des mises Ă  jour systĂšme ou modifier les paramĂštres dans la deuxiĂšme base de donnĂ©es, nous faisons essentiellement la mĂȘme chose, mais dans l'autre sens. En cas de dĂ©faillance, nous agissons simplement : dans le systĂšme de surveillance, nous utilisons le mĂ©canisme des event-handlers. Si plusieurs vĂ©rifications Ă©chouent et que le statut passe Ă  critique, ce handler s'active, celui qui peut exĂ©cuter une logique spĂ©cifique. Pour chaque base, nous avons spĂ©cifiĂ© quel serveur est le failover pour elle, et oĂč rediriger le trafic en cas d'indisponibilitĂ©. Nous avons, par tradition, utilisĂ© Nagios ou ses variantes. En principe, de tels mĂ©canismes existent dans presque tous les systĂšmes de surveillance ; pour l'instant, nous n'utilisons rien de plus complexe, mais cela pourrait Ă©voluer un jour. Actuellement, la surveillance se dĂ©clenche en cas d'indisponibilitĂ© et peut rediriger quelque chose.

Avons-nous tout réservé ?

Nous avons de nombreux clients aux États-Unis, beaucoup de clients en Europe, et beaucoup de clients plus proches de l'Est — au Japon, Ă  Singapour, etc. Bien sĂ»r, une grande part des clients se trouve en Russie. Cela signifie que nous travaillons dans plusieurs rĂ©gions. Les utilisateurs souhaitent une rĂ©ponse rapide, il y a des exigences en matiĂšre de conformitĂ© avec diverses lois locales, et dans chaque rĂ©gion, nous prĂ©voyons deux centres de donnĂ©es, ainsi que d'autres services qui, encore une fois, sont pratiques Ă  placer au sein d'une mĂȘme rĂ©gion — pour les clients qui exercent leurs activitĂ©s dans cette rĂ©gion. Les gestionnaires REST et les serveurs d'autorisation sont moins critiques pour le fonctionnement global du client, il est donc possible de basculer avec un lĂ©ger dĂ©lai acceptable. Cependant, nous ne voulons pas rĂ©inventer la roue concernant leur surveillance et leur gestion. C'est pourquoi nous essayons d'utiliser au maximum les solutions existantes, au lieu de dĂ©velopper une certaine expertise en produits supplĂ©mentaires. Nous utilisons parfois simplement un basculement au niveau DNS, et nous dĂ©terminons la disponibilitĂ© du service avec le mĂȘme DNS. Amazon dispose d'un service appelĂ© Route 53, mais ce n'est pas simplement un DNS oĂč l'on peut entrer des enregistrements — il est beaucoup plus flexible et pratique. GrĂące Ă  lui, vous pouvez crĂ©er des services gĂ©o-distribuĂ©s avec gĂ©olocalisation, oĂč vous dĂ©finissez d'oĂč provient le client et lui fournissez les enregistrements appropriĂ©s — cela permet de construire des architectures de basculement. Les mĂȘmes vĂ©rifications de l'Ă©tat peuvent ĂȘtre configurĂ©es directement dans Route 53 : vous dĂ©finissez les points de terminaison Ă  surveiller, les mĂ©triques, et les protocoles Ă  utiliser pour dĂ©terminer la « disponibilitĂ© » du service — TCP, HTTP, HTTPS ; vous spĂ©cifiez la frĂ©quence des vĂ©rifications qui dĂ©termineront si le service est en ligne ou non. Et dans le DNS, vous indiquez ce qui sera primaire, ce qui sera secondaire, oĂč basculer en cas de dĂ©faillance lors des vĂ©rifications de santĂ© dans Route 53. Tout cela peut ĂȘtre fait avec d'autres outils, mais ce qui est pratique, c'est qu'une fois configurĂ©, vous n'avez plus besoin de vous soucier des vĂ©rifications ou des basculements : tout fonctionne de maniĂšre autonome.

Le premier « mais »: comment et avec quoi faut-il sauvegarder route 53 ? On ne sait jamais, si quelque chose lui arrivait. Heureusement, nous n'avons jamais eu ce problĂšme, mais je vais expliquer pourquoi nous avons considĂ©rĂ© qu'il fallait tout de mĂȘme effectuer une sauvegarde. Ici, nous nous prĂ©parons Ă  l'avance. Plusieurs fois par jour, nous faisons une exportation complĂšte de toutes les zones que nous avons dans route 53. L'API d'Amazon permet de les renvoyer facilement en JSON, et nous avons mis en place plusieurs serveurs de sauvegarde oĂč nous les convertissons, les exportons sous forme de fichiers de configuration et avons, en gros, une configuration de sauvegarde. En cas de problĂšme, nous pouvons la dĂ©ployer rapidement manuellement, sans perdre les donnĂ©es des paramĂštres DNS.

DeuxiĂšme « mais »: qu'est-ce qui n'est pas encore sauvegardĂ© dans cette image ? L'Ă©quilibreur de charge lui-mĂȘme ! La rĂ©partition des clients par rĂ©gion est faite de maniĂšre trĂšs simple. Nous avons des domaines bitrix24.ru, bitrix24.com, .de — actuellement, il y en a environ 13 diffĂ©rents qui fonctionnent dans diverses zones. Nous en sommes arrivĂ©s Ă  la conclusion suivante : dans chaque rĂ©gion, il y a ses propres Ă©quilibreurs de charge. C'est plus simple de rĂ©partir par rĂ©gion, en fonction de la charge rĂ©seau maximale. Si une dĂ©faillance se produit au niveau d'un seul Ă©quilibreur de charge, il est simplement mis hors service et retirĂ© du DNS. En cas de problĂšme avec un groupe d'Ă©quilibreurs de charge, ils sont sauvegardĂ©s sur d'autres sites, et la bascule entre eux se fait grĂące Ă  la mĂȘme route53, car avec un TTL court, le basculement se produit au maximum en 2, 3, 5 minutes.

TroisiĂšme « mais »: qu'est-ce qui n'est pas encore sauvegardĂ© ? S3, c'est vrai. En hĂ©bergeant les fichiers que nous stockons chez les utilisateurs dans S3, nous croyions sincĂšrement qu'il Ă©tait infaillible et qu'il n'Ă©tait pas nĂ©cessaire de rien sauvegarder lĂ -dedans. Mais l'histoire montre que cela se passe diffĂ©remment. En fait, Amazon dĂ©crit S3 comme un service fondamental, car Amazon lui-mĂȘme utilise S3 pour stocker des images de machines, des configurations, des AMI, des snapshots
 Et si S3 tombe, comme cela s'est dĂ©jĂ  produit au cours de ces 7 ans oĂč nous exploitons bitrix24, cela entraĂźne une multitude de problĂšmes — l'impossibilitĂ© de dĂ©marrer des machines virtuelles, des pannes dans le fonctionnement de l'API, etc.

Un incident avec S3 peut arriver — cela s'est dĂ©jĂ  produit. C'est pourquoi nous avons dĂ©cidĂ© de suivre la dĂ©marche suivante : il y a quelques annĂ©es, il n'y avait pas de solutions de stockage objet publiques sĂ©rieuses en Russie, et nous envisagions de crĂ©er quelque chose de notre propre initiative
 Heureusement, nous ne l'avons pas fait, car nous aurions Ă©tĂ© perdus dans une expertise que nous ne maĂźtrisons pas, et nous aurions certainement commis des erreurs. Aujourd'hui, des solutions de stockage compatibles avec S3 existent chez Mail.ru, Yandex et d'autres fournisseurs. Nous en sommes venus Ă  la conclusion que nous souhaitons avoir, d'une part, une redondance, et d'autre part, la possibilitĂ© de travailler avec des copies locales. Pour la rĂ©gion spĂ©cifiquement russe, nous utilisons le service Mail.ru Hotbox, qui est compatible avec S3 via une API. Nous n'avons pas eu besoin d'apporter des modifications majeures au code de l'application, et nous avons mis en place le mĂ©canisme suivant : S3 dispose de dĂ©clencheurs qui s'activent lors de la crĂ©ation ou de la suppression d'objets, et Amazon propose un service appelĂ© Lambda — cela permet d'exĂ©cuter du code en mode serverless, qui s'exĂ©cutera lors des dĂ©clenchements de ces Ă©vĂ©nements.

«Bitrix24»: «Ce qui est rapidement relevé n'est pas considéré comme tombé»

Nous avons fait cela trĂšs simplement : lorsque notre dĂ©clencheur s'active, nous exĂ©cutons un code qui copie l'objet dans le stockage Mail.ru. Pour lancer pleinement le travail avec des copies locales des donnĂ©es, nous avons Ă©galement besoin d'une synchronisation inverse, afin que les clients situĂ©s dans le segment russe puissent travailler avec un stockage plus proche d'eux. Mail est sur le point de finaliser les dĂ©clencheurs dans son stockage — il sera bientĂŽt possible d'exĂ©cuter une synchronisation inverse au niveau de l'infrastructure, pour l'instant nous le faisons dans notre propre code. Si nous voyons qu'un client a tĂ©lĂ©chargĂ© un fichier, nous plaçons un Ă©vĂ©nement dans la file d'attente Ă  notre niveau de code, nous le traitons et effectuons la rĂ©plication inverse. Ce qui pose problĂšme : si nous travaillons avec nos objets en dehors de notre produit, c'est-Ă -dire avec des outils externes, cela ne sera pas pris en compte. C'est pourquoi nous attendons que les dĂ©clencheurs au niveau du stockage soient implĂ©mentĂ©s, afin que peu importe oĂč nous exĂ©cutons le code, l'objet qui nous parvient soit copiĂ© dans l'autre sens.

Au niveau du code, nous définissons pour chaque client les deux stockages : l'un est considéré comme principal, l'autre comme de sauvegarde. Si tout fonctionne bien, nous travaillons avec le stockage le plus proche de nous : c'est-à-dire que nos clients qui sont chez Amazon utilisent S3, tandis que ceux qui opÚrent en Russie utilisent Hotbox. Si un drapeau est activé, un failover doit se connecter et nous redirigeons les clients vers un autre stockage. Nous pouvons fixer ce drapeau indépendamment par régions et les basculer. En pratique, nous ne l'avons pas encore utilisé, mais ce mécanisme est prévu et nous pensons que lorsque ce besoin de basculement se présentera, il sera utile. Cela nous est déjà arrivé une fois.

Oh, Amazon vous a lùchés...

Ce mois d'avril marque l'anniversaire du début des blocages de Telegram en Russie. Le fournisseur le plus touché par cela est Amazon. Malheureusement, ce sont les entreprises russes qui ont le plus souffert, celles qui opéraient à l'échelle mondiale.

Si l'entreprise est mondiale et que la Russie représente un trÚs petit segment pour elle, 3-5% - il est possible, d'une maniÚre ou d'une autre, de faire des sacrifices.

Si c'est une entreprise purement russe, je suis convaincu qu'il faut s'installer localement - c'est juste plus pratique et confortable pour les utilisateurs, le risque sera plus faible.

Et si c'est une entreprise qui opÚre à l'échelle mondiale, avec à peu prÚs autant de clients en Russie que dans le reste du monde ? La connectivité des segments est importante, et ils doivent interagir d'une maniÚre ou d'une autre.

Fin mars 2018, le Roskomnadzor a envoyĂ© une lettre aux plus grands opĂ©rateurs, annonçant leur intention de bloquer plusieurs millions d'IP d'Amazon pour bloquer... le messager Zello. Merci Ă  ces mĂȘmes fournisseurs - ils ont rĂ©ussi Ă  faire fuiter la lettre, et il est devenu clair que la connectivitĂ© avec Amazon pourrait s'effondrer. C'Ă©tait un vendredi, nous avons paniquĂ© et nous sommes dirigĂ©s vers nos collĂšgues de servers.ru, en leur disant : « Les amis, nous avons besoin de plusieurs serveurs qui ne seront pas en Russie, ni chez Amazon, mais par exemple, quelque part Ă  Amsterdam », pour pouvoir mettre en place nos propres serveurs d'une maniĂšre ou d'une autre. vpn Et un proxy pour certains endpoints auxquels nous ne pouvons pas du tout accĂ©der, par exemple les endpoints de S3 — nous ne pouvons pas essayer de dĂ©ployer un nouveau service et obtenir une autre adresse IP, nous devons quand mĂȘme y accĂ©der. En quelques jours, nous avons configurĂ© ces serveurs, les avons mis en marche et, au moment du dĂ©but des blocages, nous Ă©tions prĂ©parĂ©s. Curieusement, le RKN, aprĂšs avoir observĂ© le tohu-bohu et la panique soulevĂ©e, a dĂ©clarĂ© : « Non, nous n'allons rien bloquer pour l'instant ». (Mais c'Ă©tait prĂ©cisĂ©ment jusqu'Ă  ce qu'ils commencent Ă  bloquer Telegram.) En configurant des moyens de contournement et en rĂ©alisant qu'aucun blocage n'Ă©tait en cours, nous n'avons nĂ©anmoins pas pris la peine de le dĂ©monter. Juste au cas oĂč.

«Bitrix24»: «Ce qui est rapidement relevé n'est pas considéré comme tombé»

Et donc, en 2019, nous vivons en effet sous des conditions de blocage. Hier soir, je regardais : environ un million d'adresses IP continuent d'ĂȘtre bloquĂ©es. En revanche, Amazon a Ă©tĂ© presque entiĂšrement dĂ©bloquĂ©, atteignant jusqu'Ă  20 millions d'adresses en pic... En rĂ©alitĂ©, la situation est telle qu'il se peut qu'il n'y ait pas de bonne connectivitĂ©. Soudainement. Elle peut faire dĂ©faut pour des raisons techniques — incendies, excavateurs, tout ça. Ou, comme nous l'avons vu, pas uniquement pour des raisons techniques. Donc, quelqu'un de grand et de sĂ©rieux, avec ses propres AS, peut probablement gĂ©rer cela autrement, — direct connect et d'autres choses dĂ©jĂ  au niveau L2. Mais dans un cas simple, comme nous ou des plus petits, il est prĂ©fĂ©rable de disposer de sauvegardes au niveau des serveurs, dĂ©ployĂ©s ailleurs, avec des VPN prĂ©configurĂ©s, des proxies, pour pouvoir rapidement changer la configuration dans les segments oĂč la connectivitĂ© est critique pour vous. Cela nous a Ă©tĂ© utile Ă  plusieurs reprises lorsque les blocages d'Amazon ont commencĂ©, nous avons utilisĂ© cela, dans le pire des cas, pour faire passer le trafic S3, mais cela s'est rĂ©glĂ© progressivement.

Et comment assurer la redondance... d'un fournisseur entier ?

Actuellement, nous n'avons pas de scĂ©nario en cas de dĂ©faillance complĂšte d'Amazon. Nous avons un scĂ©nario similaire pour la Russie. Nous Ă©tions hĂ©bergĂ©s en Russie par un fournisseur, chez qui nous avions choisi d'avoir plusieurs sites. Il y a un an, nous avons rencontrĂ© un problĂšme : mĂȘme si ce sont deux centres de donnĂ©es, il peut y avoir des problĂšmes au niveau de la configuration rĂ©seau du fournisseur qui impacteront tout de mĂȘme les deux centres. Nous pouvons avoir des interruptions sur les deux sites. Bien sĂ»r, cela s'est produit. Nous avons finalement rĂ©visĂ© notre architecture interne. Elle n'a pas beaucoup changĂ©, mais pour la Russie, nous avons maintenant deux sites, qui ne sont pas hĂ©bergĂ©s par un seul fournisseur, mais par deux diffĂ©rents. Si une chose tombe en panne chez l'un, nous pouvons nous rediriger vers l'autre.

HypothĂ©tiquement, nous envisageons pour Amazon la possibilitĂ© de faire de la rĂ©servation au niveau d'un autre fournisseur ; peut-ĂȘtre Google, ou peut-ĂȘtre quelqu'un d'autre... Mais jusqu'Ă  prĂ©sent, nous avons observĂ© dans la pratique que lorsqu'il y a des pannes chez Amazon au niveau d'une zone de disponibilitĂ©, des pannes touchant tout un rĂ©gion sont des Ă©vĂ©nements assez rares. Par consĂ©quent, nous avons une idĂ©e thĂ©orique de ce que nous pourrions faire en rĂ©servant "Amazon - pas Amazon", mais pour l'instant, cela n'existe pas en pratique.

Quelques mots sur l'automatisation

L'automatisation est-elle toujours nĂ©cessaire ? Il convient de rappeler ici l'effet Dunning-Kruger. Sur l'axe « x », nos connaissances et expĂ©riences que nous acquĂ©rons, et sur l'axe « y » — notre confiance dans nos actions. Au dĂ©but, nous ne savons rien et nous ne sommes pas du tout confiants. Ensuite, nous savons un peu et devenons mĂ©ga-confiants — c'est ce qu'on appelle le « pic de la bĂȘtise », bien illustrĂ© par l'image « l'ignorance et le courage ». Ensuite, nous avons un peu appris et sommes prĂȘts Ă  entrer dans la bataille. Puis nous trĂ©buchons sur des piĂšges sĂ©rieux, nous entrons dans la vallĂ©e du dĂ©sespoir, oĂč nous croyons savoir quelque chose, mais en rĂ©alitĂ© nous ignorons beaucoup de choses. Ensuite, au fur et Ă  mesure que nous acquĂ©rons de l'expĂ©rience, nous gagnons en confiance.

«Bitrix24»: «Ce qui est rapidement relevé n'est pas considéré comme tombé»

Notre logique concernant les divers basculements automatiques en cas d'incidents est trĂšs bien dĂ©crite par ce graphique. Nous avons commencĂ© — nous n'avions aucune compĂ©tence, presque tous les travaux Ă©taient effectuĂ©s manuellement. Puis nous avons rĂ©alisĂ© qu'il Ă©tait possible d'automatiser tout cela pour, en quelque sorte, dormir sur nos deux oreilles. Et soudain, nous tombons sur des problĂšmes majeurs : des faux positifs se dĂ©clenchent, et nous faisons basculer le trafic Ă  droite Ă  gauche alors qu'en rĂ©alitĂ©, cela ne devrait pas ĂȘtre fait. Par consĂ©quent, la rĂ©plication se casse ou quelque chose d'autre, et voici la vallĂ©e du dĂ©sespoir. Ensuite, nous en arrivons Ă  la comprĂ©hension qu'il faut avoir du discernement. Il est donc judicieux de se fier Ă  l'automatisation tout en anticipant la possibilitĂ© de faux dĂ©clenchements. Mais ! si les consĂ©quences peuvent ĂȘtre dĂ©sastreuses, il vaut mieux laisser cela aux Ă©quipes de garde, aux ingĂ©nieurs de garde qui s'assureront, vĂ©rifieront qu'il y a rĂ©ellement un problĂšme et effectueront les actions nĂ©cessaires manuellement...

Conclusion

En 7 ans, nous sommes passĂ©s de la panique totale Ă  la comprĂ©hension qu'il n'y a pas de problĂšmes, mais seulement des tĂąches Ă  rĂ©soudre. Lorsque vous construisez un service, regardez-le d'un point de vue global, Ă©valuez tous les risques qui peuvent survenir. Si vous les voyez tout de suite, anticipez les options de redondance et la possibilitĂ© de construire une infrastructure rĂ©siliente, car tout point pouvant tomber en panne et rendre le service inutilisable le fera nĂ©cessairement. Et mĂȘme si vous pensez que certains Ă©lĂ©ments de l'infrastructure ne tomberont pas en panne — comme le s3, gardez Ă  l'esprit qu'ils pourraient le faire. Ayez au moins une idĂ©e thĂ©orique sur ce que vous ferez avec eux si quelque chose se produit. Ayez un plan pour gĂ©rer les risques. Lorsque vous envisagez de tout faire automatiquement ou manuellement, Ă©valuez les risques : que se passera-t-il si l'automatisation commence Ă  tout basculer — cela ne conduira-t-il pas Ă  une situation encore pire qu'une panne ? Peut-ĂȘtre qu'il faut parfois trouver un compromis raisonnable entre l'utilisation de l'automatisation et la rĂ©action d'un ingĂ©nieur de garde, qui Ă©valuera la situation rĂ©elle et dĂ©cidera s'il faut basculer quelque chose immĂ©diatement ou

Un compromis raisonnable entre le perfectionnisme et les ressources réelles, le temps, l'argent que vous pouvez consacrer au schéma que vous aurez finalement.

Ce texte est une version augmentée et étendue du rapport d'Alexandre Demidov lors de la conférence. Uptime jour 4.

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