{"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 \u00fcberwindet","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hallo, Habr! Fr\u00fcher habe ich mich \u00fcber das Leben im Paradigma \"Infrastructure as Code\" beschwert und nichts zur L\u00f6sung der Situation beigetragen. Heute bin ich zur\u00fcckgekehrt, um zu erz\u00e4hlen, welche Ans\u00e4tze und Praktiken helfen k\u00f6nnen, aus dem Abgrund der Verzweiflung auszubrechen und die Situation in die richtige Bahn zu lenken. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: wie man Probleme mit XP \u00fcberwindet\" 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\/\">\"Infrastructure as Code: Erste Bekanntschaft\"<\/a><\/noindex> Ich habe meine Eindr\u00fccke in diesem Bereich geteilt, versucht \u00fcber die aktuelle Situation nachzudenken und sogar angedeutet, dass die Standardpraktiken, die allen Entwicklern bekannt sind, helfen k\u00f6nnten. Es k\u00f6nnte den Anschein erweckt haben, dass es dort viele Klagen \u00fcber das Leben gab, aber keine Vorschl\u00e4ge, um aus der bestehenden Situation herauszukommen. <\/p>\n<h2>Wer sind wir, wo sind wir und welche Probleme haben wir?<\/h2>\n<p>\nIm Moment befinden wir uns im SRE Onboarding Team, das aus sechs Programmierern und drei Infrastrukturtechnikern besteht. Wir alle versuchen, Infrastructure as Code (IaC) zu schreiben. Wir tun dies, weil wir grunds\u00e4tzlich in der Lage sind, Code zu schreiben und in unserer Vorgeschichteentwickler auf \"\u00fcberdurchschnittlichem\" Niveau sind. <\/p>\n<ul>\n<li>Wir haben eine Reihe von Vorteilen: einen bestimmten Hintergrund, Wissen \u00fcber Praktiken, die F\u00e4higkeit, Code zu schreiben, den Wunsch, Neues zu lernen. <\/li>\n<li>Und es gibt einen h\u00e4ngenden Teil, das ist der Nachteil: Mangel an Wissen \u00fcber die materielle Grundlage der Infrastruktur. <\/li>\n<\/ul>\n<p>\n<b class=\"spoiler_title\">Technologiestack, den wir in unserem IaC verwenden.<\/b><\/p>\n<ul>\n<li>Terraform zur Erstellung von Ressourcen.<\/li>\n<li>Packer zur Erstellung von Images. Dies sind Windows- und CentOS 7-Images.<\/li>\n<li>Jsonnet, um eine leistungsstarke Build-Konfiguration in drone.io zu erstellen, sowie zur Generierung von Packer-JSON und unseren Terraform-Modulen.<\/li>\n<li>Azure.<\/li>\n<li>Ansible bei der Vorbereitung von Images.<\/li>\n<li>Python f\u00fcr Hilfsservices sowie Provisionsskripte.<\/li>\n<li>Und das alles in VSCode mit den Plugins, die zwischen den Teammitgliedern geteilt werden.<\/li>\n<\/ul>\n<p>Mein Fazit war folgendes: Ich habe versucht, (vor allem in mir selbst) Optimismus zu wecken und wollte sagen, dass wir versuchen werden, die uns bekannten Ans\u00e4tze und Praktiken anzuwenden, um mit den Herausforderungen und Schwierigkeiten umzugehen, die in diesem Bereich bestehen. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/465137\/\">des vorherigen Artikels<\/a><\/noindex> Aktuell k\u00e4mpfen wir mit folgenden Problemen in IaC: <\/p>\n<p>Unvollkommenheit der Werkzeuge und Mittel zur Entwicklung von Code.<\/p>\n<ul>\n<li>Langsame Bereitstellung. Die Infrastruktur ist Teil der realen Welt, und diese kann nicht schnell sein.<\/li>\n<li>Mangel an Ans\u00e4tzen und Praktiken.<\/li>\n<li>Wir sind Neulinge und wissen viel nicht.<\/li>\n<li>Extreme Programmierung (XP) eilt zur Hilfe.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Extreme Programmierung (XP) eilt zur Hilfe<\/h2>\n<p>\nAllen Entwicklern ist Extreme Programming (XP) und die damit verbundenen Praktiken gut bekannt. Viele von uns haben nach diesem Ansatz gearbeitet, und er war erfolgreich. Warum also nicht die Prinzipien und Praktiken nutzen, die dort verankert sind, um die Herausforderungen der Infrastruktur zu bew\u00e4ltigen? Wir haben beschlossen, diesen Ansatz anzuwenden und zu sehen, was dabei herauskommt.<\/p>\n<p><b class=\"spoiler_title\">\u00dcberpr\u00fcfung der Anwendbarkeit des XP-Ansatzes auf Ihr Gebiet<\/b>Ich beschreibe die Umgebung, f\u00fcr die XP gut geeignet ist, und wie das mit uns zusammenh\u00e4ngt: <\/p>\n<p>1. Dynamisch ver\u00e4nderliche Softwareanforderungen. Uns war klar, was das Endziel ist. Aber die Details k\u00f6nnen variieren. Wir entscheiden selbst, wo wir hinsteuern, daher \u00e4ndern sich die Anforderungen regelm\u00e4\u00dfig (haupts\u00e4chlich von uns selbst). Wenn man das SRE-Team betrachtet, das die Automatisierung selbst durchf\u00fchrt und auch die Anforderungen und den Arbeitsumfang selbst festlegt, passt dieser Punkt gut. <\/p>\n<p>2. Risiken durch feste Zeitprojekte unter Verwendung neuer Technologien. Es k\u00f6nnen Risiken auftreten, wenn wir unbekannte Dinge verwenden. Und das ist 100 % unser Fall. Unser gesamtes Projekt besteht darin, Technologien zu nutzen, mit denen wir nicht ganz vertraut sind. Das ist ein st\u00e4ndiges Problem, da im Bereich Infrastruktur st\u00e4ndig viele neue Technologien entstehen. <\/p>\n<p>3,4. Kleines, ko-lokalisiertes erweitertes Entwicklungsteam. Die von Ihnen verwendete Technologie erm\u00f6glicht automatisierte Unit- und Funktionstests. Diese beiden Punkte passen nicht ganz zu uns. Erstens sind wir kein ko-lokalisiertes Team, und zweitens sind wir neun Personen, was als gro\u00dfes Team angesehen werden kann. Obwohl, nach einigen Definitionen ist ein \u201egro\u00dfes\u201c Team ab 14+ Personen. <\/p>\n<p>Lassen Sie uns einige Praktiken aus XP betrachten und wie sie die Geschwindigkeit und Qualit\u00e4t des Feedbacks beeinflussen.<\/p>\n<h4>Das Prinzip des Feedbackzyklus in XP<\/h4>\n<p>\nF\u00fcr mich ist Feedback die Antwort auf die Frage, ob ich es richtig mache, ob wir in die richtige Richtung gehen. Dazu gibt es in XP eine gro\u00dfartige Grafik: 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 \u00fcberwindet\" src=\"\/wp-content\/uploads\/2019\/10\/e381fb2d7937cbd1978fd6740e63e790.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas ist ein ziemlich interessantes Thema zur Diskussion, das in unserer IT-Industrie die M\u00f6glichkeit bietet, schnell Feedback zu erhalten. Stellen Sie sich vor, wie schmerzhaft schwierig es w\u00e4re, ein Projekt \u00fcber ein halbes Jahr zu machen und erst dann zu erfahren, dass von Anfang an ein Fehler eingebaut wurde. Das passiert sowohl in der Planung als auch beim Bau komplexer Systeme. <\/p>\n<p>In unserem Fall hilft uns IaC mit Feedback. Ich nehme sofort eine kleine Anpassung im obigen Schema vor: Der Release-Plan hat keinen monatlichen Zyklus, sondern findet mehrmals t\u00e4glich statt. An diesen Zyklus sind einige Praktiken gebunden, die wir n\u00e4her betrachten werden.<\/p>\n<blockquote><p>Wichtig: Feedback kann die L\u00f6sung f\u00fcr alle oben genannten Probleme sein. In Kombination mit XP-Praktiken kann es 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 Feedback-Zyklus von XP zweimal erw\u00e4hnt. Das ist nicht zuf\u00e4llig. Sie sind f\u00fcr die gesamte Technik des extremen Programmierens \u00e4u\u00dferst wichtig. <\/p>\n<p>Es wird vorausgesetzt, dass du Unit- und Akzeptanztests hast. Die einen geben dir Feedback innerhalb weniger Minuten, die anderen erst nach mehreren Tagen, da sie l\u00e4nger geschrieben werden und seltener ausgef\u00fchrt werden. <\/p>\n<p>Es gibt eine klassische Testpyramide, die zeigt, dass von bestimmten Tests mehr vorhanden sein sollten. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: wie man Probleme mit XP \u00fcberwindet\" src=\"\/wp-content\/uploads\/2019\/10\/29f3217f11b67378c9c0c3f14fab9d61.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWie ist dieses Schema auf unser IaC-Projekt anwendbar? Tats\u00e4chlich\u2026 \u00fcberhaupt nicht. <\/p>\n<ul>\n<li>Es kann nicht zu viele Unit-Tests geben, obwohl es sehr viele geben sollte. Entweder testen sie etwas sehr indirekt. Tats\u00e4chlich kann man sagen, dass wir sie \u00fcberhaupt nicht schreiben. Aber hier sind einige Anwendungen f\u00fcr solche Tests, die wir dennoch gemacht haben:\n<ol>\n<li>Testen des Codes in Jsonnet. Zum Beispiel unser Build-Pipeline in Drone, die recht komplex ist. Der Code in Jsonnet wird gut getestet. <br \/>\n Wir verwenden dieses <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, daher k\u00f6nnen auch entsprechende Tests daf\u00fcr geschrieben werden.<\/li>\n<\/ol>\n<\/li>\n<li>Es ist grunds\u00e4tzlich m\u00f6glich, die Konfiguration in den Tests zu \u00fcberpr\u00fcfen, aber wir machen das nicht. Es gibt auch die M\u00f6glichkeit, die Pr\u00fcfung von Konfigurationsrichtlinien f\u00fcr Ressourcen \u00fcber <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wata727\/tflint\">tflint<\/a><\/noindex>. Allerdings sind die Pr\u00fcfungen daf\u00fcr in Terraform zu grundlegend, aber viele Pr\u00fcfungs-Szenarien wurden f\u00fcr AWS geschrieben. Aber wir sind auf Azure, also passt das wieder nicht.<\/li>\n<li>Komponententests: hier h\u00e4ngt es davon ab, wie du sie klassifizierst und wohin du sie legst. Aber sie funktionieren grunds\u00e4tzlich.\n<p>So sehen die Integrationstests aus. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: wie man Probleme mit XP \u00fcberwindet\" src=\"\/wp-content\/uploads\/2019\/10\/b4771e9e5d329ffb2ba565ead7fdddfd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDies ist ein Beispiel beim Erstellen von Images in Drone CI. Um dorthin zu gelangen, muss man 30 Minuten warten, bis das Packer-Image erstellt ist, dann noch etwa 15 Minuten warten, bis sie durchlaufen. Aber sie existieren! <\/p>\n<p><b class=\"spoiler_title\">Algorithmus zur \u00dcberpr\u00fcfung von Images<\/b> <\/p>\n<ol>\n<li>Zuerst muss Packer das Image vollst\u00e4ndig vorbereiten.<\/li>\n<li>Neben dem Test gibt es ein Terraform mit lokalem Status, mit dem wir dieses Image bereitstellen. <\/li>\n<li>Bei der Bereitstellung wird ein kleines Modul verwendet, das nebenan liegt, um die Arbeit mit dem Image zu erleichtern. <\/li>\n<li>Wenn das VM-Image bereitgestellt ist, k\u00f6nnen die \u00dcberpr\u00fcfungen beginnen. In der Regel werden die \u00dcberpr\u00fcfungen auf der Maschine selbst durchgef\u00fchrt. Es wird \u00fcberpr\u00fcft, wie die Skripte beim Hochfahren ausgef\u00fchrt wurden und wie die Daemons funktionieren. Dazu gelangen wir \u00fcber ssh oder winrm auf die gerade gestartete Maschine und \u00fcberpr\u00fcfen den Zustand der Konfiguration oder ob die Dienste hochgefahren sind.<\/li>\n<\/ol>\n<p>\n <\/li>\n<li>Eine \u00e4hnliche Situation gilt f\u00fcr Integrationstests und die Module f\u00fcr Terraform. 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 \u00fcberwindet\" src=\"\/wp-content\/uploads\/2019\/10\/e2624fb97831701e374a7e8e7fe39a16.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas Feedback im Pipeline ist etwa 40 Minuten. Alles dauert sehr lange. Es kann f\u00fcr Regressionstests verwendet werden, ist aber f\u00fcr neue Entwicklungen praktisch unm\u00f6glich. Wenn man sich sehr gut darauf vorbereitet, die Skripte und die Laufzeit vorbereitet, kann man es auf 10 Minuten reduzieren. Aber es sind trotzdem keine Unit-Tests, die in 5 Sekunden 100 Tests erm\u00f6glichen. <\/li>\n<\/ul>\n<p>\nDas Fehlen von Unit-Tests beim Erstellen von Images oder Terraform-Modulen zwingt dazu, die Arbeit auf separate Dienste zu verlagern, die einfach \u00fcber REST aufgerufen werden k\u00f6nnen, oder auf Python-Skripte.<\/p>\n<p>Zum Beispiel mussten wir sicherstellen, dass sich die virtuelle Maschine beim Start im Dienst registriert <noindex><a rel=\"nofollow\" href=\"https:\/\/www.scaleft.com\/\">ScaleFT<\/a><\/noindex>, und sie sich beim L\u00f6schen der virtuellen Maschine selbst entfernt.<\/p>\n<p>Da ScaleFT bei uns als Dienst fungiert, sind wir gezwungen, \u00fcber die API mit ihm zu arbeiten. Es wurde eine Wrapper geschrieben, die aufgerufen werden kann mit: \"Geh und l\u00f6sche dies und das\". Sie speichert alle notwendigen Einstellungen und Zugriffe. <\/p>\n<p>Darauf k\u00f6nnen wir normale Tests schreiben, da es sich nicht von herk\u00f6mmlicher Software unterscheidet: Eine API wird gemockt, man ruft sie auf, und wir sehen, was passiert. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: wie man Probleme mit XP \u00fcberwindet\" 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 der OS bereitgestellt werden sollten, liefern dies nicht. H\u00f6here Testarten in der Pyramide bringen zwar Ergebnisse, decken aber nur einen Teil der Probleme ab. <\/p><\/blockquote>\n<h4>Pair Programming<\/h4>\n<p>\nTests sind nat\u00fcrlich gut. Man kann viele davon schreiben, sie k\u00f6nnen unterschiedlich sein. Sie werden auf ihren Ebenen funktionieren und uns Feedback geben. Aber das Problem mit schlechten Unit-Tests, die die schnellste \u041e\u0421 erm\u00f6glichen, bleibt bestehen. Dabei bleibt der Wunsch nach einer schnellen \u041e\u0421, mit der es leicht und angenehm ist zu arbeiten. Ganz zu schweigen von der Qualit\u00e4t der resultierenden L\u00f6sung. Gl\u00fccklicherweise gibt es Techniken, die ein noch schnelleres Feedback als modulare Tests erm\u00f6glichen. Das ist das Ziel des Pair Programmings.<\/p>\n<p>Beim Schreiben von Code m\u00f6chte man so schnell wie m\u00f6glich Feedback zur Qualit\u00e4t erhalten. Ja, man kann alles in einem Feature-Branch schreiben (um niemanden etwas kaputt zu machen), einen Pull-Request auf GitHub erstellen, jemanden benennen, dessen Meinung Gewicht hat, und auf eine Antwort warten. <\/p>\n<p>Aber das Warten kann lange dauern. Die Leute sind alle besch\u00e4ftigt, und die Antwort, selbst wenn sie kommt, k\u00f6nnte von nicht allzu hoher Qualit\u00e4t sein. Angenommen, die Antwort kommt sofort, der Reviewer versteht sofort den ganzen Plan, aber die Antwort kommt trotzdem mit Verz\u00f6gerung, nachtr\u00e4glich. Man m\u00f6chte das eher. Das Paar-Programmieren zielt darauf ab, dies zu erm\u00f6glichen \u2013 um sofort, im Moment des Schreibens, Feedback zu erhalten.<\/p>\n<p>Im Folgenden beschreibe ich die Stile des Pair Programmings und deren Anwendbarkeit bei der Arbeit mit IaC: <\/p>\n<p><b>1. Klassisch, Erfahrener+Erfahrener, Wechsel nach Zeit.<\/b> Zwei Rollen \u2013 Driver und Navigator. Zwei Personen. Sie arbeiten an demselben Code und wechseln die Rollen nach einem zuvor festgelegten Zeitintervall. <\/p>\n<p>Betrachten wir die Vereinbarkeit unserer Probleme mit dem Stil: <\/p>\n<ul>\n<li>Problem: Unvollkommenheit der Werkzeuge und Ressourcen zur Codeentwicklung. <br \/>\nNegative Auswirkung: L\u00e4ngere Entwicklungszeit, wir verlangsamen uns, der Arbeitsrhythmus ger\u00e4t ins Stocken.<br \/>\n Wie wir damit umgehen: Wir verwenden andere Tools, eine gemeinsame IDE und lernen au\u00dferdem Shortcuts.<\/li>\n<li> Problem: Langsame Bereitstellung. <br \/>\nNegative Auswirkung: Verl\u00e4ngert die Zeit zur Erstellung eines funktionierenden Codes. Wir langweilen uns w\u00e4hrend des Wartens, und w\u00e4hrend wir warten, greifen wir zu anderen Aktivit\u00e4ten. <br \/>\nWie wir damit umgehen: Das haben wir nicht gel\u00f6st.<\/li>\n<li> Problem: Mangel an Ans\u00e4tzen und Praktiken. <br \/>\nNegative Auswirkung: Kein Wissen, wie man gut oder schlecht macht. Verl\u00e4ngert den Erhalt von Feedback. <br \/>\nWie wir damit umgehen: Der Austausch von Meinungen und Praktiken in der Paararbeit l\u00f6st das Problem fast.<\/li>\n<\/ul>\n<p>\nDas Hauptproblem bei der Anwendung dieses Stils in IaC ist das unregelm\u00e4\u00dfige Arbeitstempo. In der traditionellen Softwareentwicklung hast du eine sehr gleichm\u00e4\u00dfige Bewegung. Du kannst f\u00fcnf Minuten investieren und N schreiben. Zehn Minuten investieren und 2N schreiben, 15 Minuten \u2013 3N. Hier kannst du f\u00fcnf Minuten investieren und N schreiben, und dann weitere 30 Minuten und ein Zehntel von N schreiben. Hier wei\u00dft du nichts, du hast einen Stau, einen Stillstand. Das Kl\u00e4ren der Situation ben\u00f6tigt Zeit und lenkt vom Programmieren ab. <\/p>\n<blockquote><p>Fazit: Es passt uns in reiner Form nicht.<\/p><\/blockquote>\n<p><b>2. Ping-pong. Dieser Ansatz sieht vor, dass ein Teilnehmer einen Test schreibt, w\u00e4hrend der andere die Implementierung daf\u00fcr \u00fcbernimmt.<\/b> Angesichts der Schwierigkeiten mit Unit-Tests und der Notwendigkeit, einen zeitintensiven Integrationstest zu schreiben, geht die gesamte Leichtigkeit des Ping-Pong-Ansatzes verloren. <\/p>\n<p>Ich kann sagen, dass wir versucht haben, die Aufgaben im Entwurf des Test-Szenarios und in der Umsetzung des Codes zu trennen. Ein Teilnehmer hat das Szenario entworfen, war in diesem Teil der Arbeit verantwortlich und hatte das letzte Wort. Der andere war f\u00fcr die Umsetzung zust\u00e4ndig. Das hat gut funktioniert. Die Qualit\u00e4t des Szenarios steigt mit diesem Ansatz. <\/p>\n<blockquote><p>Fazit: Leider erlaubt das Arbeitstempo nicht, Ping-Pong als Praxis des Pair Programming in IaC zu nutzen.<\/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\">Eine komplexe Praxis.<\/a><\/noindex>Die Idee ist, dass ein Teilnehmer der leitende Navigator wird, w\u00e4hrend der andere die Rolle des ausf\u00fchrenden Fahrers \u00fcbernimmt. Das Entscheidungsrecht liegt ausschlie\u00dflich beim Navigator. Der Fahrer tippt lediglich und kann verbal Einfluss auf das Geschehen nehmen. Die Rollen bleiben lange Zeit unver\u00e4ndert. <\/p>\n<p>Es eignet sich gut f\u00fcr Schulungen, erfordert aber starke Soft Skills. An diesem Punkt sind wir gescheitert. Die Technik war schwierig. Und dabei liegt es 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 es nicht ausprobiert haben und dazu im Kontext unserer Arbeit nichts sagen k\u00f6nnen.<\/p>\n<blockquote><p>Allgemeine Ergebnisse zur Verwendung von Pair Programming:<\/p>\n<ul>\n<li>Wir haben ein ungleichm\u00e4\u00dfiges Arbeitstempo, das st\u00f6rend ist.<\/li>\n<li>Wir sind auf nicht ausreichende Soft Skills gesto\u00dfen. Und das Fachgebiet tr\u00e4gt nicht dazu bei, diese Defizite zu \u00fcberwinden.<\/li>\n<li>Lange Tests und Probleme mit den Werkzeugen machen die paarweise Entwicklung m\u00fchsam.<\/li>\n<\/ul>\n<\/blockquote>\n<p><b>5. Dennoch gab es auch Erfolge. Wir haben unsere eigene Methode \"Konvergenz - Divergenz\" entwickelt.<\/b> Ich werde kurz erl\u00e4utern, wie sie funktioniert. <\/p>\n<p>Wir haben feste Partner f\u00fcr einige Tage (weniger als eine Woche). Wir bearbeiten gemeinsam eine Aufgabe. Eine Zeit lang sitzen wir zusammen: einer schreibt, der andere sitzt da und beobachtet als Unterst\u00fctzungsteam. Dann trennen wir uns f\u00fcr eine Weile, jeder k\u00fcmmert sich um eigene Dinge, dann treffen wir uns wieder, synchronisieren uns sehr schnell, machen etwas gemeinsam und trennen uns wieder. <\/p>\n<h4>Planung und Kommunikation<\/h4>\n<p>\nDer letzte Block an Praktiken, durch die Probleme im Betriebssystem gel\u00f6st werden, ist die Organisation der Arbeiten an den Aufgaben selbst. Dazu geh\u00f6rt auch der Erfahrungsaustausch, der au\u00dferhalb der Partnerarbeit stattfindet. Schauen wir uns drei Praktiken an:<\/p>\n<p><b>1. Aufgaben durch Zielbaum.<\/b> Das allgemeine Projektmanagement haben wir \u00fcber einen Baum organisiert, der unendlich in die Zukunft reicht. Technisch erfolgt das Management in Miro. Es gibt eine Aufgabe \u2013 sie ist ein Zwischenziel. Davon leiten sich entweder kleinere Ziele oder Gruppen von Aufgaben ab. Von diesen wiederum die eigentlichen Aufgaben. Alle Aufgaben werden auf diesem Board erstellt und verwaltet. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: wie man Probleme mit XP \u00fcberwindet\" src=\"\/wp-content\/uploads\/2019\/10\/fe601e959f0055de4f7f4c39ae713c31.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDieses Schema bietet ebenfalls ein Feedback, das einmal t\u00e4glich erfolgt, wenn wir uns in Meetings synchronisieren. Ein gemeinsamer Plan, der strukturiert und vollkommen transparent ist, erm\u00f6glicht es jedem, \u00fcber das Geschehen und den Fortschritt informiert zu sein. <\/p>\n<p>Vorteile der visuellen Darstellung von Aufgaben:<\/p>\n<ul>\n<li>Urs\u00e4chlichkeit. Jede Aufgabe f\u00fchrt zu einem bestimmten globalen Ziel. Aufgaben werden nach kleineren Zielen gruppiert. Der Infrastruktur-Dom\u00e4ne ist an sich recht technisch. Es ist nicht immer sofort ersichtlich, welchen konkreten Einfluss das Schreiben eines Runbooks f\u00fcr die Migration auf einen anderen nginx auf das Gesch\u00e4ft hat. Das Nebeneinander einer Zielkarte macht das deutlicher.<br \/>\n <img decoding=\"async\" alt=\"Infrastructure as Code: wie man Probleme mit XP \u00fcberwindet\" src=\"\/wp-content\/uploads\/2019\/10\/fc4da9d277f7dc186a5710cf2be4419c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n Urs\u00e4chlichkeit 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 sich alle auf eine einzige Aufgabe st\u00fcrzen. Aufgaben aus einem Bereich reichen auch nicht immer aus. Wir sind gezwungen, die Arbeit zwischen kleinen Arbeitsgruppen parallel zu teilen. Dabei arbeiten die Gruppen eine Zeit lang an ihrer Aufgabe und k\u00f6nnen von jemand anderem verst\u00e4rkt werden. Von dieser Arbeitsgruppe fallen manchmal Leute weg. Manche gehen in den Urlaub, andere halten einen Vortrag auf der DevOps-Konferenz, wieder andere schreiben einen Artikel auf Habr. Zu wissen, welche Ziele und Aufgaben parallel bearbeitet werden k\u00f6nnen, wird sehr wichtig. <\/li>\n<\/ul>\n<p>\n<b>2. Wechselnde Moderatoren f\u00fcr die Morgentreffen.<\/b> In den Stand-up-Meetings gab es ein Problem \u2013 viele Aufgaben werden parallel bearbeitet. Manchmal sind die Aufgaben schwach miteinander verkn\u00fcpft, und es gibt kein Verst\u00e4ndnis daf\u00fcr, wer was macht. Die Meinung eines weiteren Teammitglieds ist sehr wichtig. Es handelt sich um zus\u00e4tzliche Informationen, die den Verlauf der L\u00f6sung einer Aufgabe ver\u00e4ndern k\u00f6nnen. Nat\u00fcrlich ist meist jemand mit dir im Paar, aber Beratung und Hinweise sind immer n\u00fctzlich. <\/p>\n<p>Um diese Situation zu verbessern, haben wir die Technik \"Wechsel des Moderators im Standup\" angewendet. Jetzt rotieren sie nach einer bestimmten Liste, und das hat seine Wirkung. Wenn deine Reihe kommt, bist du gezwungen, dich einzutauchen und zu verstehen, was vor sich geht, um das Scrum-Meeting gut abzuhalten. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: wie man Probleme mit XP \u00fcberwindet\" 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, Visualisierung in Baumstrukturen und Unterst\u00fctzung bei den morgendlichen Scrum-Meetings ist gut, aber nicht ideal. Im Paar bist du nur durch dein Wissen beschr\u00e4nkt. Der Aufgabenbaum hilft, global zu verstehen, wer was macht. Der Moderator und die Kollegen im morgendlichen Meeting werden nicht tief in deine Probleme eintauchen. Sie k\u00f6nnen mit Sicherheit auch etwas \u00fcbersehen. <\/p>\n<p>Die L\u00f6sung wurde im gegenseitigen Vorf\u00fchren der geleisteten Arbeiten und der anschlie\u00dfenden Diskussion gefunden. Wir treffen uns einmal pro Woche f\u00fcr eine Stunde und zeigen die Details der L\u00f6sungen f\u00fcr die Aufgaben, die wir in der letzten Woche bearbeitet haben. <\/p>\n<p>Im Rahmen der Demonstration m\u00fcssen die Details der Aufgabe offenbart und unbedingt ihre Funktionsweise demonstriert werden. <\/p>\n<p><b class=\"spoiler_title\">Der Vortrag kann nach einer Checkliste gehalten werden.<\/b>1. Bringen Sie Kontext ein. Woher stammt die Aufgabe, warum war sie \u00fcberhaupt notwendig?<\/p>\n<p>2. Wie wurde die Aufgabe zuvor gel\u00f6st? Zum Beispiel war massives Mausklicken erforderlich, oder es war \u00fcberhaupt unm\u00f6glich, etwas zu tun.<\/p>\n<p>3. Wie verbessern wir das? Zum Beispiel: \"Schaut, jetzt gibt es ein Skript, hier ist die README.\"<\/p>\n<p>4. Zeigen Sie, wie es funktioniert. Es ist w\u00fcnschenswert, ein bestimmtes Benutzungsszenario direkt durchzuf\u00fchren. Ich m\u00f6chte X, mache Y, sehe \u0419 (oder Z). Zum Beispiel, ich deploye NGINX, \u00f6ffne die URL und erhalte 200 OK. Wenn die Aktion lange dauert, bereiten Sie es im Voraus vor, damit Sie es sp\u00e4ter zeigen k\u00f6nnen. Es ist w\u00fcnschenswert, dies mindestens eine Stunde vor der Demo nicht mehr zu \u00e4ndern, wenn es fragil ist.<\/p>\n<p>5. Erkl\u00e4ren Sie, wie erfolgreich das Problem gel\u00f6st wurde, welche Schwierigkeiten bestehen bleiben, was unvollendet ist und welche Verbesserungen in Zukunft m\u00f6glich sind. Zum Beispiel, jetzt CLI, sp\u00e4ter wird es vollst\u00e4ndige Automatisierung in CI geben.<\/p>\n<p>Es w\u00e4re w\u00fcnschenswert, dass jeder Sprecher sich in 5-10 Minuten h\u00e4lt. Wenn Ihr Vortrag von vornherein wichtig ist und mehr Zeit in Anspruch nimmt, koordinieren Sie dies im Voraus im Kan\u00e4le sre-takeover.<\/p>\n<p>Nach dem Pr\u00e4senzteil folgt zwingend eine Diskussion im Thread. Hier zeigt sich dann das notwendige Feedback zu den eigenen Aufgaben. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: wie man Probleme mit XP \u00fcberwindet\" src=\"\/wp-content\/uploads\/2019\/10\/77da888d24b52c7eea7e65d2400e152c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nAm Ende wird eine Umfrage zur N\u00fctzlichkeit des Geschehens durchgef\u00fchrt. Dies ist bereits Feedback zum Inhalt des Vortrags und zur Relevanz der Aufgabe.<\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: wie man Probleme mit XP \u00fcberwindet\" src=\"\/wp-content\/uploads\/2019\/10\/7642cd87050171cc4a6bf278329dd283.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Lange Schlussfolgerungen und was als n\u00e4chstes kommt<\/h2>\n<p>\nEs k\u00f6nnte den Anschein erwecken, dass der Ton des Artikels etwas pessimistisch ist. Das ist nicht der Fall. Zwei niedrigschwellige Ebenen des Feedbacks, n\u00e4mlich Tests und Pair Programming, funktionieren. Nicht so perfekt wie in der traditionellen Entwicklung, aber der positive Effekt ist vorhanden. <\/p>\n<p>Tests in ihrer aktuellen Form bieten nur eine teilweise Abdeckung des Codes. Viele Konfigurationsfunktionen bleiben nicht getestet. Ihr Einfluss auf die unmittelbare Arbeit beim Schreiben von Code ist gering. Dennoch gibt es einen Effekt von Integrationstests, und genau diese erm\u00f6glichen es, Refactorings ohne Bedenken durchzuf\u00fchren. Das ist ein gro\u00dfer Fortschritt. Dar\u00fcber hinaus verschwindet das Problem mit dem Fokus auf die Entwicklung in Hochsprachen (wir benutzen Python, Go). Und f\u00fcr den 'Kleber' sind viele \u00dcberpr\u00fcfungen nicht n\u00f6tig, eine allgemeine Integration reicht aus.<\/p>\n<p>Die Arbeit im Pair h\u00e4ngt mehr von den jeweiligen Personen ab. Es gibt den Faktor Aufgabe und unsere Soft Skills. Mit manchen funktioniert es sehr gut, mit anderen schlechter. Der Nutzen ist auf jeden Fall vorhanden. Klar ist, dass selbst bei unzureichender Einhaltung der Regeln f\u00fcr Pair-Arbeit die Tatsache des gemeinsamen Arbeitens einen positiven Einfluss auf die Qualit\u00e4t des Ergebnisses hat. Pers\u00f6nlich arbeite ich im Pair einfacher und angenehmer.<\/p>\n<p>H\u00f6herstufige Methoden zur Einflussnahme auf das OS \u2013 Planung und Arbeit mit Aufgaben bringen definitiv Ergebnisse: qualitativ hochwertiger Wissensaustausch und 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, jedoch mit geringerem Wirkungsgrad.<\/li>\n<li>St\u00e4rken Sie das, 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 5.0.1.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\/de\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\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.\" \/>\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 l\u00f6st | ProHoster","description":"Hallo, Habr! Fr\u00fcher habe ich \u00fcber das Leben in der Paradigme Infrastructure as Code geklagt und nichts zur L\u00f6sung der bestehenden Probleme vorgeschlagen.","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.","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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"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}]}}