{"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\/sk\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp","title":{"rendered":"Infrastructure as Code: ako porazi\u0165 probl\u00e9my pomocou XP","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ahoj, Habr! Predt\u00fdm som sa s\u0165a\u017eoval na \u017eivot v paradigme Infrastructure as code a ni\u010d som nenavrhoval na vyrie\u0161enie situ\u00e1cie. Dnes som sa vr\u00e1til, aby som povedal, ak\u00e9 pr\u00edstupy a praktiky pom\u00f4\u017eu unikn\u00fa\u0165 z hlb\u00edn bezn\u00e1deje a nasmerova\u0165 situ\u00e1ciu spr\u00e1vnym smerom. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: ako porazi\u0165 probl\u00e9my pomocou 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 \/>\nV predch\u00e1dzaj\u00facom \u010dl\u00e1nku <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/465137\/\">\u201eInfrastructure as code: prv\u00e9 zozn\u00e1menie\u201c<\/a><\/noindex> Zdie\u013eal som svoje dojmy z tejto oblasti, sna\u017eil som sa zamyslie\u0165 nad aktu\u00e1lnou situ\u00e1ciou a dokonca som nazna\u010dil, \u017ee \u0161tandardn\u00e9, v\u0161etk\u00fdm zn\u00e1m\u00e9 praktiky v\u00fdvoj\u00e1rov m\u00f4\u017eu pom\u00f4c\u0165. M\u00f4\u017ee sa zda\u0165, \u017ee tam bolo ve\u013ea s\u0165a\u017enost\u00ed na \u017eivot, ale neboli tam \u017eiadne n\u00e1vrhy, ako sa z tejto situ\u00e1cie dosta\u0165. <\/p>\n<h2>Kto sme, kde sme a ak\u00e9 m\u00e1me probl\u00e9my<\/h2>\n<p>\nMoment\u00e1lne sme v Sre Onboarding T\u00edme, ktor\u00fd pozost\u00e1va z \u0161iestich program\u00e1torov a troch infra\u0161trukt\u00farnych in\u017einierov. V\u0161etci sa sna\u017e\u00edme p\u00edsa\u0165 Infrastructure as code (IaC). Rob\u00edme to, preto\u017ee vo v\u0161eobecnosti vieme p\u00edsa\u0165 k\u00f3d a v anamn\u00e9ze sme v\u00fdvoj\u00e1ri na \u00farovni \u201enadpriemern\u00ed\u201c. <\/p>\n<ul>\n<li>M\u00e1me nieko\u013eko v\u00fdhod: ur\u010dit\u00fd background, znalos\u0165 prakt\u00edk, schopnos\u0165 p\u00edsa\u0165 k\u00f3d, t\u00fa\u017ebu u\u010di\u0165 sa nov\u00e9 veci. <\/li>\n<li>A m\u00e1me aj slab\u00fa str\u00e1nku, a to nedostatok znalost\u00ed v oblasti infra\u0161trukt\u00fary. <\/li>\n<\/ul>\n<p>\n<b class=\"spoiler_title\">Technologick\u00fd stack, ktor\u00fd pou\u017e\u00edvame v na\u0161om IaC.<\/b><\/p>\n<ul>\n<li>Terraform na vytv\u00e1ranie zdrojov.<\/li>\n<li>Packer na zostavovanie imid\u017eov. To s\u00fa imid\u017ee Windows a CentOS 7.<\/li>\n<li>Jsonnet na siln\u00fa zostavu v drone.io, ako aj na generovanie packer json a na\u0161ich terraform modulov.<\/li>\n<li>Azure.<\/li>\n<li>Ansible pri pr\u00edprave imid\u017eov.<\/li>\n<li>Python na pomocn\u00e9 slu\u017eby, ako aj na provisioning skripty.<\/li>\n<li>A to v\u0161etko vo VSCode s pluginmi zdie\u013ean\u00fdmi medzi \u010dlenmi t\u00edmu.<\/li>\n<\/ul>\n<p>M\u00f4j z\u00e1ver bol tak\u00fd: sna\u017eil som sa vnukn\u00fa\u0165 (predov\u0161etk\u00fdm sebe) optimizmus, chcel som poveda\u0165, \u017ee budeme sk\u00fa\u0161a\u0165 zn\u00e1me pr\u00edstupy a praktiky na boj s \u0165a\u017ekos\u0165ami a probl\u00e9mami, ktor\u00e9 existuj\u00fa v tejto oblasti. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/465137\/\">predch\u00e1dzaj\u00faceho \u010dl\u00e1nku<\/a><\/noindex> Teraz bojujeme s tak\u00fdmi probl\u00e9mami IaC: <\/p>\n<p>Nedokonalos\u0165 n\u00e1strojov a prostriedkov na v\u00fdvoj k\u00f3du.<\/p>\n<ul>\n<li>Pomal\u00e9 nasadzovanie. Infra\u0161trukt\u00fara je \u010das\u0165ou re\u00e1lneho sveta a ten m\u00f4\u017ee by\u0165 pomal\u00fd.<\/li>\n<li>Nedostatok pr\u00edstupov a prakt\u00edk.<\/li>\n<li>Sme nov\u00e1\u010dikovia a ve\u013ea toho nevieme.<\/li>\n<li>Extr\u00e9mne programovanie (XP) prich\u00e1dza na pomoc.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Extr\u00e9mne programovanie (XP) prich\u00e1dza na pomoc.<\/h2>\n<p>\nV\u0161etk\u00fdm v\u00fdvoj\u00e1rom je dobre zn\u00e1me extr\u00e9mne programovanie (XP) a z\u00e1sady, ktor\u00e9 za n\u00edm stoja. Mnoh\u00ed z n\u00e1s pracovali pod\u013ea tak\u00e9hoto pr\u00edstupu a boli s n\u00edm \u00faspe\u0161n\u00ed. Tak pre\u010do nevyu\u017ei\u0165 princ\u00edpy a praktiky, ktor\u00e9 tam s\u00fa, na prekonanie \u0165a\u017ekost\u00ed infra\u0161trukt\u00fary? Rozhodli sme sa aplikova\u0165 tento pr\u00edstup a pozrie\u0165 sa, \u010do z toho vznikne.<\/p>\n<p><b class=\"spoiler_title\">Overenie aplikovate\u013enosti pr\u00edstupu XP vo va\u0161ej oblasti<\/b>Uv\u00e1dzam popis prostredia, pre ktor\u00e9 je XP dobre vhodn\u00e9, a ako to s\u00favis\u00ed s nami: <\/p>\n<p>1. Dynamicky sa meniacie softv\u00e9rov\u00e9 po\u017eiadavky. Bolo n\u00e1m jasn\u00e9, ak\u00fd je kone\u010dn\u00fd cie\u013e. Ale v detailoch m\u00f4\u017eeme variabilne upravova\u0165. My sami rozhodujeme, ktor\u00fdm smerom sa m\u00e1me vyda\u0165, preto sa po\u017eiadavky periodicky menia (v\u00e4\u010d\u0161inou z na\u0161ich vlastn\u00fdch d\u00f4vodov). Ak vezmeme t\u00edm SRE, ktor\u00fd s\u00e1m vykon\u00e1va automatiz\u00e1ciu a z\u00e1rove\u0148 obmedzuje po\u017eiadavky a rozsah pr\u00e1c, potom tento bod n\u00e1m vyhovuje. <\/p>\n<p>2. Rizik\u00e1 sp\u00f4soben\u00e9 fixn\u00fdm \u010dasom projektov s novou technol\u00f3giou. M\u00f4\u017eu sa n\u00e1m objavi\u0165 rizik\u00e1 pri pou\u017e\u00edvan\u00ed nezn\u00e1mych technol\u00f3gi\u00ed. A to je 100% n\u00e1\u0161 pr\u00edpad. cel\u00fd n\u00e1\u0161 projekt sa zaklad\u00e1 na technol\u00f3gi\u00e1ch, s ktor\u00fdmi sme neboli \u00faplne obozn\u00e1men\u00ed. V skuto\u010dnosti je to neust\u00e1ly probl\u00e9m, preto\u017ee v oblasti infra\u0161trukt\u00fary sa neust\u00e1le objavuj\u00fa mnoh\u00e9 nov\u00e9 technol\u00f3gie. <\/p>\n<p>3,4. Mal\u00fd, spolu umiestnen\u00fd roz\u0161\u00edren\u00fd v\u00fdvojov\u00fd t\u00edm. Technol\u00f3gia, ktor\u00fa pou\u017e\u00edvate, umo\u017e\u0148uje automatizovan\u00e9 jednotkov\u00e9 a funk\u010dn\u00e9 testy. Tieto dva body n\u00e1m \u00faplne nevyhovuj\u00fa. Po prv\u00e9, nie sme ko-lokovan\u00fd t\u00edm, po druh\u00e9, m\u00e1 n\u00e1s dev\u00e4\u0165, \u010do m\u00f4\u017ee by\u0165 pova\u017eovan\u00e9 za ve\u013ek\u00fd t\u00edm. Aj ke\u010f, pod\u013ea niektor\u00fdch defin\u00edci\u00ed \u201eve\u013ek\u00e9ho\u201c t\u00edmu, mno\u017estvo znamen\u00e1 14+ \u013eud\u00ed. <\/p>\n<p>Zv\u00e1\u017eime niektor\u00e9 praktiky z XP a to, ako ovplyv\u0148uj\u00fa r\u00fdchlos\u0165 a kvalitu sp\u00e4tnej v\u00e4zby.<\/p>\n<h4>Princ\u00edp cyklu sp\u00e4tnej v\u00e4zby v XP<\/h4>\n<p>\nPod\u013ea m\u00f4jho ch\u00e1pania je sp\u00e4tn\u00e1 v\u00e4zba odpove\u010fou na ot\u00e1zku, \u010di rob\u00edm spr\u00e1vne, \u010di ideme t\u00fdm spr\u00e1vnym smerom? V XP je na to bo\u017esk\u00e1 sch\u00e9ma: cyklus sp\u00e4tnej v\u00e4zby v \u010dase. Zauj\u00edmavos\u0165ou je, \u017ee \u010d\u00edm ni\u017e\u0161ie sa nach\u00e1dzame, t\u00fdm r\u00fdchlej\u0161ie m\u00f4\u017eeme z\u00edska\u0165 OS, aby sme odpovedali na potrebn\u00e9 ot\u00e1zky. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: ako porazi\u0165 probl\u00e9my pomocou XP\" src=\"\/wp-content\/uploads\/2019\/10\/e381fb2d7937cbd1978fd6740e63e790.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nToto je pomerne zauj\u00edmav\u00e1 t\u00e9ma na diskusiu, \u017ee v na\u0161ej IT oblasti je mo\u017en\u00e9 r\u00fdchlo z\u00edska\u0165 OS. Predstavte si, ak\u00e9 bolestiv\u00e9 m\u00f4\u017ee by\u0165 pracova\u0165 na nejakom projekte pol roka a a\u017e potom zisti\u0165, \u017ee na za\u010diatku bola zakorenen\u00e1 chyba. To sa st\u00e1va ako pri projektovan\u00ed, tak aj pri akomko\u013evek budovan\u00ed zlo\u017eit\u00fdch syst\u00e9mov. <\/p>\n<p>V na\u0161om pr\u00edpade n\u00e1m IaC pom\u00e1ha sp\u00e4tn\u00e1 v\u00e4zba. Okam\u017eite uv\u00e1dzam mal\u00e9 opravy do vy\u0161\u0161ie uvedenej sch\u00e9my: vydanie pl\u00e1nu nem\u00e1me mesa\u010dn\u00fd cyklus, ale prebieha nieko\u013ekokr\u00e1t denne. K tomuto cyklu s\u00fa viazan\u00e9 niektor\u00e9 praktiky, ktor\u00e9 si podrobnej\u0161ie preberieme.<\/p>\n<blockquote><p>D\u00f4le\u017eit\u00e9: sp\u00e4tn\u00e1 v\u00e4zba m\u00f4\u017ee by\u0165 rie\u0161en\u00edm v\u0161etk\u00fdch vy\u0161\u0161ie uveden\u00fdch probl\u00e9mov. V kombin\u00e1cii s praktikami XP m\u00f4\u017ee vytiahnu\u0165 z hlbokej bezn\u00e1deje.<\/p><\/blockquote>\n<p><\/p>\n<h2>Ako sa dosta\u0165 z hlbokej bezn\u00e1deje: tri praktiky<\/h2>\n<p><\/p>\n<h4>Testy <\/h4>\n<p>\nTesty s\u00fa v cykle sp\u00e4tnej v\u00e4zby XP zmienen\u00e9 dvakr\u00e1t. Nie je to len tak. S\u00fa extr\u00e9mne d\u00f4le\u017eit\u00e9 pre cel\u00fa techniku extr\u00e9mneho programovania. <\/p>\n<p>Predpoklad\u00e1 sa, \u017ee m\u00e1te jednotkov\u00e9 a akcepta\u010dn\u00e9 testy. Jedny v\u00e1m poskytuj\u00fa sp\u00e4tn\u00fa v\u00e4zbu za nieko\u013eko min\u00fat, druh\u00e9 za nieko\u013eko dn\u00ed, preto\u017ee sa p\u00ed\u0161u dlh\u0161ie a sp\u00fa\u0161\u0165aj\u00fa sa menej \u010dasto. <\/p>\n<p>Existuje klasick\u00e1 pyram\u00edda testovania, ktor\u00e1 ukazuje, \u017ee nejak\u00fdch testov by malo by\u0165 viac. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: ako porazi\u0165 probl\u00e9my pomocou XP\" src=\"\/wp-content\/uploads\/2019\/10\/29f3217f11b67378c9c0c3f14fab9d61.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAko je t\u00e1to sch\u00e9ma uplatnite\u013en\u00e1 v na\u0161om projekte IaC? V skuto\u010dnosti\u2026 nijako. <\/p>\n<ul>\n<li>Jednotkov\u00fdch testov, aj ke\u010f ich m\u00e1 by\u0165 ve\u013emi ve\u013ea, nem\u00f4\u017ee by\u0165 ve\u013emi ve\u013ea. Alebo testuj\u00fa ve\u013emi nepriamo nie\u010do. V podstate m\u00f4\u017eeme poveda\u0165, \u017ee ich vlastne v\u00f4bec nep\u00ed\u0161eme. Ale tu je nieko\u013eko vyu\u017eit\u00ed tak\u00fdchto testov, ktor\u00e9 sme predsa len dok\u00e1zali spravi\u0165:\n<ol>\n<li>Testovanie k\u00f3du na jsonnet. To je napr\u00edklad n\u00e1\u0161 pipeline na zostavenie v drone, ktor\u00fd je dos\u0165 zlo\u017eit\u00fd. K\u00f3d na jsonnet je dobre pokryt\u00fd testami. <br \/>\n Pou\u017e\u00edvame tento <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/yugui\/jsonnetunit\">Unit testing framework for Jsonnet<\/a><\/noindex>. <\/li>\n<li> Testy na skripty, ktor\u00e9 sa vykon\u00e1vaj\u00fa pri spusten\u00ed zdroja. Skripty s\u00fa na Pythone, tak\u017ee aj testy na ne je mo\u017en\u00e9 p\u00edsa\u0165.<\/li>\n<\/ol>\n<\/li>\n<li>Potenci\u00e1lne je mo\u017en\u00e1 kontrola konfigur\u00e1cie v testoch, ale my to tak nerob\u00edme. E\u0161te existuje mo\u017enos\u0165 nastavi\u0165 kontrolu pravidiel konfigur\u00e1cie zdrojov cez <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wata727\/tflint\">tflint<\/a><\/noindex>. Av\u0161ak, pre terraform s\u00fa tam pr\u00edli\u0161 z\u00e1kladn\u00e9 kontroly, no pre AWS je nap\u00edsan\u00fdch ve\u013ea kontroln\u00fdch sc\u00e9narov. A my sme na Azure, tak\u017ee to znovu nevyhovuje.<\/li>\n<li>Komponentn\u00e9 integra\u010dn\u00e9 testy: tu z\u00e1vis\u00ed od toho, ako ich klasifikujete a kam ich zarad\u00edte. Ale v princ\u00edpe funguj\u00fa.\n<p>Takto vyzeraj\u00fa integra\u010dn\u00e9 testy. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: ako porazi\u0165 probl\u00e9my pomocou XP\" src=\"\/wp-content\/uploads\/2019\/10\/b4771e9e5d329ffb2ba565ead7fdddfd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nToto je pr\u00edklad pri zostavovan\u00ed obrazov v Drone CI. Aby sme sa k nim dostali, mus\u00edme \u010daka\u0165 30 min\u00fat, k\u00fdm sa zmontuje imid\u017e Packer, a potom \u010fal\u0161\u00edch 15 min\u00fat, k\u00fdm prejd\u00fa. Ale s\u00fa tu! <\/p>\n<p><b class=\"spoiler_title\">Algoritmus kontroly obrazov<\/b> <\/p>\n<ol>\n<li>Najprv mus\u00ed Packer \u00faplne pripravi\u0165 obraz.<\/li>\n<li>Ved\u013ea testu je terraf\u30d5\u30a9\u30fc\u30e0 s lok\u00e1lnym stavom, pomocou ktor\u00e9ho rozba\u013eujeme tento obraz. <\/li>\n<li>Pri rozba\u013eovan\u00ed sa pou\u017e\u00edva mal\u00fd modul umiestnen\u00fd ved\u013ea, aby sa s obrazom dalo \u013eah\u0161ie pracova\u0165. <\/li>\n<li>Ke\u010f je z obrazu rozbalen\u00e1 VM, m\u00f4\u017eeme za\u010da\u0165 kontroly. Hlavne sa kontroly vykon\u00e1vaj\u00fa na stroji. Overuje sa, ako fungovali skripty pri \u0161tarte, ako pracuj\u00fa d\u00e9moni. Na tento \u00fa\u010del sa cez ssh alebo winrm prihl\u00e1sime na pr\u00e1ve spusten\u00fd stroj a skontrolujeme stav konfigur\u00e1cie alebo \u010di sa slu\u017eby spustili.<\/li>\n<\/ol>\n<p>\n <\/li>\n<li>Podobn\u00e1 situ\u00e1cia je s integra\u010dn\u00fdmi testami a modulmi pre terraform. Tu je kr\u00e1tka tabu\u013eka, ktor\u00e1 vysvet\u013euje \u0161pecifik\u00e1 tak\u00fdchto testov.\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: ako porazi\u0165 probl\u00e9my pomocou XP\" src=\"\/wp-content\/uploads\/2019\/10\/e2624fb97831701e374a7e8e7fe39a16.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSp\u00e4tn\u00e1 v\u00e4zba na pipeline je okolo 40 min\u00fat. V\u0161etko prebieha ve\u013emi pomaly. M\u00f4\u017ee sa pou\u017ei\u0165 pre regresiu, ale pre nov\u00fa v\u00fdvoj je to \u00faplne nerealizovate\u013en\u00e9. Ak sa na to naozaj pripravi\u0165, pripravi\u0165 running, skripty, m\u00f4\u017ee sa to skr\u00e1ti\u0165 na 10 min\u00fat. Ale aj tak to nie s\u00fa Unit testy, ktor\u00e9 sa daj\u00fa spusti\u0165 100 za 5 sek\u00fand. <\/li>\n<\/ul>\n<p>\nNedostatok Unit testov pri zostavovan\u00ed obrazov alebo modulov terraformu n\u00fati pren\u00e1\u0161a\u0165 pr\u00e1cu na samostatn\u00e9 slu\u017eby, ktor\u00e9 sa daj\u00fa jednoducho zavola\u0165 cez REST, alebo na Python skripty.<\/p>\n<p>Napr\u00edklad, potrebovali sme to tak, aby pri \u0161tarte virtu\u00e1lneho stroja sa zaregistroval v slu\u017ebe <noindex><a rel=\"nofollow\" href=\"https:\/\/www.scaleft.com\/\">ScaleFT<\/a><\/noindex>, a pri zni\u010den\u00ed virtu\u00e1lky sa odstr\u00e1nil.<\/p>\n<p>Ke\u010f\u017ee ScaleFT m\u00e1me ako slu\u017ebu, sme n\u00faten\u00ed s n\u00edm pracova\u0165 cez API. Nap\u00edsali sme ob\u00e1lku, ktor\u00fa sa d\u00e1 zavola\u0165 a poveda\u0165: \u201ePridaj sa a odstr\u00e1\u0148 to a to\u201c. Uchov\u00e1va v\u0161etky potrebn\u00e9 nastavenia a pr\u00edstupy. <\/p>\n<p>Na toto u\u017e m\u00f4\u017eeme p\u00edsa\u0165 norm\u00e1lne testy, preto\u017ee to sa nijako nel\u00ed\u0161i od be\u017en\u00e9ho softv\u00e9ru: mockne sa nejak\u00e9 API, zavol\u00e1\u0161 ho a sleduje\u0161, \u010do sa deje. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: ako porazi\u0165 probl\u00e9my pomocou XP\" src=\"\/wp-content\/uploads\/2019\/10\/dc17aaa64038acb080669d31fe8ecfe0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<blockquote><p>Z\u00e1very z testov: Unit testovanie, ktor\u00e9 by malo by\u0165 poskytovan\u00e9 OS za min\u00fatu, ho neposkytuje. A vy\u0161\u0161ie \u00farovne testovania v pyram\u00edde d\u00e1vaj\u00fa v\u00fdsledok, ale pokr\u00fdvaj\u00fa len \u010das\u0165 probl\u00e9mov. <\/p><\/blockquote>\n<h4>P\u00e1rov\u00e9 programovanie<\/h4>\n<p>\nTesty s\u00fa ur\u010dite dobr\u00e9. M\u00f4\u017ee ich by\u0165 ve\u013ea r\u00f4znych typov. Bud\u00fa fungova\u0165 na svojich \u00farovniach a poskytova\u0165 n\u00e1m sp\u00e4tn\u00fa v\u00e4zbu. Probl\u00e9m v\u0161ak zost\u00e1va s nekvalitn\u00fdmi Unit testami, ktor\u00e9 zabezpe\u010duj\u00fa najr\u00fdchlej\u0161\u00ed OS. Z\u00e1rove\u0148 v\u0161ak t\u00fa\u017eime po r\u00fdchlom OS, s ktor\u00fdm je \u013eahk\u00e9 a pr\u00edjemn\u00e9 pracova\u0165. Nehovoriac o kvalite vyrie\u0161en\u00e9ho probl\u00e9mu. Na\u0161\u0165astie existuj\u00fa techniky, ktor\u00e9 dok\u00e1\u017eu poskytn\u00fa\u0165 e\u0161te r\u00fdchlej\u0161iu sp\u00e4tn\u00fa v\u00e4zbu ako modulov\u00e9 testy. To je p\u00e1rov\u00e9 programovanie.<\/p>\n<p>Pri p\u00edsan\u00ed k\u00f3du t\u00fa\u017eime z\u00edska\u0165 sp\u00e4tn\u00fa v\u00e4zbu o jeho kvalite \u010do najr\u00fdchlej\u0161ie. \u00c1no, v\u0161etko sa d\u00e1 nap\u00edsa\u0165 vo funk\u010dnej vetve (aby sme nikomu ni\u010d neporu\u0161ili), spravi\u0165 pull request na GitHube, priradi\u0165 ho niekomu, koho n\u00e1zor m\u00e1 v\u00e1hu, a \u010daka\u0165 na odpove\u010f. <\/p>\n<p>Ale \u010daka\u0165 sa m\u00f4\u017ee dlho. \u013dudia s\u00fa zanepr\u00e1zdnen\u00ed a odpove\u010f, aj ke\u010f pr\u00edde, m\u00f4\u017ee by\u0165 nie v\u017edy kvalitn\u00e1. Predpokladajme, \u017ee odpove\u010f pri\u0161la okam\u017eite, recenzent okam\u017eite pochopil cel\u00fa my\u0161lienku, no odpove\u010f aj tak prich\u00e1dza so oneskoren\u00edm, sp\u00e4tne. A chceme ju sk\u00f4r. Tu pr\u00e1ve p\u00e1rov\u00e9 programovanie mieri na to \u2013 aby sme hne\u010f, v momente p\u00edsania, dostali sp\u00e4tn\u00fa v\u00e4zbu.<\/p>\n<p>\u010ealej uv\u00e1dzam \u0161t\u00fdly p\u00e1rov\u00e9ho programovania a ich pou\u017eite\u013enos\u0165 pri pr\u00e1ci na IaC: <\/p>\n<p><b>1. Klasick\u00fd, Sk\u00fasen\u00fd + sk\u00fasen\u00fd, zmena pod\u013ea \u010dasova\u010da.<\/b> Dve \u00falohy \u2013 driver a navigator. Dvaja \u013eudia. Pracuj\u00fa na jednom k\u00f3de a menia si \u00falohy po ur\u010ditom predt\u00fdm dohodnutom \u010dase. <\/p>\n<p>Zv\u00e1\u017eime zlu\u010dite\u013enos\u0165 na\u0161ich probl\u00e9mov so \u0161t\u00fdlom: <\/p>\n<ul>\n<li>Probl\u00e9m: nedokonalos\u0165 n\u00e1strojov, prostriedkov na v\u00fdvoj k\u00f3du. <br \/>\nNegat\u00edvny vplyv: dlh\u0161ie vyv\u00edjanie, spoma\u013eujeme sa, str\u00e1ca sa tempo\/rytmus pr\u00e1ce.<br \/>\n Ako bojujeme: pou\u017e\u00edvame in\u00e9 n\u00e1stroje, spolo\u010dn\u00e9 IDE a u\u010d\u00edme skratky.<\/li>\n<li> Probl\u00e9m: pomal\u00e9 nasadenie. <br \/>\nNegat\u00edvny vplyv: zvy\u0161uje \u010das na vytvorenie funk\u010dn\u00e9ho k\u00f3du. Nud\u00ed n\u00e1s to po\u010das \u010dakania, ruky sa natiahnu robi\u0165 nie\u010do in\u00e9, k\u00fdm \u010dak\u00e1me. <br \/>\nAko bojujeme: to sme nezvl\u00e1dli.<\/li>\n<li> Probl\u00e9m: nedostatok pr\u00edstupov a praktik. <br \/>\nNegat\u00edvny vplyv: nie je vedomos\u0165, ako to robi\u0165 dobre a ako zle. Predl\u017euje z\u00edskanie sp\u00e4tnej v\u00e4zby. <br \/>\nAko bojujeme: vz\u00e1jomn\u00e1 v\u00fdmena n\u00e1zorov a prakt\u00edk pri p\u00e1rovom programovan\u00ed takmer vyrie\u0161i probl\u00e9m.<\/li>\n<\/ul>\n<p>\nHlavn\u00fdm probl\u00e9mom pri uplat\u0148ovan\u00ed tohto \u0161t\u00fdlu v IaC je nerovnomern\u00e9 tempo pr\u00e1ce. V tradi\u010dnom v\u00fdvoji softv\u00e9ru m\u00e1\u0161 ve\u013emi vyrovnan\u00fd postup. M\u00f4\u017ee\u0161 str\u00e1vi\u0165 p\u00e4\u0165 min\u00fat a nap\u00edsa\u0165 N. M\u00f4\u017ee\u0161 str\u00e1vi\u0165 10 min\u00fat a nap\u00edsa\u0165 2N, 15 min\u00fat \u2013 3N. Tu v\u0161ak m\u00f4\u017ee\u0161 str\u00e1vi\u0165 p\u00e4\u0165 min\u00fat a nap\u00edsa\u0165 N, a potom str\u00e1vi\u0165 \u010fal\u0161\u00edch 30 min\u00fat a nap\u00edsa\u0165 desatinu N. Tu ni\u010d nevie\u0161, m\u00e1\u0161 z\u00e1tku, stagn\u00e1ciu. Pre pochopenie to trv\u00e1 \u010das a odv\u00e1dza to od samotn\u00e9ho programovania. <\/p>\n<blockquote><p>Z\u00e1ver: v \u010distom zmysle n\u00e1m to nevyhovuje.<\/p><\/blockquote>\n<p><b>2. Ping-pong. Tento pr\u00edstup predpoklad\u00e1, \u017ee jeden \u00fa\u010dastn\u00edk p\u00ed\u0161e test a druh\u00fd rob\u00ed jeho implement\u00e1ciu.<\/b> Vzh\u013eadom na to, \u017ee s unit testami je to zlo\u017eit\u00e9, a mus\u00edme p\u00edsa\u0165 dlh\u00fd integra\u010dn\u00fd test, cel\u00e1 \u013eahkos\u0165 ping-pongu sa vytr\u00e1ca. <\/p>\n<p>M\u00f4\u017eem poveda\u0165, \u017ee sme sk\u00fa\u0161ali rozdelenie povinnost\u00ed pri n\u00e1vrhu testovacieho scen\u00e1ra a implement\u00e1cii k\u00f3du pod n\u00edm. Jeden \u00fa\u010dastn\u00edk navrhoval scen\u00e1r, v tejto \u010dasti pr\u00e1ce bol zodpovedn\u00fd, mal posledn\u00e9 slovo. A druh\u00fd bol zodpovedn\u00fd za implement\u00e1ciu. Vy\u0161lo to dobre. Kvalita scen\u00e1ra sa pri takomto pr\u00edstupe zvy\u0161uje. <\/p>\n<blockquote><p>Z\u00e1ver: \u017eia\u013e, tempo pr\u00e1ce neumo\u017e\u0148uje pou\u017e\u00edva\u0165 ping-pong ako praktiku p\u00e1rov\u00e9ho programovania v 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\">Zlo\u017eit\u00e1 prax.<\/a><\/noindex>. My\u0161lienka spo\u010d\u00edva v tom, \u017ee jeden \u00fa\u010dastn\u00edk sa st\u00e1va directive navig\u00e1torom, zatia\u013e \u010do druh\u00fd preber\u00e1 \u00falohu vykon\u00e1vacieho vodi\u010da. Pr\u00e1vo rozhodovania zost\u00e1va v\u00fdlu\u010dne na navig\u00e1torovi. Vodi\u010d iba p\u00ed\u0161e a slovom m\u00f4\u017ee ovplyvni\u0165 prebiehaj\u00face veci. \u00dalohy sa nemenia dlh\u00fa dobu. <\/p>\n<p>Dobre sa hod\u00ed na \u0161kolenie, ale vy\u017eaduje siln\u00e9 soft skills. Na tom sme sa zasekli. Technika prebiehala \u0165a\u017eko. A tu nejde ani tak o infra\u0161trukt\u00faru. <\/p>\n<blockquote><p>Z\u00e1ver: potenci\u00e1lne m\u00f4\u017ee by\u0165 aplikovan\u00e1, nevzd\u00e1vame sa pokusov.<\/p><\/blockquote>\n<p>\n<b>4. Mobbing, swarming a v\u0161etky zn\u00e1me, ale tu nevyp\u00edsan\u00e9 \u0161t\u00fdly<\/b> nerozva\u017eujeme, preto\u017ee sme ich nesk\u00fa\u0161ali a nem\u00f4\u017eeme o tom hovori\u0165 v kontexte na\u0161ej pr\u00e1ce.<\/p>\n<blockquote><p>Hlavn\u00e9 zhrnutia o pou\u017e\u00edvan\u00ed p\u00e1rov\u00e9ho programovania:<\/p>\n<ul>\n<li>M\u00e1me nepravideln\u00e9 tempo pr\u00e1ce, ktor\u00e9 n\u00e1s zneis\u0165uje.<\/li>\n<li>Narazili sme na nedostato\u010dne dobr\u00e9 soft skills. A odborn\u00e1 oblas\u0165 nepom\u00e1ha prekona\u0165 tieto nedostatky.<\/li>\n<li>Dlh\u00e9 testy, probl\u00e9my s n\u00e1strojmi robia p\u00e1rov\u00fd v\u00fdvoj \u0165a\u017ekop\u00e1dnym.<\/li>\n<\/ul>\n<\/blockquote>\n<p><b>5. Napriek tomu sme mali \u00faspechy. Vymysleli sme vlastn\u00fa met\u00f3du \u201eZlu\u010dovanie - rozde\u013eovanie\u201c.<\/b> Stru\u010dne op\u00ed\u0161em, ako to funguje. <\/p>\n<p>M\u00e1me st\u00e1lych partnerov na nieko\u013eko dn\u00ed (menej ako t\u00fd\u017ede\u0148). Rob\u00edme spolu jednu \u00falohu. Niekedy sed\u00edme spolu: jeden p\u00ed\u0161e, druh\u00fd sed\u00ed a sleduje, ako pracuje podpora. Potom sa na nejak\u00fd \u010das rozdel\u00edme, ka\u017ed\u00fd rob\u00ed nejak\u00e9 nez\u00e1visl\u00e9 veci, potom sa op\u00e4\u0165 spoja, ve\u013emi r\u00fdchlo sa synchronizujeme, rob\u00edme nie\u010do spolu a op\u00e4\u0165 sa rozdel\u00edme. <\/p>\n<h4>Pl\u00e1novanie a komunik\u00e1cia<\/h4>\n<p>\nPosledn\u00fd blok prakt\u00edk, prostredn\u00edctvom ktor\u00fdch sa rie\u0161ia probl\u00e9my OS, sa t\u00fdka organiz\u00e1cie pr\u00e1c so samotn\u00fdmi \u00falohami. Sem patr\u00ed aj v\u00fdmena sk\u00fasenost\u00ed, ktor\u00e1 prebieha mimo partnerskej pr\u00e1ce. Pozrime sa na tri praktiky:<\/p>\n<p><b>1. \u00dalohy prostredn\u00edctvom cie\u013eov\u00e9ho stromu.<\/b> Celkov\u00e9 riadenie projektu sme zorganizovali prostredn\u00edctvom stromu, ktor\u00fd nekone\u010dne smeruje do bud\u00facnosti. Technicky sa riadenie vykon\u00e1va v Miro. Existuje jedna \u00faloha \u2013 t\u00e1 je medzic\u00ed\u013eom. Odtia\u013e vych\u00e1dzaj\u00fa bu\u010f men\u0161ie ciele, alebo skupiny \u00faloh. Od nich u\u017e nasleduj\u00fa samotn\u00e9 \u00falohy. V\u0161etky \u00falohy s\u00fa vytvoren\u00e9 a veden\u00e9 na tejto n\u00e1stenke. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: ako porazi\u0165 probl\u00e9my pomocou XP\" src=\"\/wp-content\/uploads\/2019\/10\/fe601e959f0055de4f7f4c39ae713c31.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nT\u00e1to sch\u00e9ma tie\u017e poskytuje sp\u00e4tn\u00fa v\u00e4zbu, ktor\u00e1 prebieha raz denne, ke\u010f sa synchronizujeme na stretnutiach. Ma\u0165 pred v\u0161etk\u00fdmi spolo\u010dn\u00fd pl\u00e1n, ktor\u00fd je pritom \u0161trukt\u00farovan\u00fd a \u00faplne otvoren\u00fd, umo\u017e\u0148uje ka\u017ed\u00e9mu by\u0165 informovan\u00fdm o tom, \u010do sa deje a ako \u010faleko sme pokro\u010dili. <\/p>\n<p>V\u00fdhody vizu\u00e1lneho vn\u00edmania \u00faloh:<\/p>\n<ul>\n<li>Pr\u00ed\u010dinnos\u0165. Ka\u017ed\u00e1 \u00faloha vedie k nejakej glob\u00e1lnej cie\u013eovej. \u00dalohy sa skupinuj\u00fa pod\u013ea men\u0161\u00edch cie\u013eov. Dom\u00e9na infra\u0161trukt\u00fary je sama o sebe dos\u0165 technick\u00e1. Niekedy nie je hne\u010f jasn\u00e9, ak\u00fd konkr\u00e9tny dopad na biznis m\u00e1, napr\u00edklad, p\u00edsanie pr\u00edru\u010dky o migr\u00e1cii na in\u00fd nginx. Ma\u0165 ved\u013ea cie\u013eov\u00fa kartu to urob\u00ed jasnej\u0161\u00edm.<br \/>\n <img decoding=\"async\" alt=\"Infrastructure as Code: ako porazi\u0165 probl\u00e9my pomocou XP\" src=\"\/wp-content\/uploads\/2019\/10\/fc4da9d277f7dc186a5710cf2be4419c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n Pr\u00ed\u010dinnos\u0165 je d\u00f4le\u017eitou vlastnos\u0165ou \u00faloh. Priamo odpoved\u00e1 na ot\u00e1zku: \u201eRob\u00edm to spr\u00e1vne?\u201c <\/li>\n<li>Paralelita. Sme dev\u00e4\u0165, a nie je fyzicky mo\u017en\u00e9, aby sa v\u0161etci s\u00fastredili na jednu \u00falohu. Niekedy nesta\u010d\u00ed ani \u00faloh z jednej oblasti. Pracujeme n\u00fatene na paraleln\u00fdch \u00faloh\u00e1ch v mal\u00fdch pracovn\u00fdch skupin\u00e1ch. Tieto skupiny sa ur\u010dit\u00fd \u010das zaoberaj\u00fa svojou \u00falohou a m\u00f4\u017eu by\u0165 posilnen\u00e9 niek\u00fdm in\u00fdm. Od tejto pracovnej skupiny ob\u010das niekto od\u00edde. Niekto ide na dovolenku, niekto pripravuje prezent\u00e1ciu na konferenciu DevOps conf, niekto p\u00ed\u0161e \u010dl\u00e1nok na Habr. Vedie\u0165, ak\u00e9 ciele a \u00falohy m\u00f4\u017eu by\u0165 vykon\u00e1van\u00e9 paralelne, sa st\u00e1va ve\u013emi d\u00f4le\u017eit\u00e9. <\/li>\n<\/ul>\n<p>\n<b>2. Zmeny ved\u00facich rann\u00fdch stretnut\u00ed.<\/b> Na stand-upoch vznikol tak\u00fd probl\u00e9m \u2013 ve\u013ea \u00faloh sa rob\u00ed paralelne. Niekedy s\u00fa \u00falohy slabo prepojen\u00e9 a nie je jasn\u00e9, kto \u010do rob\u00ed. A n\u00e1zor \u010fal\u0161ieho \u010dlena t\u00edmu je ve\u013emi d\u00f4le\u017eit\u00fd. Je to dodato\u010dn\u00e1 inform\u00e1cia, ktor\u00e1 m\u00f4\u017ee zmeni\u0165 priebeh rie\u0161enia \u00falohy. Samozrejme, zvy\u010dajne je s tebou vo dvojici niekto, ale konzult\u00e1cie a rady s\u00fa v\u017edy v\u00edtan\u00e9. <\/p>\n<p>Aby sme zlep\u0161ili t\u00fato situ\u00e1ciu, zaviedli sme techniku \u201ezmena ved\u00faceho stand-upu\u201c. Teraz sa rotuj\u00fa pod\u013ea ur\u010dit\u00e9ho zoznamu a to m\u00e1 svoj efekt. Ke\u010f pr\u00edde tvoja rada, mus\u00ed\u0161 sa ponori\u0165 do toho, \u010do sa deje, aby si dobre viedol scrummit. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: ako porazi\u0165 probl\u00e9my pomocou XP\" src=\"\/wp-content\/uploads\/2019\/10\/622973a654ecd3e27a7a366596814ffc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>3. Intern\u00e9 demo.<\/b> Pomoc pri rie\u0161en\u00ed \u00faloh p\u00e1rov\u00fdm programovan\u00edm, vizualiz\u00e1cia na strome \u00faloh a pomoc na scrummitoch r\u00e1no \u2013 to je dobr\u00e9, ale nie ide\u00e1lne. V p\u00e1re ste obmedzen\u00ed iba svojimi znalos\u0165ami. Stroma \u00faloh pom\u00e1ha glob\u00e1lne pochopi\u0165, kto a \u010do rob\u00ed. A ved\u00faci a kolegovia na rannej porade sa nebud\u00fa hlboko zaobera\u0165 tvojimi probl\u00e9mami. Ur\u010dite m\u00f4\u017eu nie\u010do aj prehliadnu\u0165. <\/p>\n<p>Rie\u0161enie bolo n\u00e1jden\u00e9 v demon\u0161tr\u00e1cii vykonan\u00fdch pr\u00e1c navz\u00e1jom a n\u00e1slednej diskusii o nich. Zbierame sa raz za t\u00fd\u017ede\u0148 na hodinu a ukazujeme detaily rie\u0161en\u00ed \u00faloh, ktor\u00e9 sme robili za posledn\u00fd t\u00fd\u017ede\u0148. <\/p>\n<p>V procese demon\u0161tr\u00e1cie je potrebn\u00e9 odhali\u0165 detaily \u00falohy a ur\u010dite ju predvies\u0165 v akcii. <\/p>\n<p><b class=\"spoiler_title\">Prezent\u00e1ciu je mo\u017en\u00e9 vies\u0165 pod\u013ea kontroln\u00e9ho zoznamu.<\/b>1. Vlo\u017ete do kontextu. Odkia\u013e \u00faloha vznikla, pre\u010do to vlastne bolo potrebn\u00e9?<\/p>\n<p>2. Ako sa \u00faloha rie\u0161ila predt\u00fdm? Napr\u00edklad, bolo potrebn\u00e9 masov\u00e9 kliknutie my\u0161ou, alebo bolo v\u00f4bec nemo\u017en\u00e9 nie\u010do urobi\u0165.<\/p>\n<p>3. Ako to zlep\u0161ujeme. Napr\u00edklad: \u201ePozrite, teraz je tu skriptik, tu je readme.\u201c<\/p>\n<p>4. Uk\u00e1\u017ete, ako to funguje. Odpor\u00fa\u010dame priamo vykona\u0165 nejak\u00fd pou\u017e\u00edvate\u013esk\u00fd scen\u00e1r. Chcem X, rob\u00edm Y, vid\u00edm Z (alebo in\u00e9). Napr\u00edklad, nasadzujem NGINX, kontrolujem URL, dost\u00e1vam 200 OK. Ak je akcia dlh\u00e1, pripravte to vopred, aby ste to mohli uk\u00e1za\u0165. Odpor\u00fa\u010dame u\u017e hodinu pred demo nepokazova\u0165, ak je to krehk\u00e9.<\/p>\n<p>5. Vysvetlite, ak\u00fdm sp\u00f4sobom bola probl\u00e9m vyrie\u0161en\u00fd, ak\u00e9 prek\u00e1\u017eky zostali, \u010do nie je dokon\u010den\u00e9, ak\u00e9 vylep\u0161enia s\u00fa mo\u017en\u00e9 v bud\u00facnosti. Napr\u00edklad, teraz je to cli, nesk\u00f4r bude \u00fapln\u00e1 automatiz\u00e1cia v CI.<\/p>\n<p>Odpor\u00fa\u010dame, aby sa ka\u017ed\u00fd sp\u00edker zmestil do 5-10 min\u00fat. Ak je v\u00e1\u0161 pr\u00edspevok evidentne d\u00f4le\u017eit\u00fd a zaberie viac \u010dasu, dohodnite to vopred v kan\u00e1li sre-takeover.<\/p>\n<p>Po prezent\u00e1cii nasleduje diskusia v threde. Tu sa objavuje sp\u00e4tn\u00e1 v\u00e4zba na na\u0161e \u00falohy. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: ako porazi\u0165 probl\u00e9my pomocou XP\" src=\"\/wp-content\/uploads\/2019\/10\/77da888d24b52c7eea7e65d2400e152c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nNa konci sa vykon\u00e1 prieskum na zistenie u\u017eito\u010dnosti prebiehaj\u00faceho. To u\u017e je sp\u00e4tn\u00e1 v\u00e4zba na podstatu prezent\u00e1cie a d\u00f4le\u017eitos\u0165 \u00falohy.<\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: ako porazi\u0165 probl\u00e9my pomocou XP\" src=\"\/wp-content\/uploads\/2019\/10\/7642cd87050171cc4a6bf278329dd283.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Dlh\u00e9 z\u00e1very a \u010do \u010falej<\/h2>\n<p>\nM\u00f4\u017ee sa zda\u0165, \u017ee t\u00f3n \u010dl\u00e1nku je trochu pesimistick\u00fd. Nie je to tak. Dva ni\u017e\u0161ie \u00farovne z\u00edskavania sp\u00e4tnej v\u00e4zby, konkr\u00e9tne testy a p\u00e1rov\u00e9 programovanie, funguj\u00fa. Nie tak dokonale ako v tradi\u010dnom v\u00fdvoji, ale pozit\u00edvny efekt z toho je. <\/p>\n<p>Testy, v aktu\u00e1lnej podobe, poskytuj\u00fa len \u010diasto\u010dn\u00e9 pokrytie k\u00f3du. Mnoho konfigur\u00e1ci\u00ed ost\u00e1va netestovan\u00fdch. Ich vplyv na bezprostredn\u00fa pr\u00e1cu pri p\u00edsan\u00ed k\u00f3du je n\u00edzky. Av\u0161ak efekt z integra\u010dn\u00fdch testov existuje, a pr\u00e1ve tie umo\u017e\u0148uj\u00fa bez ob\u00e1v robi\u0165 refaktoringy. To je ve\u013ek\u00fd \u00faspech. S presunom zamerania na v\u00fdvoj v high-level jazykoch (u n\u00e1s python, go) probl\u00e9m zmizne. A na \"lepidlo\" je mnoho kontrol a nie s\u00fa potrebn\u00e9, sta\u010d\u00ed v\u0161eobecn\u00e1 integr\u00e1cia.<\/p>\n<p>Pr\u00e1ca v p\u00e1re sa viac z\u00e1vis\u00ed od konkr\u00e9tnych \u013eud\u00ed. Existuje faktor \u00falohy a na\u0161e softv\u00e9rov\u00e9 zru\u010dnosti. S niek\u00fdm to ide ve\u013emi dobre, s niek\u00fdm hor\u0161ie. Ur\u010dite z toho vypl\u00fdva nejak\u00fd pr\u00ednos. Jasn\u00e9 je, \u017ee aj pri nedostato\u010dnom dodr\u017eiavan\u00ed pravidiel p\u00e1rovej pr\u00e1ce m\u00e1 samotn\u00e1 skuto\u010dnos\u0165 spolupr\u00e1ce pozit\u00edvny vplyv na kvalitu v\u00fdsledku. Osobne sa mi rob\u00ed v p\u00e1re jednoduch\u0161ie a pr\u00edjemnej\u0161ie.<\/p>\n<p>Vy\u0161\u0161ie \u00farovne vplyvu na OS \u2013 pl\u00e1novanie a pr\u00e1ca s \u00falohami ur\u010dite prin\u00e1\u0161aj\u00fa efekty: kvalitn\u00e1 v\u00fdmena vedomost\u00ed a zlep\u0161enie kvality v\u00fdvoja. <\/p>\n<h4>Kr\u00e1tke v\u00fdstupy v jednej l\u00ednii <\/h4>\n<p><\/p>\n<ul>\n<li>XP praktiky funguj\u00fa v IaC, ale s ni\u017e\u0161ou efekt\u00edvnos\u0165ou.<\/li>\n<li>Posilnite to, \u010do funguje.<\/li>\n<li>Vytv\u00e1rajte svoje kompenza\u010dn\u00e9 mechanizmy a praktiky.<\/li>\n<\/ul>\n<p>Zdroj: <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\/sk\/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=\"sk_SK\" \/>\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\/sk\/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: ako prekona\u0165 probl\u00e9my s pomocou XP | ProHoster","description":"Ahoj, Habr! Predt\u00fdm som si s\u0165a\u017eoval na \u017eivot v paradigme Infrastructure as Code a ni\u010d som nenavrhol na rie\u0161enie vzniknutej situ\u00e1cie.","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","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\/sk\/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\/sk\/wp-json\/wp\/v2\/posts\/38747","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=38747"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/38747\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/29066"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=38747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=38747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=38747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}