{"id":38981,"date":"2019-10-31T22:27:10","date_gmt":"2019-10-31T19:27:10","guid":{"rendered":"https:\/\/prohoster.info\/blog\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury\/"},"modified":"2019-10-31T22:27:10","modified_gmt":"2019-10-31T19:27:10","slug":"servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","title":{"rendered":"Services orphelins : le revers de l'architecture (micro)services","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Le directeur de l'exploitation du portail Banki.ru, Andre\u00ef Nikolsky, a pris la parole lors de la conf\u00e9rence de l'ann\u00e9e derni\u00e8re <noindex><a rel=\"nofollow\" href=\"http:\/\/devopsdays.ru\/?utm_source=habr&amp;utm_medium=social&amp;utm_campaign=dod-2019&amp;utm_content=post3\">DevOpsDays Moscou<\/a><\/noindex> sur les services orphelins : comment identifier un orphelin dans l'infrastructure, quelles sont les faiblesses des services orphelins, que faire avec eux et comment agir si rien ne fonctionne.<\/p>\n<p>Sous ce lien, la version textuelle de la pr\u00e9sentation. <\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"j9I4oeEXBO8\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/j9I4oeEXBO8\/hqdefault.jpg\" alt=\"Lire la vid\u00e9o\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nBonjour coll\u00e8gues ! Je m'appelle Andre\u00ef, je dirige l'exploitation chez Banki.ru.<\/p>\n<p>Nous avons de grands services, ce sont des monolithes, il y a des services dans un sens plus classique, et il y a des tout petits. Dans mon jargon de travail, je dirais que si un service est simple et petit, alors c'est un microservice, et si ce n'est pas tellement simple et pas petit, alors c'est simplement un service. <\/p>\n<h3><b>Les avantages des services<\/b><\/h3>\n<p>\nJe vais passer rapidement en revue les avantages des services. <\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/4c34a3af9125c5869eb7c1650bc3855a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLe premier avantage est l'\u00e9volutivit\u00e9. Vous pouvez rapidement mettre en place quelque chose sur le service et le lancer en production. Si le trafic arrive, vous clonez le service. Si encore du trafic arrive, vous clonez encore et vous continuez \u00e0 g\u00e9rer cela. C\u2019est un bon bonus, et en fait, lorsque nous avons commenc\u00e9, c\u2019\u00e9tait consid\u00e9r\u00e9 comme le plus important : pourquoi faisons-nous tout cela ?<\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/c536f380ece14e0c873f765b587fb3c3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDeuxi\u00e8mement, le d\u00e9veloppement isol\u00e9, lorsque vous avez plusieurs \u00e9quipes de d\u00e9veloppement, plusieurs d\u00e9veloppeurs diff\u00e9rents dans chaque \u00e9quipe, et chaque \u00e9quipe construit son propre service.<\/p>\n<p>Il y a un aspect \u00e0 consid\u00e9rer avec les \u00e9quipes. Les d\u00e9veloppeurs peuvent \u00eatre tr\u00e8s diff\u00e9rents. Par exemple, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=VPDJXngp2bM\">les gens flocons<\/a><\/noindex>. J'ai vu cela pour la premi\u00e8re fois chez Maxim Dorofeev. Parfois, il y a des gens flocons dans certaines \u00e9quipes, mais pas dans d'autres. Cela rend les diff\u00e9rents services utilis\u00e9s dans l'entreprise un peu d\u00e9s\u00e9quilibr\u00e9s. <\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/f1e18ab059bd2b975d4c6ff1b6434626.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRegardez cette image : c'est un bon d\u00e9veloppeur, il a de grandes mains, il peut faire beaucoup de choses. Le principal probl\u00e8me est de savoir d'o\u00f9 viennent ces mains. <\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/88fdc7266e97be8732f252908329a8f2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLes services permettent d'utiliser diff\u00e9rents langages de programmation, plus adapt\u00e9s \u00e0 diff\u00e9rentes t\u00e2ches. Un service en Go, un autre en Erlang, un autre en Ruby, quelque chose en PHP, quelque chose en Python. En gros, on peut s'\u00e9tendre tr\u00e8s largement. Il y a aussi des nuances ici.<\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/98a4b1037066d67e4f16bab934cebac6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nL'architecture orient\u00e9e services concerne avant tout le devops. Cela signifie que si vous n'avez pas d'automatisation, pas de processus de d\u00e9ploiement, si vous configurez manuellement, vos configurations peuvent changer d'une instance de service \u00e0 une autre, et vous devez vous y connecter pour faire quelque chose, alors vous \u00eates dans l'enfer. <\/p>\n<p>Par exemple, vous avez 20 services, et vous devez d\u00e9ployer manuellement, vous avez 20 consoles, et vous appuyez simultan\u00e9ment sur \u00ab entrer \u00bb comme un ninja. Ce n'est pas tr\u00e8s bien. <\/p>\n<p>Si votre service apr\u00e8s les tests (s'il y a des tests, bien s\u00fbr) n\u00e9cessite encore quelques ajustements pour fonctionner en production, j'ai \u00e9galement de mauvaises nouvelles pour vous. <\/p>\n<p>Si vous d\u00e9pendez de services sp\u00e9cifiques d'Amazon et que vous travaillez en Russie, alors il y a deux mois, vous aviez aussi \u00ab Tout autour br\u00fble, je vais bien, tout est super \u00bb.<\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/474f5f1c3f0ced131df5ee8f30f0aa15.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNous utilisons Ansible pour automatiser le d\u00e9ploiement, Puppet pour la convergence, Bamboo pour automatiser le d\u00e9ploiement, Confluence pour essayer de documenter tout cela.<\/p>\n<p>Je ne vais pas m'attarder longuement l\u00e0-dessus, car la pr\u00e9sentation concerne plut\u00f4t les pratiques d'interaction que la mise en \u0153uvre technique. <\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/ab837bed67ee319d72da705bc632e3f3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNous avons par exemple eu des probl\u00e8mes o\u00f9 Puppet sur le serveur fonctionne avec Ruby 2, tandis qu'une certaine application est \u00e9crite pour Ruby 1.8, et ils ne fonctionnent pas ensemble. \u00c7a coince. Et lorsque vous devez maintenir plusieurs versions de Ruby sur une seule machine, vous commencez g\u00e9n\u00e9ralement \u00e0 avoir des probl\u00e8mes. <\/p>\n<p>Par exemple, nous fournissons \u00e0 chaque d\u00e9veloppeur une plateforme o\u00f9 se trouve presque tout ce que nous avons, tous les services que l'on peut d\u00e9velopper, afin qu'il ait un environnement isol\u00e9 o\u00f9 il peut l'endommager et le construire comme il le souhaite. <\/p>\n<p>Il arrive qu'un paquet sp\u00e9cialement compil\u00e9 avec support pour quelque chose soit n\u00e9cessaire. C'est assez strict. J'ai \u00e9cout\u00e9 une pr\u00e9sentation o\u00f9 l'image Docker p\u00e8se 45 Go. Sous Linux, bien s\u00fbr, c'est plus simple, tout est plus l\u00e9ger, mais il n'y aura quand m\u00eame pas assez de place. <\/p>\n<p>Et il y a des d\u00e9pendances contradictoires, lorsque vous avez une partie du projet qui d\u00e9pend d'une biblioth\u00e8que d'une version, et une autre partie du projet d'une autre version, et les biblioth\u00e8ques ne peuvent absolument pas \u00eatre install\u00e9es ensemble. <\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/acc4c38c547cd6d0580cf3524532393a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNous avons des sites et des services sur PHP 5.6, nous en avons honte, mais que faire. C'est sur une plateforme. Il y a des sites et des services sur PHP 7, qui sont plus nombreux, dont nous ne sommes pas honteux. Et chaque d\u00e9veloppeur a sa propre base o\u00f9 il est heureux de faire des modifications. <\/p>\n<p>Si vous travaillez dans une entreprise avec un m\u00eame langage, avoir trois machines virtuelles par d\u00e9veloppeur semble raisonnable. Si vous utilisez diff\u00e9rents langages de programmation, la situation se complique.<\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/9f5da38456024679ba6a41768466cb82.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVous vous retrouvez avec des sites et des services ici, l\u00e0, puis une plateforme pour Go, une pour Ruby, et un Redis \u00e0 c\u00f4t\u00e9. Au final, tout cela devient un vaste champ de support o\u00f9 quelque chose peut toujours tomber en panne.<\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/20bde06e0aaceea028fabea09540d2a2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nC'est pourquoi nous avons remplac\u00e9 les avantages du langage de programmation par l'utilisation de diff\u00e9rents frameworks, car les frameworks PHP sont assez vari\u00e9s, ayant des capacit\u00e9s, des communaut\u00e9s et des supports diff\u00e9rents. Et vous pouvez \u00e9crire un service de mani\u00e8re \u00e0 ce qu'il y ait d\u00e9j\u00e0 quelque chose de pr\u00eat pour lui. <\/p>\n<h3><b>Chaque service a sa propre \u00e9quipe.<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/ff32f7449c831e6dcb2bd9c41fb9c8e7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNotre principal avantage, qui s'est crystallis\u00e9 au fil des ans, est que chaque service a sa propre \u00e9quipe. C'est pratique pour un grand projet, cela permet d'\u00e9conomiser du temps sur la documentation, les managers connaissent bien leur projet. <\/p>\n<p>Les t\u00e2ches de support peuvent \u00eatre facilement confi\u00e9es. Par exemple, si le service d'assurance tombe en panne. Et imm\u00e9diatement, l'\u00e9quipe qui s'occupe de l'assurance va le r\u00e9parer. <\/p>\n<p>De nouvelles fonctionnalit\u00e9s peuvent \u00eatre mises en \u0153uvre rapidement, car lorsque vous avez un petit service atomique, vous pouvez y int\u00e9grer rapidement quelque chose. <\/p>\n<p>Et lorsque votre service tombe en panne, ce qui arrive in\u00e9vitablement, vous n'affectez pas les services des autres, et les d\u00e9veloppeurs des autres \u00e9quipes ne viennent pas en se plaignant : \u00ab Attention, ne faites pas cela \u00bb. <\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/30d99fa39654701437cdf90929d6a45e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nComme toujours, il y a des nuances. Nos \u00e9quipes sont stables, les managers sont solidement attach\u00e9s \u00e0 l'\u00e9quipe. Il existe des documents clairs, les managers veillent attentivement \u00e0 tout cela. Chaque \u00e9quipe a plusieurs services avec un manager et un domaine de comp\u00e9tence sp\u00e9cifique. <\/p>\n<p>Si les \u00e9quipes sont fluides (ce qui arrive parfois chez nous), il existe une bonne m\u00e9thode appel\u00e9e \u00ab carte des \u00e9toiles \u00bb.<\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/cd18530d30973628f9351757a800dc37.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVous avez une liste de services et de personnes. Une \u00e9toile signifie qu'une personne est experte dans ce service, un livre signifie qu'une personne \u00e9tudie ce service. L'objectif pour une personne est de changer le livre en \u00e9toile. Si rien n'est inscrit en face d'un service, des probl\u00e8mes commencent \u00e0 surgir, dont je vais parler plus en d\u00e9tail. <\/p>\n<h3><b>Comment apparaissent les services orphelins ?<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/8ae33d6e940700a5941409b7cedf3e9a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLe premier probl\u00e8me, la premi\u00e8re fa\u00e7on d'avoir un service orphelin dans votre infrastructure, c'est le licenciement de personnes. Est-ce que quelqu'un a d\u00e9j\u00e0 connu des d\u00e9lais serr\u00e9s arrivant avant que les t\u00e2ches ne soient \u00e9valu\u00e9es ? Parfois, les d\u00e9lais sont si serr\u00e9s qu'il n'y a tout simplement pas de temps pour la documentation. \u00ab Il faut livrer le service en production, nous compl\u00e9terons ensuite. \u00bb <\/p>\n<p>Si l'\u00e9quipe est petite, il arrive qu'il n'y ait qu'un seul d\u00e9veloppeur qui \u00e9crit tout, les autres sont en soutien. \u00ab J'ai \u00e9crit l'architecture principale, tu peux te charger des interfaces. \u00bb Ensuite, \u00e0 un moment donn\u00e9, le manager, par exemple, part. Et durant cette p\u00e9riode, pendant que le manager est parti et qu'aucun nouveau n'est encore nomm\u00e9, les d\u00e9veloppeurs d\u00e9cident eux-m\u00eames de la direction du service, de ce qui se passe. Et comme nous le savons (revenons \u00e0 quelques diapositives en arri\u00e8re), dans certaines \u00e9quipes, il y a des personnes uniques, parfois un leader unique. Puis, il part, et nous nous retrouvons avec un service orphelin. <\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/44741c897bfd9dc04e0a977c1cf08df3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCependant, les t\u00e2ches provenant du support et des affaires n'ont pas disparu, elles s'accumulent dans le backlog. Si des erreurs architecturales ont \u00e9t\u00e9 commises lors du d\u00e9veloppement du service, elles s'accumulent \u00e9galement dans le backlog. Le service se d\u00e9grade lentement. <\/p>\n<h3><b>Comment identifier un orphelin ?<\/b> <\/h3>\n<p>\nCette liste d\u00e9crit assez bien la situation. Qui a reconnu quelque chose d'\u00e9quivalent dans son infrastructure ?<\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/b852d070bb6864f48e3a6ae9921a12b1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nConcernant les work-arounds document\u00e9s : il y a un service et, en gros, il fonctionne, il a un manuel de deux pages sur la fa\u00e7on de travailler avec lui, mais personne ne sait comment il fonctionne \u00e0 l'int\u00e9rieur. <\/p>\n<p>Ou, par exemple, il y a un service de raccourcissement de liens. Par exemple, nous utilisons actuellement trois services de raccourcissement de liens pour diff\u00e9rents objectifs dans diff\u00e9rents services. Ce sont pr\u00e9cis\u00e9ment les cons\u00e9quences. <\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/350a041f21fcd75d9a948d2b9b77cda8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMaintenant, je vais devenir le capitaine de l'\u00e9vidence. Que faut-il faire ? Tout d'abord, il faut transmettre le service \u00e0 un autre manager, \u00e0 une autre \u00e9quipe. Si votre leader n'est pas encore parti, alors dans cette autre \u00e9quipe, lorsque vous r\u00e9alisez que le service ressemble \u00e0 un orphelin, il faut inclure quelqu'un qui comprend au moins un peu le service. <\/p>\n<p>La chose principale : vous devez avoir des proc\u00e9dures de transfert bien d\u00e9finies. Dans notre cas, je surveille cela g\u00e9n\u00e9ralement, car j'ai besoin que tout cela fonctionne. Les managers veulent que cela soit livr\u00e9 rapidement, et ce qui va se passer ensuite, cela les pr\u00e9occupe moins. <\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/87b9d86c2c795f5d71db1489cab200a2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUne autre fa\u00e7on de cr\u00e9er une application orpheline est de se dire : \u00ab Nous allons externaliser, ce sera plus rapide, et ensuite nous le passerons \u00e0 l'\u00e9quipe \u00bb. Il est clair que chacun a ses propres plans au sein de l'\u00e9quipe, une certaine file d'attente. Souvent, le client commercial pense que l'externaliseur fera les choses de la m\u00eame mani\u00e8re que le service technique de l'entreprise. Pourtant, leurs motivations sont diff\u00e9rentes. Les externaliseurs peuvent avoir des solutions technologiques \u00e9tranges et des approches algorithmiques inhabituelles.<\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/b4208ccb134cbc694ea4993ec2751ec5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPar exemple, nous avions un service qui utilisait Sphinx \u00e0 des endroits inattendus. J'en dirai plus tard sur ce qu'il a fallu faire. <\/p>\n<p>Les externaliseurs peuvent avoir des frameworks maison. C'est juste du PHP brut avec du copi\u00e9-coll\u00e9 d'un projet pr\u00e9c\u00e9dent, o\u00f9 l'on trouve de tout. Il y a de gros b\u00e9tons dans les scripts de d\u00e9ploiement, lorsque vous devez modifier plusieurs lignes dans un fichier via des scripts Bash complexes, ces scripts de d\u00e9ploiement \u00e9tant appel\u00e9s par un autre script. En fin de compte, vous changez le syst\u00e8me de d\u00e9ploiement, vous choisissez autre chose, et hop, votre service ne fonctionne plus. Parce qu'il fallait encore ajouter 8 liens entre diff\u00e9rents dossiers. Ou il arrive qu'un millier d'enregistrements fonctionne, mais pas cent mille. <\/p>\n<p>Je continue \u00e0 diriger. L'acceptation d'un service d'externalisation est une proc\u00e9dure obligatoire. Qui a d\u00e9j\u00e0 v\u00e9cu un cas o\u00f9 un service d'externalisation arrive et n'est accept\u00e9 nulle part ? Ce n'est pas aussi courant, bien s\u00fbr, que le service orphelin, mais tout de m\u00eame. <\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/92ef67a1bb714cdfb820efe432d0303b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl est n\u00e9cessaire de v\u00e9rifier le service, d'examiner le service et de changer les mots de passe. Nous avons eu un cas o\u00f9 on nous a pr\u00e9sent\u00e9 un service, dans lequel l'interface admin contenait \u00ab if login == 'admin' &amp;&amp; password == 'admin'\u2026 \u00bb, \u00e9crit directement dans le code. Nous sommes assis l\u00e0 \u00e0 r\u00e9fl\u00e9chir, et c'est ce que les gens \u00e9crivent en 2018 ?<\/p>\n<p>Tester la capacit\u00e9 de stockage est \u00e9galement n\u00e9cessaire. Il faut voir ce qui se passera avec cent mille enregistrements, m\u00eame avant de mettre ce service en production. <\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/3fabdc20049892cee7636c30e595881d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl ne faut pas avoir honte d'envoyer un service en r\u00e9vision. Quand vous dites : \u00ab Nous n'accepterons pas ce service, nous avons 20 t\u00e2ches, faites-les, et alors nous l'accepterons \u00bb, c'est normal. La conscience ne doit pas vous peser car vous exposez un manager ou que l'entreprise d\u00e9pense de l'argent. En fin de compte, l'entreprise d\u00e9pensera plus apr\u00e8s.<\/p>\n<p>Nous avons eu un cas o\u00f9 nous avons d\u00e9cid\u00e9 de lancer un projet pilote en externalisation.<\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/a5b25638e51c4eabe9d6a6971f08fa6b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl a \u00e9t\u00e9 livr\u00e9 \u00e0 temps, et c'\u00e9tait le seul crit\u00e8re de qualit\u00e9. C'est pourquoi un autre projet pilote a \u00e9t\u00e9 r\u00e9alis\u00e9, qui n'\u00e9tait m\u00eame plus tout \u00e0 fait pilote. Ces services ont \u00e9t\u00e9 accept\u00e9s, par des moyens administratifs on a dit : voici votre code, voil\u00e0 l'\u00e9quipe, voici votre responsable. Les services ont r\u00e9ellement commenc\u00e9 \u00e0 g\u00e9n\u00e9rer des revenus. Pourtant, ils sont rest\u00e9s des orphelins, personne ne comprend comment ils fonctionnent, et les responsables se d\u00e9filent de leurs t\u00e2ches. <\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/29ac8ab670df5d2c92dc7940d0a74e24.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl y a encore un autre concept int\u00e9ressant : le d\u00e9veloppement clandestin. Quand un certain d\u00e9partement, g\u00e9n\u00e9ralement celui du marketing, veut tester une hypoth\u00e8se et commande un service entier en sous-traitance. Le trafic commence \u00e0 affluer, ils finalisent les documents, signent des actes avec le contractant, passent en exploitation et disent : \u00ab Les gars, nous avons ici un service, il a d\u00e9j\u00e0 du trafic, il nous rapporte de l'argent, acceptons-le \u00bb. Nous sommes l\u00e0 : \u00ab Oh l\u00e0 l\u00e0, comment est-ce possible ? \u00bb<\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/1fa0187e5db9bed7af0c97ac8500567f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEt encore une fa\u00e7on d'obtenir un service orphelin : lorsque l'une des \u00e9quipes se retrouve soudainement surcharg\u00e9e, la direction dit : \u00ab Transf\u00e9rons ce service de cette \u00e9quipe \u00e0 une autre \u00e9quipe, qui a moins de charge de travail \u00bb. Et ensuite, nous transf\u00e9rons \u00e0 une troisi\u00e8me \u00e9quipe et changeons le responsable. Et au final, nous avons encore un orphelin.<\/p>\n<h3><b>Quel est le probl\u00e8me avec les orphelins ?<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/009170e7989a78e8bd9f5b7b364e358c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPour ceux qui ne le savent pas, il s'agit du navire de ligne Wasa, construit en Su\u00e8de, c\u00e9l\u00e8bre pour avoir coul\u00e9 cinq minutes apr\u00e8s son lancement. Et le roi de Su\u00e8de, d'ailleurs, n'a ex\u00e9cut\u00e9 personne pour cela. Il a \u00e9t\u00e9 construit par deux g\u00e9n\u00e9rations d'ing\u00e9nieurs qui ne savaient pas construire de tels navires. Un effet pr\u00e9visible.<\/p>\n<p>Le navire aurait pu couler, d'ailleurs, beaucoup plus mal, par exemple lorsque le roi serait d\u00e9j\u00e0 \u00e0 bord en pleine temp\u00eate. Ainsi, il a coul\u00e9 imm\u00e9diatement, ce qui est bon en agile \u2014 \u00e9chouer t\u00f4t. <\/p>\n<p>Si nous avons \u00e9chou\u00e9 t\u00f4t, il n'y a g\u00e9n\u00e9ralement pas de probl\u00e8mes. Par exemple, lors de la r\u00e9ception, nous avons envoy\u00e9 pour retouches. Mais si nous \u00e9chouons d\u00e9j\u00e0 en production, lorsque des investissements ont \u00e9t\u00e9 r\u00e9alis\u00e9s, cela peut poser des probl\u00e8mes. Des cons\u00e9quences, comme on les appelle dans le monde des affaires.<\/p>\n<p>Quels sont les dangers des services orphelins :<\/p>\n<ul>\n<li>Le service peut tomber en panne soudainement. <\/li>\n<li>Le service prend du temps \u00e0 \u00eatre r\u00e9par\u00e9 ou ne l'est pas du tout. <\/li>\n<li>Probl\u00e8mes de s\u00e9curit\u00e9. <\/li>\n<li>Probl\u00e8mes de retouches et de mises \u00e0 jour. <\/li>\n<li>Si un service important tombe en panne, la r\u00e9putation de l'entreprise en souffre. <\/li>\n<\/ul>\n<p><\/p>\n<h3><b>Que faire des services orphelins ?<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/094444a042ccf12bf4c9e166c3fffe47.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJe r\u00e9p\u00e8te encore une fois ce qu'il faut faire. Tout d'abord, il doit y avoir de la documentation. Mes sept ann\u00e9es chez Banki.ru m'ont appris que les testeurs ne doivent pas croire sur parole les d\u00e9veloppeurs, et que l'exploitation ne doit pas croire sur parole qui que ce soit. Il faut v\u00e9rifier. <\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/23d652f96e93eb52d9172b103121fe54.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDeuxi\u00e8mement, il est n\u00e9cessaire d'\u00e9crire des sch\u00e9mas d'interaction, car il arrive que des services, qui ne sont pas tr\u00e8s bien accept\u00e9s, contiennent des d\u00e9pendances qui n'ont \u00e9t\u00e9 r\u00e9v\u00e9l\u00e9es \u00e0 personne. Par exemple, les d\u00e9veloppeurs ont connect\u00e9 le service \u00e0 leur cl\u00e9 pour des cartes Yandex ou \u00e0 Dadata. Votre quota gratuit est \u00e9puis\u00e9, tout s'arr\u00eate et vous ne savez pas du tout ce qui s'est pass\u00e9. Tous ces pi\u00e8ges doivent \u00eatre d\u00e9crits : le service utilise Dadata, Sms, ou autre chose.<\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/b2770a07cf265ad8a3890b2cb2f62263.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTroisi\u00e8mement, il s'agit de travailler sur la dette technique. Lorsque vous cr\u00e9ez des solutions temporaires ou adoptez un service en disant que quelque chose doit \u00eatre fait, il faut suivre pour s'assurer que cela se r\u00e9alise. Parce qu'il peut s'av\u00e9rer qu'un petit trou n'est pas si petit, et que vous pouvez y tomber.<\/p>\n<p>Nous avons eu une histoire avec les probl\u00e8mes d'architecture concernant Sphinx. Dans l'un des services, Sphinx \u00e9tait utilis\u00e9 pour entrer des listes. Simplement une liste avec une pagination, mais il \u00e9tait r\u00e9index\u00e9 chaque nuit. Il \u00e9tait constitu\u00e9 de deux index : un index grand qui \u00e9tait r\u00e9index\u00e9 chaque nuit, et un petit index qui lui \u00e9tait associ\u00e9. Chaque jour, avec une probabilit\u00e9 de 50%, soit \u00e7a fonctionnait, soit non, lors du d\u00e9ploiement, l'index se cassait et les actualit\u00e9s cessaient de se mettre \u00e0 jour sur la page d'accueil. Au d\u00e9but, cela prenait 5 minutes tant que l'index \u00e9tait r\u00e9index\u00e9, puis l'index a grossi, et \u00e0 un moment donn\u00e9, il a commenc\u00e9 \u00e0 se r\u00e9indexer pendant 40 minutes. Lorsque nous avons \u00e9limin\u00e9 cela, nous avons pouss\u00e9 un soupir de soulagement, car il \u00e9tait clair qu'il ne faudrait pas longtemps avant que nous ayons un index qui se r\u00e9indexerait pendant une journ\u00e9e de travail compl\u00e8te. Ce serait un \u00e9chec pour notre portail, huit heures sans nouvelles \u2014 c'est tout, les affaires s'arr\u00eatent.<\/p>\n<h3><b>Plan de travail avec le service orphelin<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/f072ec872d59de058faf1994ac39f161.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn r\u00e9alit\u00e9, c'est tr\u00e8s difficile \u00e0 faire, car le DevOps concerne la communication. On a envie d'\u00eatre en bonnes relations avec ses coll\u00e8gues, mais lorsque vous frappez vos coll\u00e8gues et managers avec des r\u00e8glements, ils peuvent \u00e9prouver des sentiments contradictoires envers ceux qui agissent ainsi. <\/p>\n<p>En plus de tous ces points, il y a une chose importante : pour chaque service sp\u00e9cifique, pour chaque partie sp\u00e9cifique du processus de d\u00e9ploiement, des personnes sp\u00e9cifiques doivent \u00eatre responsables. Quand ces personnes ne sont pas disponibles et qu'il faut faire appel \u00e0 d'autres, \u00e9tudier tout cela devient compliqu\u00e9.<\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/28e7372012d5089d3ac1be3d7dc97e03.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSi tout cela n'a pas aid\u00e9 et que le service orphelin reste toujours sans preneur, que personne ne veut l'adopter, que la documentation n'est pas \u00e9crite, et que l'\u00e9quipe qui a \u00e9t\u00e9 affect\u00e9e \u00e0 ce service refuse de faire quoi que ce soit, il y a une solution simple : tout recommencer. <\/p>\n<p>C'est-\u00e0-dire que vous prenez les exigences du service \u00e0 nouveaux et vous \u00e9crivez un nouveau service, meilleur, sur une meilleure plateforme, sans solutions technologiques \u00e9tranges. Et vous migrez vers lui en production. <\/p>\n<p><img decoding=\"async\" alt=\"Services orphelins : le revers de l&#039;architecture (micro)services\" src=\"\/wp-content\/uploads\/2019\/10\/63d0bf7d9ac1e5c5b00b67b519e228a1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNous avons eu une situation o\u00f9 nous avons repris un service sur Yii 1 et compris que nous ne pouvions pas le d\u00e9velopper davantage, car nous n'avions plus de d\u00e9veloppeurs capables d'\u00e9crire correctement en Yii 1. Tous les d\u00e9veloppeurs ma\u00eetrisent bien Symfony 3. Que faire ? Nous avons allou\u00e9 du temps, constitu\u00e9 une \u00e9quipe, d\u00e9sign\u00e9 un manager, r\u00e9\u00e9crit le projet et lentement redirig\u00e9 le trafic vers lui. <\/p>\n<p>Apr\u00e8s cela, l'ancien service peut \u00eatre supprim\u00e9. C'est ma proc\u00e9dure pr\u00e9f\u00e9r\u00e9e, lorsque l'on doit retirer un service du syst\u00e8me de gestion de configuration et ensuite v\u00e9rifier que toutes les machines en production ont \u00e9t\u00e9 \u00e9teintes, pour qu'aucune trace ne reste chez les d\u00e9veloppeurs. Le d\u00e9p\u00f4t dans git reste.<\/p>\n<p>Voil\u00e0 tout ce que je voulais dire, je suis pr\u00eat \u00e0 discuter, c'est un sujet pol\u00e9mique, beaucoup y ont \u00e9t\u00e9 impliqu\u00e9s. <\/p>\n<p><b>Dans les diapositives, il \u00e9tait question de l'unification des langages. Un exemple \u00e9tait le redimensionnement des images. Est-il vraiment n\u00e9cessaire de se limiter \u00e0 un seul langage ? Parce que le redimensionnement d'une image en PHP, eh bien, cela aurait vraiment pu \u00eatre fait en Golang.<\/b><\/p>\n<p>En r\u00e9alit\u00e9, ce n'est pas n\u00e9cessaire, comme toutes les pratiques. Dans certains cas, cela peut m\u00eame \u00eatre ind\u00e9sirable. Mais il faut comprendre que si vous avez dans votre entreprise un service technique de 50 personnes, dont 45 sont des d\u00e9veloppeurs PHP, 3 autres sont des DevOps ma\u00eetrisant Python, Ansible, Puppet et d'autres outils, et qu'un seul d'entre eux \u00e9crit un service de redimensionnement d'images en Go, alors, lorsqu'il part, son expertise part avec lui. Et vous devrez chercher un d\u00e9veloppeur sp\u00e9cifique sur le march\u00e9 qui conna\u00eet ce langage, surtout s'il est rare. Donc, d'un point de vue organisationnel, c'est probl\u00e9matique. D'un point de vue DevOps, vous devez non seulement cloner un ensemble de playbooks que vous utilisez pour d\u00e9ployer des services, mais vous devrez les \u00e9crire \u00e0 nouveau. <\/p>\n<p>Nous d\u00e9veloppons actuellement un service en Node.js, et ce sera en fait un espace s\u00e9par\u00e9 pour chaque d\u00e9veloppeur avec un langage distinct. Mais nous avons r\u00e9fl\u00e9chi et d\u00e9cid\u00e9 que le jeu en valait la chandelle. C'est donc un point \u00e0 m\u00e9diter.<\/p>\n<p><b>Comment surveillez-vous vos services ? Comment collectez-vous et suivez-vous les logs ?<\/b><\/p>\n<p>Nous collectons les logs dans Elasticsearch et les stockons dans Kibana, et selon qu'il s'agit d'environnements de production ou de test, diff\u00e9rents collecteurs sont utilis\u00e9s. Parfois Lumberjack, parfois d'autres outils, je ne me souviens plus. Et il y a aussi certains endroits dans certains services o\u00f9 nous installons Telegraf et les envoyons ailleurs s\u00e9par\u00e9ment. <\/p>\n<p><b>Comment vivre avec Puppet et Ansible dans un m\u00eame environnement ?<\/b><\/p>\n<p>En r\u00e9alit\u00e9, nous avons actuellement deux environnements, l'un avec Puppet, l'autre avec Ansible. Nous travaillons pour les hybrider. Ansible est un bon environnement pour la configuration initiale, Puppet est une solution moins ad\u00e9quate pour cela, car il n\u00e9cessite une intervention manuelle directe avec la plateforme, et Puppet garantit la convergence de la configuration. Cela signifie que la plateforme se maintient \u00e0 jour par elle-m\u00eame, tandis que pour qu'une machine g\u00e9r\u00e9e par Ansible reste \u00e0 jour, il faut ex\u00e9cuter les playbooks \u00e0 intervalles r\u00e9guliers. Voil\u00e0 la diff\u00e9rence. <\/p>\n<p><b>Comment maintenez-vous la compatibilit\u00e9 ? Avez-vous des configurations \u00e0 la fois dans Ansible et Puppet ?<\/b><\/p>\n<p>C'est notre grande douleur, nous assurons la compatibilit\u00e9 manuellement et r\u00e9fl\u00e9chissons \u00e0 comment tout cela pourrait \u00eatre migr\u00e9 ailleurs. Nous avons Puppet qui d\u00e9ploie des paquets et maintient certains liens, tandis qu'Ansible, par exemple, d\u00e9ploie du code et ajuste les configurations appliqu\u00e9es.<\/p>\n<p><b>La pr\u00e9sentation parlait des diff\u00e9rentes versions de Ruby. Quelle est la solution ?<\/b><\/p>\n<p>Nous avons d\u00e9j\u00e0 rencontr\u00e9 cela \u00e0 un moment donn\u00e9, et nous devons constamment y penser. Nous avons simplement d\u00e9sactiv\u00e9 la partie qui fonctionnait sur cette version de Ruby incompatible avec les applications, et nous l'avons maintenue s\u00e9par\u00e9ment. <\/p>\n<blockquote><p> Cette ann\u00e9e la conf\u00e9rence <noindex><a rel=\"nofollow\" href=\"http:\/\/devopsdays.ru\/?utm_source=habr&amp;utm_medium=social&amp;utm_campaign=dod-2019&amp;utm_content=post3\">DevOpsDays Moscou<\/a><\/noindex> aura lieu le 7 d\u00e9cembre au \u00ab Technopolis \u00bb. Nous acceptons les soumissions de pr\u00e9sentations jusqu'au 11 novembre. <noindex><a rel=\"nofollow\" href=\"http:\/\/devopsdays.ru\/?utm_source=habr&amp;utm_medium=social&amp;utm_campaign=dod-2019&amp;utm_content=post3\">\u00c9crivez-nous<\/a><\/noindex> si vous souhaitez prendre la parole.<\/p>\n<p>L'inscription des participants est ouverte, rejoignez-nous ! \n<\/p><\/blockquote>\n<p>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/scienceman_events\/blog\/471146\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440 \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u0440\u0442\u0430\u043b\u0430 Banki.ru \u0410\u043d\u0434\u0440\u0435\u0439 \u041d\u0438\u043a\u043e\u043b\u044c\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e\u0434\u043d\u0435\u0439 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 DevOpsDays Moscow \u043f\u0440\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u044b-\u0441\u0438\u0440\u043e\u0442\u044b: \u043a\u0430\u043a \u043e\u043f\u043e\u0437\u043d\u0430\u0442\u044c \u0441\u0438\u0440\u043e\u0442\u0443 \u0432 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435, \u0447\u0435\u043c \u043f\u043b\u043e\u0445\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u044b-\u0441\u0438\u0440\u043e\u0442\u044b, \u0447\u0442\u043e \u0441 \u043d\u0438\u043c\u0438 \u0434\u0435\u043b\u0430\u0442\u044c, \u0438 \u043a\u0430\u043a \u0431\u044b\u0442\u044c, \u0435\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442. \u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u043e\u043a\u043b\u0430\u0434\u0430. \u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u043a\u043e\u043b\u043b\u0435\u0433\u0438! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0410\u043d\u0434\u0440\u0435\u0439, \u044f \u0440\u0443\u043a\u043e\u0432\u043e\u0436\u0443 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0435\u0439 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Banki.ru. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":29246,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-38981","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440 \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u0440\u0442\u0430\u043b\u0430 Banki.ru \u0410\u043d\u0434\u0440\u0435\u0439 \u041d\u0438\u043a\u043e\u043b\u044c\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e\u0434\u043d\u0435\u0439 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0435\u0440\u0432\u0438\u0441\u044b-\u0441\u0438\u0440\u043e\u0442\u044b: \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 (\u043c\u0438\u043a\u0440\u043e)\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440 \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u0440\u0442\u0430\u043b\u0430 Banki.ru \u0410\u043d\u0434\u0440\u0435\u0439 \u041d\u0438\u043a\u043e\u043b\u044c\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e\u0434\u043d\u0435\u0439 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:27:10+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:27:10+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Services orphelins : le revers de l'architecture microservices | ProHoster","description":"Le directeur de l'exploitation du portail Banki.ru, Andre\u00ef Nikolsky, a pris la parole lors de la conf\u00e9rence de l'ann\u00e9e derni\u00e8re","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0435\u0440\u0432\u0438\u0441\u044b-\u0441\u0438\u0440\u043e\u0442\u044b: \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 (\u043c\u0438\u043a\u0440\u043e)\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b | ProHoster","og:description":"\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440 \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u0440\u0442\u0430\u043b\u0430 Banki.ru \u0410\u043d\u0434\u0440\u0435\u0439 \u041d\u0438\u043a\u043e\u043b\u044c\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e\u0434\u043d\u0435\u0439 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438","og:url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:27:10+00:00","article:modified_time":"2019-10-31T19:27:10+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"38981","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 00:15:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:59:27","updated":"2026-01-24 00:15:21","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/38981","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=38981"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/38981\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/29246"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=38981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=38981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=38981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}