{"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\/de\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp","title":{"rendered":"Infrastructure as Code: Wie man Probleme mit XP l\u00f6st","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hallo, Habr! Fr\u00fcher habe ich \u00fcber das Leben in der Infrastruktur-als-Code-Perspektive geklagt und nichts zur L\u00f6sung der aktuellen Situation angeboten. Heute bin ich zur\u00fcck, um \u00fcber Ans\u00e4tze und Praktiken zu sprechen, die helfen k\u00f6nnen, aus der Abw\u00e4rtsspirale der Verzweiflung auszubrechen und die Situation in die richtige Richtung zu lenken. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: Wie man Probleme mit XP l\u00f6st\" 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 \/>\nIm vorherigen Artikel <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/465137\/\">\u201eInfrastructure as Code: Erste Begegnung\u201c<\/a><\/noindex> Ich habe meine Eindr\u00fccke aus diesem Bereich geteilt, versucht \u00fcber die aktuelle Lage nachzudenken, und sogar angedeutet, dass die g\u00e4ngigen Praktiken, die allen Entwicklern bekannt sind, hilfreich sein k\u00f6nnten. Es schien, als g\u00e4be es viele Klagen \u00fcber die Lebensbedingungen, aber keine Vorschl\u00e4ge, wie man aus der aktuellen Situation herauskommt. <\/p>\n<h2>Wer wir sind, wo wir sind und welche Probleme wir haben<\/h2>\n<p>\nDerzeit sind wir im SRE Onboarding Team, das aus sechs Programmierern und drei Infrastruktur-Ingenieuren besteht. Wir alle versuchen, Infrastructure as Code (IaC) zu schreiben. Wir tun dies, weil wir im Grunde genommen wissen, wie man Code schreibt und in der Vergangenheit Entwickler auf \"\u00fcberdurchschnittlichem\" Niveau waren. <\/p>\n<ul>\n<li>Wir haben eine Reihe von Vorteilen: einen bestimmten Hintergrund, Kenntnisse \u00fcber Praktiken, die F\u00e4higkeit, Code zu schreiben, und den Wunsch, Neues zu lernen. <\/li>\n<li>Und hier ist der Nachteil: mangelndes Wissen \u00fcber die Materie der Infrastruktur. <\/li>\n<\/ul>\n<p>\n<b class=\"spoiler_title\">Die Technologiestack, den wir in unserem IaC verwenden.<\/b><\/p>\n<ul>\n<li>Terraform zur Erstellung von Ressourcen.<\/li>\n<li>Packer zum Erstellen von Images. Dies sind Windows- und CentOS 7-Images.<\/li>\n<li>Jsonnet, um leistungsstarke Builds in drone.io zu erstellen und unsere Packer-JSON- sowie Terraform-Module zu generieren.<\/li>\n<li>Azure.<\/li>\n<li>Ansible beim Vorbereiten von Images.<\/li>\n<li>Python f\u00fcr unterst\u00fctzende Dienste sowie Provisionierungsskripte.<\/li>\n<li>Und das alles in VSCode mit Plugins, die zwischen den Teammitgliedern geteilt werden.<\/li>\n<\/ul>\n<p>Die Quintessenz aus meinem <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/465137\/\">vorherigen Artikel<\/a><\/noindex> war folgender: Ich wollte (vor allem mir selbst) Optimismus einfl\u00f6\u00dfen, ich wollte sagen, dass wir bew\u00e4hrte Ans\u00e4tze und Methoden ausprobieren werden, um mit den Herausforderungen und Schwierigkeiten in diesem Bereich umzugehen. <\/p>\n<p>Jetzt k\u00e4mpfen wir mit folgenden Problemen in IaC:<\/p>\n<ul>\n<li>Unvollkommenheit der Werkzeuge und der Mittel zur Codeentwicklung.<\/li>\n<li>Langsame Bereitstellung. Infrastruktur ist ein Teil der realen Welt, und diese kann nicht schnell sein.<\/li>\n<li>Mangel an geeigneten Ans\u00e4tzen und Praktiken.<\/li>\n<li>Wir sind neu und wissen noch viel nicht.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Extreme Programmierung (XP) eilt zur Hilfe.<\/h2>\n<p>\nAlle Entwickler sind mit Extreme Programming (XP) und den Praxisans\u00e4tzen vertraut, die damit verbunden sind. Viele von uns haben nach diesem Ansatz gearbeitet, und er war erfolgreich. Warum also nicht die Prinzipien und Praktiken, die dort verwurzelt sind, nutzen, um die Herausforderungen in der Infrastruktur zu meistern? Wir haben beschlossen, diesen Ansatz anzuwenden und zu sehen, was daraus wird.<\/p>\n<p><b class=\"spoiler_title\">\u00dcberpr\u00fcfung der Anwendbarkeit des XP-Ansatzes in Ihrem Bereich<\/b>Hier ist eine Beschreibung der Umgebung, die gut f\u00fcr XP geeignet ist, und wie dies mit uns in Beziehung steht: <\/p>\n<p>1. Dynamisch wechselnde Softwareanforderungen. Wir wussten, was das Endziel ist. Aber die Details k\u00f6nnen variieren. Wir entscheiden selbst, wohin wir steuern m\u00f6chten, deshalb \u00e4ndern sich die Anforderungen regelm\u00e4\u00dfig (haupts\u00e4chlich von uns selbst). Wenn wir ein SRE-Team betrachten, das die Automatisierung selbst durchf\u00fchrt und gleichzeitig die Anforderungen und den Umfang der Arbeiten einschr\u00e4nkt, passt dieser Punkt gut. <\/p>\n<p>2. Risiken durch fix geplante Projekte mit neuen Technologien. Wir k\u00f6nnten Risiken eingehen, wenn wir mit Technologien arbeiten, die uns unbekannt sind. Und das ist zu 100 % unser Fall. Das gesamte Projekt basiert auf Technologien, mit denen wir nicht vollst\u00e4ndig vertraut sind. Dies ist ein dauerhaftes Problem, da st\u00e4ndig zahlreiche neue Technologien im Bereich Infrastruktur auftauchen. <\/p>\n<p>3,4. Klein, ko-lokales erweitertes Entwicklungsteam. Die Technologie, die Sie verwenden, erm\u00f6glicht automatisierte Unit- und Funktionstests. Diese beiden Punkte passen nicht ganz zu uns. Erstens sind wir kein ko-lokales Team, und zweitens sind wir neun Personen, was als ein gro\u00dfes Team angesehen werden kann. Laut einiger Definitionen ist ein \u201egro\u00dfes\u201c Team allerdings mehr als 14 Personen. <\/p>\n<p>Betrachten wir einige Praktiken aus XP und wie sie die Geschwindigkeit und Qualit\u00e4t des Feedbacks beeinflussen.<\/p>\n<h4>Das Prinzip des Feedbackzyklus in XP<\/h4>\n<p>\nMeiner Auffassung nach ist Feedback die Antwort auf die Frage, ob ich richtig handle und ob wir auf dem richtigen Weg sind. In XP gibt es dazu ein beeindruckendes Schema: den zeitlichen Feedbackzyklus. Das Interessante daran ist, dass je tiefer wir uns befinden, desto schneller k\u00f6nnen wir das Feedback erhalten, um die notwendigen Fragen zu beantworten. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: Wie man Probleme mit XP l\u00f6st\" src=\"\/wp-content\/uploads\/2019\/10\/e381fb2d7937cbd1978fd6740e63e790.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas ist ein ziemlich interessantes Thema f\u00fcr eine Diskussion, besonders wie man in der IT-Branche schnell zu einem Betriebssystem gelangen kann. Stellen Sie sich vor, wie schmerzhaft es w\u00e4re, \u00fcber ein halbes Jahr an einem Projekt zu arbeiten und dann festzustellen, dass zu Beginn ein Fehler gemacht wurde. Solche Situationen k\u00f6nnen sowohl beim Design als auch beim Aufbau komplexer Systeme auftreten. <\/p>\n<p>In unserem Fall hilft uns IaC durch R\u00fcckmeldungen. Ich m\u00f6chte sofort eine kleine Anpassung am obigen Schema vornehmen: der Ver\u00f6ffentlichungsplan hat keinen monatlichen Zyklus, sondern erfolgt mehrmals t\u00e4glich. An diesen Zyklus sind bestimmte Praktiken gebunden, die wir n\u00e4her betrachten werden.<\/p>\n<blockquote><p>Wichtig: R\u00fcckmeldungen k\u00f6nnen die L\u00f6sung f\u00fcr alle oben genannten Probleme sein. In Kombination mit XP-Praktiken kann sie aus der Tiefe der Verzweiflung helfen.<\/p><\/blockquote>\n<p><\/p>\n<h2>Wie man sich aus der Tiefe der Verzweiflung befreit: drei Praktiken<\/h2>\n<p><\/p>\n<h4>Tests <\/h4>\n<p>\nTests werden im XP-R\u00fcckmeldezyklus zweimal erw\u00e4hnt. Das ist kein Zufall. Sie sind \u00e4u\u00dferst wichtig f\u00fcr die gesamte Technik des extremen Programmierens. <\/p>\n<p>Es wird vorausgesetzt, dass Sie Unit- und Akzeptanztests haben. Erstere geben Ihnen innerhalb von Minuten Feedback, w\u00e4hrend letztere einige Tage ben\u00f6tigen, da sie l\u00e4nger geschrieben werden und seltener ausgef\u00fchrt werden. <\/p>\n<p>Es gibt eine klassische Testpyramide, die zeigt, dass es mehr Tests geben sollte. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: Wie man Probleme mit XP l\u00f6st\" src=\"\/wp-content\/uploads\/2019\/10\/29f3217f11b67378c9c0c3f14fab9d61.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWie ist dieses Schema auf unser Projekt IaC anwendbar? Eigentlich\u2026 gar nicht. <\/p>\n<ul>\n<li>Unit-Tests, obwohl es davon sehr viele geben sollte, k\u00f6nnen nicht \u00fcberm\u00e4\u00dfig zahlreich sein. Entweder testen sie sehr indirekt etwas. Tats\u00e4chlich kann man sagen, dass wir sie \u00fcberhaupt nicht schreiben. Aber es gibt einige Anwendungen f\u00fcr solche Tests, die uns trotzdem gelungen sind:\n<ol>\n<li>Testen von Code in Jsonnet. Das ist zum Beispiel unser Build-Pipeline in Drone, die recht komplex ist. Der Code in Jsonnet wird gut durch Tests abgedeckt. <br \/>\n Wir verwenden diesen <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/yugui\/jsonnetunit\">Unit Testing Framework f\u00fcr Jsonnet<\/a><\/noindex>. <\/li>\n<li> Tests f\u00fcr Skripte, die beim Starten der Ressource ausgef\u00fchrt werden. Skripte in Python, und daher k\u00f6nnen auch Tests daf\u00fcr geschrieben werden.<\/li>\n<\/ol>\n<\/li>\n<li>Eine potenzielle \u00dcberpr\u00fcfung der Konfiguration in Tests ist m\u00f6glich, aber wir machen das nicht. Es gibt auch die M\u00f6glichkeit, die \u00dcberpr\u00fcfung von Regeln zur Konfiguration von Ressourcen \u00fcber <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wata727\/tflint\">tflint<\/a><\/noindex>. Allerdings sind die \u00dcberpr\u00fcfungen f\u00fcr Terraform zu grundlegend, aber viele Testf\u00e4lle wurden f\u00fcr AWS geschrieben. Und wir sind auf Azure, also passt das wieder nicht.<\/li>\n<li>Komponenten-Integrationstests: Das h\u00e4ngt davon ab, wie Sie sie klassifizieren und organisieren. Aber grunds\u00e4tzlich funktionieren sie.\n<p>So sehen Integrationstests aus. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: Wie man Probleme mit XP l\u00f6st\" src=\"\/wp-content\/uploads\/2019\/10\/b4771e9e5d329ffb2ba565ead7fdddfd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas ist ein Beispiel beim Erstellen von Images in Drone CI. Um darauf zuzugreifen, m\u00fcssen Sie 30 Minuten warten, bis das Packer-Image erstellt ist, und dann weitere 15 Minuten warten, bis sie durchlaufen. Aber sie sind da! <\/p>\n<p><b class=\"spoiler_title\">Algorithmus zur \u00dcberpr\u00fcfung von Images<\/b> <\/p>\n<ol>\n<li>Zun\u00e4chst muss Packer das Image vollst\u00e4ndig vorbereiten.<\/li>\n<li>Neben dem Test befindet sich Terraform mit einem lokalen Zustand, mit dem wir dieses Image bereitstellen. <\/li>\n<li>Bei der Bereitstellung wird ein kleines Modulsystem verwendet, das nebenan liegt, um die Arbeit mit dem Image zu erleichtern. <\/li>\n<li>Wenn die VM aus dem Image bereitgestellt ist, k\u00f6nnen die Tests beginnen. Im Wesentlichen werden die Tests auf der Maschine durchgef\u00fchrt. Es wird gepr\u00fcft, wie die Skripte beim Start ausgef\u00fchrt wurden und wie die Daemons arbeiten. Dazu greifen wir \u00fcber SSH oder WinRM auf die gerade hochgefahrene Maschine zu und \u00fcberpr\u00fcfen den Zustand der Konfiguration oder ob die Dienste gestartet wurden.<\/li>\n<\/ol>\n<p>\n <\/li>\n<li>Eine \u00e4hnliche Situation gibt es bei den Integrationstests in den Terraform-Modulen. Hier ist eine kurze Tabelle, die die Besonderheiten solcher Tests erkl\u00e4rt.\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: Wie man Probleme mit XP l\u00f6st\" src=\"\/wp-content\/uploads\/2019\/10\/e2624fb97831701e374a7e8e7fe39a16.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas Feedback im Pipeline liegt bei etwa 40 Minuten. Alles dauert sehr lange. Es kann f\u00fcr Regressionstests verwendet werden, aber f\u00fcr neue Entwicklungen ist das v\u00f6llig unrealistisch. Wenn man sich sehr gut darauf vorbereitet, das Running und die Skripte vorbereitet, k\u00f6nnte man es auf 10 Minuten reduzieren. Aber das sind trotzdem keine Unit-Tests, die man in 5 Sekunden f\u00fcr 100 St\u00fcck durchf\u00fchren kann. <\/li>\n<\/ul>\n<p>\nDas Fehlen von Unit-Tests beim Erstellen von Images oder Terraform-Modulen zwingt uns dazu, die Arbeit auf separate Dienste zu verlagern, die einfach \u00fcber REST abgerufen werden k\u00f6nnen, oder auf Python-Skripte.<\/p>\n<p>Zum Beispiel mussten wir sicherstellen, dass sich die virtuelle Maschine beim Start in den Dienst <noindex><a rel=\"nofollow\" href=\"https:\/\/www.scaleft.com\/\">ScaleFT<\/a><\/noindex>registriert und beim L\u00f6schen der VM sich selbst entfernt.<\/p>\n<p>Da ScaleFT als Dienst vorliegt, sind wir gezwungen, \u00fcber die API mit ihm zu arbeiten. Eine Wrapper-Funktion wurde geschrieben, die wir aufrufen k\u00f6nnen und sagen: \u201eGeh rein und l\u00f6sche das und das.\u201c Sie speichert alle erforderlichen Einstellungen und Zugriffsrechte. <\/p>\n<p>Darauf k\u00f6nnen wir jetzt normale Tests schreiben, da es sich nicht von herk\u00f6mmlicher Software unterscheidet: Eine API wird gemockt, du rufst sie auf und beobachtest, was passiert. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: Wie man Probleme mit XP l\u00f6st\" src=\"\/wp-content\/uploads\/2019\/10\/dc17aaa64038acb080669d31fe8ecfe0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<blockquote><p>Ergebnisse der Tests: Unit-Tests, die innerhalb einer Minute von einem Betriebssystem geliefert werden sollten, tun dies nicht. H\u00f6her angesiedelte Testarten zeigen zwar Wirkung, behandeln jedoch nur einen Teil der Probleme. <\/p><\/blockquote>\n<h4>Pair Programming<\/h4>\n<p>\nTests sind nat\u00fcrlich gut. Man kann viele davon schreiben, und sie k\u00f6nnen in verschiedenen Formen erfolgen. Sie funktionieren auf ihren jeweiligen Ebenen und geben uns Feedback. Doch das Problem mit schlechten Unit-Tests, die das schnellste Betriebssystem erzeugen sollen, bleibt bestehen. Gleichzeitig w\u00fcnscht man sich weiterhin ein schnelles Betriebssystem, mit dem sich einfach und angenehm arbeiten l\u00e4sst. Ganz zu schweigen von der Qualit\u00e4t der L\u00f6sung. Gl\u00fccklicherweise gibt es Techniken, die uns noch schnelleres Feedback als modulare Tests erm\u00f6glichen. Das ist Pair Programming.<\/p>\n<p>Beim Schreiben von Code m\u00f6chte man so schnell wie m\u00f6glich R\u00fcckmeldung zur Qualit\u00e4t erhalten. Ja, man kann alles in einem Feature-Branch schreiben (um niemandem etwas kaputt zu machen), einen Pull Request auf GitHub erstellen, jemanden benennen, dessen Meinung z\u00e4hlt, und auf eine Antwort warten. <\/p>\n<p>Aber das Warten kann lange dauern. Die Menschen sind alle besch\u00e4ftigt, und selbst wenn eine Antwort kommt, k\u00f6nnte sie von minderer Qualit\u00e4t sein. Angenommen, die Antwort kommt sofort und der Reviewer versteht sofort das ganze Konzept, aber die Antwort kommt immer noch versp\u00e4tet, im Nachhinein. Man m\u00f6chte jedoch fr\u00fcher eine R\u00fcckmeldung. Genau daf\u00fcr ist Pair Programming gedacht \u2013 um sofort, w\u00e4hrend des Schreibens, Feedback zu erhalten.<\/p>\n<p>Im Folgenden erl\u00e4utere ich die Stile von Pair Programming und deren Anwendbarkeit bei der Arbeit mit IaC: <\/p>\n<p><b>1. Klassisch, Erfahren+Erfahren, zeitgesteuerte Rollenwechsel.<\/b> Zwei Rollen \u2013 Driver und Navigator. Zwei Personen. Sie arbeiten am gleichen Code und wechseln alle festgelegte Zeitintervalle die Rollen. <\/p>\n<p>Betrachten wir die Vereinbarkeit unserer Probleme mit dem Stil: <\/p>\n<ul>\n<li>Problem: Unzul\u00e4nglichkeit der Werkzeuge und Mittel zur codeentwicklung. <br \/>\nNegative Auswirkung: l\u00e4ngere Entwicklungszeiten, Wir verlangsamen uns, der Arbeitsfluss wird gest\u00f6rt.<br \/>\n Wie wir damit umgehen: Wir verwenden andere Tools, ein gemeinsames IDE und lernen zus\u00e4tzlich die Shortcuts.<\/li>\n<li> Problem: Langsame Bereitstellung. <br \/>\nNegative Auswirkung: verl\u00e4ngert die Zeit zur Erstellung eines funktionierenden Codes. Man langweilt sich w\u00e4hrend des Wartens, die H\u00e4nde m\u00f6chten etwas anderes tun, w\u00e4hrend man wartet. <br \/>\nWie wir damit umgehen: Wir haben es nicht geschafft.<\/li>\n<li> Problem: Mangel an geeigneten Ans\u00e4tzen und Praktiken. <br \/>\nNegative Auswirkungen: Es fehlt an Wissen dar\u00fcber, was gut und was schlecht ist. Dies verl\u00e4ngert den Erhalt von Feedback. <br \/>\nWie wir das bek\u00e4mpfen: Der Austausch von Meinungen und Praktiken in der Paararbeit l\u00f6st das Problem nahezu.<\/li>\n<\/ul>\n<p>\nDas Hauptproblem beim Einsatz dieses Stils in IaC liegt im unregelm\u00e4\u00dfigen Arbeitstempo. In der traditionellen Softwareentwicklung hast du einen sehr gleichm\u00e4\u00dfigen Fluss. Du kannst f\u00fcnf Minuten investieren und N schreiben. Zehn Minuten f\u00fcr 2N, 15 Minuten f\u00fcr 3N. Hier hingegen kannst du f\u00fcnf Minuten investieren und N schreiben, und dann weitere 30 Minuten und nur ein Zehntel von N erstellen. Du wei\u00dft nichts, hast einen Block, bist festgefahren. Die Kl\u00e4rung ben\u00f6tigt Zeit und lenkt vom Programmieren selbst ab. <\/p>\n<blockquote><p>Fazit: Im reinsten Sinne passt es nicht zu uns.<\/p><\/blockquote>\n<p><b>2. Ping-Pong. Dieser Ansatz sieht vor, dass ein Teilnehmer einen Test schreibt und der andere ihn implementiert.<\/b> Angesichts der Schwierigkeiten mit Unit-Tests und der Notwendigkeit, zeitaufw\u00e4ndige Integrationstests zu schreiben, geht die gesamte Leichtigkeit des Ping-Pong-Ansatzes verloren. <\/p>\n<p>Ich kann sagen, dass wir versucht haben, die Aufgabenteilung zwischen der Erstellung von Test-Szenarien und der Implementierung des Codes zu gestalten. Ein Teilnehmer entwickelte das Szenario und war in diesem Teil der Arbeit verantwortlich, er hatte das letzte Wort. Der andere war f\u00fcr die Implementierung zust\u00e4ndig. Das hat gut funktioniert. Die Qualit\u00e4t des Szenarios verbessert sich mit diesem Ansatz. <\/p>\n<blockquote><p>Fazit: Leider erlaubt der Arbeitstempo keine Ping-Pong-Praxis wie beim Pair Programming in 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\">Komplexe Praxis<\/a><\/noindex>. Die Idee ist, dass ein Teilnehmer als direktionaler Navigator fungiert, w\u00e4hrend der andere die Rolle des ausf\u00fchrenden Fahrers \u00fcbernimmt. Dabei liegt das Entscheidungsrecht ausschlie\u00dflich beim Navigator. Der Fahrer tippt einfach und kann durch Worte Einfluss auf das Geschehen nehmen. Die Rollen wechseln \u00fcber l\u00e4ngere Zeit nicht. <\/p>\n<p>Geeignet f\u00fcr das Lernen, erfordert jedoch starke Soft Skills. Hier sind wir gescheitert. Die Technik war schwierig. Und es lag nicht einmal an der Infrastruktur. <\/p>\n<blockquote><p>Fazit: Potenziell anwendbar, wir geben nicht auf.<\/p><\/blockquote>\n<p>\n<b>4. Mobbing, Swarming und alle bekannten, aber hier nicht aufgelisteten Stile<\/b> werden nicht betrachtet, da wir sie nicht ausprobiert haben und nichts dazu im Kontext unserer Arbeit sagen k\u00f6nnen.<\/p>\n<blockquote><p>Zusammenfassende Ergebnisse zur Nutzung von Paarprogrammierung:<\/p>\n<ul>\n<li>Wir haben ein ungleichm\u00e4\u00dfiges Arbeitstempo, das st\u00f6rt.<\/li>\n<li>Wir sto\u00dfen an unzureichende Soft Skills. Und das Themengebiet beg\u00fcnstigt nicht die \u00dcberwindung dieser M\u00e4ngel.<\/li>\n<li>Lange Tests und Probleme mit den Werkzeugen machen die Paarentwicklung m\u00fchsam.<\/li>\n<\/ul>\n<\/blockquote>\n<p><b>5. Trotzdem gab es auch Erfolge. Wir haben unsere eigene Methode \"Konvergenz - Divergenz\" entwickelt.<\/b> Ich werde kurz beschreiben, wie sie funktioniert. <\/p>\n<p>Wir haben feste Partner f\u00fcr mehrere Tage (weniger als eine Woche). Wir arbeiten zusammen an einer Aufgabe. Eine Zeit lang sitzen wir zusammen: einer programmiert, der andere beobachtet als Unterst\u00fctzungsteam. Dann trennen wir uns f\u00fcr eine Weile, jeder arbeitet unabh\u00e4ngig, dann treffen wir uns wieder, synchronisieren uns sehr schnell, arbeiten gemeinsam und trennen uns erneut. <\/p>\n<h4>Planung und Kommunikation<\/h4>\n<p>\nDer letzte Block von Praktiken, mit denen Probleme im Betriebssystem gel\u00f6st werden - das ist die Organisation der Arbeiten an den Aufgaben selbst. Dazu geh\u00f6rt auch der Austausch von Erfahrungen, die au\u00dferhalb der Paararbeit liegen. Lassen Sie uns drei Praktiken betrachten:<\/p>\n<p><b>1. Aufgaben durch Zielbaum.<\/b> Das gesamte Projektmanagement haben wir \u00fcber einen Baum organisiert, der unendlich in die Zukunft f\u00fchrt. Technisch wird die Verwaltung in Miro durchgef\u00fchrt. Es gibt eine Aufgabe \u2013 sie ist ein Zwischenziel. Von ihr gehen entweder kleinere Ziele oder Gruppen von Aufgaben aus. Von diesen leiten sich die eigentlichen Aufgaben ab. Alle Aufgaben werden auf diesem Board erstellt und verwaltet. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: Wie man Probleme mit XP l\u00f6st\" src=\"\/wp-content\/uploads\/2019\/10\/fe601e959f0055de4f7f4c39ae713c31.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDieses Schema bietet ebenfalls Feedback, das einmal t\u00e4glich erfolgt, wenn wir uns in Meetings synchronisieren. Ein gemeinsam strukturierter und vollst\u00e4ndig transparenter Plan erm\u00f6glicht es jedem, \u00fcber die aktuellen Entwicklungen und den Fortschritt informiert zu sein. <\/p>\n<p>Vorteile der visuellen Darstellung von Aufgaben:<\/p>\n<ul>\n<li>Kausalit\u00e4t. Jede Aufgabe f\u00fchrt zu einem globalen Ziel. Aufgaben werden nach kleineren Zielen gruppiert. Der Infrastruktur-Domain ist von Natur aus recht technisch. Es ist nicht immer sofort klar, welchen konkreten Einfluss beispielsweise das Schreiben eines Runbooks zur Migration auf einen anderen Nginx auf das Gesch\u00e4ft hat. Eine danebenstehende Zielkarte macht dies verst\u00e4ndlicher.<br \/>\n <img decoding=\"async\" alt=\"Infrastructure as Code: Wie man Probleme mit XP l\u00f6st\" src=\"\/wp-content\/uploads\/2019\/10\/fc4da9d277f7dc186a5710cf2be4419c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n Kausalit\u00e4t ist eine wichtige Eigenschaft von Aufgaben. Sie beantwortet direkt die Frage: 'Mache ich das Richtige?' <\/li>\n<li>Parallelit\u00e4t. Wir sind neun Personen, und es ist einfach physisch unm\u00f6glich, dass alle an einer Aufgabe gleichzeitig arbeiten. Manchmal reichen die Aufgaben aus einem Bereich nicht aus. Daher teilen wir die Arbeit zwangsweise auf kleinere Arbeitsgruppen auf. Diese Gruppen arbeiten eine gewisse Zeit an ihrer Aufgabe, und sie k\u00f6nnen mit weiteren Personen verst\u00e4rkt werden. Von dieser Arbeitsgruppe scheiden manchmal Mitglieder aus. Jemand geht in den Urlaub, jemand h\u00e4lt einen Vortrag auf der DevOps-Konferenz, jemand schreibt einen Artikel f\u00fcr Habr. Es wird sehr wichtig, zu wissen, welche Ziele und Aufgaben parallel bearbeitet werden k\u00f6nnen. <\/li>\n<\/ul>\n<p>\n<b>2. Wechselnde Leitung der morgendlichen Meetings.<\/b> Bei den Stand-ups gab es folgendes Problem \u2013 viele Aufgaben werden parallel erledigt. Manchmal sind die Aufgaben nur schwach verbunden, und es fehlt das Verst\u00e4ndnis, wer was macht. Die Meinung eines weiteren Teammitglieds ist jedoch sehr wichtig. Es ist zus\u00e4tzliche Information, die den Verlauf der Probleml\u00f6sung ver\u00e4ndern kann. Nat\u00fcrlich ist man normalerweise mit jemandem im Paar, aber Beratung und Hinweise sind immer hilfreich. <\/p>\n<p>Um diese Situation zu verbessern, haben wir die Technik des \"Wechselns des Lead-Standup-Moderators\" angewendet. Jetzt rotieren sie entsprechend einer festgelegten Liste, und das hat seine Wirkung. Wenn du an der Reihe bist, musst du eintauchen und verstehen, was passiert, um das Scrum-Meeting gut zu gestalten. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: Wie man Probleme mit XP l\u00f6st\" src=\"\/wp-content\/uploads\/2019\/10\/622973a654ecd3e27a7a366596814ffc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>3. Internes Demo.<\/b> Hilfe bei der L\u00f6sung von Aufgaben durch Pair Programming, Visuellisierung im Aufgabenbaum und Unterst\u00fctzung in den Scrum-Meetings am Morgen \u2013 das ist gut, aber nicht perfekt. In einer Partnerschaft bist du nur durch dein Wissen limitiert. Der Aufgabenbaum hilft, ein globales Verst\u00e4ndnis daf\u00fcr zu entwickeln, wer was macht. Der Moderator und die Kollegen in der morgendlichen Sitzung werden nicht tief in deine Probleme eintauchen. Dabei k\u00f6nnen sie sicher etwas \u00fcbersehen. <\/p>\n<p>Die L\u00f6sung wurde im gegenseitigen Vorf\u00fchren der abgeschlossenen Arbeiten und der anschlie\u00dfenden Diskussion dar\u00fcber gefunden. Wir treffen uns einmal pro Woche f\u00fcr eine Stunde und zeigen die Details der L\u00f6sungen zu den Aufgaben, an denen wir in der vergangenen Woche gearbeitet haben. <\/p>\n<p>Im Verlauf der Demonstration sollten die Details der Aufgabe offen gelegt und unbedingt deren Funktion demonstriert werden. <\/p>\n<p><b class=\"spoiler_title\">Der Bericht kann nach einem Checklistenformat gehalten werden.<\/b>1. F\u00fchre in den Kontext ein. Woher kam die Aufgabe, warum war das \u00fcberhaupt n\u00f6tig?<\/p>\n<p>2. Wie wurde das Problem vorher gel\u00f6st? Gab es zum Beispiel Massenklicks, oder war es \u00fcberhaupt unm\u00f6glich, etwas zu tun?<\/p>\n<p>3. Wie verbessern wir das? Zum Beispiel: \u201eSehen Sie, jetzt gibt es ein kleines Skript, hier ist die Readme\u201c.<\/p>\n<p>4. Zeigen Sie, wie das funktioniert. Es w\u00e4re ideal, ein Nutzungsszenario direkt zu demonstrieren. Ich m\u00f6chte X, mache Y und sehe Z (oder J). Zum Beispiel: Ich deploye NGINX, teste die URL und erhalte 200 OK. Wenn eine Aktion lange dauert, bereiten Sie dies im Voraus vor, um es zeigen zu k\u00f6nnen. Es ist w\u00fcnschenswert, dass man eine Stunde vor der Demo nicht mehr viel daran \u00e4ndert, wenn es anf\u00e4llig ist.<\/p>\n<p>5. Erkl\u00e4ren Sie, wie erfolgreich das Problem gel\u00f6st wurde, welche Herausforderungen geblieben sind, was noch nicht abgeschlossen ist und welche Verbesserungen in Zukunft m\u00f6glich sind. Zum Beispiel: Jetzt haben wir CLI, sp\u00e4ter wird es vollst\u00e4ndige Automatisierung im CI geben.<\/p>\n<p>Es w\u00e4re w\u00fcnschenswert, dass jeder Redner in 5-10 Minuten bleibt. Wenn Ihre Pr\u00e4sentation offensichtlich wichtig ist und mehr Zeit in Anspruch nehmen wird, kl\u00e4ren Sie dies im Voraus im Kanal sre-takeover.<\/p>\n<p>Nach dem vor Ort stattfindenden Teil folgt unbedingt eine Diskussion im Thread. Hier erhalten wir das ben\u00f6tigte Feedback zu unseren Aufgaben. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: Wie man Probleme mit XP l\u00f6st\" src=\"\/wp-content\/uploads\/2019\/10\/77da888d24b52c7eea7e65d2400e152c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nAm Ende wird eine Umfrage durchgef\u00fchrt, um den Nutzen des Geschehens zu ermitteln. Das ist bereits ein Feedback zur Relevanz des Vortrags und der Wichtigkeit der Aufgabe.<\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: Wie man Probleme mit XP l\u00f6st\" src=\"\/wp-content\/uploads\/2019\/10\/7642cd87050171cc4a6bf278329dd283.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Lange Schlussfolgerungen und was kommt als N\u00e4chstes<\/h2>\n<p>\nEs k\u00f6nnte den Anschein haben, dass der Ton des Artikels etwas pessimistisch ist. Das ist jedoch nicht der Fall. Zwei grundlegende Ebenen zur Einholung von Feedback, n\u00e4mlich Tests und Pair Programming, funktionieren. Nicht ganz so perfekt wie in der traditionellen Entwicklung, aber der positive Effekt ist vorhanden. <\/p>\n<p>Die Tests, in ihrer aktuellen Form, bieten nur eine teilweise Codeabdeckung. Viele Konfigurationsfunktionen bleiben ungetestet. Ihr Einfluss auf die tats\u00e4chliche Arbeit beim Programmieren ist gering. Doch Integrationstests zeigen positive Ergebnisse, und gerade sie erm\u00f6glichen es, Refactoring ohne Bedenken durchzuf\u00fchren. Das ist ein gro\u00dfer Fortschritt. Mit dem Wechsel zum Hochsprachenentwicklungsfokus (bei uns Python, Go) verschwindet das Problem. Und f\u00fcr die \"Kleber\" sind zu viele Pr\u00fcfungen nicht notwendig, eine allgemeine Integration reicht aus.<\/p>\n<p>Die Zusammenarbeit h\u00e4ngt stark von den spezifischen Personen ab. Es gibt die Aufgabe und unsere Soft Skills. Mit manchen klappt es sehr gut, mit anderen weniger. Der Nutzen ist definitiv vorhanden. Es ist klar, dass selbst bei unzureichender Einhaltung der Regeln f\u00fcr die Partnerarbeit der gemeinsame Ansatz bei der Aufgabenbew\u00e4ltigung sich positiv auf die Qualit\u00e4t des Ergebnisses auswirkt. Pers\u00f6nlich arbeite ich in der Partnerschaft einfacher und angenehmer.<\/p>\n<p>H\u00f6herwertige Ans\u00e4tze zur Beeinflussung des Betriebssystems \u2013 die Planung und Bearbeitung von Aufgaben zeigen deutliche Effekte: einen qualitativ hochwertigen Austausch von Wissen und eine Verbesserung der Entwicklungsqualit\u00e4t. <\/p>\n<h4>Kurze Zusammenfassungen in einem Satz. <\/h4>\n<p><\/p>\n<ul>\n<li>XP-Praktiken funktionieren in IaC, allerdings mit geringerer Effizienz.<\/li>\n<li>Verst\u00e4rken Sie, was funktioniert.<\/li>\n<li>Entwickeln Sie Ihre eigenen Kompensationsmechanismen und Praktiken.<\/li>\n<\/ul>\n<p>Quelle: <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 4.9.10 - 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. \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,\" \/>\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\/de\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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. \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,\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/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: wie man Probleme mit XP \u00fcberwinden kann | ProHoster","description":"Hallo, Habr! Fr\u00fcher habe ich mich \u00fcber das Leben im Paradigma \"Infrastructure as Code\" beschwert und nichts zu einer L\u00f6sung der bestehenden Situation beigetragen. Heute bin ich zur\u00fcck, um zu erz\u00e4hlen, welche Ans\u00e4tze und Praktiken helfen k\u00f6nnen, aus der Abgrund der Verzweiflung auszubrechen und die Situation auf den richtigen Weg zu bringen. In meinem vorherigen Artikel \"Infrastructure as Code: erste Begegnung\" habe ich meine Eindr\u00fccke aus diesem Bereich geteilt,","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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. \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,","og:url":"https:\/\/prohoster.info\/de\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/38747","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=38747"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/38747\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/29066"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=38747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=38747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=38747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}