{"id":38747,"date":"2019-10-31T22:25:42","date_gmt":"2019-10-31T19:25:42","guid":{"rendered":"https:\/\/prohoster.info\/blog\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp\/"},"modified":"2019-10-31T22:25:42","modified_gmt":"2019-10-31T19:25:42","slug":"infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp","title":{"rendered":"Infrastructure as Code : comment surmonter les probl\u00e8mes avec XP","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Bonjour, Habr ! Auparavant, je me plaignais de vivre dans la paradigme de l'Infrastructure as Code sans proposer de solutions pour la situation actuelle. Aujourd'hui, je suis de retour pour partager des approches et des pratiques qui peuvent nous sortir du d\u00e9sespoir et orienter la situation dans la bonne direction. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code : comment surmonter les probl\u00e8mes avec XP\" src=\"\/wp-content\/uploads\/2019\/10\/e23fbf20980e731ae1cdb4719c97eb00.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nDans l'article pr\u00e9c\u00e9dent <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/465137\/\">\u00ab Infrastructure as Code : premi\u00e8re acquaintance \u00bb<\/a><\/noindex> J'ai partag\u00e9 mes impressions sur ce domaine, tent\u00e9 de r\u00e9fl\u00e9chir \u00e0 la situation actuelle et m\u00eame sugg\u00e9r\u00e9 que les pratiques standards, connues de tous les d\u00e9veloppeurs, pourraient aider. On aurait pu croire qu'il y avait beaucoup de plaintes sur la vie, mais peu de propositions pour sortir de cette situation. <\/p>\n<h2>Qui nous sommes, o\u00f9 nous nous trouvons et quels sont nos probl\u00e8mes<\/h2>\n<p>\nNous faisons partie de l'\u00e9quipe SRE Onboarding, qui se compose de six programmeurs et de trois ing\u00e9nieurs en infrastructure. Nous essayons tous d'\u00e9crire Infrastructure as Code (IaC). Nous le faisons parce que nous savons en principe \u00e9crire du code et que nous avons un pass\u00e9 de d\u00e9veloppeurs de niveau 'au-dessus de la moyenne'. <\/p>\n<ul>\n<li>Nous avons un certain nombre d'avantages : un certain dipl\u00f4me, la connaissance des pratiques, la capacit\u00e9 d'\u00e9crire du code et l'envie d'apprendre de nouvelles choses. <\/li>\n<li>Et il y a une lacune, qui est un inconv\u00e9nient : un manque de connaissances sur les fondamentaux de l'infrastructure. <\/li>\n<\/ul>\n<p>\n<b class=\"spoiler_title\">La pile technologique que nous utilisons dans notre IaC.<\/b><\/p>\n<ul>\n<li>Terraform pour cr\u00e9er des ressources.<\/li>\n<li>Packer pour la cr\u00e9ation d'images. Ce sont des images Windows et CentOS 7.<\/li>\n<li>Jsonnet pour cr\u00e9er des constructions puissantes dans drone.io, ainsi que pour g\u00e9n\u00e9rer du JSON Packer et nos modules Terraform.<\/li>\n<li>Azure.<\/li>\n<li>Ansible lors de la pr\u00e9paration des images.<\/li>\n<li>Python pour les services auxiliaires, ainsi que pour les scripts de provisionnement.<\/li>\n<li>Et tout cela dans VSCode avec des plugins partag\u00e9s entre les membres de l'\u00e9quipe.<\/li>\n<\/ul>\n<p>Le r\u00e9sultat de mon <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/465137\/\">dernier article<\/a><\/noindex> \u00e9tait le suivant : j'ai tent\u00e9 d'insuffler (en premier lieu \u00e0 moi-m\u00eame) de l'optimisme, je voulais dire que nous allions essayer les approches et pratiques connues pour surmonter les difficult\u00e9s et les complexit\u00e9s pr\u00e9sentes dans ce domaine. <\/p>\n<p>Actuellement, nous faisons face \u00e0 ces probl\u00e8mes d'IaC :<\/p>\n<ul>\n<li>L'imperfection des outils et des moyens de d\u00e9veloppement de code.<\/li>\n<li>D\u00e9ploiement lent. L'infrastructure fait partie du monde r\u00e9el, et celui-ci peut \u00eatre lent.<\/li>\n<li>Manque d'approches et de pratiques.<\/li>\n<li>Nous sommes nouveaux et savons peu de choses.<\/li>\n<\/ul>\n<p><\/p>\n<h2>La programmation extr\u00eame (XP) vient \u00e0 la rescousse<\/h2>\n<p>\nTous les d\u00e9veloppeurs connaissent bien la programmation extr\u00eame (XP) et les pratiques qui l'accompagnent. Beaucoup d'entre nous ont travaill\u00e9 selon cette approche, et elle a \u00e9t\u00e9 fructueuse. Alors, pourquoi ne pas profiter des principes et des pratiques \u00e9tablis pour surmonter les difficult\u00e9s d'infrastructure ? Nous avons d\u00e9cid\u00e9 d'appliquer cette approche et de voir ce que cela donnerait.<\/p>\n<p><b class=\"spoiler_title\">V\u00e9rifier l'applicabilit\u00e9 de l'approche XP \u00e0 votre domaine<\/b>Voici la description de l'environnement pour lequel XP convient bien, et comment cela se rapporte \u00e0 nous : <\/p>\n<p>1. Exigences logicielles changeant dynamiquement. Nous avions une id\u00e9e claire de notre objectif final. Mais les d\u00e9tails peuvent varier. Nous d\u00e9cidons nous-m\u00eames de notre orientation, donc les exigences changent p\u00e9riodiquement (g\u00e9n\u00e9ralement par nos propres d\u00e9cisions). Dans le cas d'une \u00e9quipe SRE qui automatise elle-m\u00eame et limite \u00e9galement les exigences et le p\u00e9rim\u00e8tre de travail, ce point s'applique favorablement. <\/p>\n<p>2. Risques caus\u00e9s par des projets \u00e0 dur\u00e9e fixe utilisant de nouvelles technologies. Nous pouvons rencontrer des risques avec des choses qui ne nous sont pas famili\u00e8res. Et c'est 100 % notre cas. L'ensemble de notre projet repose sur l'utilisation de technologies dont nous n'avions pas une connaissance approfondie. En effet, c'est un probl\u00e8me constant, car de nombreuses nouvelles technologies apparaissent sans cesse dans le domaine de l'infrastructure. <\/p>\n<p>3,4. \u00c9quipe de d\u00e9veloppement \u00e9tendue, petite et co-localis\u00e9e. La technologie que vous utilisez permet des tests unitaires et fonctionnels automatis\u00e9s. Ces deux points ne s'appliquent pas vraiment \u00e0 nous. Tout d'abord, nous ne sommes pas une \u00e9quipe co-localis\u00e9e, et ensuite, nous sommes neuf, ce qui peut \u00eatre consid\u00e9r\u00e9 comme une grande \u00e9quipe. Bien que, selon certaines d\u00e9finitions, une \u00ab grande \u00bb \u00e9quipe commence \u00e0 partir de 14 personnes. <\/p>\n<p>Examinons certaines pratiques de XP et comment elles influencent la rapidit\u00e9 et la qualit\u00e9 des retours.<\/p>\n<h4>Le principe du cycle de retour d'exp\u00e9rience en XP<\/h4>\n<p>\n\u00c0 mon avis, le retour d'exp\u00e9rience est la r\u00e9ponse \u00e0 la question, fais-je les choses correctement, allons-nous dans la bonne direction ? En XP, il y a ce sch\u00e9ma divin : le cycle de retour d'exp\u00e9rience dans le temps. L'int\u00e9r\u00eat r\u00e9side dans le fait que plus nous sommes en bas, plus nous avons la possibilit\u00e9 de recevoir des retours rapidement pour r\u00e9pondre aux questions n\u00e9cessaires. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code : comment surmonter les probl\u00e8mes avec XP\" src=\"\/wp-content\/uploads\/2019\/10\/e381fb2d7937cbd1978fd6740e63e790.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nC'est un sujet assez int\u00e9ressant \u00e0 discuter, car dans notre industrie informatique, il est possible d'obtenir rapidement des retours. Imaginez \u00e0 quel point il est douloureux de travailler sur un projet pendant six mois et de d\u00e9couvrir ensuite qu'une erreur a \u00e9t\u00e9 commise d\u00e8s le d\u00e9but. Cela arrive aussi bien dans la conception que dans la construction de syst\u00e8mes complexes. <\/p>\n<p>Dans notre cas, l'IaC nous aide avec le retour d'information. Je vais imm\u00e9diatement apporter un petit ajustement au sch\u00e9ma ci-dessus : le plan de publication ne se fait pas sur un cycle mensuel, mais plusieurs fois par jour. \u00c0 ce cycle, certaines pratiques sont associ\u00e9es, que nous examinerons en d\u00e9tail.<\/p>\n<blockquote><p>Important : le retour d'information peut r\u00e9soudre tous les probl\u00e8mes mentionn\u00e9s ci-dessus. En combinaison avec les pratiques XP, il peut sortir du gouffre du d\u00e9sespoir.<\/p><\/blockquote>\n<p><\/p>\n<h2>Comment se sortir du gouffre du d\u00e9sespoir : trois pratiques<\/h2>\n<p><\/p>\n<h4>Tests <\/h4>\n<p>\nLes tests sont mentionn\u00e9s deux fois dans le cycle de retour d'information XP. Ce n'est pas par hasard. Ils sont extr\u00eamement importants pour toute la technique de programmation extr\u00eame. <\/p>\n<p>Il est suppos\u00e9 que vous avez des tests unitaires et d'acceptation. Les premiers vous donnent un retour en quelques minutes, les autres en quelques jours, car ils sont \u00e9crits plus longtemps, mais ex\u00e9cut\u00e9s moins fr\u00e9quemment. <\/p>\n<p>Il existe une pyramide classique des tests qui montre qu'il doit y avoir plus de certains tests. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code : comment surmonter les probl\u00e8mes avec XP\" src=\"\/wp-content\/uploads\/2019\/10\/29f3217f11b67378c9c0c3f14fab9d61.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nComment ce sch\u00e9ma s'applique-t-il \u00e0 notre projet IaC ? En r\u00e9alit\u00e9... pas du tout. <\/p>\n<ul>\n<li>Malgr\u00e9 le fait qu'il devrait y avoir beaucoup de tests unitaires, il ne peut pas y en avoir trop. Soit ils testent quelque chose de mani\u00e8re tr\u00e8s indirecte. En fait, on peut dire qu'on n'en \u00e9crit pratiquement pas. Mais voici quelques applications pour de tels tests que nous avons tout de m\u00eame pu r\u00e9aliser :\n<ol>\n<li>Test du code en jsonnet. C'est, par exemple, notre pipeline de construction dans drone, qui est assez complexe. Le code en jsonnet est bien couvert par des tests. <br \/>\n Nous utilisons ce <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/yugui\/jsonnetunit\">Cadre de test unitaire pour Jsonnet<\/a><\/noindex>. <\/li>\n<li> Tests sur des scripts qui s'ex\u00e9cutent au d\u00e9marrage de la ressource. Scripts en Python, donc des tests peuvent \u00e9galement \u00eatre \u00e9crits pour eux.<\/li>\n<\/ol>\n<\/li>\n<li>Il est potentiellement possible de v\u00e9rifier la configuration dans les tests, mais nous ne le faisons pas. Il y a aussi la possibilit\u00e9 de configurer la v\u00e9rification des r\u00e8gles de configuration des ressources via <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wata727\/tflint\">tflint<\/a><\/noindex>. Cependant, pour Terraform, il y a trop de v\u00e9rifications basiques, mais beaucoup de sc\u00e9narios de v\u00e9rification sont \u00e9crits pour AWS. Et nous sommes sur Azure, donc cela ne convient encore pas.<\/li>\n<li>Tests d'int\u00e9gration des composants : cela d\u00e9pend de la mani\u00e8re dont vous les classifiez et les structurez. Mais en principe, ils fonctionnent.\n<p>Voici \u00e0 quoi ressemblent les tests d'int\u00e9gration. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code : comment surmonter les probl\u00e8mes avec XP\" src=\"\/wp-content\/uploads\/2019\/10\/b4771e9e5d329ffb2ba565ead7fdddfd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nC'est un exemple lors de la construction d'images dans Drone CI. Pour y parvenir, il faut attendre 30 minutes que l'image Packer se construise, puis encore 15 minutes pour qu'elles passent. Mais elles existent ! <\/p>\n<p><b class=\"spoiler_title\">Algorithme de v\u00e9rification des images<\/b> <\/p>\n<ol>\n<li>Tout d'abord, Packer doit pr\u00e9parer compl\u00e8tement l'image.<\/li>\n<li>\u00c0 c\u00f4t\u00e9 du test, il y a Terraform avec un \u00e9tat local qui nous permet de d\u00e9ployer cette image. <\/li>\n<li>Lors du d\u00e9ploiement, un petit module, plac\u00e9 \u00e0 proximit\u00e9, est utilis\u00e9 pour faciliter le travail avec l'image. <\/li>\n<li>Lorsque la VM est d\u00e9ploy\u00e9e \u00e0 partir de l'image, nous pouvons commencer les v\u00e9rifications. En g\u00e9n\u00e9ral, les tests sont effectu\u00e9s sur la machine. Nous v\u00e9rifions comment les scripts ont fonctionn\u00e9 au d\u00e9marrage et comment les d\u00e9mons fonctionnent. Pour cela, nous acc\u00e9dons \u00e0 la machine r\u00e9cemment lev\u00e9e via SSH ou WinRM, et v\u00e9rifions l'\u00e9tat de la configuration ou si les services sont actifs.<\/li>\n<\/ol>\n<p>\n <\/li>\n<li>Une situation similaire s'applique aux tests d'int\u00e9gration et aux modules pour Terraform. Voici un tableau r\u00e9capitulatif expliquant les particularit\u00e9s de ces tests.\n<p><img decoding=\"async\" alt=\"Infrastructure as Code : comment surmonter les probl\u00e8mes avec XP\" src=\"\/wp-content\/uploads\/2019\/10\/e2624fb97831701e374a7e8e7fe39a16.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLe retour sur le pipeline prend environ 40 minutes. Tout se passe tr\u00e8s lentement. On peut l'utiliser pour des tests de r\u00e9gression, mais pour un nouveau d\u00e9veloppement, c'est pratiquement irr\u00e9aliste. Si l'on se pr\u00e9pare vraiment tr\u00e8s bien, en pr\u00e9parant des scripts d'ex\u00e9cution, cela peut \u00eatre r\u00e9duit \u00e0 10 minutes. Mais ce n'est pas pour autant des tests unitaires, qui en 5 secondes peuvent en ex\u00e9cuter 100. <\/li>\n<\/ul>\n<p>\nL'absence de tests unitaires lors de la construction d'images ou de modules Terraform incite \u00e0 d\u00e9l\u00e9guer le travail \u00e0 des services distincts, que l'on peut simplement interroger via REST, ou \u00e0 des scripts Python.<\/p>\n<p>Par exemple, nous devions faire en sorte que, lors du d\u00e9marrage de la machine virtuelle, elle s'enregistre dans le service <noindex><a rel=\"nofollow\" href=\"https:\/\/www.scaleft.com\/\">ScaleFT<\/a><\/noindex>, et qu'\u00e0 la destruction de la VM, elle se supprime elle-m\u00eame.<\/p>\n<p>Comme ScaleFT est un service, nous devons interagir avec lui via l'API. Une couche a \u00e9t\u00e9 \u00e9crite pour que l'on puisse simplement dire : \u00ab Va et supprime tel ou tel \u00e9l\u00e9ment \u00bb. Elle conserve tous les param\u00e8tres et acc\u00e8s n\u00e9cessaires. <\/p>\n<p>Nous pouvons d\u00e9j\u00e0 \u00e9crire des tests appropri\u00e9s, car cela ne diff\u00e8re en rien d'un logiciel ordinaire : on simule un API, on l'interroge et on observe ce qui se passe. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code : comment surmonter les probl\u00e8mes avec XP\" src=\"\/wp-content\/uploads\/2019\/10\/dc17aaa64038acb080669d31fe8ecfe0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<blockquote><p>R\u00e9sultats des tests : Les tests unitaires, qui devraient \u00eatre effectu\u00e9s par l'OS en une minute, ne le sont pas. Des niveaux de tests plus \u00e9lev\u00e9s dans la pyramide sont efficaces, mais ne couvrent qu'une partie des probl\u00e8mes. <\/p><\/blockquote>\n<h4>Programmation en bin\u00f4me<\/h4>\n<p>\nLes tests, c'est bien s\u00fbr important. On peut en \u00e9crire beaucoup, il en existe de diff\u00e9rents types. Ils fonctionneront \u00e0 leurs niveaux respectifs et nous fourniront des retours d'information. Cependant, le probl\u00e8me avec les mauvais tests unitaires, qui offrent le syst\u00e8me d'exploitation le plus rapide, persiste. Malgr\u00e9 cela, on aspire toujours \u00e0 un syst\u00e8me d'exploitation performant, avec lequel il est facile et agr\u00e9able de travailler, sans parler de la qualit\u00e9 de la solution obtenue. Heureusement, il existe des techniques permettant de donner un feedback encore plus rapide que les tests unitaires. C'est l\u00e0 que le pair programming entre en jeu.<\/p>\n<p>Lors de l'\u00e9criture de code, on souhaite obtenir un retour sur sa qualit\u00e9 aussi rapidement que possible. Oui, on peut tout \u00e9crire dans une branche de fonctionnalit\u00e9 (pour ne d\u00e9ranger personne), faire une demande de tirage sur GitHub, nommer quelqu'un dont l'opinion compte, et attendre une r\u00e9ponse. <\/p>\n<p>Mais l'attente peut \u00eatre longue. Les gens sont tous occup\u00e9s, et m\u00eame si une r\u00e9ponse arrive, elle peut ne pas \u00eatre de la meilleure qualit\u00e9. Supposons que la r\u00e9ponse arrive imm\u00e9diatement, que le r\u00e9viseur saisisse instantan\u00e9ment l'id\u00e9e, mais la r\u00e9ponse arrive tout de m\u00eame avec un retard, a posteriori. Ce qu'on souhaite, c'est de l'avoir plus t\u00f4t. C'est justement l'objectif du pair programming : intervenir imm\u00e9diatement, au moment de l'\u00e9criture.<\/p>\n<p>Voici les styles de pair programming et leur applicabilit\u00e9 dans le travail sur l'Infrastructure as Code (IaC) : <\/p>\n<p><b>1. Classique, Exp\u00e9riment\u00e9 + exp\u00e9riment\u00e9, changement au timer.<\/b> Deux r\u00f4les \u2013 conducteur et navigateur. Deux personnes. Elles travaillent sur le m\u00eame code et \u00e9changent leurs r\u00f4les apr\u00e8s un certain laps de temps d\u00e9fini \u00e0 l'avance. <\/p>\n<p>Examinons la compatibilit\u00e9 de nos probl\u00e8mes avec le style : <\/p>\n<ul>\n<li>Probl\u00e8me : imperfection des outils et des moyens de d\u00e9veloppement du code. <br \/>\nImpact n\u00e9gatif : d\u00e9veloppement plus long, nous ralentissons, ce qui perturbe le rythme de travail.<br \/>\n Comment nous luttons : nous utilisons d'autres outils, une IDE commune et nous apprenons \u00e9galement les raccourcis clavier.<\/li>\n<li> Probl\u00e8me : d\u00e9ploiement lent. <br \/>\nImpact n\u00e9gatif : augmente le temps pour cr\u00e9er un morceau de code fonctionnel. Nous nous ennuyons en attendant, nos mains ont tendance \u00e0 chercher \u00e0 faire autre chose pendant que nous attendons. <br \/>\nComment nous luttons : nous n'avons pas r\u00e9ussi \u00e0 r\u00e9soudre ce probl\u00e8me.<\/li>\n<li> Probl\u00e8me : manque d'approches et de pratiques. <br \/>\nImpact n\u00e9gatif : pas de connaissance sur ce qui est bien fait et ce qui est mal fait. Cela prolonge le temps de retour d'information. <br \/>\nComment nous luttons : l'\u00e9change d'opinions et de pratiques lors du travail en bin\u00f4me r\u00e9sout presque le probl\u00e8me.<\/li>\n<\/ul>\n<p>\nLe principal probl\u00e8me de l'application de ce style en IaC est le rythme de travail irr\u00e9gulier. Dans le d\u00e9veloppement traditionnel de logiciels, tu as un mouvement tr\u00e8s uniforme. Tu peux passer cinq minutes \u00e0 \u00e9crire N, dix minutes \u00e0 \u00e9crire 2N, et quinze minutes \u00e0 \u00e9crire 3N. Ici, tu peux passer cinq minutes \u00e0 \u00e9crire N, puis encore trente minutes \u00e0 \u00e9crire un dixi\u00e8me de N. Ici, tu ne sais rien, tu es bloqu\u00e9, tu \u00e9prouves des difficult\u00e9s. Les clarifications prennent du temps et te d\u00e9tournent de la programmation proprement dite. <\/p>\n<blockquote><p>Conclusion : en l'\u00e9tat, cela ne nous convient pas.<\/p><\/blockquote>\n<p><b>2. Ping-pong. Cette approche suppose qu'un participant \u00e9crit le test, tandis qu'un autre en fait l'impl\u00e9mentation.<\/b> \u00c9tant donn\u00e9 que les tests unitaires sont compliqu\u00e9s, et qu'il faut \u00e9crire un test d'int\u00e9gration qui n\u00e9cessite beaucoup de temps, toute la simplicit\u00e9 du ping-pong dispara\u00eet. <\/p>\n<p>Je peux dire que nous avons essay\u00e9 de diviser les responsabilit\u00e9s entre la conception du sc\u00e9nario de test et l'impl\u00e9mentation du code correspondant. Un participant imaginait le sc\u00e9nario, il \u00e9tait responsable dans cette partie du travail, il avait le dernier mot. L'autre \u00e9tait responsable de l'impl\u00e9mentation. Cela fonctionnait bien. La qualit\u00e9 du sc\u00e9nario augmente avec cette approche. <\/p>\n<blockquote><p>Conclusion : h\u00e9las, le rythme de travail ne permet pas d'utiliser le ping-pong comme pratique de programmation en bin\u00f4me en IaC.<\/p><\/blockquote>\n<p>\n <b>3. Strong Style.<\/b> <noindex><a rel=\"nofollow\" href=\"http:\/\/llewellynfalco.blogspot.com\/2014\/06\/llewellyns-strong-style-pairing.html\">Pratique complexe.<\/a><\/noindex>. L'id\u00e9e est qu'un participant devient le navigateur directif, tandis que l'autre prend le r\u00f4le de pilote ex\u00e9cutant. Dans ce cas, le droit de d\u00e9cision appartient uniquement au navigateur. Le pilote ne fait que taper et peut influencer le d\u00e9roulement par ses mots. Les r\u00f4les ne changent pas pendant longtemps. <\/p>\n<p>Bien adapt\u00e9 pour l'apprentissage, mais n\u00e9cessite de fortes comp\u00e9tences interpersonnelles. C'est \u00e0 ce niveau que nous avons rencontr\u00e9 des difficult\u00e9s. La technique \u00e9tait difficile \u00e0 mettre en \u0153uvre. Et il ne s'agit m\u00eame pas d'infrastructure. <\/p>\n<blockquote><p>Conclusion : potentiellement applicable, nous ne renon\u00e7ons pas \u00e0 nos tentatives.<\/p><\/blockquote>\n<p>\n<b>4. Mobbing, swarming et tous les styles connus, mais non mentionn\u00e9s ici<\/b> ne sont pas consid\u00e9r\u00e9s, car nous ne les avons pas essay\u00e9s et il n'est pas possible d'en parler dans le contexte de notre travail.<\/p>\n<blockquote><p>Bilan g\u00e9n\u00e9ral sur l'utilisation de la programmation en bin\u00f4me :<\/p>\n<ul>\n<li>Nous avons un rythme de travail irr\u00e9gulier qui perturbe.<\/li>\n<li>Nous avons rencontr\u00e9 des comp\u00e9tences interpersonnelles insuffisamment bonnes. Et le domaine d'application ne facilite pas la surmonter de ces d\u00e9fauts.<\/li>\n<li>Les tests longs et les probl\u00e8mes d'outils rendent le d\u00e9veloppement en bin\u00f4me laborieux.<\/li>\n<\/ul>\n<\/blockquote>\n<p><b>5. Cependant, il y a eu des succ\u00e8s. Nous avons invent\u00e9 notre propre m\u00e9thode \u00ab Convergence - Divergence \u00bb.<\/b> Je vais d\u00e9crire bri\u00e8vement comment cela fonctionne. <\/p>\n<p>Nous avons des partenaires r\u00e9guliers pour quelques jours (moins d'une semaine). Nous traitons une t\u00e2che ensemble. Pendant un certain temps, nous sommes ensemble : l'un \u00e9crit, l'autre observe, comme une \u00e9quipe de support. Ensuite, nous nous s\u00e9parons un moment, chacun s'occupe de choses ind\u00e9pendantes, puis nous nous r\u00e9unissons \u00e0 nouveau, nous nous synchronisons tr\u00e8s rapidement, nous faisons quelque chose ensemble et nous nous s\u00e9parons \u00e0 nouveau. <\/p>\n<h4>Planification et communication<\/h4>\n<p>\nLe dernier bloc de pratiques par lequel nous r\u00e9solvons les probl\u00e8mes de l'OS est l'organisation du travail autour des t\u00e2ches elles-m\u00eames. Cela inclut \u00e9galement l'\u00e9change d'exp\u00e9rience qui se d\u00e9roule en dehors du travail en bin\u00f4me. Examinons trois pratiques :<\/p>\n<p><b>1. T\u00e2ches par arbre d'objectifs.<\/b> Nous avons organis\u00e9 la gestion du projet via un arbre qui s'\u00e9tend ind\u00e9finiment dans le futur. Techniquement, la gestion se fait dans Miro. Il y a une t\u00e2che - c'est un objectif interm\u00e9diaire. De celle-ci, il y a soit des objectifs plus petits, soit des groupes de t\u00e2ches. \u00c0 partir de l\u00e0, les t\u00e2ches elles-m\u00eames sont d\u00e9riv\u00e9es. Toutes les t\u00e2ches sont cr\u00e9\u00e9es et g\u00e9r\u00e9es sur ce tableau. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code : comment surmonter les probl\u00e8mes avec XP\" src=\"\/wp-content\/uploads\/2019\/10\/fe601e959f0055de4f7f4c39ae713c31.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCe sch\u00e9ma offre \u00e9galement un retour d'information qui se produit une fois par jour, lorsque nous nous synchronisons lors de r\u00e9unions. Avoir un plan commun, structur\u00e9 et enti\u00e8rement transparent, permet \u00e0 chacun d'\u00eatre au courant de ce qui se passe et des progr\u00e8s r\u00e9alis\u00e9s. <\/p>\n<p>Avantages de la visualisation des t\u00e2ches :<\/p>\n<ul>\n<li>Causalit\u00e9. Chaque t\u00e2che conduit \u00e0 un objectif global. Les t\u00e2ches sont regroup\u00e9es par objectifs plus sp\u00e9cifiques. Le domaine de l'infrastructure est en lui-m\u00eame assez technique. Il n'est pas toujours \u00e9vident de voir quel impact sp\u00e9cifique a, par exemple, la r\u00e9daction d'un guide de migration vers un autre nginx. Avoir une carte d'objectif \u00e0 c\u00f4t\u00e9 rend cela plus clair.<br \/>\n <img decoding=\"async\" alt=\"Infrastructure as Code : comment surmonter les probl\u00e8mes avec XP\" src=\"\/wp-content\/uploads\/2019\/10\/fc4da9d277f7dc186a5710cf2be4419c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n La causalit\u00e9 est une propri\u00e9t\u00e9 importante des t\u00e2ches. Elle r\u00e9pond directement \u00e0 la question : \u00ab Est-ce que je fais bien cela ? \u00bb <\/li>\n<li>Parall\u00e9lisme. Nous sommes neuf personnes, et il est physiquement impossible de se concentrer tous sur une seule t\u00e2che. Il se peut aussi que les t\u00e2ches d'un m\u00eame domaine ne suffisent pas \u00e0 elles seules. Nous sommes contraints de parall\u00e9liser le travail entre de petits groupes de travail. Pendant un certain temps, ces groupes se consacrent \u00e0 leur t\u00e2che, et ils peuvent \u00eatre renforc\u00e9s par d'autres personnes. Des membres de ce groupe de travail peuvent parfois s'absenter. Certains prennent des cong\u00e9s, d'autres pr\u00e9parent une pr\u00e9sentation pour la conf\u00e9rence DevOps conf, ou encore \u00e9crivent un article pour Habr. Il est tr\u00e8s important de savoir quelles objectifs et t\u00e2ches peuvent \u00eatre r\u00e9alis\u00e9s en parall\u00e8le. <\/li>\n<\/ul>\n<p>\n<b>2. Rotations des animateurs des r\u00e9unions du matin.<\/b> Lors des stand-ups, un probl\u00e8me s'est pos\u00e9 : beaucoup de t\u00e2ches sont r\u00e9alis\u00e9es en parall\u00e8le. Parfois, les t\u00e2ches sont faiblement li\u00e9es et il n'y a pas de compr\u00e9hension claire de ce que chacun fait. L'avis d'un autre membre de l'\u00e9quipe est tr\u00e8s important. C'est une information suppl\u00e9mentaire capable de modifier le cours de la r\u00e9solution d'une t\u00e2che. Bien s\u00fbr, il y a g\u00e9n\u00e9ralement quelqu'un d'autre avec toi, mais les conseils et les suggestions ne sont jamais superflus. <\/p>\n<p>Pour am\u00e9liorer cette situation, nous avons appliqu\u00e9 la technique du \u00ab Changement d'animateur du stand-up \u00bb. Maintenant, ils sont tir\u00e9s au sort selon une liste pr\u00e9cise, et cela a un effet positif. Lorsque ton tour arrive, tu es oblig\u00e9 de te plonger et de comprendre ce qui se passe, afin de bien mener la r\u00e9union de scrum. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code : comment surmonter les probl\u00e8mes avec XP\" src=\"\/wp-content\/uploads\/2019\/10\/622973a654ecd3e27a7a366596814ffc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>3. D\u00e9monstration interne.<\/b> L'aide \u00e0 la r\u00e9solution des t\u00e2ches par la programmation en bin\u00f4me, la visualisation sur l'arbre des t\u00e2ches et l'aide lors des scrum-mitings du matin \u2013 c'est bien, mais pas parfait. En bin\u00f4me, vous \u00eates limit\u00e9s par vos propres connaissances. L'arbre des t\u00e2ches aide \u00e0 comprendre globalement qui fait quoi. Mais l'animateur et les coll\u00e8gues lors de la r\u00e9union du matin ne vont pas plonger en profondeur dans vos probl\u00e8mes. Ils peuvent certainement passer quelque chose. <\/p>\n<p>La solution trouv\u00e9e a \u00e9t\u00e9 de d\u00e9montrer le travail r\u00e9alis\u00e9 \u00e0 l'autre et de discuter ensuite. Nous nous r\u00e9unissons une fois par semaine pendant une heure et montrons les d\u00e9tails des solutions aux t\u00e2ches que nous avons r\u00e9alis\u00e9es durant la semaine \u00e9coul\u00e9e. <\/p>\n<p>Lors de la d\u00e9monstration, il faut d\u00e9voiler les d\u00e9tails de la t\u00e2che et montrer imp\u00e9rativement son fonctionnement. <\/p>\n<p><b class=\"spoiler_title\">Le rapport peut \u00eatre fait selon une liste de contr\u00f4le.<\/b>1. Mettez en contexte. D'o\u00f9 provient la t\u00e2che, pourquoi \u00e9tait-elle n\u00e9cessaire ?<\/p>\n<p>2. Comment la t\u00e2che \u00e9tait-elle r\u00e9solue auparavant ? Par exemple, il fallait cliquer massivement avec la souris, ou bien il n'\u00e9tait pas possible de faire quoi que ce soit.<\/p>\n<p>3. Comment nous am\u00e9liorons cela. Par exemple : \u00ab Regardez, maintenant, il y a un petit script, voici le readme \u00bb.<\/p>\n<p>4. Montrez comment cela fonctionne. Id\u00e9alement, r\u00e9alisez un sc\u00e9nario utilisateur concret. Je veux X, je fais Y, je vois Z (ou quelque chose d'\u00e9quivalent). Par exemple, je d\u00e9ploie NGINX, je consulte l'URL, et je re\u00e7ois un 200 OK. Si l'action prend du temps, pr\u00e9parez-la \u00e0 l'avance pour pouvoir la montrer. Id\u00e9alement, ne cassez pas n\u00e9cessairement le syst\u00e8me dans l'heure qui pr\u00e9c\u00e8de la d\u00e9monstration, surtout si c'est fragile.<\/p>\n<p>5. Expliquez \u00e0 quel point le probl\u00e8me a \u00e9t\u00e9 bien r\u00e9solu, quelles difficult\u00e9s restent, ce qui n'est pas termin\u00e9, et quelles am\u00e9liorations sont possibles \u00e0 l'avenir. Par exemple, maintenant nous avons des CLI, ensuite il y aura une automatisation compl\u00e8te dans le CI.<\/p>\n<p>Il est souhaitable que chaque intervenant se limite \u00e0 5-10 minutes. Si votre pr\u00e9sentation est particuli\u00e8rement importante et prendra plus de temps, assurez-vous de l'avoir convenu \u00e0 l'avance dans le canal sre-takeover.<\/p>\n<p>Apr\u00e8s la partie en direct, il y a forc\u00e9ment un d\u00e9bat dans le thread. C'est l\u00e0 que nous obtenons le retour d'information n\u00e9cessaire concernant nos t\u00e2ches. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code : comment surmonter les probl\u00e8mes avec XP\" src=\"\/wp-content\/uploads\/2019\/10\/77da888d24b52c7eea7e65d2400e152c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nEn fin de compte, un sondage est effectu\u00e9 pour \u00e9valuer l'utilit\u00e9 de ce qui s'est pass\u00e9. C'est d\u00e9j\u00e0 un retour d'information sur la pertinence de la pr\u00e9sentation et l'importance de la t\u00e2che.<\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code : comment surmonter les probl\u00e8mes avec XP\" src=\"\/wp-content\/uploads\/2019\/10\/7642cd87050171cc4a6bf278329dd283.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Conclusions longues et prochaines \u00e9tapes<\/h2>\n<p>\nIl peut sembler que le ton de l'article soit quelque peu pessimiste. Ce n'est pas le cas. Les deux niveaux de base pour obtenir des retours d'information, \u00e0 savoir les tests et la programmation en bin\u00f4me, fonctionnent. Pas aussi parfaitement que dans le d\u00e9veloppement traditionnel, mais il y a un effet positif. <\/p>\n<p>Les tests, dans leur forme actuelle, n'offrent qu'une couverture partielle du code. De nombreuses fonctions de configuration ne sont pas test\u00e9es. Leur impact direct lors de l'\u00e9criture du code est faible. Cependant, il y a un effet des tests d'int\u00e9gration, et c'est pr\u00e9cis\u00e9ment ce qui permet d'effectuer des refactorings en toute confiance. C'est un grand accomplissement. De plus, avec le recentrage sur le d\u00e9veloppement dans des langages de haut niveau (nous utilisons Python, Go), le probl\u00e8me dispara\u00eet. Pas besoin de nombreuses v\u00e9rifications pour le \"colle\", une int\u00e9gration g\u00e9n\u00e9rale suffit.<\/p>\n<p>Le travail en bin\u00f4me d\u00e9pend davantage des personnes. Il y a le facteur t\u00e2che et nos comp\u00e9tences interpersonnelles. Avec certains, cela se passe tr\u00e8s bien, avec d'autres moins bien. Il est clair qu'il y a certainement un b\u00e9n\u00e9fice. M\u00eame si les r\u00e8gles du travail en bin\u00f4me ne sont pas toujours respect\u00e9es, le simple fait d'accomplir des t\u00e2ches ensemble a un impact positif sur la qualit\u00e9 du r\u00e9sultat. Personnellement, je trouve plus facile et agr\u00e9able de travailler en couple.<\/p>\n<p>Des m\u00e9thodes plus avanc\u00e9es d'influence sur le syst\u00e8me d'exploitation \u2013 la planification et le travail sur les t\u00e2ches \u2013 produisent clairement des effets : un \u00e9change de connaissances de qualit\u00e9 et une am\u00e9lioration de la qualit\u00e9 du d\u00e9veloppement. <\/p>\n<h4>R\u00e9sum\u00e9 court en une ligne <\/h4>\n<p><\/p>\n<ul>\n<li>Les pratiques XP fonctionnent dans l'IaC, mais avec une efficacit\u00e9 moindre.<\/li>\n<li>Renforcez ce qui fonctionne.<\/li>\n<li>Invente tes propres m\u00e9canismes compensatoires et pratiques.<\/li>\n<\/ul>\n<p>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/470620\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0420\u0430\u043d\u044c\u0448\u0435 \u044f \u0436\u0430\u043b\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u0436\u0438\u0437\u043d\u044c \u0432 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0435 Infrastructure as code \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0440\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u0431\u0435\u0437\u0434\u043d\u044b \u043e\u0442\u0447\u0430\u044f\u043d\u0438\u044f \u0438 \u0432\u044b\u0440\u0443\u043b\u0438\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0440\u0443\u0441\u043b\u043e. \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u00abInfrastructure as code: \u043f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e\u00bb \u044f \u0434\u0435\u043b\u0438\u043b\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435\u043c \u043e\u0442 \u044d\u0442\u043e\u0439 \u0441\u0444\u0435\u0440\u044b, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":29066,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-38747","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.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0420\u0430\u043d\u044c\u0448\u0435 \u044f \u0436\u0430\u043b\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u0436\u0438\u0437\u043d\u044c \u0432 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0435 Infrastructure as code \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0441\u0438\u0442\u0443\u0430\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\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\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\udd47Infrastructure as Code: \u043a\u0430\u043a \u043f\u043e\u0431\u043e\u0440\u043e\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e XP | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0420\u0430\u043d\u044c\u0448\u0435 \u044f \u0436\u0430\u043b\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u0436\u0438\u0437\u043d\u044c \u0432 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0435 Infrastructure as code \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp\" \/>\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:25:42+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:25:42+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\udd47Infrastructure as Code : comment surmonter les probl\u00e8mes avec XP | ProHoster","description":"Bonjour, Habr ! Auparavant, je me plaignais de la vie dans la paradigme de l'Infrastructure en tant que code et je n'ai rien propos\u00e9 pour r\u00e9soudre la situation.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp","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\udd47Infrastructure as Code: \u043a\u0430\u043a \u043f\u043e\u0431\u043e\u0440\u043e\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e XP | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0420\u0430\u043d\u044c\u0448\u0435 \u044f \u0436\u0430\u043b\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u0436\u0438\u0437\u043d\u044c \u0432 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0435 Infrastructure as code \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438.","og:url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp","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:25:42+00:00","article:modified_time":"2019-10-31T19:25:42+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"38747","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-23 23:16:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:04:30","updated":"2026-01-23 23:16:19","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\/38747","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=38747"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/38747\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/29066"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=38747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=38747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=38747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}