{"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\/et\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp","title":{"rendered":"Infrastructure as Code: kuidas probleemidest \u00fcle saada XP abil","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Tere, Habr! Varem kurtsin ma elu \u00fcle infrastruktuuri kui koodi paradigmas ja ei pakkunud v\u00e4lja lahendusi tekkinud olukorrale. T\u00e4na olen tagasi, et r\u00e4\u00e4kida, millised l\u00e4henemisviisid ja praktikad aitavad v\u00e4lja murda meeleheite s\u00fcgavikust ja suunata olukorda \u00f5igesse suunda. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: kuidas probleemidest \u00fcle saada XP abil\" 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 \/>\nEelmisel artiklil <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/465137\/\">\u201eInfrastruktuur kui kood: esimene tutvustus\u201c<\/a><\/noindex> Jagasin oma muljeid sellest valdkonnast, p\u00fc\u00fcdsin m\u00f5elda praegusele olukorrale ning isegi oletasin, et tuntud ja k\u00f5ikide arendajate teadlikud praktikud v\u00f5ivad aidata. V\u00f5is n\u00e4ida, et seal oli palju kaebusi elu \u00fcle, kuid ei olnud ettepanekuid keerulise olukorra lahendamiseks. <\/p>\n<h2>Kes me oleme, kus me oleme ja millised on meie probleemid<\/h2>\n<p>\nPraegu oleme SRE onboarding meeskonnas, mis koosneb kuuest programmeerijast ja kolmest infrastruktuuriinsenerist. Me k\u00f5ik proovime kirjutada infrastruktuuri kui koodi (IaC). Teeme seda, sest p\u00f5him\u00f5tteliselt oskame me kirjutada koodi ja meie taust on keskmise taseme arendaja oma. <\/p>\n<ul>\n<li>Meil on paar plussikut: teatud taust, teatavate praktikate tundmine, koodikirjutamise oskus ja soov \u00f5ppida uut. <\/li>\n<li>Ja on ka \u00fcks n\u00f5rk koht, mis on miinus: infrastruktuuri alusmaterjali puudulikud teadmised. <\/li>\n<\/ul>\n<p>\n<b class=\"spoiler_title\">Tehnoloogiatehnoloogiate kogu, mida me oma IaC-s kasutame.<\/b><\/p>\n<ul>\n<li>Terraform ressursside loomisel.<\/li>\n<li>Packer piltide kokkupanemiseks. Need on Windows, CentOS 7 pildid.<\/li>\n<li>Jsonnet, et luua v\u00f5imas kogumik drone.io-s, samuti Packer jsoni genereerimiseks ja meie terraformi moodulite jaoks.<\/li>\n<li>Azure.<\/li>\n<li>Ansible piltide valmistamisel.<\/li>\n<li>Python abiteenuste ja provisoneerimis skriptide jaoks.<\/li>\n<li>Ja k\u00f5ik see VSCode'is pluginatega, mis on jagatud meeskonna liikmete vahel.<\/li>\n<\/ul>\n<p>Minu j\u00e4reldus <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/465137\/\">eelmise artikli<\/a><\/noindex> oli selline: proovisin sisendada (k\u00f5igepealt endasse) optimismi, tahtsin \u00f6elda, et proovime tuntud l\u00e4henemisviise ja praktikaid, et v\u00f5idelda meie valdkonnas esinevate raskuste ja keerukustega. <\/p>\n<p>Praegu v\u00f5itleme selliste IaC probleemidega:<\/p>\n<ul>\n<li>T\u00f6\u00f6riistade ja koodiarenduse vahendite puudulik t\u00e4iustatus.<\/li>\n<li>Aeglane juurutamine. Infrastruktuur on osa reaalsest maailmast, mis ei pruugi olla kiire.<\/li>\n<li>Puuduvad l\u00e4henemisviisid ja praktikad.<\/li>\n<li>Me oleme uued ja teame v\u00e4he.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Ekstreemne programmeerimine (XP) kiirustab appi<\/h2>\n<p>\nK\u00f5igile arendajatele on h\u00e4sti tuntud \u00e4\u00e4rmuslik programmeerimine (XP) ja selle taga olevad praktikud. Paljud meist on sellise l\u00e4henemisega t\u00f6\u00f6tanud ja see on olnud edukas. Miks mitte kasutada sealsete p\u00f5him\u00f5tete ja praktikate p\u00f5hjalikku \u00fcldistamiseks, et \u00fcletada infrastruktuuri raskusi? Otsustasime selle l\u00e4henemise rakendada ja vaadata, mis sellest saab.<\/p>\n<p><b class=\"spoiler_title\">XP l\u00e4henemise sobivuse kontrollimine teie valdkonda<\/b>Toon v\u00e4lja keskkonna kirjelduse, mille jaoks XP sobib h\u00e4sti, ja kuidas see meiega seondub: <\/p>\n<p>1. Dynaamiliselt muutuvad tarkvaran\u00f5uded. Meile oli selge, kui kaua eesm\u00e4rk on. Kuid \u00fcksikasju saab muuta. Me otsustame ise, kuhu me peame liikuma, seega n\u00f5uded muutuvad perioodiliselt (enamasti meie enda poolt). Kui r\u00e4\u00e4kida SRE meeskonnast, kes teeb ise automatiseerimist ja m\u00e4\u00e4ratleb ise n\u00f5uded ning t\u00f6\u00f6 ulatuse, siis see punkt kehtib meie jaoks h\u00e4sti. <\/p>\n<p>2. Uute tehnoloogiate kasutamisega seotud riskid fikseeritud ajaprojektides. Meil v\u00f5ivad tekkida riskid teadmata, et me kasutame m\u00f5ningaid meie jaoks tundmatuid asju. Ja see on 100% meie juhtum. Kogu meie projekt p\u00f5hineb tehnoloogiate kasutamisel, millega me ei olnud l\u00f5puni tuttavad. See on pidev probleem, sest infrastruktuuri valdkonnas ilmub pidevalt palju uusi tehnoloogiaid. <\/p>\n<p>3,4. V\u00e4ike, koosoleku (co-located) kujundatud arendustiim. Tehnoloogia, mida te kasutate, v\u00f5imaldab automatiseeritud \u00fcksuse ja funktsionaalseid teste. Need kaks punkti ei sobi meile t\u00e4pselt. Esiteks, me ei ole koosolekutiim, teisalt on meid \u00fcheksa inimest, mis v\u00f5ib pidada suureks tiimiks. Kuigi, vastava m\u00e4\u00e4ratlemise kohaselt loetakse \u201esuureks\u201c tiimiks palju, on see 14+ inimest. <\/p>\n<p>Vaatame m\u00f5ningaid XP praktikaid ja kuidas need m\u00f5jutavad tagasiside kiirus ja kvaliteeti.<\/p>\n<h4>Tagasiside ts\u00fckli p\u00f5him\u00f5te XP-s<\/h4>\n<p>\nMinu arusaama kohaselt on tagasiside vastus k\u00fcsimusele, kas ma teen \u00f5igesti ja kas me liigume \u00f5iges suunas? XP-s on selle kohta jumalik skeem: tagasiside ts\u00fckkel ajaliselt. Huvi seisneb selles, et mida madalamal me oleme, seda kiiremini saame v\u00f5imaluse saada tagasisidet, et vastata vajalikele k\u00fcsimustele. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: kuidas probleemidest \u00fcle saada XP abil\" src=\"\/wp-content\/uploads\/2019\/10\/e381fb2d7937cbd1978fd6740e63e790.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSee on \u00fcsna huvitav teema arutamiseks, et IT-t\u00f6\u00f6stuses on v\u00f5imalik kiiresti saada tagasisidet. Kujutage ette, kui keeruline on t\u00f6\u00f6tada m\u00f5ne projekti kallal kuus kuud ja alles siis teada saada, et alguses tehti viga. See juhtub nii projekteerimisel kui ka keerukate s\u00fcsteemide \u00fclesehitamisel. <\/p>\n<p>Meie juhul aitab IaC meid tagasiside. Teen kohe v\u00e4ikese paranduse \u00fclalolevasse skeemi: v\u00e4ljaandmisplaan ei toimu kuuts\u00fcklina, vaid toimub mitu korda p\u00e4evas. Selle ts\u00fckliga on seotud m\u00f5ned praktikad, millest r\u00e4\u00e4gime p\u00f5hjalikumalt.<\/p>\n<blockquote><p>Oluline: tagasiside v\u00f5ib olla lahendus k\u00f5igile \u00fclaltoodud probleemidele. Koos XP praktikatega v\u00f5ib see meid trag\u00f6\u00f6dia \u00f5hust v\u00e4lja t\u00f5mmata.<\/p><\/blockquote>\n<p><\/p>\n<h2>Kuidas end trag\u00f6\u00f6dia \u00f5hust v\u00e4lja t\u00f5mmata: kolm praktikat<\/h2>\n<p><\/p>\n<h4>Testid <\/h4>\n<p>\nTestimised mainitakse XP tagasiside ts\u00fcklis kaks korda. See pole sugugi juhuslik. Need on \u00e4\u00e4rmiselt olulised kogu \u00e4\u00e4rmise programmeerimise tehnika jaoks. <\/p>\n<p>Eeldatakse, et sul on olemas Unit ja Acceptance testid. \u00dched annavad tagasisidet m\u00f5ne minuti jooksul, teised aga m\u00f5ne p\u00e4eva jooksul, mist\u00f5ttu neid kirjutatakse kauem ja nad l\u00e4bivad harvemini. <\/p>\n<p>On klassikaline testimise piramid, mis n\u00e4itab, et teatud teste peaks olema rohkem. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: kuidas probleemidest \u00fcle saada XP abil\" src=\"\/wp-content\/uploads\/2019\/10\/29f3217f11b67378c9c0c3f14fab9d61.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKuidas see skeem kehtib meile IaC projektis? Tegelikult\u2026 mitte kuidagi. <\/p>\n<ul>\n<li>Unit testide arv, kuigi neid peaks olema v\u00e4ga palju, ei saa olla liiga suur. Kas nad testivad v\u00e4ga kaudselt midagi. Tegelikult v\u00f5ib \u00f6elda, et me ei kirjuta neid \u00fcldse. Siiski on meil m\u00f5ningaid rakendusi, mida suutsime selliste testide jaoks teha:\n<ol>\n<li>Koodide testimine jsonnet'i peal. See on n\u00e4iteks meie koostamisprotsess drone'is, mis on piisavalt keeruline. Kood jsonnetis katab end h\u00e4sti testidega. <br \/>\n Kasutame seda <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/yugui\/jsonnetunit\">Unit testimise raamistik Jsonnet'ile<\/a><\/noindex>. <\/li>\n<li> Testid skriptide jaoks, mis toimivad ressursside k\u00e4ivitamisel. Skriptid on Pythonis, seega on ka testide kirjutamine v\u00f5imalik.<\/li>\n<\/ol>\n<\/li>\n<li>Potentsiaalselt on v\u00f5imalik kuvada konfiguratsiooni teste, kuid me ei tee seda. Samuti on v\u00f5imalus seadistada ressursside konfigureerimise kontrollimise reeglite kontrollimist l\u00e4bi <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wata727\/tflint\">tflint<\/a><\/noindex>. Kuid Terraform'i jaoks on seal liiga p\u00f5hilised kontrollid, kuid palju kontrollstsenaariume on kirjutatud AWS jaoks. Ja meie oleme Azure'is, nii et see ei sobi taas.<\/li>\n<li>Komponentide integratsioonitestid: siin s\u00f5ltub k\u00f5ik sellest, kuidas sa neid klassifitseerid ja kuhu sa need jagad. Kuid p\u00f5him\u00f5tteliselt t\u00f6\u00f6tavad nad.\n<p>Nii n\u00e4evad v\u00e4lja integratsioonitestid. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: kuidas probleemidest \u00fcle saada XP abil\" src=\"\/wp-content\/uploads\/2019\/10\/b4771e9e5d329ffb2ba565ead7fdddfd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSee on n\u00e4ide piltide koostamisest Drone CI-s. Et nendeni j\u00f5uda, tuleb oodata 30 minutit, kuni Packer'i pilt valmis saab, seej\u00e4rel veel 15 minutit, kuni nad l\u00e4bivad. Kuid need on olemas! <\/p>\n<p><b class=\"spoiler_title\">Piltide kontrollimise algoritm<\/b> <\/p>\n<ol>\n<li>Esmalt peab Packer pildi t\u00e4ielikult ette valmistama.<\/li>\n<li>Testi k\u00f5rval on Terraform koos kohaliku olekuga, millega me seda pilti \u00fcles seame. <\/li>\n<li>K\u00e4ivitamisel kasutatakse v\u00e4ikest moodulit, mis asub k\u00f5rval, et pilti lihtsam kasutada. <\/li>\n<li>Kui pildist on VM v\u00e4lja arendatud, saab alustada kontrollimist. Peamiselt viiakse kontrolle l\u00e4bi masinas. Kontrollitakse, kuidas skriptid alguse juures toimisid ja kuidas demonid t\u00f6\u00f6tavad. Selleks siseneme l\u00e4bi ssh v\u00f5i winrm just \u00fcles t\u00f5stetud masinasse ja kontrollime konfiguratsiooni olekut v\u00f5i kas teenused on aktiivsed.<\/li>\n<\/ol>\n<p>\n <\/li>\n<li>Sarnane olukord on integratsioonitestidega ja Terraformi moodulitega. Siin on l\u00fchike tabel, mis selgitab selliste testide omadusi.\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: kuidas probleemidest \u00fcle saada XP abil\" src=\"\/wp-content\/uploads\/2019\/10\/e2624fb97831701e374a7e8e7fe39a16.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTagasiside torustikus on umbes 40 minutit. K\u00f5ik toimub v\u00e4ga aeglaselt. Seda saab kasutada regressiooniks, kuid uue arenduse puhul on see t\u00e4iesti ebat\u00f5en\u00e4oline. Kui v\u00e4ga-v\u00e4ga h\u00e4sti selleks valmistuda, valmis olla, skriptid ette valmistada, siis on v\u00f5imalik l\u00fchendada kuni 10 minutini. Kuid see ei ole siiski Unit-testid, mis 5 sekundiga 100 t\u00fckki teevad. <\/li>\n<\/ul>\n<p>\nUnit-testide puudumine piltide v\u00f5i Terraformi moodulite kokkupanekul v\u00f5tab t\u00f6\u00f6 erinevatele teenustele, mida saab REST-i kaudu lihtsalt kutsuda, v\u00f5i Python-skriptidele.<\/p>\n<p>N\u00e4iteks pidime tegema nii, et virtuaalmasina k\u00e4ivitamisel registreerib see end teenusesse <noindex><a rel=\"nofollow\" href=\"https:\/\/www.scaleft.com\/\">ScaleFT<\/a><\/noindex>, ja kui virtuaalmasin eemaldatakse, kustutab see end.<\/p>\n<p>Kuna ScaleFT on meil teenus, peame temaga t\u00f6\u00f6tama API kaudu. Seal on kirjutatud wrapper, mida saab kutsuda ja \u00f6elda: \"Mine ja kustuta see, see\". See hoiab k\u00f5iki vajalikke seadistusi ja ligip\u00e4\u00e4se. <\/p>\n<p>Selle peale saame juba kirjutada normaalseid teste, kuna see ei erine tavalisest tarkvarast: mingi API simuleeritakse, sa kutsud seda ja vaatame, mis juhtub. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: kuidas probleemidest \u00fcle saada XP abil\" src=\"\/wp-content\/uploads\/2019\/10\/dc17aaa64038acb080669d31fe8ecfe0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<blockquote><p>Testide kokkuv\u00f5te: Unit-testimine, mis peaks andma operatsioonis\u00fcsteemile minutiga tulemuse, ei anna seda. Siiski k\u00f5rgemad testimise tasemed toovad m\u00f5ju, kuid katavad vaid osa probleemidest. <\/p><\/blockquote>\n<h4>Paarisarendus<\/h4>\n<p>\nTestid on kindlasti head. Neid saab kirjutada palju, nad v\u00f5ivad olla erinevat t\u00fc\u00fcpi. Nad t\u00f6\u00f6tavad oma tasemel ja annavad meile tagasisidet. Kuid probleem kehvade \u00fcksustestidega, mis pakuvad k\u00f5ige kiiremat tagasisidet, j\u00e4\u00e4b p\u00fcsima. Samas on ikkagi soov kiiret operatsioonis\u00fcsteemi, millega on lihtne ja meeldiv t\u00f6\u00f6tada. R\u00e4\u00e4kimata saadud lahenduse kvaliteedist. \u00d5nneks on olemas tehnikad, mis v\u00f5imaldavad anda veel kiiremat tagasisidet kui moodulitestid. See on paarisarvestus.<\/p>\n<p>Koodi kirjutades tahaks tagasisidet selle kvaliteedi kohta v\u00f5imalikult kiiresti saada. Jah, k\u00f5ik saab kirjutada funktsionaalses haru, et mitte kedagi segada, teha GitHubis pull request, nimetada keegi, kelle arvamus kaalub, ja oodata vastust. <\/p>\n<p>Aga ootamine v\u00f5ib v\u00f5tta kaua aega. Inimesed on k\u00f5ik h\u00f5ivatud ja vastus, isegi kui see tuleb, v\u00f5ib olla mitte k\u00f5ige kvaliteetsem. Oletame, et vastus tuli kohe, \u00fclevaataja m\u00f5istis kohe kogu kontseptsiooni, kuid vastus tuleb ikkagi hilinemisega, postfaktum. Ja see, et tahaks varem. Just paarisarvestus ongi suunatud sellele \u2013 et tagasiside tuleks kohe, kirjutamise hetkel.<\/p>\n<p>J\u00e4rgnevalt toon v\u00e4lja paarisarvestuse stiilid ja nende rakendatavus IaC t\u00f6\u00f6 tegemisel: <\/p>\n<p><b>1. Klassikaline, kogenud+ kogenud, vahetus ajakava j\u00e4rgi.<\/b> Kaks rolli \u2013 juht ja navigeerija. Kaks inimest. Nad t\u00f6\u00f6tavad \u00fche koodiga ja vahetavad rolle kindla aja jooksul. <\/p>\n<p>Vaatame, kui h\u00e4sti meie probleemid sobivad stiiliga: <\/p>\n<ul>\n<li>Probleem: t\u00f6\u00f6riistade, koodiarenduse vahendite puudulikkus. <br \/>\nNegatiivne m\u00f5ju: areng kestab kauem, aeglustume, ritm\/tempo kaob.<br \/>\n Kuidas lahendame: rakendame teisi t\u00f6\u00f6riistu, jagame IDE-d ja \u00f5pime ka hotkeysid.<\/li>\n<li> Probleem: aeglane juurutamine. <br \/>\nNegatiivne m\u00f5ju: suurendab aega t\u00f6\u00f6tava koodiloo loomisele. Ootamise ajal igavleb, k\u00e4ed tahavad muid asju teha. <br \/>\nKuidas lahendame: pole suurenenud.<\/li>\n<li> Probleem: l\u00e4henede ja praktikate puudumine. <br \/>\nNegatiivne m\u00f5ju: teadmise puudumine, kuidas teha h\u00e4sti ja kuidas halvasti. Pika ugruli tagasiside saamine. <br \/>\nKuidas lahendame: arvamuste ja praktikate vahetus paarit\u00f6\u00f6 k\u00e4igus lahendab t\u00e4ielikult probleemi.<\/li>\n<\/ul>\n<p>\nPeamine probleem selle stiili rakendamisel IaC-s on t\u00f6\u00f6 eba\u00fchtlane temp. Traditsioonilise tarkvaraarenduse puhul on sul v\u00e4ga \u00fchtlane liikumine. Sa v\u00f5id kulutada viis minutit ja kirjutada N. Kulutada 10 minutit ja kirjutada 2N, 15 minutit \u2013 3N. Siin aga v\u00f5id sa kulutada viis minutit ja kirjutada N ning siis kulutada veel 30 minutit ja kirjutada k\u00fcmnendiku N-st. Siin sa ei tea midagi, sul on ummik, t\u00f5rge. Selgitamine v\u00f5tab aega ja h\u00e4irib otseselt programmeerimist. <\/p>\n<blockquote><p>Kokkuv\u00f5te: puhtal kujul ei sobi see meile.<\/p><\/blockquote>\n<p><b>2. Ping-pong. See l\u00e4henemine eeldab, et \u00fcks osaleja kirjutab testi, teine teostab selle rakenduse.<\/b> Arvestades, et Unit-testidega on k\u00f5ik keeruline ja tuleb kirjutada pikaaegne integratsioonitest, kaob kogu ping-pong\u2019i kergus. <\/p>\n<p>V\u00f5in \u00f6elda, et oleme proovinud kohustuste jagamist testi stsenaariumi koostamise ja koodi selle rakendamise vahel. \u00dcks osaleja m\u00f5tles stsenaariumi v\u00e4lja, selles osas oli ta vastutav, tal oli viimane s\u00f5na. Teine vastutas rakendamise eest. See t\u00f6\u00f6tas h\u00e4sti. Sellise l\u00e4henemise korral t\u00f5useb stsenaariumi kvaliteet. <\/p>\n<blockquote><p>Kokkuv\u00f5te: kahjuks ei v\u00f5imalda t\u00f6\u00f6 tempo ping-pong\u2019i kasutada paarilise programmeerimise praktikana IaC-s.<\/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\">Keeruline praktika.<\/a><\/noindex>Idee on selles, et \u00fcks osaleja suunab ja juhib, teine m\u00e4ngib t\u00e4itmise rolli. Samal ajal on otsuste tegemise \u00f5igus ainult juhil. Draiver lihtsalt kirjutab ja s\u00f5naga saab toimuvatesse sekkuda. Rollid ei muutu kaua aega. <\/p>\n<p>Sobib h\u00e4sti \u00f5petamiseks, kuid n\u00f5uab tugevaid pehmeid oskusi. Sellega meie takerdusime. Technik kulges keeruliselt. Ja asi pole isegi infrastruktuuris. <\/p>\n<blockquote><p>Kokkuv\u00f5te: potentsiaalselt v\u00f5ib rakendada, me ei j\u00e4ta katsetamata.<\/p><\/blockquote>\n<p>\n<b>4. Mobbing, swarming ja k\u00f5ik teadaolevad, kuid siinkohal mitte loetletud stiilid<\/b> ei arutle, kuna me ei ole proovinud ja ei saa sellega seoses meie t\u00f6\u00f6 kontekstis midagi \u00f6elda.<\/p>\n<blockquote><p>\u00dcldised kokkuv\u00f5tted paarilise programmeerimise kasutamisest:<\/p>\n<ul>\n<li>Meil on eba\u00fchtlane t\u00f6\u00f6 tempo, mis segab.<\/li>\n<li>Oleme takerdunud piisavalt hea pehme oskuste puudumisse. Ja aines ei soodusta nende puuduste \u00fcletamist.<\/li>\n<li>Pikad testid ja t\u00f6\u00f6riistade probleemid muudavad paarilise arendamise vaevatavaks.<\/li>\n<\/ul>\n<\/blockquote>\n<p><b>5. Sellegipoolest on meil olnud ka edusamme. Me m\u00f5tlesime v\u00e4lja oma meetodi \"Kokkuviimine - Lahkuviimine.\"<\/b> L\u00fchidalt kirjeldan, kuidas see t\u00f6\u00f6tab. <\/p>\n<p>Meil on pidevad partnerid paariks p\u00e4evaks ( v\u00e4hem kui n\u00e4dalaks). Teeme \u00fche \u00fclesande koos. M\u00f5nda aega oleme koos: \u00fcks kirjutab, teine istub ja vaatab, nagu tugimeeskond. Siis lahkume m\u00f5neks ajaks, iga\u00fcks teeb omi asju, seej\u00e4rel tuleme j\u00e4lle kokku, s\u00fcnkroniseerime v\u00e4ga kiiresti, teeme midagi koos ja lahkume j\u00e4lle. <\/p>\n<h4>Planeerimine ja kommunikatsioon<\/h4>\n<p>\nViimane plokk praktikast, mille kaudu lahendatakse operatsioonis\u00fcsteemi probleeme, on \u00fclesannete korraldamine. Siia kuulub ka kogemuste vahetamine, mis on v\u00e4ljaspool paarist\u00f6\u00f6d. Vaatame kolme praktikat:<\/p>\n<p><b>1. \u00dclesanded eesm\u00e4rkide puu kaudu.<\/b> Projektijuhtimine on organiseeritud puu kaudu, mis ulatub l\u00f5putult tulevikku. Tehniliselt toimub juhtimine Miro's. On olemas \u00fcks \u00fclesanne - see on vahe-eesm\u00e4rk. Sellelt l\u00e4henevad kas v\u00e4iksemad eesm\u00e4rgid v\u00f5i \u00fclesannete grupid. Nendest tulevad juba konkreetsed \u00fclesanded. K\u00f5ik \u00fclesanded luuakse ja hallatakse sellel tahvlil. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: kuidas probleemidest \u00fcle saada XP abil\" src=\"\/wp-content\/uploads\/2019\/10\/fe601e959f0055de4f7f4c39ae713c31.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSee skeem annab ka tagasisidet, mis toimub \u00fcks kord p\u00e4evas, kui s\u00fcnkroniseerime end koosolekutel. \u00dchise, samas struktureeritud ja t\u00e4iesti avatud plaani olemasolu v\u00f5imaldab k\u00f5igil olla kursis toimuvaga ja sellega, kui kaugele me progressis oleme j\u00f5udnud. <\/p>\n<p>\u00dclesannete visuaalse n\u00e4gemise eelised:<\/p>\n<ul>\n<li>P\u00f5hjuse seos. Iga \u00fclesanne viib m\u00f5ne globaalse eesm\u00e4rgini. \u00dclesanded grupeeritakse v\u00e4iksemate eesm\u00e4rkide j\u00e4rgi. Infrastruktuuri domeen iseenesest on \u00fcsna tehniline. Mitte alati ei ole kohe selge, millist konkreetset m\u00f5ju \u00e4rile avaldab n\u00e4iteks migreerimise k\u00e4siraamatu kirjutamine teise nginx-i peale. \u00dchise sihtkaardi olemasolu teeb selle arusaadavamaks.<br \/>\n <img decoding=\"async\" alt=\"Infrastructure as Code: kuidas probleemidest \u00fcle saada XP abil\" src=\"\/wp-content\/uploads\/2019\/10\/fc4da9d277f7dc186a5710cf2be4419c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n P\u00f5hjuse seos on \u00fclesannete oluline omadus. See vastab otseselt k\u00fcsimusele: \"Kas ma teen ikka \u00f5iget asja?\" <\/li>\n<li>Paralleelsus. Meid on \u00fcheksa inimest ja k\u00f5ikide r\u00fcndamine \u00fchele \u00fclesandele pole f\u00fc\u00fcsiliselt v\u00f5imalik. \u00dckski ala ei pruugi alati piisavalt \u00fclesandeid pakkuda. Oleme sunnitud oma t\u00f6\u00f6d paralleelselt jagama v\u00e4ikeste t\u00f6\u00f6r\u00fchmade vahel. Samal ajal istuvad grupid m\u00f5nda aega oma \u00fclesande juures, neid v\u00f5ib tugevdada keegi veel. M\u00f5nikord lahkuvad inimesed sellest t\u00f6\u00f6r\u00fchmast. Keegi l\u00e4heb puhkusele, keegi teeb ettekannet DevOps conf konverentsil, keegi kirjutab artiklit Habr'ile. Teada, milliseid eesm\u00e4rke ja \u00fclesandeid saab paralleelselt teha, on v\u00e4ga oluline. <\/li>\n<\/ul>\n<p>\n<b>2. Vahetatavad juhtivad hommikused koosolekud.<\/b> Standupides tekkis selline probleem \u2013 inimesed teevad palju \u00fclesandeid paralleelselt. M\u00f5nikord on \u00fclesanded n\u00f5rgalt seotud ja ei ole arusaama, kes mida teeb. Ja \u00fche meeskonna liikme arvamus on v\u00e4ga oluline. See on t\u00e4iendav teave, mis suudab muuta \u00fclesande lahendamise k\u00e4iku. Loomulikult on tavaliselt koos sinuga keegi paaris, kuid n\u00f5uanne ja vihjed pole kunagi \u00fcleliigsed. <\/p>\n<p>Selle olukorra parandamiseks rakendasime tehnika \u201eStandupi juhi vahetamine\u201c. N\u00fc\u00fcd nad rotseerivad kindlatel nimistuil, ja see annab oma efekti. Kui sinu kord k\u00e4tte saab, oled sunnitud s\u00fcvenema ja m\u00f5istma, mis toimub, et h\u00e4sti l\u00e4bi viia scrumi koosolek. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: kuidas probleemidest \u00fcle saada XP abil\" src=\"\/wp-content\/uploads\/2019\/10\/622973a654ecd3e27a7a366596814ffc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>3. Sisemine demo.<\/b> Abiks \u00fclesande lahendamisel paarilise programmeerimise kaudu, \u00fclesannete puu visualiseerimine ja hommikul scrumi koosolekutel abistamine \u2013 see on hea, kuid mitte ideaalne. Paaris oled piiratud vaid oma teadmistest. \u00dclesannete puu aitab globaalselt m\u00f5ista, kes ja mida teeb. Ja juht ning kolleegid hommikul kohtumisel ei s\u00fcvene s\u00fcgavale sinu probleemidesse. Nad v\u00f5ivad t\u00f5esti midagi t\u00e4helepanuta j\u00e4tta. <\/p>\n<p>Lahendus leiti demonstreerides tehtud t\u00f6\u00f6d \u00fcksteisele ja seej\u00e4rel arutades neid. Koome kord n\u00e4dalas tunniks kokku ja n\u00e4itame \u00fclesannete lahenduste detaile, mida oleme viimase n\u00e4dala jooksul teinud. <\/p>\n<p>Demonstreerimise protsessis tuleb \u00fclesande detaile paljastada ja kindlasti demonstreerida selle toimimist. <\/p>\n<p><b class=\"spoiler_title\">Ettekannet saab teha kontrollnimekirja alusel.<\/b>1. Viige konteksti. Kust tuli \u00fclesanne, miks see \u00fcldse vajalik oli?<\/p>\n<p>2. Kuidas \u00fclesanne varem lahendati? N\u00e4iteks, oli vajalik massiivne hiireklikkimine v\u00f5i oli midagi t\u00e4iesti v\u00f5imatu teha.<\/p>\n<p>3. Kuidas me seda parendame. N\u00e4iteks: \u201eVaadake, n\u00fc\u00fcd on skript, siin on readme\u201c.<\/p>\n<p>4. N\u00e4idake, kuidas see t\u00f6\u00f6tab. Soovitavalt viia l\u00e4bi m\u00f5ni kasutaja stsenaarium. Tahan X, teen Y, n\u00e4en Z (v\u00f5i Y). N\u00e4iteks, deplooin NGINX-i, vaatan URL-i, saan 200 OK. Kui tegevus v\u00f5tab kaua aega, valmistage see ette varem, et hiljem n\u00e4idata. Soovitavalt, et tund enne demonstreerimist ei rikuks seda liiga palju.<\/p>\n<p>5. Selgitage, kui h\u00e4sti probleem on lahendatud, millised raskused on j\u00e4\u00e4nud, mis on l\u00f5petamata, millised t\u00e4iustused on tulevikus v\u00f5imalikud. N\u00e4iteks, praegu on cli, hiljem tuleb t\u00e4ielik automatiseerimine CI-s.<\/p>\n<p>Iga esineja peaks j\u00e4\u00e4ma 5-10 minuti piiridesse. Kui teie esitlus on juba niikuinii oluline ja v\u00f5tab rohkem aega, leppige see eelnevalt kokku kanalis sre-takeover.<\/p>\n<p>P\u00e4rast otse esitlust j\u00e4rgneb kindlasti arutelu teemas. Just siis ilmneb vajalik tagasiside meie \u00fclesannete kohta. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: kuidas probleemidest \u00fcle saada XP abil\" src=\"\/wp-content\/uploads\/2019\/10\/77da888d24b52c7eea7e65d2400e152c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nKokkuv\u00f5ttes viiakse l\u00e4bi k\u00fcsitlus, et v\u00e4lja selgitada toimuva kasulikkus. See on juba tagasiside enda esituse sisu ja \u00fclesande olulisuse kohta.<\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: kuidas probleemidest \u00fcle saada XP abil\" src=\"\/wp-content\/uploads\/2019\/10\/7642cd87050171cc4a6bf278329dd283.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Pikad kokkuv\u00f5tted ja mis edasi<\/h2>\n<p>\nV\u00f5ib tunduda, et artikli toon on m\u00f5nev\u00f5rra pessimistlik. See pole nii. Kaks madalamat taset tagasiside saamiseks, nimelt testid ja paarit\u00f6\u00f6, toimivad. Mitte nii t\u00e4ielikult kui traditsioonilises arenduses, kuid positiivne efekt on olemas. <\/p>\n<p>Testid, oma praeguses vormis, annavad vaid osalise katvuse koodis. Palju konfiguratsioonifunktsioone j\u00e4\u00e4b katsetamata. Nende m\u00f5ju otsesele t\u00f6\u00f6le koodi kirjutamisel on madal. Siiski on integratsioonitestidel m\u00f5ju ning just need v\u00f5imaldavad muretu refaktoreerimist. See on suur saavutus. Samuti probleem kaob, kui fookus suunatakse k\u00f5rgema taseme programmeerimiskeeltele (meil on python, go). Ja liimiks on palju kontrollimist ja pole vaja, piisab \u00fcldisest integratsioonitestist.<\/p>\n<p>T\u00f6\u00f6 paaris s\u00f5ltub rohkem konkreetsetest inimestest. On \u00fclesande tegur ja meie pehmed oskused. Kellegagi t\u00f6\u00f6tab v\u00e4ga h\u00e4sti, kellegagi halvemini. Sellest on kindlasti kasu. Selge on, et isegi paari t\u00f6\u00f6 reeglite kasutamise puudumise korral m\u00f5jutab koos \u00fclesannete t\u00e4itmine positiivselt tulemuse kvaliteeti. Isiklikult on mul paaris t\u00f6\u00f6tada lihtsam ja meeldivam.<\/p>\n<p>K\u00f5rgema taseme meetodid m\u00f5ju avaldamiseks operatsioonis\u00fcsteemile \u2013 planeerimine ja \u00fclesannetega t\u00f6\u00f6tamine toovad kindlasti tulemusi: kvaliteetne teadmiste vahetus ja arenduse kvaliteedi paranemine. <\/p>\n<h4>L\u00fchikesed kokkuv\u00f5tted \u00fche lausega <\/h4>\n<p><\/p>\n<ul>\n<li>XP tavad t\u00f6\u00f6tavad IaC-s, kuid madalama efektiivsusega.<\/li>\n<li>Tugevdage seda, mis t\u00f6\u00f6tab.<\/li>\n<li>Kasutage oma kompenseerivaid mehhanisme ja tavasid.<\/li>\n<\/ul>\n<p>Allikas: <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\/et\/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=\"et_EE\" \/>\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\/et\/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: kuidas XP abil probleeme \u00fcletada | ProHoster","description":"Tere, Habr! Varem kaebasin ma elu \u00fcle Infrastructure as Code paradigmas ja ei pakkunud lahendusi tekkinud olukorrale.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\/et\/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\/et\/wp-json\/wp\/v2\/posts\/38747","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=38747"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/38747\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/29066"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=38747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=38747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=38747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}