{"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\/cs\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp","title":{"rendered":"Infrastruktura jako k\u00f3d: jak \u0159e\u0161it probl\u00e9my pomoc\u00ed XP","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ahoj, Habre! D\u0159\u00edve jsem si st\u011b\u017eoval na \u017eivot v paradigmatu Infrastruktura jako k\u00f3d a nic nenab\u00edzel jako \u0159e\u0161en\u00ed vznikl\u00e9 situace. Dnes se vrac\u00edm, abych pov\u011bd\u011bl, jak\u00e9 p\u0159\u00edstupy a praktiky mohou pomoci uniknout z propasti beznad\u011bje a nasm\u011brovat situaci spr\u00e1vn\u00fdm sm\u011brem. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastruktura jako k\u00f3d: jak \u0159e\u0161it probl\u00e9my pomoc\u00ed 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 p\u0159edchoz\u00edm \u010dl\u00e1nku <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/465137\/\">Infrastruktura jako k\u00f3d: prvn\u00ed sezn\u00e1men\u00ed<\/a><\/noindex> Sd\u00edlel jsem sv\u00e9 dojmy z t\u00e9to oblasti, sna\u017eil jsem se p\u0159em\u00fd\u0161let o sou\u010dasn\u00e9 situaci v oboru a dokonce jsem nazna\u010dil, \u017ee standardn\u00ed, v\u0161em v\u00fdvoj\u00e1\u0159\u016fm zn\u00e1m\u00e9 praktiky mohou pomoci. Mohlo se zd\u00e1t, \u017ee tam bylo mnoho st\u00ed\u017enost\u00ed na \u017eivot, ale nebylo tam \u017e\u00e1dn\u00e9 n\u00e1vrhy, jak situaci vy\u0159e\u0161it. <\/p>\n<h2>Kdo jsme, kde jsme a jak\u00e9 m\u00e1me probl\u00e9my<\/h2>\n<p>\nMoment\u00e1ln\u011b jsme v t\u00fdmu SRE Onboarding, kter\u00fd se skl\u00e1d\u00e1 ze \u0161esti program\u00e1tor\u016f a t\u0159\u00ed infrastruktur\u00e1ln\u00edch in\u017een\u00fdr\u016f. V\u0161ichni se sna\u017e\u00edme ps\u00e1t Infrastrukturu jako k\u00f3d (IaC). D\u011bl\u00e1me to, proto\u017ee um\u00edme ps\u00e1t k\u00f3d a v minulosti jsme byli v\u00fdvoj\u00e1\u0159i na \u00farovni \"nadpr\u016fm\u011brn\u011b\". <\/p>\n<ul>\n<li>M\u00e1me n\u011bkolik v\u00fdhod: ur\u010dit\u00e9 z\u00e1zem\u00ed, znalosti praktik, schopnost ps\u00e1t k\u00f3d, touhu u\u010dit se nov\u00e9mu. <\/li>\n<li>A m\u00e1me i slabou str\u00e1nku, neboli m\u00ednus: nedostatek znalost\u00ed o infrastrukturn\u00edm z\u00e1kladu. <\/li>\n<\/ul>\n<p>\n<b class=\"spoiler_title\">Technologick\u00fd stack, kter\u00fd pou\u017e\u00edv\u00e1me v na\u0161em IaC.<\/b><\/p>\n<ul>\n<li>Terraform pro vytv\u00e1\u0159en\u00ed zdroj\u016f.<\/li>\n<li>Packer pro sestaven\u00ed obraz\u016f. To jsou obrazy Windows a CentOS 7.<\/li>\n<li>Jsonnet pro mocn\u00e9 sestaven\u00ed v drone.io, a tak\u00e9 pro generov\u00e1n\u00ed packer json a na\u0161ich terraform modul\u016f.<\/li>\n<li>Azure.<\/li>\n<li>Ansible p\u0159i p\u0159\u00edprav\u011b obraz\u016f.<\/li>\n<li>Python pro pomocn\u00e9 slu\u017eby, a tak\u00e9 skripty pro provisioning.<\/li>\n<li>A to v\u0161e v VSCode s pluginy sd\u00edlen\u00fdmi mezi \u010dleny t\u00fdmu.<\/li>\n<\/ul>\n<p>Z\u00e1v\u011br z m\u00e9 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/465137\/\">p\u0159edchoz\u00edho \u010dl\u00e1nku<\/a><\/noindex> byl takov\u00fd: sna\u017eil jsem se v\u0161t\u00edpit (p\u0159edev\u0161\u00edm sob\u011b) optimismus, cht\u011bl jsem \u0159\u00edct, \u017ee budeme zkou\u0161et zn\u00e1m\u00e9 n\u00e1m p\u0159\u00edstupy a praktiky, abychom se vyrovnali s obt\u00ed\u017eemi a komplikacemi, kter\u00e9 v t\u00e9to sf\u00e9\u0159e existuj\u00ed. <\/p>\n<p>Moment\u00e1ln\u011b \u010del\u00edme takov\u00fdm probl\u00e9m\u016fm IaC:<\/p>\n<ul>\n<li>Nedokonalost n\u00e1stroj\u016f a prost\u0159edk\u016f pro v\u00fdvoj k\u00f3du.<\/li>\n<li>Pomal\u00e9 nasazen\u00ed. Infrastruktura je \u010d\u00e1st re\u00e1ln\u00e9ho sv\u011bta a ten m\u016f\u017ee b\u00fdt pomal\u00fd.<\/li>\n<li>Nedostatek p\u0159\u00edstup\u016f a praktik.<\/li>\n<li>Jsme nov\u00e1\u010dci a mnoho nev\u00edme.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Extr\u00e9mn\u00ed programov\u00e1n\u00ed (XP) sp\u011bch\u00e1 na pomoc.<\/h2>\n<p>\nV\u0161ichni v\u00fdvoj\u00e1\u0159i dob\u0159e znaj\u00ed extr\u00e9mn\u00ed programov\u00e1n\u00ed (XP) a praktiky, kter\u00e9 za n\u00edm stoj\u00ed. Mnoz\u00ed z n\u00e1s pracovali s t\u00edmto p\u0159\u00edstupem a byl \u00fasp\u011b\u0161n\u00fd. Pro\u010d tedy nevyu\u017e\u00edt principy a praktiky, kter\u00e9 tam byly zavedeny, abychom p\u0159ekonali p\u0159ek\u00e1\u017eky infrastruktury? Rozhodli jsme se aplikovat tento p\u0159\u00edstup a pod\u00edvat se, co z toho vzejde.<\/p>\n<p><b class=\"spoiler_title\">Ov\u011b\u0159en\u00ed pou\u017eitelnosti p\u0159\u00edstupu XP ve va\u0161\u00ed oblasti<\/b>P\u0159in\u00e1\u0161\u00edm popis prost\u0159ed\u00ed, pro kter\u00e9 je XP dob\u0159e p\u0159izp\u016fsoben\u00e9, a jak se to vztahuje k n\u00e1m: <\/p>\n<p>1. Dynamicky se m\u011bn\u00edc\u00ed po\u017eadavky na software. M\u011bli jsme jasno v kone\u010dn\u00e9m c\u00edli. Ale detaily mohou b\u00fdt variabiln\u00ed. Sami rozhodujeme, kam se m\u00e1me posunout, tak\u017ee se po\u017eadavky ob\u010das m\u011bn\u00ed (v\u011bt\u0161inou od n\u00e1s samotn\u00fdch). Pokud vezmeme t\u00fdm SRE, kter\u00fd s\u00e1m d\u011bl\u00e1 automatizaci a s\u00e1m omezuje po\u017eadavky a rozsah pr\u00e1ce, plat\u00ed tento bod dob\u0159e. <\/p>\n<p>2. Rizika zp\u016fsoben\u00e1 pevn\u011b \u010dasov\u00fdmi projekty pou\u017e\u00edvaj\u00edc\u00edmi novou technologii. M\u016f\u017eeme \u010delit rizik\u016fm p\u0159i pou\u017e\u00edv\u00e1n\u00ed n\u011bjak\u00fdch n\u00e1m nezn\u00e1m\u00fdch v\u011bc\u00ed. A to je 100 % n\u00e1\u0161 p\u0159\u00edpad. Cel\u00fd n\u00e1\u0161 projekt spo\u010d\u00edv\u00e1 v pou\u017e\u00edv\u00e1n\u00ed technologi\u00ed, kter\u00e9 jsme do konce neznali. To je obecn\u011b st\u00e1l\u00fd probl\u00e9m, proto\u017ee v oblasti infrastruktury neust\u00e1le p\u0159ib\u00fdv\u00e1 mnoho nov\u00fdch technologi\u00ed. <\/p>\n<p>3,4. Mal\u00fd, spolu um\u00edst\u011bn\u00fd roz\u0161\u00ed\u0159en\u00fd v\u00fdvojov\u00fd t\u00fdm. Technologii, kterou pou\u017e\u00edv\u00e1te, umo\u017e\u0148uje automatizovan\u00e9 jednotkov\u00e9 a funk\u010dn\u00ed testy. Tyto dva body n\u00e1m \u00fapln\u011b nesed\u00ed. Zaprv\u00e9, nejsme zajedno um\u00edst\u011bn\u00fd t\u00fdm, zadruh\u00e9 m\u00e1me dev\u011bt lid\u00ed, co\u017e m\u016f\u017ee b\u00fdt pova\u017eov\u00e1no za velk\u00fd t\u00fdm. I kdy\u017e podle n\u011bkter\u00fdch definic \u201evelk\u00e9ho\u201c t\u00fdmu je to hodn\u011b \u2014 14+ lid\u00ed. <\/p>\n<p>Pod\u00edvejme se na n\u011bkter\u00e9 praktiky z XP a to, jak ovliv\u0148uj\u00ed rychlost a kvalitu zp\u011btn\u00e9 vazby.<\/p>\n<h4>Princip zp\u011btn\u00e9 vazby v XP<\/h4>\n<p>\nPodle m\u00e9ho n\u00e1zoru je zp\u011btn\u00e1 vazba odpov\u011bd\u00ed na ot\u00e1zku, zda d\u011bl\u00e1m spr\u00e1vn\u011b, zda kr\u00e1\u010d\u00edme t\u00edm spr\u00e1vn\u00fdm sm\u011brem. V XP existuje bo\u017esk\u00e1 sch\u00e9ma: cyklus zp\u011btn\u00e9 vazby v \u010dase. Zaj\u00edmav\u00e9 je, \u017ee \u010d\u00edm n\u00ed\u017ee jsme, t\u00edm rychleji m\u016f\u017eeme z\u00edskat O\/S, abychom odpov\u011bd\u011bli na pot\u0159ebn\u00e9 ot\u00e1zky. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastruktura jako k\u00f3d: jak \u0159e\u0161it probl\u00e9my pomoc\u00ed XP\" src=\"\/wp-content\/uploads\/2019\/10\/e381fb2d7937cbd1978fd6740e63e790.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJe to docela zaj\u00edmav\u00e9 t\u00e9ma k diskusi, proto\u017ee v na\u0161\u00ed IT industriji je mo\u017en\u00e9 rychle z\u00edskat O\/S. P\u0159edstavte si, jak bolestn\u011b slo\u017eit\u00e9 je d\u011blat n\u011bjak\u00fd projekt po dobu \u0161est m\u011bs\u00edc\u016f a teprve potom zjistit, \u017ee na za\u010d\u00e1tku byla polo\u017eena chyba. To se st\u00e1v\u00e1 jak p\u0159i n\u00e1vrhu, tak p\u0159i jak\u00e9mkoliv budov\u00e1n\u00ed slo\u017eit\u00fdch syst\u00e9m\u016f. <\/p>\n<p>V na\u0161em p\u0159\u00edpad\u011b n\u00e1m IaC pom\u00e1h\u00e1 s zp\u011btnou vazbou. Okam\u017eit\u011b provedu malou \u00fapravu v v\u00fd\u0161e uveden\u00e9m sch\u00e9matu: pl\u00e1n vyd\u00e1n\u00ed nem\u00e1me v m\u011bs\u00ed\u010dn\u00edch cyklech, ale prob\u00edh\u00e1 n\u011bkolikr\u00e1t denn\u011b. K tomuto cyklu OS se v\u00e1\u017eou n\u011bkter\u00e9 praktiky, kter\u00e9 podrobn\u011bji prozkoum\u00e1me.<\/p>\n<blockquote><p>Je d\u016fle\u017eit\u00e9: zp\u011btn\u00e1 vazba m\u016f\u017ee b\u00fdt \u0159e\u0161en\u00edm pro v\u0161echny v\u00fd\u0161e uveden\u00e9 probl\u00e9my. Ve spojen\u00ed s praktikami XP m\u016f\u017ee vyt\u00e1hnout z propasti zoufalstv\u00ed.<\/p><\/blockquote>\n<p><\/p>\n<h2>Jak se dostat z propasti zoufalstv\u00ed: t\u0159i praktiky<\/h2>\n<p><\/p>\n<h4>Testy <\/h4>\n<p>\nTesty se zmi\u0148uj\u00ed dvakr\u00e1t v cyklu zp\u011btn\u00e9 vazby XP. Nen\u00ed to bez d\u016fvodu. Jsou extr\u00e9mn\u011b d\u016fle\u017eit\u00e9 pro celou techniku extr\u00e9mn\u00edho programov\u00e1n\u00ed. <\/p>\n<p>P\u0159edpokl\u00e1d\u00e1 se, \u017ee m\u00e1\u0161 Unit a Acceptance tests. Jedny ti d\u00e1vaj\u00ed zp\u011btnou vazbu za p\u00e1r minut, druh\u00e9 za n\u011bkolik dn\u00ed, proto jsou ps\u00e1ny d\u00e9le a spou\u0161t\u011bny m\u00e9n\u011b \u010dasto. <\/p>\n<p>Existuje klasick\u00e1 pyramida testov\u00e1n\u00ed, kter\u00e1 ukazuje, \u017ee n\u011bjak\u00fdch test\u016f by m\u011blo b\u00fdt v\u00edce. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastruktura jako k\u00f3d: jak \u0159e\u0161it probl\u00e9my pomoc\u00ed XP\" src=\"\/wp-content\/uploads\/2019\/10\/29f3217f11b67378c9c0c3f14fab9d61.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJak je toto sch\u00e9ma pou\u017eiteln\u00e9 v na\u0161em projektu IaC? Vlastn\u011b\u2026 nijak. <\/p>\n<ul>\n<li>Unit test\u016f, p\u0159esto\u017ee by jich m\u011blo b\u00fdt opravdu hodn\u011b, nem\u016f\u017ee b\u00fdt opravdu moc. Bu\u010f testuj\u00ed n\u011bco velmi nep\u0159\u00edmo. V podstat\u011b lze \u0159\u00edci, \u017ee je v\u016fbec nep\u00ed\u0161eme. Ale m\u00e1me n\u011bkolik vyu\u017eit\u00ed pro takov\u00e9 testy, kter\u00e9 se n\u00e1m p\u0159ece jen poda\u0159ilo ud\u011blat:\n<ol>\n<li>Testov\u00e1n\u00ed k\u00f3du na jsonnet. To je nap\u0159\u00edklad n\u00e1\u0161 build pipeline v drone, kter\u00fd je dost slo\u017eit\u00fd. K\u00f3d na jsonnet je dob\u0159e pokryt testy. <br \/>\n Pou\u017e\u00edv\u00e1me tento <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/yugui\/jsonnetunit\">Unit testing framework for Jsonnet<\/a><\/noindex>. <\/li>\n<li> Testy na skripty, kter\u00e9 se vykon\u00e1vaj\u00ed p\u0159i startu zdroje. Skripty jsou na Python, a proto je mo\u017en\u00e9 ps\u00e1t testy i pro n\u011b.<\/li>\n<\/ol>\n<\/li>\n<li>Potenci\u00e1ln\u011b je mo\u017en\u00e1 kontrola konfigurace v testech, ale my to tak ned\u011bl\u00e1me. Je tu tak\u00e9 mo\u017enost nastaven\u00ed kontroly pravidel konfigurace zdroj\u016f p\u0159es <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wata727\/tflint\">tflint<\/a><\/noindex>. Nicm\u00e9n\u011b, pro terraform jsou tam p\u0159\u00edli\u0161 z\u00e1kladn\u00ed kontroly, ale mnoho kontroln\u00edch sc\u00e9n\u00e1\u0159\u016f je naps\u00e1no pro AWS. A my jsme na Azure, tak\u017ee to op\u011bt nefunguje.<\/li>\n<li>Komponentn\u00ed integra\u010dn\u00ed testy: z\u00e1le\u017e\u00ed na tom, jak je klasifikuje\u0161 a kam je za\u0159ad\u00ed\u0161. Ale v z\u00e1sad\u011b funguj\u00ed.\n<p>Takto vypadaj\u00ed integra\u010dn\u00ed testy. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastruktura jako k\u00f3d: jak \u0159e\u0161it probl\u00e9my pomoc\u00ed XP\" src=\"\/wp-content\/uploads\/2019\/10\/b4771e9e5d329ffb2ba565ead7fdddfd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTo je p\u0159\u00edklad p\u0159i buildov\u00e1n\u00ed obraz\u016f v Drone CI. Abychom se k nim dostali, mus\u00edme \u010dekat 30 minut, ne\u017e se vytvo\u0159\u00ed image Packer, pak dal\u0161\u00edch 15 minut \u010dekat, ne\u017e projdou. Ale jsou tu! <\/p>\n<p><b class=\"spoiler_title\">Algoritmus kontroly obraz\u016f<\/b> <\/p>\n<ol>\n<li>Nejprve mus\u00ed Packer \u00fapln\u011b p\u0159ipravit obraz.<\/li>\n<li>Vedle testu je terrafom s lok\u00e1ln\u00edm stavem, pomoc\u00ed kter\u00e9ho tento obraz nasazujeme. <\/li>\n<li>P\u0159i nasazov\u00e1n\u00ed se pou\u017e\u00edv\u00e1 mal\u00fd modul, kter\u00fd le\u017e\u00ed vedle, aby bylo jednodu\u0161\u0161\u00ed pracovat s obr\u00e1zkem. <\/li>\n<li>Jakmile je z obrazu nasazena VM, lze za\u010d\u00edt s kontrolami. Kontroly se prov\u00e1d\u011bj\u00ed p\u0159edev\u0161\u00edm na stroji. Zkoum\u00e1 se, jak fungovaly skripty p\u0159i spu\u0161t\u011bn\u00ed, jak funguj\u00ed d\u00e9moni. K tomu se p\u0159es ssh nebo winrm p\u0159ihl\u00e1s\u00edme na pr\u00e1v\u011b spu\u0161t\u011bn\u00fd stroj a zkontrolujeme stav konfigurace nebo zda se slu\u017eby spustily.<\/li>\n<\/ol>\n<p>\n <\/li>\n<li>Podobn\u00e1 situace je s integra\u010dn\u00edmi testy a moduly pro terraform. Zde je stru\u010dn\u00e1 tabulka, kter\u00e1 vysv\u011btluje vlastnosti takov\u00fdch test\u016f.\n<p><img decoding=\"async\" alt=\"Infrastruktura jako k\u00f3d: jak \u0159e\u0161it probl\u00e9my pomoc\u00ed XP\" src=\"\/wp-content\/uploads\/2019\/10\/e2624fb97831701e374a7e8e7fe39a16.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZp\u011btn\u00e1 vazba na pipeline je kolem 40 minut. V\u0161echno prob\u00edh\u00e1 velmi pomalu. Lze to pou\u017e\u00edt pro regresi, ale pro nov\u00fd v\u00fdvoj je to naprosto nerealistick\u00e9. Pokud se na to \u010dlov\u011bk opravdu pe\u010dliv\u011b p\u0159iprav\u00ed, p\u0159iprav\u00ed running, skripty, lze to zkr\u00e1tit na 10 minut. Ale to st\u00e1le nejsou Unit testy, kter\u00e9 vykonaj\u00ed 100 kus\u016f za 5 sekund. <\/li>\n<\/ul>\n<p>\nNedostatek Unit test\u016f p\u0159i sestavov\u00e1n\u00ed obraz\u016f nebo modul\u016f terraformu nut\u00ed p\u0159esouvat pr\u00e1ci na samostatn\u00e9 slu\u017eby, kter\u00e9 lze jednodu\u0161e zavolat p\u0159es REST, nebo na Python skripty.<\/p>\n<p>Nap\u0159\u00edklad jsme pot\u0159ebovali zajistit, aby se p\u0159i spu\u0161t\u011bn\u00ed virtu\u00e1ln\u00edho stroje registroval v slu\u017eb\u011b <noindex><a rel=\"nofollow\" href=\"https:\/\/www.scaleft.com\/\">ScaleFT<\/a><\/noindex>, a p\u0159i zni\u010den\u00ed virtu\u00e1lky se smazal.<\/p>\n<p>Jeliko\u017e ScaleFT u n\u00e1s funguje jako slu\u017eba, mus\u00edme s n\u00edm pracovat p\u0159es API. Bylo naps\u00e1no obal, kter\u00e9 lze zavolat a \u0159\u00edct: \u201eZajdi a sma\u017e to a to\u201c. Uchov\u00e1v\u00e1 v\u0161echny pot\u0159ebn\u00e9 nastaven\u00ed a p\u0159\u00edstupy. <\/p>\n<p>Na to u\u017e m\u016f\u017eeme ps\u00e1t norm\u00e1ln\u00ed testy, proto\u017ee to nijak neodli\u0161uje od b\u011b\u017en\u00e9ho softwaru: mockuje se n\u011bjak\u00e9 API, ty to zavol\u00e1\u0161, a d\u00edv\u00e1me se, co se d\u011bje. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastruktura jako k\u00f3d: jak \u0159e\u0161it probl\u00e9my pomoc\u00ed XP\" src=\"\/wp-content\/uploads\/2019\/10\/dc17aaa64038acb080669d31fe8ecfe0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<blockquote><p>V\u00fdsledky test\u016f: Unit testov\u00e1n\u00ed, kter\u00e9 by m\u011blo trvat OS minutu, to nespl\u0148uje. A vy\u0161\u0161\u00ed typy testov\u00e1n\u00ed na pyramid\u011b d\u00e1vaj\u00ed efekt, ale pokr\u00fdvaj\u00ed pouze \u010d\u00e1st probl\u00e9m\u016f. <\/p><\/blockquote>\n<h4>P\u00e1rov\u00e9 programov\u00e1n\u00ed<\/h4>\n<p>\nTesty jsou samoz\u0159ejm\u011b dobr\u00e9. M\u016f\u017eeme napsat hodn\u011b, mohou m\u00edt r\u016fzn\u00e9 form\u00e1ty. Budou fungovat na sv\u00fdch \u00farovn\u00edch a poskytovat n\u00e1m zp\u011btnou vazbu. Ale probl\u00e9m s \u0161patn\u00fdmi unit testy, kter\u00e9 poskytuj\u00ed nejrychlej\u0161\u00ed OS, p\u0159etrv\u00e1v\u00e1. P\u0159esto si st\u00e1le p\u0159ejeme rychlou OS, na kter\u00e9 se snadno a p\u0159\u00edjemn\u011b pracuje. Nemluv\u011b o kvalit\u011b kone\u010dn\u00e9ho \u0159e\u0161en\u00ed. Na\u0161t\u011bst\u00ed existuj\u00ed techniky, kter\u00e9 n\u00e1m umo\u017e\u0148uj\u00ed poskytnout je\u0161t\u011b rychlej\u0161\u00ed zp\u011btnou vazbu ne\u017e modulov\u00e9 testy. To je c\u00edlem p\u00e1rov\u00e9ho programov\u00e1n\u00ed.<\/p>\n<p>P\u0159i psan\u00ed k\u00f3du chceme z\u00edskat zp\u011btnou vazbu o jeho kvalit\u011b co nejd\u0159\u00edve. Ano, m\u016f\u017eete napsat v\u0161echno ve feature v\u011btvi (aby nikomu nic neporu\u0161ilo), vytvo\u0159it pull request na GitHubu, p\u0159id\u011blit ho n\u011bkomu, jeho\u017e n\u00e1zor m\u00e1 v\u00e1hu, a \u010dekat na odpov\u011b\u010f. <\/p>\n<p>Ale \u010dek\u00e1n\u00ed m\u016f\u017ee trvat dlouho. Lid\u00e9 jsou v\u0161ichni zanepr\u00e1zdn\u011bni, a odpov\u011b\u010f, i kdy\u017e p\u0159ijde, nemus\u00ed b\u00fdt v\u017edy nejkvalitn\u011bj\u0161\u00ed. P\u0159edstavme si, \u017ee odpov\u011b\u010f p\u0159i\u0161la okam\u017eit\u011b, recenzent okam\u017eit\u011b porozum\u011bl cel\u00e9mu z\u00e1m\u011bru, ale odpov\u011b\u010f p\u0159ich\u00e1z\u00ed st\u00e1le se zpo\u017ed\u011bn\u00edm, dodate\u010dn\u011b. A \u010dlov\u011bk by cht\u011bl d\u0159\u00edve. Tady je p\u00e1rov\u00e9 programov\u00e1n\u00ed c\u00edleno \u2013 aby se reagovalo ihned, v pr\u016fb\u011bhu psan\u00ed.<\/p>\n<p>D\u00e1le uv\u00e1d\u00edm styly p\u00e1rov\u00e9ho programov\u00e1n\u00ed a jejich pou\u017eitelnost p\u0159i pr\u00e1ci na IaC: <\/p>\n<p><b>1. Klasick\u00fd, Zku\u0161en\u00fd + zku\u0161en\u00fd, zm\u011bna podle \u010dasova\u010de.<\/b> Dv\u011b role \u2013 driver a navigator. Dva lid\u00e9. Pracuj\u00ed na stejn\u00e9m k\u00f3du a m\u011bn\u00ed se v rol\u00edch po ur\u010dit\u00e9m p\u0159edem ur\u010den\u00e9m \u010dasov\u00e9m \u00faseku. <\/p>\n<p>Pod\u00edvejme se na slu\u010ditelnost na\u0161ich probl\u00e9m\u016f se stylem: <\/p>\n<ul>\n<li>Probl\u00e9m: nedokonalost n\u00e1stroj\u016f, prost\u0159edk\u016f pro v\u00fdvoj k\u00f3du. <br \/>\nNegativn\u00ed vliv: del\u0161\u00ed doba v\u00fdvoje, zpomalujeme, naru\u0161ujeme tempo \/ rytmus pr\u00e1ce.<br \/>\n Jak bojujeme: pou\u017e\u00edv\u00e1me jin\u00e9 n\u00e1stroje, spole\u010dn\u00e9 IDE a tak\u00e9 se u\u010d\u00edme zkratky.<\/li>\n<li> Probl\u00e9m: pomal\u00e9 nasazen\u00ed. <br \/>\nNegativn\u00ed vliv: prodlu\u017euje \u010das pot\u0159ebn\u00fd k vytvo\u0159en\u00ed funk\u010dn\u00ed \u010d\u00e1sti k\u00f3du. Nud\u00edme se p\u0159i \u010dek\u00e1n\u00ed, ruce automaticky sahaj\u00ed po n\u011b\u010dem jin\u00e9m, zat\u00edmco \u010dek\u00e1me. <br \/>\nJak bojujeme: nezvl\u00e1dli jsme to.<\/li>\n<li> Probl\u00e9m: nedostatek p\u0159\u00edstup\u016f a praktik. <br \/>\nNegativn\u00ed vliv: neexistuje znalost, jak d\u011blat dob\u0159e a jak \u0161patn\u011b. Zpomal\u00ed to z\u00edsk\u00e1n\u00ed zp\u011btn\u00e9 vazby. <br \/>\nJak bojujeme: vz\u00e1jemn\u00e9 sd\u00edlen\u00ed n\u00e1zor\u016f a praktik v p\u00e1rov\u00e9 pr\u00e1ci t\u00e9m\u011b\u0159 \u0159e\u0161\u00ed probl\u00e9m.<\/li>\n<\/ul>\n<p>\nHlavn\u00edm probl\u00e9mem p\u0159i pou\u017eit\u00ed tohoto stylu v IaC je nerovnom\u011brn\u00e9 tempo pr\u00e1ce. V tradi\u010dn\u00edm v\u00fdvoji softwaru je pohyb velmi rovnom\u011brn\u00fd. M\u016f\u017ee\u0161 str\u00e1vit p\u011bt minut a napsat N. Str\u00e1vit 10 minut a napsat 2N, 15 minut \u2013 3N. Tady m\u016f\u017ee\u0161 str\u00e1vit p\u011bt minut a napsat N, a pak str\u00e1vit dal\u0161\u00edch 30 minut a napsat jednu desetinou N. Tady nic nev\u00ed\u0161, m\u00e1\u0161 zmatek a stagnaci. Vysv\u011btlov\u00e1n\u00ed zabere \u010das a odv\u00e1d\u00ed pozornost od samotn\u00e9ho programov\u00e1n\u00ed. <\/p>\n<blockquote><p>Z\u00e1v\u011br: v \u010dist\u00e9 podob\u011b n\u00e1m to nevyhovuje.<\/p><\/blockquote>\n<p><b>2. Ping-pong. Tento p\u0159\u00edstup p\u0159edpokl\u00e1d\u00e1, \u017ee jeden \u00fa\u010dastn\u00edk nap\u00ed\u0161e test, zat\u00edmco druh\u00fd ho implementuje.<\/b> S ohledem na to, \u017ee s unit testy je to slo\u017eit\u00e9, a je nutn\u00e9 ps\u00e1t dlouh\u00e9 integra\u010dn\u00ed testy, ve\u0161ker\u00e1 lehkost ping-pongu miz\u00ed. <\/p>\n<p>Mohu \u0159\u00edci, \u017ee jsme zkou\u0161eli odd\u011blen\u00ed povinnost\u00ed p\u0159i n\u00e1vrhu sc\u00e9n\u00e1\u0159e testu a implementaci k\u00f3du pro n\u011bj. Jeden \u00fa\u010dastn\u00edk vym\u00fd\u0161lel sc\u00e9n\u00e1\u0159, v t\u00e9to \u010d\u00e1sti pr\u00e1ce byl zodpov\u011bdn\u00fd, on m\u011bl posledn\u00ed slovo. Druh\u00fd byl zodpov\u011bdn\u00fd za implementaci. To fungovalo dob\u0159e. Kvalita sc\u00e9n\u00e1\u0159e se takov\u00fdm p\u0159\u00edstupem zvy\u0161uje. <\/p>\n<blockquote><p>Z\u00e1v\u011br: bohu\u017eel, tempo pr\u00e1ce neumo\u017e\u0148uje pou\u017e\u00edvat ping-pong jako praktiku p\u00e1rov\u00e9ho programov\u00e1n\u00ed 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\">Slo\u017eit\u00e1 praxe<\/a><\/noindex>. My\u0161lenka je, \u017ee jeden \u00fa\u010dastn\u00edk se st\u00e1v\u00e1 direktivn\u00edm navig\u00e1torem, zat\u00edmco druh\u00fd p\u0159eb\u00edr\u00e1 roli v\u00fdkonn\u00e9ho \u0159idi\u010de. P\u0159itom ve\u0161ker\u00e1 rozhodovac\u00ed pr\u00e1va pat\u0159\u00ed pouze navigatorovi. \u0158idi\u010d pouze zapisuje a slovy m\u016f\u017ee ovlivnit, co se d\u011bje. Role se nem\u011bn\u00ed dlouhou dobu. <\/p>\n<p>Dob\u0159e se hod\u00ed pro v\u00fduku, ale vy\u017eaduje siln\u00e9 soft skills. Na tom jsme se zasekli. Technika byla slo\u017eit\u00e1. A v\u016fbec to nen\u00ed jen o infrastruktu\u0159e. <\/p>\n<blockquote><p>Z\u00e1v\u011br: potenci\u00e1ln\u011b m\u016f\u017ee b\u00fdt pou\u017eito, nevzd\u00e1v\u00e1me se pokus\u016f.<\/p><\/blockquote>\n<p>\n<b>4. Mobbing, swarming a v\u0161echny zn\u00e1m\u00e9, ale zde nezm\u00edn\u011bn\u00e9 styly<\/b> nezkoum\u00e1me, proto\u017ee jsme je nezkou\u0161eli a nem\u016f\u017eeme o tom \u0159\u00edct nic v kontextu na\u0161\u00ed pr\u00e1ce.<\/p>\n<blockquote><p>Obecn\u00e9 shrnut\u00ed pou\u017e\u00edv\u00e1n\u00ed p\u00e1rov\u00e9ho programov\u00e1n\u00ed:<\/p>\n<ul>\n<li>M\u00e1me nerovnom\u011brn\u00e9 tempo pr\u00e1ce, kter\u00e9 naru\u0161uje.<\/li>\n<li>Nar\u00e1\u017e\u00edme na nedostate\u010dn\u011b dobr\u00e9 soft skills. A odborn\u00e1 oblast nepom\u00e1h\u00e1 p\u0159ekonat tyto na\u0161e nedostatky.<\/li>\n<li>Dlouh\u00e9 testy a probl\u00e9my s n\u00e1stroji \u010din\u00ed p\u00e1rov\u00fd v\u00fdvoj obt\u00ed\u017en\u00fdm.<\/li>\n<\/ul>\n<\/blockquote>\n<p><b>5. I p\u0159esto byly i \u00fasp\u011bchy. Vymysleli jsme vlastn\u00ed metodu \"Sjednocen\u00ed \u2013 rozd\u011blen\u00ed.\"<\/b> Stru\u010dn\u011b pop\u00ed\u0161u, jak to funguje. <\/p>\n<p>M\u00e1me st\u00e1l\u00e9 partnery na n\u011bkolik dn\u00ed (m\u00e9n\u011b ne\u017e t\u00fdden). D\u011bl\u00e1me spolu jeden \u00fakol. N\u011bkdy spolu sed\u00edme: jeden p\u00ed\u0161e, druh\u00fd se d\u00edv\u00e1, jak pracuje t\u00fdm podpory. Potom se na n\u011bjakou dobu rozd\u011blujeme, ka\u017ed\u00fd d\u011bl\u00e1 n\u011bjak\u00e9 nez\u00e1visl\u00e9 v\u011bci, potom se zase sejdeme, velmi rychle se synchronizujeme, d\u011bl\u00e1me n\u011bco spolu a znovu se rozd\u011blujeme. <\/p>\n<h4>Pl\u00e1nov\u00e1n\u00ed a komunikace<\/h4>\n<p>\nPosledn\u00ed blok praktik, jak \u0159e\u0161it probl\u00e9my OS, se t\u00fdk\u00e1 organizace pr\u00e1ce se samotn\u00fdmi \u00fakoly. Zde pat\u0159\u00ed i v\u00fdm\u011bna zku\u0161enost\u00ed, kter\u00e1 je mimo p\u00e1rovou pr\u00e1ci. Poj\u010fme se pod\u00edvat na t\u0159i praktiky:<\/p>\n<p><b>1. \u00dakoly prost\u0159ednictv\u00edm c\u00edlov\u00e9ho stromu.<\/b> Celkovou spr\u00e1vu projektu jsme organizovali prost\u0159ednictv\u00edm stromu, kter\u00fd nekone\u010dn\u011b sm\u011b\u0159uje do budoucnosti. Technicky je spr\u00e1va prov\u00e1d\u011bna v Miro. Existuje jeden \u00fakol \u2013 to je mezilehl\u00fd c\u00edl. Od n\u011bj se odv\u00edjej\u00ed bu\u010f men\u0161\u00ed c\u00edle, nebo skupiny \u00fakol\u016f. Od nich pak u\u017e samotn\u00e9 \u00fakoly. V\u0161echny \u00fakoly jsou vytv\u00e1\u0159eny a spravov\u00e1ny na t\u00e9to tabuli. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastruktura jako k\u00f3d: jak \u0159e\u0161it probl\u00e9my pomoc\u00ed XP\" src=\"\/wp-content\/uploads\/2019\/10\/fe601e959f0055de4f7f4c39ae713c31.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTato sch\u00e9ma tak\u00e9 poskytuje zp\u011btnou vazbu, kter\u00e1 prob\u00edh\u00e1 jednou denn\u011b, kdy\u017e se synchronizujeme na sch\u016fzk\u00e1ch. P\u0159\u00edtomnost spole\u010dn\u00e9ho pl\u00e1nu p\u0159ed v\u0161emi, p\u0159itom strukturovan\u00e9ho a zcela otev\u0159en\u00e9ho, umo\u017e\u0148uje ka\u017ed\u00e9mu b\u00fdt informov\u00e1n o tom, co se d\u011bje a jak daleko jsme pokro\u010dili v postupu. <\/p>\n<p>V\u00fdhody vizu\u00e1ln\u00edho vn\u00edm\u00e1n\u00ed \u00fakol\u016f:<\/p>\n<ul>\n<li>P\u0159\u00ed\u010dinnost. Ka\u017ed\u00fd \u00fakol vede k n\u011bjak\u00e9mu glob\u00e1ln\u00edmu c\u00edli. \u00dakoly jsou seskupeny podle men\u0161\u00edch c\u00edl\u016f. Dom\u00e9na infrastruktury je sama o sob\u011b pom\u011brn\u011b technick\u00e1. Ne v\u017edy je hned jasn\u00e9, jak\u00fd konkr\u00e9tn\u00ed vliv na podnik\u00e1n\u00ed m\u00e1 nap\u0159\u00edklad vytvo\u0159en\u00ed ran\u011bho manu\u00e1lu pro migraci na jin\u00fd nginx. P\u0159\u00edtomnost c\u00edlov\u00e9 karty vedle toho to \u010din\u00ed srozumiteln\u011bj\u0161\u00ed.<br \/>\n <img decoding=\"async\" alt=\"Infrastruktura jako k\u00f3d: jak \u0159e\u0161it probl\u00e9my pomoc\u00ed XP\" src=\"\/wp-content\/uploads\/2019\/10\/fc4da9d277f7dc186a5710cf2be4419c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n P\u0159\u00ed\u010dinnost \u2013 d\u016fle\u017eit\u00e1 vlastnost \u00fakol\u016f. P\u0159\u00edmo odpov\u00edd\u00e1 na ot\u00e1zku: \"D\u011bl\u00e1m to spr\u00e1vn\u011b?\" <\/li>\n<li>Paralelnost. Je n\u00e1s dev\u011bt a nen\u00ed fyzicky mo\u017en\u00e9, aby se v\u0161ichni zam\u011b\u0159ovali na jeden \u00fakol. \u00dakol\u016f z jedn\u00e9 oblasti tak\u00e9 nemus\u00ed b\u00fdt v\u017edy dost. Pr\u00e1ci tedy nutn\u011b paralelizujeme mezi men\u0161\u00ed pracovn\u00ed skupiny. Tyto skupiny n\u011bjakou dobu pracuj\u00ed na sv\u00e9m \u00fakolu a mohou b\u00fdt pos\u00edleny n\u011bk\u00fdm dal\u0161\u00edm. Z t\u00e9to pracovn\u00ed skupiny ob\u010das n\u011bkte\u0159\u00ed lid\u00e9 odch\u00e1zej\u00ed. N\u011bkdo jde na dovolenou, n\u011bkdo d\u011bl\u00e1 prezentaci na konferenci DevOps conf, n\u011bkdo p\u00ed\u0161e \u010dl\u00e1nek na Habr. V\u011bd\u011bt, kter\u00e9 c\u00edle a \u00fakoly mohou b\u00fdt prov\u00e1d\u011bny paraleln\u011b, se st\u00e1v\u00e1 velmi d\u016fle\u017eit\u00e9. <\/li>\n<\/ul>\n<p>\n<b>2. Rotuj\u00edc\u00ed vedouc\u00ed rann\u00edch sch\u016fzek.<\/b> Na stand-upech vznikl takov\u00fd probl\u00e9m \u2013 lid\u00e9 d\u011blaj\u00ed mnoho \u00fakol\u016f paraleln\u011b. N\u011bkdy jsou \u00fakoly slab\u011b propojen\u00e9 a nen\u00ed jasno, kdo co d\u011bl\u00e1. A n\u00e1zor dal\u0161\u00edho \u010dlena t\u00fdmu je velmi d\u016fle\u017eit\u00fd. To je dodate\u010dn\u00e1 informace, kter\u00e1 m\u016f\u017ee zm\u011bnit pr\u016fb\u011bh \u0159e\u0161en\u00ed \u00fakolu. Samoz\u0159ejm\u011b, obvykle s tebou ve dvojici n\u011bkdo je, ale konzultace a rady jsou v\u017edy u\u017eite\u010dn\u00e9. <\/p>\n<p>Abychom tuto situaci zlep\u0161ili, zavedli jsme techniku \u201cRotuj\u00edc\u00ed vedouc\u00ed stand-upu\u201d. Nyn\u00ed se rotuj\u00ed podle ur\u010dit\u00e9ho seznamu a to m\u00e1 sv\u016fj efekt. Kdy\u017e se dostane\u0161 na \u0159adu, jsi nucen se pono\u0159it a pochopit, co se d\u011bje, abys dob\u0159e vedl scrum meeting. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastruktura jako k\u00f3d: jak \u0159e\u0161it probl\u00e9my pomoc\u00ed XP\" src=\"\/wp-content\/uploads\/2019\/10\/622973a654ecd3e27a7a366596814ffc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>3. Intern\u00ed demo.<\/b> Pomoc p\u0159i \u0159e\u0161en\u00ed \u00fakolu z p\u00e1rov\u00e9ho programov\u00e1n\u00ed, vizualizace na strom\u011b \u00fakol\u016f a pomoc na rann\u00edch scrum meetingech \u2013 to je dobr\u00e9, ale ne dokonal\u00e9. Ve dvou jste omezeni pouze sv\u00fdmi znalostmi. Strom \u00fakol\u016f pom\u00e1h\u00e1 glob\u00e1ln\u011b pochopit, kdo a co d\u011bl\u00e1. A vedouc\u00ed a kolegov\u00e9 na rann\u00ed sch\u016fzce se nevno\u0159\u00ed hluboko do tv\u00fdch probl\u00e9m\u016f. Ur\u010dit\u011b mohou n\u011bco p\u0159ehl\u00e9dnout. <\/p>\n<p>\u0158e\u0161en\u00ed bylo nalezeno ve vz\u00e1jemn\u00e9m ukazov\u00e1n\u00ed hotov\u00fdch prac\u00ed a n\u00e1sledn\u00e9 diskusi o nich. Sch\u00e1z\u00edme se jednou t\u00fddn\u011b na hodinu a ukazujeme detaily \u0159e\u0161en\u00ed \u00fakol\u016f, kter\u00e9 jsme d\u011blali za posledn\u00ed t\u00fdden. <\/p>\n<p>B\u011bhem prezentace je t\u0159eba odhalit detaily \u00fakolu a ur\u010dit\u011b uk\u00e1zat jeho fungov\u00e1n\u00ed. <\/p>\n<p><b class=\"spoiler_title\">Prezentaci lze prov\u00e1d\u011bt podle check-listu.<\/b>1. Vlo\u017ete do kontextu. Odkud \u00fakol poch\u00e1z\u00ed, pro\u010d to v\u016fbec bylo pot\u0159eba?<\/p>\n<p>2. Jak se \u00fakol \u0159e\u0161il p\u0159edt\u00edm? Nap\u0159\u00edklad bylo pot\u0159eba masivn\u00ed klik\u00e1n\u00ed my\u0161\u00ed, nebo bylo zcela nemo\u017en\u00e9 n\u011bco ud\u011blat.<\/p>\n<p>3. Jak to zlep\u0161ujeme. Nap\u0159\u00edklad: \"Pod\u00edvejte, te\u010f existuje skript, tady je readme.\"<\/p>\n<p>4. Uka\u017ete, jak to funguje. Ide\u00e1ln\u011b prove\u010fte n\u011bjak\u00fd u\u017eivatelsk\u00fd sc\u00e9n\u00e1\u0159. Chci X, d\u011bl\u00e1m Y, vid\u00edm Z (nebo Z). Nap\u0159\u00edklad nasazuji NGINX, testuji URL, dost\u00e1v\u00e1m 200 OK. Pokud je akce dlouh\u00e1, p\u0159ipravte ji p\u0159edem, abyste ji mohli uk\u00e1zat. Ide\u00e1ln\u011b hodinu p\u0159ed prezentac\u00ed se u\u017e ni\u010d\u00edm nestresujte, pokud je to k\u0159ehk\u00e9.<\/p>\n<p>5. Vysv\u011btlete, jak \u00fasp\u011b\u0161n\u011b byla vy\u0159e\u0161ena probl\u00e9mov\u00e1 ot\u00e1zka, jak\u00e9 pot\u00ed\u017ee z\u016fstaly, co je\u0161t\u011b nen\u00ed dokon\u010deno, jak\u00e9 mo\u017en\u00e9 vylep\u0161en\u00ed je do budoucna. Nap\u0159\u00edklad, te\u010f je to CLI, pak bude pln\u00e1 automatizace v CI.<\/p>\n<p>Ide\u00e1ln\u011b by m\u011bl ka\u017ed\u00fd \u0159e\u010dn\u00edk stihnout 5-10 minut. Pokud je v\u00e1\u0161 p\u0159\u00edsp\u011bvek p\u0159edem d\u016fle\u017eit\u00fd a zabere v\u00edce \u010dasu, dohodn\u011bte se na tom p\u0159edem v kan\u00e1lu sre-takeover.<\/p>\n<p>Po \u017eiv\u00e9 \u010d\u00e1sti ur\u010dit\u011b prob\u00edh\u00e1 diskuze v treads. Zde se objev\u00ed ta pot\u0159ebn\u00e1 zp\u011btn\u00e1 vazba ohledn\u011b va\u0161ich \u00fakol\u016f. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastruktura jako k\u00f3d: jak \u0159e\u0161it probl\u00e9my pomoc\u00ed XP\" src=\"\/wp-content\/uploads\/2019\/10\/77da888d24b52c7eea7e65d2400e152c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nNa z\u00e1v\u011br se prov\u00e1d\u00ed dotazn\u00edk k ur\u010den\u00ed u\u017eite\u010dnosti kon\u00e1n\u00ed. Toto u\u017e je zp\u011btn\u00e1 vazba k podstat\u011b vystoupen\u00ed a d\u016fle\u017eitosti \u00fakolu.<\/p>\n<p><img decoding=\"async\" alt=\"Infrastruktura jako k\u00f3d: jak \u0159e\u0161it probl\u00e9my pomoc\u00ed XP\" src=\"\/wp-content\/uploads\/2019\/10\/7642cd87050171cc4a6bf278329dd283.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Dlouh\u00e9 z\u00e1v\u011bry a co d\u00e1l<\/h2>\n<p>\nM\u016f\u017ee se zd\u00e1t, \u017ee t\u00f3n \u010dl\u00e1nku je pon\u011bkud pesimistick\u00fd. Nen\u00ed tomu tak. Dva z\u00e1kladn\u00ed \u00farovn\u011b z\u00edsk\u00e1v\u00e1n\u00ed zp\u011btn\u00e9 vazby, a to testy a p\u00e1rov\u00e9 programov\u00e1n\u00ed, funguj\u00ed. Ne \u00fapln\u011b tak, jak je tomu v tradi\u010dn\u00edm v\u00fdvoji, ale pozitivn\u00ed efekt z toho je. <\/p>\n<p>Testy, v jejich sou\u010dasn\u00e9 podob\u011b, poskytuj\u00ed pouze \u010d\u00e1ste\u010dn\u00e9 pokryt\u00ed k\u00f3du. Mnoho konfigura\u010dn\u00edch funkc\u00ed z\u016fst\u00e1v\u00e1 netestovan\u00fdch. Jejich vliv na p\u0159\u00edmou \u010dinnost p\u0159i psan\u00ed k\u00f3du je n\u00edzk\u00fd. P\u0159esto existuje efekt z integra\u010dn\u00edch test\u016f, a to pr\u00e1v\u011b ony umo\u017e\u0148uj\u00ed prov\u00e1d\u011bt refaktoring bez obav. To je velk\u00fd \u00fasp\u011bch. Tak\u00e9 s p\u0159esunem zam\u011b\u0159en\u00ed na v\u00fdvoj ve vysoko\u00farov\u0148ov\u00fdch jazyc\u00edch (u n\u00e1s python, go) probl\u00e9m miz\u00ed. A na \"sva\u0159ov\u00e1n\u00ed\" je mnoho kontrol a nen\u00ed to pot\u0159eba, sta\u010d\u00ed obecn\u00ed integrace.<\/p>\n<p>Pr\u00e1ce v p\u00e1ru v\u00edce z\u00e1vis\u00ed na konkr\u00e9tn\u00edch lidech. Existuje faktor \u00fakolu a na\u0161e soft skills. S n\u011bk\u00fdm to jde velmi dob\u0159e, s n\u011bk\u00fdm h\u016f\u0159. Ur\u010dit\u011b z toho plyne prosp\u011bch. Je jasn\u00e9, \u017ee i p\u0159i nedostate\u010dn\u00e9m dodr\u017eov\u00e1n\u00ed pravidel p\u00e1rov\u00e9 pr\u00e1ce m\u00e1 samotn\u00fd fakt spole\u010dn\u00e9ho pln\u011bn\u00ed \u00fakol\u016f pozitivn\u00ed vliv na kvalitu v\u00fdsledku. Osobn\u011b se mi v p\u00e1ru pracuje sn\u00e1ze a p\u0159\u00edjemn\u011bji.<\/p>\n<p>Vy\u0161\u0161\u00ed \u00farovn\u011b vlivu na OS \u2013 pl\u00e1nov\u00e1n\u00ed a pr\u00e1ce s \u00fakoly rozhodn\u011b p\u0159in\u00e1\u0161ej\u00ed efekty: kvalitn\u00ed v\u00fdm\u011bnu znalost\u00ed a zlep\u0161en\u00ed kvality v\u00fdvoje. <\/p>\n<h4>Kr\u00e1tk\u00e9 shrnut\u00ed v jedn\u00e9 v\u011bt\u011b <\/h4>\n<p><\/p>\n<ul>\n<li>XP praktiky funguj\u00ed v IaC, ale s ni\u017e\u0161\u00ed \u00fa\u010dinnost\u00ed.<\/li>\n<li>Posilujte to, co funguje.<\/li>\n<li>Vym\u00fd\u0161lejte sv\u00e9 kompenza\u010dn\u00ed mechanismy 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.3 - 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\/cs\/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.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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: jak p\u0159ekonat probl\u00e9my s pomoc\u00ed XP | ProHoster","description":"Ahoj, Habr! D\u0159\u00edve jsem si st\u011b\u017eoval na \u017eivot v paradigmat\u011b Infrastructure as Code a nic nenab\u00edzel pro \u0159e\u0161en\u00ed vznikl\u00e9 situace.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/38747","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=38747"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/38747\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/29066"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=38747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=38747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=38747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}