{"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\/sv\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp","title":{"rendered":"Infrastructure as Code: hur man \u00f6vervinner problem med hj\u00e4lp av XP","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hej, Habr! Tidigare klagade jag p\u00e5 livet i paradigmet Infrastructure as code och f\u00f6reslog inget f\u00f6r att l\u00f6sa situationen. Idag \u00e4r jag tillbaka f\u00f6r att ber\u00e4tta om de metoder och praxis som kan hj\u00e4lpa oss att bryta oss ur avgrunden av f\u00f6rtvivlan och leda situationen i r\u00e4tt riktning. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: hur man \u00f6vervinner problem med hj\u00e4lp av 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 \/>\nI den f\u00f6reg\u00e5ende artikeln <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/465137\/\">\u00abInfrastructure as code: en f\u00f6rsta bekantskap\u00bb<\/a><\/noindex> delade jag mina intryck av detta omr\u00e5de, f\u00f6rs\u00f6kte reflektera \u00f6ver den aktuella situationen och till och med f\u00f6reslog att standardpraxis som alla utvecklare k\u00e4nner till kan hj\u00e4lpa. Det kan ha verkat som att det fanns mycket klagande p\u00e5 livet, men inga f\u00f6rslag f\u00f6r att ta sig ur den situationen. <\/p>\n<h2>Vem \u00e4r vi, var \u00e4r vi och vilka problem har vi<\/h2>\n<p>\nJust nu befinner vi oss i SRE Onboarding Team, som best\u00e5r av sex programmerare och tre infrastrukturingenj\u00f6rer. Vi f\u00f6rs\u00f6ker alla skriva Infrastructure as code (IaC). Vi g\u00f6r det eftersom vi generellt kan skriva kod och alla har erfarenhet som utvecklare p\u00e5 \"\u00f6ver medelniv\u00e5\". <\/p>\n<ul>\n<li>Vi har en upps\u00e4ttning f\u00f6rdelar: en viss bakgrund, kunskaper om praxis, f\u00f6rm\u00e5ga att skriva kod och en vilja att l\u00e4ra oss nya saker. <\/li>\n<li>Och det finns en svag punkt, det vill s\u00e4ga en nackdel: bristande kunskaper om den tekniska grunden f\u00f6r infrastrukturen. <\/li>\n<\/ul>\n<p>\n<b class=\"spoiler_title\">Teknologiska stackar som vi anv\u00e4nder i v\u00e5r IaC.<\/b><\/p>\n<ul>\n<li>Terraform f\u00f6r att skapa resurser.<\/li>\n<li>Packer f\u00f6r att bygga bilder. Detta inkluderar Windows och CentOS 7-bilder.<\/li>\n<li>Jsonnet, f\u00f6r att g\u00f6ra kraftfulla byggen i drone.io, samt f\u00f6r att generera packer json och v\u00e5ra Terraform-moduler.<\/li>\n<li>Azure.<\/li>\n<li>Ansible vid skapande av bilder.<\/li>\n<li>Python f\u00f6r hj\u00e4lptj\u00e4nster samt provisioning-skript.<\/li>\n<li>Och allt detta i VSCode med till\u00e4gg som delas mellan teammedlemmarna.<\/li>\n<\/ul>\n<p>Slutsatsen av min <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/465137\/\">tidigare artikel<\/a><\/noindex> var s\u00e5dan: jag f\u00f6rs\u00f6kte inge (fr\u00e4mst mig sj\u00e4lv) optimisme, ville s\u00e4ga att vi kommer att prova de metoder och praxis som vi k\u00e4nner till f\u00f6r att k\u00e4mpa mot sv\u00e5righeterna och utmaningarna i detta omr\u00e5de. <\/p>\n<p>Just nu k\u00e4mpar vi med f\u00f6ljande problem i IaC:<\/p>\n<ul>\n<li>Imperfektion i verktyg, utvecklingsmedel.<\/li>\n<li>L\u00e5ngsam distribueringsprocess. Infrastruktur \u00e4r en del av den verkliga v\u00e4rlden, vilket kan ta tid.<\/li>\n<li>Brist p\u00e5 metoder och praxis.<\/li>\n<li>Vi \u00e4r nya och vet inte mycket.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Extremprogrammering (XP) kommer till unds\u00e4ttning<\/h2>\n<p>\nAlla utvecklare k\u00e4nner v\u00e4l till extrem programmering (XP) och de metoder som ligger bakom. M\u00e5nga av oss har arbetat enligt denna metodik och den har varit framg\u00e5ngsrik. S\u00e5 varf\u00f6r inte anv\u00e4nda principerna och metoderna som finns d\u00e4r f\u00f6r att \u00f6vervinna infrastruktursutmaningar? Vi har beslutat att till\u00e4mpa detta tillv\u00e4gag\u00e5ngss\u00e4tt och se vad som h\u00e4nder.<\/p>\n<p><b class=\"spoiler_title\">Bed\u00f6mning av till\u00e4mpbarheten av XP-metoden i er bransch<\/b>H\u00e4r \u00e4r en beskrivning av den milj\u00f6 d\u00e4r XP passar bra, och hur det relaterar till oss: <\/p>\n<p>1. Dynamiskt f\u00f6r\u00e4nderliga mjukvarukrav. Vi visste vad det slutgiltiga m\u00e5let var. Men detaljerna kan variera. Vi best\u00e4mmer sj\u00e4lva hur vi ska navigera, s\u00e5 kraven f\u00f6r\u00e4ndras periodiskt (fr\u00e4mst av oss sj\u00e4lva). N\u00e4r det g\u00e4ller SRE-teamet som sj\u00e4lva g\u00f6r automatiseringen och ocks\u00e5 begr\u00e4nsar krav och arbetsomfattning, s\u00e5 passa det h\u00e4r punkt bra. <\/p>\n<p>2. Risker orsakade av fasta tidsprojekt som anv\u00e4nder ny teknologi. Vi kan m\u00f6ta risker n\u00e4r vi anv\u00e4nder saker vi inte \u00e4r bekanta med. Och det h\u00e4r \u00e4r 100 % v\u00e5rt fall. Hela v\u00e5rt projekt handlar om att anv\u00e4nda teknologier som vi inte var helt bekanta med. Det \u00e4r generellt ett konstant problem, eftersom m\u00e5nga nya teknologier st\u00e4ndigt dyker upp inom infrastruktur. <\/p>\n<p>3,4. Litet, samlokaliserat utvecklingsteam. Den teknik ni anv\u00e4nder m\u00f6jligg\u00f6r automatiserade enhets- och funktionstest. Dessa tv\u00e5 punkter passar oss inte riktigt. F\u00f6r det f\u00f6rsta \u00e4r vi inte ett samlokaliserat team, f\u00f6r det andra \u00e4r vi nio personer, vilket kan betraktas som ett stort team. Men enligt vissa definitioner av 'stort' team s\u00e5 \u00e4r m\u00e5nga 14+ personer. <\/p>\n<p>L\u00e5t oss titta p\u00e5 n\u00e5gra metoder fr\u00e5n XP och hur de p\u00e5verkar hastigheten och kvaliteten p\u00e5 feedback.<\/p>\n<h4>Principen om feedbackcykeln i XP<\/h4>\n<p>\nI min f\u00f6rst\u00e5else \u00e4r feedback svaret p\u00e5 fr\u00e5gan, g\u00f6r jag r\u00e4tt, \u00e4r vi p\u00e5 v\u00e4g \u00e5t r\u00e4tt h\u00e5ll? I XP finns en fantastisk schema: tidscykeln f\u00f6r feedback. Det intressanta \u00e4r att ju l\u00e4ngre ner vi \u00e4r i cykeln, desto snabbare f\u00e5r vi tillbaka en respons f\u00f6r att kunna svara p\u00e5 n\u00f6dv\u00e4ndiga fr\u00e5gor. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: hur man \u00f6vervinner problem med hj\u00e4lp av XP\" src=\"\/wp-content\/uploads\/2019\/10\/e381fb2d7937cbd1978fd6740e63e790.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDetta \u00e4r ett ganska intressant \u00e4mne f\u00f6r diskussion, att vi inom IT-branschen snabbt kan f\u00e5 feedback. T\u00e4nk dig hur sv\u00e5rt det skulle vara att genomf\u00f6ra ett projekt i ett halv\u00e5r och f\u00f6rst d\u00e5 f\u00e5 reda p\u00e5 att det i b\u00f6rjan fanns ett fel. S\u00e5dant sker b\u00e5de inom design och i alla konstruktioner av komplexa system. <\/p>\n<p>I det h\u00e4r fallet hj\u00e4lper IaC oss med feedback. Jag g\u00f6r en liten justering i schemat ovan: v\u00e5r releaseplan har inte en m\u00e5nads cykel, utan sker flera g\u00e5nger per dag. Till denna cykel \u00e4r vissa praktiker kopplade som vi kommer att titta n\u00e4rmare p\u00e5.<\/p>\n<blockquote><p>Viktigt: feedback kan bli l\u00f6sningen p\u00e5 alla ovan n\u00e4mnda problem. Tillsammans med XP-praktiker kan den dra oss ur avgrunden av f\u00f6rtvivlan.<\/p><\/blockquote>\n<p><\/p>\n<h2>Hur man drar sig ur avgrunden av f\u00f6rtvivlan: tre praktiker<\/h2>\n<p><\/p>\n<h4>Tester <\/h4>\n<p>\nTester n\u00e4mns tv\u00e5 g\u00e5nger i XP:s feedbackcykel. Det \u00e4r inte utan anledning. De \u00e4r extremt viktiga f\u00f6r hela tekniken kring extrem programmering. <\/p>\n<p>Det f\u00f6ruts\u00e4tts att du har enhetstester och acceptanstester. Vissa ger dig feedback p\u00e5 n\u00e5gra minuter, andra tar dagar att skriva och k\u00f6rs mindre ofta. <\/p>\n<p>Det finns en klassisk testpyramid som visar att vissa tester b\u00f6r vara fler. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: hur man \u00f6vervinner problem med hj\u00e4lp av XP\" src=\"\/wp-content\/uploads\/2019\/10\/29f3217f11b67378c9c0c3f14fab9d61.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHur \u00e4r denna skema till\u00e4mplig p\u00e5 v\u00e5rt IaC-projekt? Egentligen\u2026 inte alls. <\/p>\n<ul>\n<li>Enhetstester, trots att det b\u00f6r vara m\u00e5nga av dem, kan inte vara f\u00f6r m\u00e5nga. Antingen testar de n\u00e5got mycket indirekt. Faktiskt kan man s\u00e4ga att vi knappt skriver dem alls. Men h\u00e4r \u00e4r n\u00e5gra till\u00e4mpningar f\u00f6r s\u00e5dana tester som vi faktiskt lyckats genomf\u00f6ra:\n<ol>\n<li>Testning av koden p\u00e5 jsonnet. Detta \u00e4r till exempel v\u00e5r byggpipeline i drone, som \u00e4r ganska komplex. Koden p\u00e5 jsonnet \u00e4r v\u00e4l t\u00e4ckt av tester. <br \/>\n Vi anv\u00e4nder detta <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/yugui\/jsonnetunit\">Unit testing framework for Jsonnet<\/a><\/noindex>. <\/li>\n<li> Tester p\u00e5 skript som k\u00f6rs n\u00e4r resursen startas. Skript i Python, och d\u00e4rmed kan tester skrivas f\u00f6r dem.<\/li>\n<\/ol>\n<\/li>\n<li>Det \u00e4r potentiellt m\u00f6jligt att kontrollera konfigurationen i tester, men vi g\u00f6r inte s\u00e5. Det finns ocks\u00e5 m\u00f6jlighet att st\u00e4lla in kontroller av konfigureringsregler f\u00f6r resurser via <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wata727\/tflint\">tflint<\/a><\/noindex>. Men f\u00f6r terraform \u00e4r kontrollerna f\u00f6r grundl\u00e4ggande, och m\u00e5nga testscenarier har skrivits f\u00f6r AWS. Vi har Azure, s\u00e5 det h\u00e4r passar inte heller.<\/li>\n<li>Komponentintegreringstester: h\u00e4r beror det p\u00e5 hur du klassificerar dem och var du placerar dem. Men de fungerar i grunden.\n<p>S\u00e5 h\u00e4r ser integreringstester ut. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: hur man \u00f6vervinner problem med hj\u00e4lp av XP\" src=\"\/wp-content\/uploads\/2019\/10\/b4771e9e5d329ffb2ba565ead7fdddfd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDetta \u00e4r ett exempel p\u00e5 att bygga bilder i Drone CI. F\u00f6r att n\u00e5 dem m\u00e5ste man v\u00e4nta 30 minuter p\u00e5 att Packer-bilden ska byggas, och sedan ytterligare 15 minuter p\u00e5 att de ska genomf\u00f6ras. Men de finns! <\/p>\n<p><b class=\"spoiler_title\">Algoritm f\u00f6r att kontrollera bilder<\/b> <\/p>\n<ol>\n<li>F\u00f6rst m\u00e5ste Packer f\u00f6rbereda bilden helt.<\/li>\n<li>Bredvid testet finns det en Terraform med lokal status som vi anv\u00e4nder f\u00f6r att distribuera bilden. <\/li>\n<li>Vid distributionen anv\u00e4nds en liten modulfiler som ligger bredvid f\u00f6r att underl\u00e4tta arbetet med bilden. <\/li>\n<li>N\u00e4r en VM har distribuerats fr\u00e5n bilden kan kontroller p\u00e5b\u00f6rjas. Kontrollerna utf\u00f6rs huvudsakligen p\u00e5 maskinen. Det kontrolleras hur skripten har fungerat vid start, hur daemons fungerar. F\u00f6r detta loggar vi in p\u00e5 den nyss startade maskinen via ssh eller winrm och kontrollerar konfigurationsstatus eller om tj\u00e4nsterna har startat.<\/li>\n<\/ol>\n<p>\n <\/li>\n<li>En liknande situation g\u00e4ller f\u00f6r integrationstester och moduler f\u00f6r Terraform. H\u00e4r \u00e4r en kort tabell som f\u00f6rklarar egenskaperna hos s\u00e5dana tester.\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: hur man \u00f6vervinner problem med hj\u00e4lp av XP\" src=\"\/wp-content\/uploads\/2019\/10\/e2624fb97831701e374a7e8e7fe39a16.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c5terkopplingen i pipelinen \u00e4r ungef\u00e4r 40 minuter. Allt tar v\u00e4ldigt l\u00e5ng tid. Det kan anv\u00e4ndas f\u00f6r regressionstester, men f\u00f6r ny utveckling \u00e4r det verkligen om\u00f6jligt. Om man f\u00f6rbereder sig mycket, preparerar k\u00f6rande inst\u00e4llningar och skript kan tiden kortas ner till 10 minuter. Men det \u00e4r fortfarande inte enhetstester, som kan g\u00f6ras 100 stycken p\u00e5 5 sekunder. <\/li>\n<\/ul>\n<p>\nFr\u00e5nvaron av enhetstester vid byggande av bilder eller moduler f\u00f6r Terraform g\u00f6r att vi tvingas \u00f6verl\u00e4mna arbetet till separata tj\u00e4nster, som enkelt kan anropas via REST, eller till Python-skript.<\/p>\n<p>Till exempel beh\u00f6vde vi se till att den virtuella maskinen registrerade sig sj\u00e4lv i tj\u00e4nsten <noindex><a rel=\"nofollow\" href=\"https:\/\/www.scaleft.com\/\">ScaleFT<\/a><\/noindex>, och vid borttagning av VM:en raderade sig sj\u00e4lv.<\/p>\n<p>Eftersom ScaleFT \u00e4r en tj\u00e4nst m\u00e5ste vi arbeta med den via API. En wrapper har skrivits som vi kan anropa och s\u00e4ga: \"G\u00e5 in och ta bort det h\u00e4r och det d\u00e4r\". Den lagrar alla n\u00f6dv\u00e4ndiga inst\u00e4llningar och \u00e5tkomster. <\/p>\n<p>Till detta kan vi nu skriva normala tester, eftersom det inte skiljer sig fr\u00e5n vanlig mjukvara: n\u00e5gon API mockas, du anropar, och vi ser vad som h\u00e4nder. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: hur man \u00f6vervinner problem med hj\u00e4lp av XP\" src=\"\/wp-content\/uploads\/2019\/10\/dc17aaa64038acb080669d31fe8ecfe0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<blockquote><p>Sammanfattning av testerna: Enhetstestning, som borde ta en minut enligt OS, ger ingen s\u00e5dan feedback. H\u00f6gre typer av tester ger effekt, men l\u00f6ser bara en del av problemen. <\/p><\/blockquote>\n<h4>Parprogrammering<\/h4>\n<p>\nTester \u00e4r sj\u00e4lvklart bra. Man kan skriva m\u00e5nga av dem, och de kan vara av olika slag. De kommer att fungera p\u00e5 sina niv\u00e5er och ge oss feedback. Men problemet med d\u00e5liga enhetstester som ger det snabbaste operativsystemet kvarst\u00e5r. Samtidigt vill man ha ett snabbt operativsystem, som \u00e4r enkelt och trevligt att arbeta med. F\u00f6r att inte tala om kvaliteten p\u00e5 den l\u00f6sning som erh\u00e5lls. Lyckligtvis finns det tekniker som m\u00f6jligg\u00f6r snabbare feedback \u00e4n enhetstester. Det handlar om parprogrammering.<\/p>\n<p>N\u00e4r man skriver kod vill man ha feedback om dess kvalitet s\u00e5 snabbt som m\u00f6jligt. Ja, man kan skriva allt i en feature-branch (f\u00f6r att inte st\u00f6ra n\u00e5gon), g\u00f6ra en pull request p\u00e5 GitHub, utse n\u00e5gon vars \u00e5sikt har vikt, och v\u00e4nta p\u00e5 svar. <\/p>\n<p>Men att v\u00e4nta kan ta l\u00e5ng tid. Folk \u00e4r upptagna, och svaret, \u00e4ven om det kommer, kanske inte \u00e4r av h\u00f6g kvalitet. Anta att svaret kom omedelbart, att granskaren snabbt f\u00f6rstod hela id\u00e9n, men svaret kommer fortfarande med en f\u00f6rsenad tidpunkt, i efterhand. Man vill ha det tidigare. H\u00e4r syftar parprogrammering till att m\u00f6jligg\u00f6ra just detta \u2013 att f\u00e5 feedback direkt, i skriv\u00f6gonblicket.<\/p>\n<p>Nedan presenterar jag stilarna f\u00f6r parprogrammering och deras till\u00e4mplighet i arbetet med IaC: <\/p>\n<p><b>1. Klassisk, erfaren + erfaren, byte enligt timer.<\/b> Tv\u00e5 roller \u2013 f\u00f6rare och navigat\u00f6r. Tv\u00e5 personer. De arbetar p\u00e5 samma kod och byter roller efter en f\u00f6rutbest\u00e4md tidsperiod. <\/p>\n<p>L\u00e5t oss granska kompatibiliteten mellan v\u00e5ra problem och stilen: <\/p>\n<ul>\n<li>Problem: ofullkomlighet hos verktyg, medel f\u00f6r att utveckla kod. <br \/>\nNegativ p\u00e5verkan: l\u00e4ngre utvecklingstid, vi blir l\u00e5ngsammare, arbetsrytm \/ tempo st\u00f6rs.<br \/>\n Hur vi hanterar det: vi anv\u00e4nder andra verktyg, gemensam IDE och l\u00e4r oss kortkommandon.<\/li>\n<li> Problem: l\u00e5ngsam distribution. <br \/>\nNegativ p\u00e5verkan: \u00f6kar tiden f\u00f6r att skapa en fungerande kodbit. Vi blir uttr\u00e5kade under v\u00e4ntan, h\u00e4nderna str\u00e4cker sig efter att syssels\u00e4tta sig med n\u00e5got annat medan vi v\u00e4ntar. <br \/>\nHur vi hanterar det: vi har inte l\u00f6st det.<\/li>\n<li> Problem: brist p\u00e5 metoder och praxis. <br \/>\nNegativ p\u00e5verkan: vi har ingen kunskap om vad som \u00e4r bra och vad som \u00e4r d\u00e5ligt. Det f\u00f6rl\u00e4nger tiden f\u00f6r att f\u00e5 feedback. <br \/>\nHur vi hanterar det: utbyte av \u00e5sikter och metoder i pararbete l\u00f6ser n\u00e4stan problemet.<\/li>\n<\/ul>\n<p>\nHuvudproblemet med att anv\u00e4nda denna stil i IaC \u00e4r det oj\u00e4mna arbetstempot. I traditionell mjukvaruutveckling har du en mycket j\u00e4mn progression. Du kan spendera fem minuter och skriva N. Spendera tio minuter och skriva 2N, femton minuter \u2013 3N. H\u00e4r kan du spendera fem minuter och skriva N, f\u00f6r att sedan spendera ytterligare trettio minuter och skriva en tiondel av N. H\u00e4r vet du ingenting, du har en blockering, en stillast\u00e5ende situation. Att reda ut det tar tid och distraherar fr\u00e5n sj\u00e4lva programmeringen. <\/p>\n<blockquote><p>Slutsats: i sin rena form passar det inte f\u00f6r oss.<\/p><\/blockquote>\n<p><b>2. Ping-pong. Denna metod inneb\u00e4r att en deltagare skriver testet, medan den andra implementerar det.<\/b> Med tanke p\u00e5 att det \u00e4r komplicerat med enhetstester, och att man m\u00e5ste skriva ett tidskr\u00e4vande integrationstest, f\u00f6rsvinner hela l\u00e4ttheten med ping-pong. <\/p>\n<p>Jag kan s\u00e4ga att vi har f\u00f6rs\u00f6kt med att dela upp ansvar f\u00f6r att designa testscenarier och implementera koden f\u00f6r dem. En deltagare kom p\u00e5 scenariot och var ansvarig f\u00f6r detta, han hade det sista ordet. Den andra var ansvarig f\u00f6r implementeringen. Det fungerade bra. Kvaliteten p\u00e5 scenariot \u00f6kade med denna metod. <\/p>\n<blockquote><p>Slutsats: tyv\u00e4rr till\u00e5ter arbetstempot oss inte att anv\u00e4nda ping-pong som en praktik f\u00f6r parprogrammering i 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\">En komplex praktik.<\/a><\/noindex>. Id\u00e9n \u00e4r att en deltagare blir den styrande navigat\u00f6ren, medan den andra tar rollen som utf\u00f6rande drivare. Beslutsr\u00e4tten ligger enbart hos navigat\u00f6ren. Drivaren skriver bara och kan med ord p\u00e5verka det som sker. Roller f\u00f6r\u00e4ndras inte under en l\u00e4ngre tid. <\/p>\n<p>Passar bra f\u00f6r utbildning, men kr\u00e4ver starka mjuka f\u00e4rdigheter. H\u00e4r st\u00f6tte vi p\u00e5 problem. Tekniken gick tr\u00f6gt. Och det handlar inte ens om infrastrukturen. <\/p>\n<blockquote><p>Slutsats: potentiellt kan det anv\u00e4ndas, vi ger inte upp f\u00f6rs\u00f6ken.<\/p><\/blockquote>\n<p>\n<b>4. Mobbing, sv\u00e4rmande och alla k\u00e4nda, men inte n\u00e4mnda stilar.<\/b> behandlas inte, d\u00e5 vi inte har provat dem och kan inte uttala oss om dem i kontexten av v\u00e5rt arbete.<\/p>\n<blockquote><p>Sammanfattande slutsatser ang\u00e5ende parprogrammering:<\/p>\n<ul>\n<li>Vi upplever ett oj\u00e4mnt arbetstempo som skapar problem.<\/li>\n<li>Vi har k\u00f6rt fast p\u00e5 v\u00e5ra otillr\u00e4ckliga mjuka f\u00e4rdigheter. Och \u00e4mnesomr\u00e5det bidrar inte till att \u00f6vervinna dessa brister.<\/li>\n<li>L\u00e5nga tester och verktygsproblem g\u00f6r parprogrammering segt.<\/li>\n<\/ul>\n<\/blockquote>\n<p><b>5. Trots detta hade vi ocks\u00e5 framg\u00e5ngar. Vi kom p\u00e5 v\u00e5r egen metod \"Konvergens \u2013 divergens\".<\/b> Jag ska kort beskriva hur den fungerar. <\/p>\n<p>Vi har st\u00e4ndiga partners under flera dagar (mindre \u00e4n en vecka). Vi arbetar tillsammans med en uppgift. En tid sitter vi tillsammans: en skriver, den andra observerar som supportteam. Sedan separerar vi ett tag, var och en g\u00f6r sina egna saker, och sen kommer vi \u00e5terigen tillsammans, synkroniserar oss mycket snabbt, g\u00f6r n\u00e5got tillsammans och separerar igen. <\/p>\n<h4>Planering och kommunikation<\/h4>\n<p>\nDet sista blocket av metoder f\u00f6r att l\u00f6sa OS-problem \u00e4r organiseringen av arbetet med sj\u00e4lva uppgifterna. H\u00e4r ing\u00e5r ocks\u00e5 erfarenhetsutbyte som ligger utanf\u00f6r pararbete. L\u00e5t oss \u00f6verv\u00e4ga tre metoder:<\/p>\n<p><b>1. Uppgifter genom m\u00e5ltr\u00e4det.<\/b> Den \u00f6vergripande ledningen av projektet organiserar vi genom ett tr\u00e4d som o\u00e4ndligt str\u00e4cker sig in i framtiden. Tekniskt sett hanteras detta i Miro. Det finns en uppgift \u2013 den \u00e4r ett delm\u00e5l. Fr\u00e5n den leder antingen mindre m\u00e5l eller grupper av uppgifter. Fr\u00e5n dem g\u00e5r sj\u00e4lva uppgifterna. Alla uppgifter skapas och hanteras p\u00e5 denna tavla. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: hur man \u00f6vervinner problem med hj\u00e4lp av XP\" src=\"\/wp-content\/uploads\/2019\/10\/fe601e959f0055de4f7f4c39ae713c31.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDetta schema ger ocks\u00e5 \u00e5terkoppling som sker en g\u00e5ng om dagen, n\u00e4r vi synkroniserar oss p\u00e5 m\u00f6ten. Att ha en gemensam plan f\u00f6r alla, strukturerad och helt \u00f6ppen, g\u00f6r det m\u00f6jligt f\u00f6r alla att vara medvetna om vad som p\u00e5g\u00e5r och hur l\u00e5ngt vi har kommit i v\u00e5r framsteg. <\/p>\n<p>F\u00f6rdelarna med visuell \u00f6versikt \u00f6ver uppgifter:<\/p>\n<ul>\n<li>Orsakssamband. Varje uppgift leder till n\u00e5got globalt m\u00e5l. Uppgifterna grupperas efter mindre m\u00e5l. Dom\u00e4ninfrastrukturen \u00e4r i sig ganska teknisk. Det \u00e4r inte alltid uppenbart vilken specifik p\u00e5verkan p\u00e5 aff\u00e4ren som exempelvis skrivning av en handbok f\u00f6r migrering till en annan nginx har. Att ha ett m\u00e5l bredvid en uppgift g\u00f6r det mer begripligt.<br \/>\n <img decoding=\"async\" alt=\"Infrastructure as Code: hur man \u00f6vervinner problem med hj\u00e4lp av XP\" src=\"\/wp-content\/uploads\/2019\/10\/fc4da9d277f7dc186a5710cf2be4419c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n Orsakssamband \u00e4r en viktig egenskap hos uppgifter. Det besvarar direkt fr\u00e5gan: \"G\u00f6r jag r\u00e4tt saker?\" <\/li>\n<li>Parallellitet. Vi \u00e4r nio personer, och det \u00e4r fysiskt om\u00f6jligt f\u00f6r alla att kasta sig \u00f6ver en och samma uppgift. Ibland r\u00e4cker inte uppgifterna inom ett omr\u00e5de. Vi tvingas parallellisera arbetet mellan sm\u00e5 arbetsgrupper. Under tiden arbetar grupperna en stund med sina uppgifter, och de kan f\u00f6rst\u00e4rkas av n\u00e5gon annan. Ibland l\u00e4mnar personer fr\u00e5n denna arbetsgrupp. N\u00e5gon g\u00e5r p\u00e5 semester, n\u00e5gon g\u00f6r en presentation f\u00f6r konferensen DevOps conf, n\u00e5gon skriver en artikel p\u00e5 Habr. Att veta vilka m\u00e5l och uppgifter som kan g\u00f6ras parallellt blir mycket viktigt. <\/li>\n<\/ul>\n<p>\n<b>2. Rotationen av ledare f\u00f6r morgonm\u00f6ten.<\/b> P\u00e5 standup-m\u00f6tena har vi st\u00f6tt p\u00e5 ett problem \u2013 m\u00e5nga uppgifter g\u00f6rs parallellt av folk. Ibland h\u00e4nger uppgifterna d\u00e5ligt ihop och det finns ingen f\u00f6rst\u00e5else f\u00f6r vem som g\u00f6r vad. \u00c5sikten fr\u00e5n en annan teammedlem \u00e4r mycket viktig. Det \u00e4r extra information som kan f\u00f6r\u00e4ndra hur uppgiften l\u00f6ses. Visst finns det vanligtvis n\u00e5gon med dig, men konsultation och tips \u00e4r alltid v\u00e4lkomna. <\/p>\n<p>F\u00f6r att f\u00f6rb\u00e4ttra denna situation har vi implementerat tekniken \"Rotation av standup-ledaren\". Nu roterar de enligt en viss lista, och det har en effekt. N\u00e4r det \u00e4r din tur \u00e4r du tvungen att f\u00f6rdjupa dig och f\u00f6rst\u00e5 vad som p\u00e5g\u00e5r f\u00f6r att bra kunna leda scrum-m\u00f6tet. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: hur man \u00f6vervinner problem med hj\u00e4lp av XP\" src=\"\/wp-content\/uploads\/2019\/10\/622973a654ecd3e27a7a366596814ffc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>3. Intern demo.<\/b> Hj\u00e4lp med att l\u00f6sa uppgifter genom parprogrammering, visualisering i uppgifts-tr\u00e4det och hj\u00e4lp p\u00e5 scrum-m\u00f6tena p\u00e5 morgonen \u00e4r bra, men inte perfekt. I paret \u00e4r du begr\u00e4nsad av dina egna kunskaper. Uppgifts-tr\u00e4det hj\u00e4lper till att f\u00e5 en global f\u00f6rst\u00e5else f\u00f6r vem som g\u00f6r vad. Och ledaren och kollegorna p\u00e5 morgonm\u00f6tet kommer inte att f\u00f6rdjupa sig i dina problem. De kan definitivt missa n\u00e5got. <\/p>\n<p>L\u00f6sningen hittades i att demonstrera det arbete som utf\u00f6rts f\u00f6r varandra och sedan diskutera det. Vi tr\u00e4ffas en g\u00e5ng i veckan i en timme och visar detaljer om l\u00f6sningar p\u00e5 uppgifter vi har arbetat med under den senaste veckan. <\/p>\n<p>Under demonstrationen b\u00f6r man avsl\u00f6ja detaljerna i uppgiften och definitivt demonstrera dess funktion. <\/p>\n<p><b class=\"spoiler_title\">Presentationen kan h\u00e5llas enligt en checklista.<\/b>1. S\u00e4tt in i kontext. Var kom uppgiften ifr\u00e5n, varf\u00f6r beh\u00f6vdes det \u00f6verhuvudtaget?<\/p>\n<p>2. Hur har uppgiften l\u00f6sts tidigare? Till exempel, beh\u00f6vdes massiva mus-klick eller var det \u00f6verhuvudtaget om\u00f6jligt att g\u00f6ra n\u00e5got.<\/p>\n<p>3. Hur f\u00f6rb\u00e4ttrar vi detta. Till exempel: \"Titta, nu finns det ett litet skript, h\u00e4r \u00e4r README.\"<\/p>\n<p>4. Visa hur det fungerar. Det \u00e4r \u00f6nskv\u00e4rt att direkt genomf\u00f6ra ett anv\u00e4ndarscenario. Jag vill ha X, g\u00f6r Y, ser Z (eller Z). Till exempel, jag distribuerar NGINX, kollar url, f\u00e5r 200 OK. Om \u00e5tg\u00e4rden tar l\u00e5ng tid, f\u00f6rbered i f\u00f6rv\u00e4g s\u00e5 att du kan visa det senare. Det \u00e4r b\u00e4st att inte bryta ner n\u00e5got en timme f\u00f6re demonstrationen, om det \u00e4r k\u00e4nsligt.<\/p>\n<p>5. F\u00f6rklara hur v\u00e4l problemet har l\u00f6sts, vilka sv\u00e5righeter som \u00e5terst\u00e5r, vad som inte \u00e4r klart och vilka f\u00f6rb\u00e4ttringar som kan g\u00f6ras fram\u00f6ver. Till exempel, nu finns det en cli, senare blir det full automation i CI.<\/p>\n<p>Det \u00e4r \u00f6nskv\u00e4rt att varje talare h\u00e5ller sig inom 5-10 minuter. Om din presentation \u00e4r uppenbart viktig och kommer att ta l\u00e4ngre tid, kom \u00f6verens om det i kanalen sre-takeover i f\u00f6rv\u00e4g.<\/p>\n<p>Efter den fysiska delen f\u00f6ljer alltid en diskussion i tr\u00e5den. H\u00e4r dyker den n\u00f6dv\u00e4ndiga feedbacken upp ang\u00e5ende v\u00e5ra uppgifter. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: hur man \u00f6vervinner problem med hj\u00e4lp av XP\" src=\"\/wp-content\/uploads\/2019\/10\/77da888d24b52c7eea7e65d2400e152c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSom resultat genomf\u00f6rs en enk\u00e4t f\u00f6r att ta reda p\u00e5 nyttan med det som p\u00e5g\u00e5r. Detta ger redan feedback ang\u00e5ende sj\u00e4lva presentationen och betydelsen av uppgiften.<\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: hur man \u00f6vervinner problem med hj\u00e4lp av XP\" src=\"\/wp-content\/uploads\/2019\/10\/7642cd87050171cc4a6bf278329dd283.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>L\u00e5nga slutsatser och n\u00e4sta steg<\/h2>\n<p>\nDet kan verka som att tonen i artikeln \u00e4r n\u00e5got pessimistisk. S\u00e5 \u00e4r det inte. De tv\u00e5 grundl\u00e4ggande niv\u00e5erna av att f\u00e5 feedback, n\u00e4mligen tester och parprogrammering, fungerar. Inte helt som i traditionell utveckling, men det finns en positiv effekt av detta. <\/p>\n<p>Tester, i deras nuvarande form, ger endast delvis t\u00e4ckning av koden. M\u00e5nga konfigurationsfunktioner f\u00f6rblir otestade. Deras p\u00e5verkan p\u00e5 det faktiska arbetet vid kodskrivning \u00e4r l\u00e5g. Men det finns en effekt fr\u00e5n integrationstester, och det \u00e4r just de som g\u00f6r det m\u00f6jligt att genomf\u00f6ra refaktoriseringar utan r\u00e4dsla. Detta \u00e4r en stor prestation. Dessutom f\u00f6rsvinner problemet med att flytta fokus till utveckling i h\u00f6gniv\u00e5spr\u00e5k (vi anv\u00e4nder python, go). F\u00f6r \"limmet\" kr\u00e4vs m\u00e5nga kontroller, vilket inte \u00e4r n\u00f6dv\u00e4ndigt, allm\u00e4n integration r\u00e4cker.<\/p>\n<p>Arbete i par beror mer p\u00e5 de specifika personerna. Det finns faktorer som uppgiften och v\u00e5ra mjuka f\u00e4rdigheter. Med vissa fungerar det v\u00e4ldigt bra, med andra s\u00e4mre. Det finns definitivt nytta av detta. Det \u00e4r klart att \u00e4ven vid otillr\u00e4ckligt efterlevande av reglerna f\u00f6r pararbete, p\u00e5verkar sj\u00e4lva faktumet av gemensamt utf\u00f6rande av uppgifter positivt resultatets kvalitet. Personligen tycker jag att det \u00e4r enklare och trevligare att arbeta i par.<\/p>\n<p>H\u00f6gre niv\u00e5er av p\u00e5verkan p\u00e5 OS \u2013 planering och arbete med uppgifter ger definitivt effekter: kvalitativ kunskapsutbyte och f\u00f6rb\u00e4ttrad kvalitet p\u00e5 utvecklingen. <\/p>\n<h4>Korta slutsatser i en rad. <\/h4>\n<p><\/p>\n<ul>\n<li>XP-praktiker fungerar inom IaC, men med l\u00e4gre effektivitet.<\/li>\n<li>St\u00e4rk det som fungerar.<\/li>\n<li>T\u00e4nk ut egna kompenserande mekanismer och praktiker.<\/li>\n<\/ul>\n<p>K\u00e4lla: <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.4 - 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\/sv\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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: hur man \u00f6vervinner problem med hj\u00e4lp av XP | ProHoster","description":"Hej, Habr! Tidigare har jag klagat \u00f6ver livet inom paradigmet Infrastructure as Code och inte f\u00f6reslagit n\u00e5got f\u00f6r att l\u00f6sa den utmanande situationen.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/38747","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=38747"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/38747\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/29066"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=38747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=38747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=38747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}