{"id":78676,"date":"2020-04-21T07:42:22","date_gmt":"2020-04-21T05:42:22","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/devops-instrumenty-ne-tolko-dlya-devops-proczess-postroeniya-infrastruktury-avtomatizaczii-testirovaniya-s-nulya"},"modified":"2020-04-21T07:42:22","modified_gmt":"2020-04-21T05:42:22","slug":"devops-instrumenty-ne-tolko-dlya-devops-proczess-postroeniya-infrastruktury-avtomatizaczii-testirovaniya-s-nulya","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/devops-instrumenty-ne-tolko-dlya-devops-proczess-postroeniya-infrastruktury-avtomatizaczii-testirovaniya-s-nulya","title":{"rendered":"N\u00e1stroje DevOps nie s\u00fa len pre DevOps. Proces budovania infra\u0161trukt\u00fary automatiz\u00e1cie testovania od z\u00e1kladov.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>\u010cas\u0165 1: Web \/ Android<\/h1>\n<p>\n <u>Pozn\u00e1mka<\/u>: <i>tento \u010dl\u00e1nok je prekladom p\u00f4vodn\u00e9ho \u010dl\u00e1nku do ru\u0161tiny\u00a0<\/i><noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/@altunin.alexey.a\/devops-tools-are-not-only-for-devops-building-test-automation-infrastructure-from-scratch-18e351dde938?source=friends_link&amp;sk=54dcbf6ab96c5592d093b50e441f942e\"><i>\u201eN\u00e1stroje DevOps nie s\u00fa len pre DevOps. Vytv\u00e1ranie infra\u0161trukt\u00fary automatiz\u00e1cie testovania od z\u00e1kladov.\u201c<\/i><\/a><\/noindex><i> Av\u0161ak v\u0161etky ilustr\u00e1cie, odkazy, cit\u00e1ty a term\u00edny s\u00fa zachovan\u00e9 v p\u00f4vodnom jazyku, aby sa predi\u0161lo skresleniu v\u00fdznamu pri preklade do ru\u0161tiny. Prajem v\u00e1m pr\u00edjemn\u00e9 \u0161t\u00fadium!<\/i><\/p>\n<p><img decoding=\"async\" alt=\"N\u00e1stroje DevOps nie s\u00fa len pre DevOps. Proces budovania infra\u0161trukt\u00fary automatiz\u00e1cie testovania od z\u00e1kladov.\" src=\"\/wp-content\/uploads\/2020\/04\/3d2ffb8331713a18755213cafac02144.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n V s\u00fa\u010dasnosti je \u0161pecializ\u00e1cia DevOps jednou z naj\u017eiadanej\u0161\u00edch v IT priemysle. Ak otvor\u00edte popul\u00e1rne pracovn\u00e9 port\u00e1ly a nastav\u00edte filter na mzdy, uvid\u00edte, \u017ee pracovn\u00e9 ponuky s\u00favisiace s DevOps s\u00fa na za\u010diatku zoznamu. Je v\u0161ak d\u00f4le\u017eit\u00e9 si uvedomi\u0165, \u017ee to sa v\u00e4\u010d\u0161inou t\u00fdka poz\u00edci\u00ed 'Senior', \u010do nazna\u010duje, \u017ee uch\u00e1dza\u010d m\u00e1 vysok\u00fa \u00farove\u0148 zru\u010dnost\u00ed a znalos\u0165 technol\u00f3gie a n\u00e1strojov. S t\u00fdm s\u00fa spojen\u00e9 aj vysok\u00e9 zodpovednosti za bezprobl\u00e9mov\u00fa prev\u00e1dzku produkcie. Av\u0161ak zab\u00fadame, \u010do DevOps vlastne je. P\u00f4vodne to nebola nejak\u00e1 konkr\u00e9tna osoba alebo oddelenie. Ak h\u013ead\u00e1me defin\u00edcie tohto term\u00ednu, n\u00e1jdeme ve\u013ea kr\u00e1snych a spr\u00e1vnych podstatn\u00fdch mien, ako s\u00fa metodol\u00f3gia, praktiky, kult\u00farna filozofia, skupina konceptov a podobne.<\/p>\n<p>Moja \u0161pecializ\u00e1cia je in\u017einier automatiz\u00e1cie testovania (QA automation engineer), ale pova\u017eujem ju za viac ne\u017e len p\u00edsanie automatizovan\u00fdch testov alebo v\u00fdvoj architekt\u00fary testovacieho r\u00e1mca. V roku 2020 s\u00fa vedomosti o automatiza\u010dnej infra\u0161trukt\u00fare tie\u017e nevyhnutn\u00e9. Umo\u017e\u0148uje to organizova\u0165 proces automatiz\u00e1cie samostatne, od spustenia testov a\u017e po poskytovanie v\u00fdsledkov v\u0161etk\u00fdm z\u00fa\u010dastnen\u00fdm stran\u00e1m v s\u00falade s stanoven\u00fdmi cie\u013emi. V\u00fdsledkom je, \u017ee zru\u010dnosti DevOps s\u00fa nevyhnutn\u00fdm faktorom na vykon\u00e1vanie tejto pr\u00e1ce. A to je skvel\u00e9, ale, bohu\u017eia\u013e, existuje probl\u00e9m (<i>spoiler: tento \u010dl\u00e1nok sa pok\u00fa\u0161a zjednodu\u0161i\u0165 tento probl\u00e9m<\/i>). Spo\u010d\u00edva v tom, \u017ee DevOps je \u0165a\u017ek\u00e9. A to je jasn\u00e9, ve\u010f spolo\u010dnosti nebud\u00fa plati\u0165 ve\u013ea za to, \u010do sa rob\u00ed jednoducho\u2026 V svete DevOps je mno\u017estvo n\u00e1strojov, term\u00ednov a prakt\u00edk, s ktor\u00fdmi sa treba obozn\u00e1mi\u0165. Najm\u00e4 na za\u010diatku kari\u00e9ry to m\u00f4\u017ee by\u0165 n\u00e1ro\u010dn\u00e9 a z\u00e1vis\u00ed to od nadobudnut\u00fdch technick\u00fdch sk\u00fasenost\u00ed.<\/p>\n<p><img decoding=\"async\" alt=\"N\u00e1stroje DevOps nie s\u00fa len pre DevOps. Proces budovania infra\u0161trukt\u00fary automatiz\u00e1cie testovania od z\u00e1kladov.\" src=\"\/wp-content\/uploads\/2020\/04\/20712bd4acf881d5346b87f5a2b359d2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nZdroj: <noindex><a rel=\"nofollow\" href=\"http:\/\/maximelanciauxbi.blogspot.com\/2017\/04\/devops-tools.html\"> http:\/\/maximelanciauxbi.blogspot.com\/2017\/04\/devops-tools.html<\/a><\/noindex><\/p>\n<p>Tu by sme asi mohli uzavrie\u0165 \u00favodn\u00fa \u010das\u0165 a zamera\u0165 sa na cie\u013e tohto \u010dl\u00e1nku.\u00a0<\/p>\n<h3>O \u010dom je tento \u010dl\u00e1nok<\/h3>\n<p>\nV tomto \u010dl\u00e1nku sa podel\u00edm o svoje sk\u00fasenosti s budovan\u00edm infra\u0161trukt\u00fary automatiz\u00e1cie testovania. Na internete je mnoho zdrojov inform\u00e1ci\u00ed o r\u00f4znych n\u00e1strojoch a o tom, ako ich pou\u017e\u00edva\u0165, ale r\u00e1d by som ich presk\u00famal v\u00fdlu\u010dne v kontexte automatiz\u00e1cie. Mysl\u00edm, \u017ee mnoh\u00fdm in\u017einierom automatiz\u00e1cie je zn\u00e1ma situ\u00e1cia, ke\u010f testy vyvinut\u00e9 vami nikto okrem v\u00e1s nesp\u00fa\u0161\u0165a a nestar\u00e1 sa o ich \u00fadr\u017ebu. V d\u00f4sledku toho sa testy st\u00e1vaj\u00fa zastaran\u00fdmi a mus\u00edte str\u00e1vi\u0165 \u010das ich aktualizovan\u00edm. Op\u00e4\u0165, na za\u010diatku kari\u00e9ry to m\u00f4\u017ee by\u0165 dos\u0165 zlo\u017eit\u00e1 \u00faloha: spr\u00e1vne ur\u010di\u0165, ktor\u00e9 n\u00e1stroje by mali pom\u00f4c\u0165 odstr\u00e1ni\u0165 tento probl\u00e9m, ako ich vybra\u0165, nastavi\u0165 a udr\u017eiava\u0165. Niektor\u00ed testeri sa obracaj\u00fa na DevOps (\u013eud\u00ed) a, pravdupovediac, tak\u00fdto pr\u00edstup funguje. V mnoh\u00fdch pr\u00edpadoch to m\u00f4\u017ee by\u0165 jedin\u00e1 mo\u017enos\u0165, preto\u017ee nem\u00e1me preh\u013ead o v\u0161etk\u00fdch z\u00e1vislostiach. Ale, ako vieme, DevOps s\u00fa ve\u013emi zanepr\u00e1zdnen\u00ed chlapci, preto\u017ee musia myslie\u0165 na infra\u0161trukt\u00faru celej spolo\u010dnosti, nasadzovanie, monitorovanie, mikroservisy a in\u00e9 podobn\u00e9 \u00falohy v z\u00e1vislosti od organiz\u00e1cie\/t\u00edmy. Ako je zvykom, automatiz\u00e1cia nie je na prvom mieste. V tomto pr\u00edpade sa mus\u00edme pok\u00fasi\u0165 urobi\u0165 v\u0161etko, \u010do je v na\u0161ich sil\u00e1ch, od za\u010diatku do konca. To zn\u00ed\u017ei z\u00e1vislosti, ur\u00fdchli pracovn\u00fd proces, zlep\u0161\u00ed na\u0161e zru\u010dnosti a umo\u017en\u00ed n\u00e1m vidie\u0165 \u0161ir\u0161\u00ed obraz toho, \u010do sa deje.<\/p>\n<p>V \u010dl\u00e1nku s\u00fa predlo\u017een\u00e9 naj\u017eiadanej\u0161ie a najpopul\u00e1rnej\u0161ie n\u00e1stroje a ukazuje sa, ako ich pou\u017e\u00edva\u0165 na krok za krokom budovanie infra\u0161trukt\u00fary automatiz\u00e1cie. Ka\u017ed\u00e1 skupina je predstaven\u00e1 n\u00e1strojmi, ktor\u00e9 boli overen\u00e9 na osobnej sk\u00fasenosti. Ale to neznamen\u00e1, \u017ee by ste mali pou\u017e\u00edva\u0165 to ist\u00e9. Samotn\u00e9 n\u00e1stroje nie s\u00fa d\u00f4le\u017eit\u00e9, objavuj\u00fa sa a zastar\u00e1vaj\u00fa. Na\u0161ou in\u017einierskou \u00falohou je pochopenie z\u00e1kladn\u00fdch princ\u00edpov: pre\u010do potrebujeme t\u00fato skupinu n\u00e1strojov a ak\u00e9 pracovn\u00e9 \u00falohy m\u00f4\u017eeme s ich pomocou vyrie\u0161i\u0165. Preto na konci ka\u017edej sekcie zanech\u00e1vam odkazy na podobn\u00e9 n\u00e1stroje, ktor\u00e9 mo\u017eno pou\u017e\u00edvate vo va\u0161ej organiz\u00e1cii.<\/p>\n<h3>\u010co v tomto \u010dl\u00e1nku nen\u00e1jdete<\/h3>\n<p>\nE\u0161te raz opakujem, \u017ee \u010dl\u00e1nok nie je o konkr\u00e9tnych n\u00e1strojoch, tak\u017ee tu nebud\u00fa \u017eiadne k\u00f3dov\u00e9 uk\u00e1\u017eky z dokument\u00e1cie a popisy konkr\u00e9tnych pr\u00edkazov. Ale na konci ka\u017edej sekcie zanech\u00e1vam odkazy na podrobn\u00e9 \u0161t\u00fadium.<\/p>\n<p>To sa rob\u00ed z d\u00f4vodu, \u017ee:\u00a0<\/p>\n<ul>\n<li>tento materi\u00e1l je ve\u013emi \u013eahko dostupn\u00fd v r\u00f4znych zdrojoch (dokument\u00e1cia, knihy, video kurzy);<\/li>\n<li>ak sa do toho ponor\u00edme, budeme musie\u0165 nap\u00edsa\u0165 10, 20, 30 \u010dast\u00ed tohto \u010dl\u00e1nku (ke\u010f v pl\u00e1ne s\u00fa 2-3);<\/li>\n<li>jednoducho nechcem str\u00e1ca\u0165 v\u00e1\u0161 \u010das, preto\u017ee mo\u017eno chcete pou\u017ei\u0165 in\u00e9 n\u00e1stroje na dosiahnutie t\u00fdch ist\u00fdch cie\u013eov.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Praktika<\/h3>\n<p>\nVe\u013emi by som si prial, aby bol tento materi\u00e1l u\u017eito\u010dn\u00fd pre ka\u017ed\u00e9ho \u010ditate\u013ea, a nie len pre\u010d\u00edtan\u00fd a zabudnut\u00fd. Pri ka\u017edom \u0161t\u00fadiu je prax ve\u013emi d\u00f4le\u017eitou s\u00fa\u010das\u0165ou. Na to som pripravil<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/AlexeyAltunin\/devops-tools-for-qa-automation-infrastructure\"> GitHub repozit\u00e1r s krok za krokom n\u00e1vodom, ako to v\u0161etko urobi\u0165 od nuly<\/a><\/noindex>. Takisto v\u00e1s \u010dak\u00e1 dom\u00e1ca \u00faloha, aby ste si boli ist\u00ed, \u017ee ste bezmy\u0161lienkovito nekop\u00edrovali riadky vykon\u00e1van\u00fdch pr\u00edkazov <\/p>\n<h3>Pl\u00e1n<\/h3>\n<p><\/p>\n<p><strong>Krok<\/strong><br \/>\n<strong>Technol\u00f3gia<\/strong><br \/>\n<strong>N\u00e1stroje<\/strong><\/p>\n<p><strong>1<\/strong><br \/>\nLok\u00e1lne sp\u00fa\u0161\u0165anie (pr\u00edprava web \/ android demo testov a ich spustenie lok\u00e1lne)\u00a0<br \/>\nNode.js, Selenium, Appium<\/p>\n<p><strong>2<\/strong><br \/>\nSyst\u00e9my spr\u00e1vy verzi\u00ed\u00a0<br \/>\nGit<\/p>\n<p><strong>3<\/strong><br \/>\nKontajneriz\u00e1cia<br \/>\nDocker, Selenium grid, Selenoid (Web, Android)<\/p>\n<p><strong>4<\/strong><br \/>\nCI \/ CD<br \/>\nGitlab CI<\/p>\n<p><strong>5<\/strong><br \/>\nCloudov\u00e9 platformy<br \/>\nGoogle Cloud Platform<\/p>\n<p><strong>6<\/strong><br \/>\nOrkestr\u00e1cia<br \/>\nKubernetes<\/p>\n<p><strong>7<\/strong><br \/>\nInfrastrukt\u00fara ako k\u00f3d (IaC)<br \/>\nTerraform, Ansible<\/p>\n<p><\/p>\n<h3>\u0160trukt\u00fara ka\u017edej sekcie<\/h3>\n<p>\nPre udr\u017eanie preh\u013eadnosti rozpr\u00e1vania je ka\u017ed\u00e1 sekcia pop\u00edsan\u00e1 pod\u013ea nasleduj\u00faceho pl\u00e1nu:<\/p>\n<ul>\n<li>stru\u010dn\u00e9 zhrnutie technol\u00f3gie,<\/li>\n<li>hodnota pre infra\u0161trukt\u00faru automatiz\u00e1cie,<\/li>\n<li>ilustr\u00e1cia s\u00fa\u010dasn\u00e9ho stavu infra\u0161trukt\u00fary,<\/li>\n<li>odkazy na \u0161t\u00fadium,<\/li>\n<li>podobn\u00e9 n\u00e1stroje.<\/li>\n<\/ul>\n<p><\/p>\n<h2>1. Lok\u00e1lne sp\u00fa\u0161\u0165anie testov<\/h2>\n<p><\/p>\n<h3>Stru\u010dn\u00e9 zhrnutie technol\u00f3gie<\/h3>\n<p>\nToto je len pr\u00edpravn\u00fd krok na spustenie demon\u0161tra\u010dn\u00fdch testov lok\u00e1lne a na overenie, \u017ee \u00faspe\u0161ne prech\u00e1dzaj\u00fa. V praktickej \u010dasti sa pou\u017e\u00edva Node.js, ale programovac\u00ed jazyk a platforma nie s\u00fa tak\u00e9 d\u00f4le\u017eit\u00e9 a m\u00f4\u017eete pou\u017ei\u0165 tie, ktor\u00e9 sa pou\u017e\u00edvaj\u00fa vo va\u0161ej spolo\u010dnosti.\u00a0<\/p>\n<p>Odpor\u00fa\u010dam v\u0161ak pou\u017e\u00edva\u0165 Selenium WebDriver pre webov\u00e9 platformy a Appium pre platformu Android, preto\u017ee v nasleduj\u00facich krokoch budeme pou\u017e\u00edva\u0165 Docker obrazy, ktor\u00e9 s\u00fa \u0161peci\u00e1lne prisp\u00f4soben\u00e9 na pr\u00e1cu s t\u00fdmito n\u00e1strojmi. Okrem toho, odvol\u00e1vaj\u00fac sa na po\u017eiadavky v inzer\u00e1toch na zamestnanie, tieto n\u00e1stroje s\u00fa naj\u017eiadanej\u0161ie na trhu.<\/p>\n<p>Ako ste si mohli v\u0161imn\u00fa\u0165, zameriavame sa len na web a Android testy. Bohu\u017eia\u013e, IOS je \u00faplne in\u00fd pr\u00edpad (\u010fakujeme Apple). Pl\u00e1nujem predstavi\u0165 rie\u0161enia a praktiky s\u00favisiace s IOS v nasleduj\u00facich \u010dastiach.<\/p>\n<h3>Hodnota pre automatiza\u010dn\u00fa infra\u0161trukt\u00faru<\/h3>\n<p>\nZ poh\u013eadu infra\u0161trukt\u00fary lok\u00e1lne spustenie neprin\u00e1\u0161a \u017eiadnu hodnotu. Len overujete, \u017ee testy funguj\u00fa na lok\u00e1lnom po\u010d\u00edta\u010di v lok\u00e1lnych prehliada\u010doch a simul\u00e1toroch. Ale aj tak je to nevyhnutn\u00fd v\u00fdchodiskov\u00fd bod.<\/p>\n<h3>Ilustr\u00e1cia aktu\u00e1lneho stavu infra\u0161trukt\u00fary<\/h3>\n<p>\n<img decoding=\"async\" alt=\"N\u00e1stroje DevOps nie s\u00fa len pre DevOps. Proces budovania infra\u0161trukt\u00fary automatiz\u00e1cie testovania od z\u00e1kladov.\" src=\"\/wp-content\/uploads\/2020\/04\/504f28744e29938f66be41c32d9a7dc6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Odkazy na \u0161t\u00fadium<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/selenium.dev\/\">Selenium<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/appium.io\/docs\/en\/about-appium\/getting-started\/\">Appium<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developer.android.com\/studio\/run\/emulator\">Android Emulator<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/SeleniumHQ\/selenium\/tree\/master\/javascript\/node\/selenium-webdriver\/example\">Selenium JS GitHub pr\u00edklady<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/appium\/appium\/tree\/master\/sample-code\/javascript-wd\">Appium JS GitHub pr\u00edklady<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Podobn\u00e9 n\u00e1stroje<\/h3>\n<p><\/p>\n<ul>\n<li>ak\u00fdko\u013evek programovac\u00ed jazyk, ktor\u00fd m\u00e1te radi, spolu so Selenium\/Appium - testami;<\/li>\n<li>ak\u00e9ko\u013evek testy;<\/li>\n<li>ak\u00fdko\u013evek test runner.<\/li>\n<\/ul>\n<p><\/p>\n<h2>2. Syst\u00e9my spr\u00e1vy verzi\u00ed (Git)<\/h2>\n<p><\/p>\n<h3>Stru\u010dn\u00e9 zhrnutie technol\u00f3gie<\/h3>\n<p>\n Nikto nebude prekvapen\u00fd, ak poviem, \u017ee syst\u00e9m spr\u00e1vy verzi\u00ed je mimoriadne d\u00f4le\u017eitou s\u00fa\u010das\u0165ou v\u00fdvoja, \u010di u\u017e v t\u00edme alebo individu\u00e1lne. Na z\u00e1klade r\u00f4znych zdrojov m\u00f4\u017eeme s istotou poveda\u0165, \u017ee Git je najpopul\u00e1rnej\u0161\u00edm z\u00e1stupcom. Syst\u00e9m spr\u00e1vy verzi\u00ed poskytuje mno\u017estvo v\u00fdhod, ako je zdie\u013eanie k\u00f3du, uchov\u00e1vanie verzi\u00ed, obnova na predch\u00e1dzaj\u00face vetvy, sledovanie hist\u00f3rie projektu, z\u00e1lohy. Nebudeme rozobera\u0165 ka\u017ed\u00fa polo\u017eku podrobne, preto\u017ee som si ist\u00fd, \u017ee ste s t\u00fdm dobre obozn\u00e1men\u00ed a pou\u017e\u00edvate to v ka\u017edodennej pr\u00e1ci. Ale ak n\u00e1hodou nie, odpor\u00fa\u010dam preru\u0161i\u0165 \u010d\u00edtanie tohto \u010dl\u00e1nku a \u010d\u00edm sk\u00f4r si tento nedostatok doplni\u0165.<\/p>\n<h3>Hodnota pre automatiza\u010dn\u00fa infra\u0161trukt\u00faru<\/h3>\n<p>\n A tu sa m\u00f4\u017eete op\u00fdta\u0165: \u201ePre\u010do n\u00e1m hovor\u00ed o Gite? To v\u0161etci vedia a pou\u017e\u00edvaj\u00fa ako pre k\u00f3d v\u00fdvoja, tak aj pre k\u00f3d automatizovan\u00fdch testov.\u201c Budete \u00faplne pravdiv\u00ed, ale v tomto \u010dl\u00e1nku hovor\u00edme o infra\u0161trukt\u00fare a t\u00e1to sekcia zohr\u00e1va \u00falohu preh\u013eadu pre sekciu 7: \u201eInfra\u0161tukt\u00fara ako k\u00f3d (IaC)\u201c. Pre n\u00e1s to znamen\u00e1, \u017ee cel\u00e1 infra\u0161trukt\u00fara, vr\u00e1tane testovacej, je pop\u00edsan\u00e1 vo forme k\u00f3du, a preto m\u00f4\u017eeme na \u0148u uplatni\u0165 aj syst\u00e9my spr\u00e1vy verzi\u00ed a z\u00edska\u0165 podobn\u00e9 v\u00fdhody ako pre k\u00f3d v\u00fdvoja a automatiz\u00e1cie.<\/p>\n<p>O IaC sa podrobnej\u0161ie pozrieme v kroku 7, ale aj teraz m\u00f4\u017eete za\u010da\u0165 pou\u017e\u00edva\u0165 Git lok\u00e1lne vytvoren\u00edm lok\u00e1lneho repozit\u00e1ra. Celkov\u00fd obraz sa roz\u0161\u00edri, ke\u010f k infra\u0161trukt\u00fare prid\u00e1me vzdialen\u00fd repozit\u00e1r.<\/p>\n<h3>Ilustr\u00e1cia aktu\u00e1lneho stavu infra\u0161trukt\u00fary<\/h3>\n<p>\n<img decoding=\"async\" alt=\"N\u00e1stroje DevOps nie s\u00fa len pre DevOps. Proces budovania infra\u0161trukt\u00fary automatiz\u00e1cie testovania od z\u00e1kladov.\" src=\"\/wp-content\/uploads\/2020\/04\/f17c1d2b2f18aa814c44f7c443e49416.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Odkazy na \u0161t\u00fadium<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.atlassian.com\/git\/tutorials\/what-is-version-control\">\u010co je spr\u00e1va verzi\u00ed<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/git-scm.com\/\">Git<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/git-scm.com\/book\/en\/v2\/Getting-Started-About-Version-Control\">Za\u010d\u00edname \u2014 O spr\u00e1ve verzi\u00ed<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Podobn\u00e9 n\u00e1stroje<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/subversion.apache.org\/\">SVN<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.mercurial-scm.org\/guide\">Mercurial<\/a><\/noindex>\u00a0<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/azure.microsoft.com\/en-us\/services\/devops\/server\/\">Microsoft TFS (ktor\u00fd je teraz s\u00fa\u010das\u0165ou Azure DevOps Services)<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h2>3. Containeriz\u00e1cia (Docker)<\/h2>\n<p><\/p>\n<h3>Stru\u010dn\u00e9 zhrnutie technol\u00f3gie<\/h3>\n<p>\n Aby sme uk\u00e1zali, ako containeriz\u00e1cia zmenila pravidl\u00e1 hry, vr\u00e1\u0165me sa nieko\u013eko desa\u0165ro\u010d\u00ed do minulosti. V t\u00fdch \u010dasoch \u013eudia kupovali a pou\u017e\u00edvali serverov\u00e9 stroje na sp\u00fa\u0161\u0165anie aplik\u00e1ci\u00ed. Av\u0161ak v mnoh\u00fdch pr\u00edpadoch potrebn\u00e9 zdroje na spustenie neboli zn\u00e1me vopred. V d\u00f4sledku toho firmy m\u00ed\u0148ali peniaze na drah\u00e9 v\u00fdkonn\u00e9 servery, ale \u010das\u0165 tejto kapacity nebola plne vyu\u017eit\u00e1.<\/p>\n<p>\u010eal\u0161\u00edm krokom v evol\u00facii boli virtu\u00e1lne stroje (VM), ktor\u00e9 vyrie\u0161ili probl\u00e9m m\u00ed\u0148ania prostriedkov na nevyu\u017eit\u00e9 zdroje. T\u00e1to technol\u00f3gia umo\u017enila sp\u00fa\u0161\u0165anie aplik\u00e1ci\u00ed nez\u00e1visle od seba v r\u00e1mci jedn\u00e9ho servera, pri\u010dom ka\u017ed\u00e9mu pridelila plne izolovan\u00fd priestor. Bohu\u017eia\u013e, ak\u00e1ko\u013evek technol\u00f3gia m\u00e1 svoje nev\u00fdhody. Spustenie VM si vy\u017eaduje plnohodnotn\u00fd opera\u010dn\u00fd syst\u00e9m, ktor\u00fd spotrebov\u00e1va CPU, RAM, \u00falo\u017eisko a v z\u00e1vislosti od OS je nutn\u00e9 zoh\u013eadni\u0165 aj n\u00e1klady na licenciu. Tieto faktory ovplyv\u0148uj\u00fa r\u00fdchlos\u0165 na\u010d\u00edtania a komplikuj\u00fa prenosnos\u0165.<\/p>\n<p>A tak sme sa dostali k containeriz\u00e1cii. A op\u00e4\u0165 t\u00e1to technol\u00f3gia vyrie\u0161ila predch\u00e1dzaj\u00faci probl\u00e9m, preto\u017ee kontajnery nevy\u017eaduj\u00fa plnohodnotn\u00fd OS, \u010do umo\u017e\u0148uje oslobodi\u0165 ve\u013ek\u00e9 mno\u017estvo zdrojov a poskytuje r\u00fdchle a flexibiln\u00e9 rie\u0161enie pre prenosnos\u0165.<\/p>\n<p>Samozrejme, technol\u00f3gia kontajneriz\u00e1cie nie je ni\u010d nov\u00e9 a bola prv\u00fdkr\u00e1t predstaven\u00e1 koncom 70. rokov. V tej dobe prebehlo mno\u017estvo v\u00fdskumov, pr\u00e1c a pokusov. Ale pr\u00e1ve Docker prisp\u00f4sobil t\u00fato technol\u00f3giu a spr\u00edstupnil ju pre masy. V s\u00fa\u010dasnosti, ke\u010f hovor\u00edme o kontajneroch, v\u00e4\u010d\u0161inou m\u00e1me na mysli Docker. Ke\u010f hovor\u00edme o Docker-kontajneroch, predpoklad\u00e1me Linux-kontajnery. M\u00f4\u017eeme pou\u017e\u00edva\u0165 Windows a macOS syst\u00e9my na sp\u00fa\u0161\u0165anie kontajnerov, ale je d\u00f4le\u017eit\u00e9 ch\u00e1pa\u0165, \u017ee v takom pr\u00edpade vznik\u00e1 dodato\u010dn\u00e1 vrstva. Napr\u00edklad, Docker na Macu nevidite\u013ene sp\u00fa\u0161\u0165a kontajnery vo vn\u00fatri \u013eahkej Linux VM. K tejto t\u00e9me sa e\u0161te vr\u00e1time, ke\u010f budeme diskutova\u0165 o spusten\u00ed Android-emul\u00e1torov vo vn\u00fatri kontajnerov, preto\u017ee tu sa objavuje ve\u013emi d\u00f4le\u017eit\u00fd aspekt, ktor\u00fd je potrebn\u00e9 podrobne presk\u00fama\u0165.<\/p>\n<h3>Hodnota pre automatiza\u010dn\u00fa infra\u0161trukt\u00faru<\/h3>\n<p>\n Zistili sme, \u017ee kontajneriz\u00e1cia a Docker s\u00fa skvel\u00e9. Pozrime sa na to v kontexte automatiz\u00e1cie, ve\u010f ka\u017ed\u00fd n\u00e1stroj alebo technol\u00f3gia by mali rie\u0161i\u0165 nejak\u00fd probl\u00e9m. Ozna\u010dme zjavn\u00e9 probl\u00e9my automatiz\u00e1cie testovania v kontexte UI testov:<\/p>\n<ul>\n<li>obrovsk\u00e9 mno\u017estvo z\u00e1vislost\u00ed pri in\u0161tal\u00e1cii Selenium, a najm\u00e4 Appium;<\/li>\n<li>probl\u00e9my s kompatibilitou medzi verziami prehliada\u010dov, simul\u00e1torov a ovl\u00e1da\u010dov;<\/li>\n<li>nepr\u00edtomnos\u0165 izolovan\u00e9ho priestoru pre prehliada\u010de\/simul\u00e1tory, \u010do je obzvl\u00e1\u0161\u0165 kritick\u00e9 pri paralelnom sp\u00fa\u0161\u0165an\u00ed;<\/li>\n<li>\u0165a\u017eko sa spravuje a udr\u017eiava, ak je potrebn\u00e9 spusti\u0165 10, 50, 100 alebo dokonca 1000 prehliada\u010dov s\u00fa\u010dasne.<\/li>\n<\/ul>\n<p>\nAle ke\u010f\u017ee Selenium je najpopul\u00e1rnej\u0161\u00ed n\u00e1stroj na automatiz\u00e1ciu a Docker je najpopul\u00e1rnej\u0161\u00ed n\u00e1stroj na kontajneriz\u00e1ciu, nemalo by nikoho prekvapi\u0165, \u017ee sa niekto pok\u00fasil ich skombinova\u0165, aby z\u00edskal mocn\u00fd n\u00e1stroj na rie\u0161enie vy\u0161\u0161ie uveden\u00fdch probl\u00e9mov. Po\u010fme sa na tak\u00e9to rie\u0161enia pozrie\u0165 podrobnej\u0161ie.\u00a0<\/p>\n<p><u>Selenium grid v dockeri<\/u><\/p>\n<p>Tento n\u00e1stroj je najsl\u00e1vnej\u0161\u00ed na svete Selenium pre sp\u00fa\u0161\u0165anie viacer\u00fdch prehliada\u010dov na viacer\u00fdch po\u010d\u00edta\u010doch a ich spr\u00e1vu z centr\u00e1lneho uzla. Na spustenie je potrebn\u00e9 zaregistrova\u0165 aspo\u0148 2 \u010dasti: Hub a Node(s). Hub je centr\u00e1lny uzol, ktor\u00fd prij\u00edma v\u0161etky po\u017eiadavky z testov a distribuuje ich na pr\u00edslu\u0161n\u00e9 Nodes. Pre ka\u017ed\u00fd Node m\u00f4\u017eeme nastavi\u0165 konkr\u00e9tnu konfigur\u00e1ciu, napr\u00edklad ur\u010di\u0165 potrebn\u00fd prehliada\u010d a jeho verziu. Av\u0161ak my st\u00e1le mus\u00edme sami dba\u0165 na kompatibiln\u00e9 ovl\u00e1da\u010de pre prehliada\u010de a nain\u0161talova\u0165 ich na potrebn\u00e9 Nodes. Z tohto d\u00f4vodu sa Selenium grid nepou\u017e\u00edva v \u010distej forme, s v\u00fdnimkou t\u00fdch pr\u00edpadov, ke\u010f potrebujeme pracova\u0165 s prehliada\u010dmi, ktor\u00e9 nie je mo\u017en\u00e9 nain\u0161talova\u0165 na Linux OS. V v\u0161etk\u00fdch ostatn\u00fdch pr\u00edpadoch bude v\u00fdrazne flexibiln\u00fdm a spr\u00e1vnym rie\u0161en\u00edm pou\u017eitie Docker obrazov na spustenie Selenium grid Hub a Nodes. Tak\u00fdto pr\u00edstup ve\u013emi zjednodu\u0161uje spr\u00e1vu uzlov, preto\u017ee si m\u00f4\u017eeme vybra\u0165 po\u017eadovan\u00fd obraz s u\u017e nain\u0161talovan\u00fdmi kompatibiln\u00fdmi verziami prehliada\u010dov a ovl\u00e1da\u010dov.<\/p>\n<p>Napriek negat\u00edvnym hodnoteniam o stabilite pr\u00e1ce, najm\u00e4 pri sp\u00fa\u0161\u0165an\u00ed ve\u013ek\u00e9ho po\u010dtu Nodes paralelne, si Selenium grid st\u00e1le udr\u017eiava status najpopul\u00e1rnej\u0161ieho n\u00e1stroja pre paraleln\u00e9 sp\u00fa\u0161\u0165anie Selenium testov. Je d\u00f4le\u017eit\u00e9 poznamena\u0165, \u017ee v open-source neust\u00e1le vznikaj\u00fa r\u00f4zne vylep\u0161enia a modifik\u00e1cie tohto n\u00e1stroja, ktor\u00e9 sa sna\u017eia rie\u0161i\u0165 r\u00f4zne \u00fazke miesta.<\/p>\n<p><u>Selenoid pre Web<\/u><\/p>\n<p>Tento n\u00e1stroj predstavuje prelom v oblasti Selenium, preto\u017ee funguje okam\u017eite po rozbalen\u00ed a v\u00fdrazne u\u013eah\u010dil \u017eivot mnoh\u00fdm in\u017einierom automatiz\u00e1cie. Predov\u0161etk\u00fdm nejde o be\u017en\u00fa modifik\u00e1ciu Selenium grid. Namiesto toho v\u00fdvoj\u00e1ri vytvorili \u00faplne nov\u00fa verziu Selenium Hub v jazyku Golang, \u010do v kombin\u00e1cii s \u013eahk\u00fdmi Docker obrazmi pre r\u00f4zne prehliada\u010de viedlo k pokroku v automatiz\u00e1cii testovania. Navy\u0161e, v pr\u00edpade Selenium Grid mus\u00edme vopred definova\u0165 v\u0161etky po\u017eadovan\u00e9 prehliada\u010de a ich verzie, \u010do nie je probl\u00e9m, ke\u010f pracujeme len s jedn\u00fdm prehliada\u010dom. Ale ke\u010f ide o nieko\u013eko podporovan\u00fdch prehliada\u010dov, Selenoid je \u010d\u00edslo jedna rie\u0161enie, v\u010faka funkcii 'prehliada\u010d na po\u017eiadanie'. V\u0161etko, \u010do od n\u00e1s vy\u017eaduje, je vopred stiahnu\u0165 potrebn\u00e9 obrazy s prehliada\u010dmi a aktualizova\u0165 konfigura\u010dn\u00fd s\u00fabor, s ktor\u00fdm interaguje Selenoid. Po z\u00edskan\u00ed po\u017eiadavky od testov Selenoid automaticky spust\u00ed potrebn\u00fd kontajner s po\u017eadovan\u00fdm prehliada\u010dom. Ke\u010f test skon\u010d\u00ed, Selenoid zastav\u00ed kontajner, \u010d\u00edm uvo\u013en\u00ed prostriedky pre \u010fal\u0161ie po\u017eiadavky. Tak\u00fdto pr\u00edstup \u00faplne eliminuje zn\u00e1my probl\u00e9m 'degrad\u00e1cie uzlov', s ktor\u00fdm sa \u010dasto stret\u00e1vame v Selenium grid.<\/p>\n<p>Ale, \u017eia\u013e, Selenoid st\u00e1le nie je strieborn\u00e1 gu\u013eka. Z\u00edskali sme funkciu 'prehliada\u010d na po\u017eiadanie', ale funkcia 'zdroje na po\u017eiadanie' st\u00e1le nie je k dispoz\u00edcii. Pre pou\u017e\u00edvanie Selenoidu mus\u00edme nasadi\u0165 na fyzickom hardv\u00e9ri alebo na VM, \u010do znamen\u00e1, \u017ee mus\u00edme vopred vedie\u0165, ko\u013eko zdrojov je potrebn\u00e9 prideli\u0165. Mysl\u00edm, \u017ee to nie je probl\u00e9m pre mal\u00e9 projekty, ktor\u00e9 sp\u00fa\u0161\u0165aj\u00fa 10, 20 alebo dokonca 30 prehliada\u010dov paralelne. Ale \u010do ak potrebujeme 100, 500, 1000 a viac? Nem\u00e1 zmysel neust\u00e1le udr\u017eiava\u0165 a plati\u0165 za tak\u00e9 mno\u017estvo zdrojov. V sekcii 5 a 6 tohto \u010dl\u00e1nku prediskutujeme rie\u0161enia, ktor\u00e9 umo\u017e\u0148uj\u00fa \u0161k\u00e1lovate\u013enos\u0165, \u010d\u00edm v\u00fdrazne zni\u017euj\u00fa n\u00e1klady spolo\u010dnosti.<\/p>\n<p><u>Selenoid pre Android<\/u><\/p>\n<p>Po \u00faspechu Selenoid ako n\u00e1stroja pre webov\u00fa automatiz\u00e1ciu sa \u013eudia chceli do\u010dka\u0165 nie\u010doho podobn\u00e9ho pre Android. A to sa stalo \u2013 Selenoid bol vydan\u00fd s podporou Androidu. Z poh\u013eadu koncov\u00e9ho pou\u017e\u00edvate\u013ea je princ\u00edp fungovania podobn\u00fd webovej automatiz\u00e1cii. Jedin\u00fd rozdiel spo\u010d\u00edva v tom, \u017ee namiesto kontajnerov s prehliada\u010dmi Selenoid sp\u00fa\u0161\u0165a kontajnery s Android emul\u00e1tormi. Pod\u013ea m\u00f4jho n\u00e1zoru je to v s\u00fa\u010dasnosti najsilnej\u0161\u00ed bezplatn\u00fd n\u00e1stroj na sp\u00fa\u0161\u0165anie Android testov paralelne.<\/p>\n<p>Ve\u013emi by som sa vyhol rozpr\u00e1vaniu o negat\u00edvnych str\u00e1nkach tohto n\u00e1stroja, preto\u017ee sa mi naozaj ve\u013emi p\u00e1\u010di. Napriek tomu sa tu nach\u00e1dzaj\u00fa rovnak\u00e9 nev\u00fdhody, ktor\u00e9 sa t\u00fdkaj\u00fa aj webovej automatiz\u00e1cie, spojen\u00e9 so \u0161k\u00e1lovan\u00edm. Okrem toho mus\u00edm spomen\u00fa\u0165 e\u0161te jedno obmedzenie, ktor\u00e9 m\u00f4\u017ee by\u0165 prekvapen\u00edm, ak n\u00e1stroj nastavujeme prv\u00fdkr\u00e1t. Na sp\u00fa\u0161\u0165anie Android obrazov potrebujeme fyzick\u00fd stroj alebo VM s podporou 'nested virtualization'. V praktickej pr\u00edru\u010dke demon\u0161trujem, ako to aktivova\u0165 na Linux VM. Av\u0161ak, ak ste pou\u017e\u00edvate\u013eom macOS a chcete nasadi\u0165 Selenoid lok\u00e1lne, bude to na sp\u00fa\u0161\u0165anie Android testov nemo\u017en\u00e9. Ale v\u017edy m\u00f4\u017eete spusti\u0165 Linux VM lok\u00e1lne s nastavenou 'nested virtualization' a nasadi\u0165 Selenoid vo vn\u00fatri.<\/p>\n<h3>Ilustr\u00e1cia aktu\u00e1lneho stavu infra\u0161trukt\u00fary<\/h3>\n<p>\n V kontexte tohto \u010dl\u00e1nku prid\u00e1me 2 n\u00e1stroje na ilustr\u00e1ciu infra\u0161trukt\u00fary. To s\u00fa Selenium grid pre webov\u00e9 testy a Selenoid pre Android testy. V pr\u00edru\u010dke na GitHub tie\u017e uk\u00e1\u017eem, ako pou\u017ei\u0165 Selenoid na sp\u00fa\u0161\u0165anie webov\u00fdch testov.\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"N\u00e1stroje DevOps nie s\u00fa len pre DevOps. Proces budovania infra\u0161trukt\u00fary automatiz\u00e1cie testovania od z\u00e1kladov.\" src=\"\/wp-content\/uploads\/2020\/04\/1202ae79eba9cffc965f3a5b2648c755.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Odkazy na \u0161t\u00fadium<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.docker.com\/resources\/what-container\">Docker: \u010do je kontajner<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.docker.com\/get-started\">Docker: za\u010dnite<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/containerjournal.com\/topics\/container-ecosystems\/5-container-alternatives-to-docker\/\">5 alternat\u00edvnych kontajnerov k Dockeru<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/SeleniumHQ\/selenium\/wiki\/Grid2\">Selenium Grid<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/SeleniumHQ\/docker-selenium\">Selenium docker<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/aerokube.com\/selenoid\/latest\/\">Selenoid<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/aerokube\/selenoid\">Selenoid GitHub<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developer.android.com\/studio\/run\/emulator-acceleration#vm-linux\">Nastavenie KVM pre Android emul\u00e1tory<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/Docker-Deep-Dive-Nigel-Poulton-ebook\/dp\/B01LXWQUFF\/ref=pd_sim_351_1\/147-1129855-1615632?_encoding=UTF8&amp;pd_rd_i=B01LXWQUFF&amp;pd_rd_r=f8dcd666-e707-4f85-99c6-24ecec56ea74&amp;pd_rd_w=rMnHL&amp;pd_rd_wg=u17vC&amp;pf_rd_p=bab57536-7c8f-4781-a8ed-3e270b9cd303&amp;pf_rd_r=KN6EXNGBWJ6B9QNJE4M2&amp;psc=1&amp;refRID=KN6EXNGBWJ6B9QNJE4M2\">Kniha Docker Deep Dive<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Podobn\u00e9 n\u00e1stroje<\/h3>\n<p><\/p>\n<ul>\n<li>Existuj\u00fa aj in\u00e9 n\u00e1stroje na kontajneriz\u00e1ciu, ale Docker je najpopul\u00e1rnej\u0161\u00ed. Ak chcete vysk\u00fa\u0161a\u0165 nie\u010do in\u00e9, vezmite do \u00favahy, \u017ee tie n\u00e1stroje, ktor\u00e9 sme presk\u00famali pre paraleln\u00e9 sp\u00fa\u0161\u0165anie Selenium testov, nebud\u00fa fungova\u0165 priamo z krabice.\u00a0\u00a0<\/li>\n<li>Ako u\u017e bolo spomenut\u00e9, existuje mnoho modifik\u00e1ci\u00ed Selenium grid, napr\u00edklad,<noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.zalando.com\/zalenium\/\"> Zalenium<\/a><\/noindex>. <\/li>\n<\/ul>\n<p><\/p>\n<h2>4. CI \/ CD<\/h2>\n<p><\/p>\n<h3>Stru\u010dn\u00e9 zhrnutie technol\u00f3gie<\/h3>\n<p>\n Praktika kontinu\u00e1lnej integr\u00e1cie je ve\u013emi popul\u00e1rna v oblasti v\u00fdvoja a stoj\u00ed na rovnakej \u00farovni ako syst\u00e9my spr\u00e1vy verzi\u00ed. Napriek tomu c\u00edtim, \u017ee existuje zm\u00e4tok v terminol\u00f3gii. V tomto odseku by som chcel op\u00edsa\u0165 3 modifik\u00e1cie tejto technol\u00f3gie pod\u013ea m\u00f4jho n\u00e1zoru. Na internete n\u00e1jdete ve\u013ea \u010dl\u00e1nkov s r\u00f4znymi interpret\u00e1ciami, a je \u00faplne norm\u00e1lne, ak sa v\u00e1\u0161 n\u00e1zor l\u00ed\u0161i. Najd\u00f4le\u017eitej\u0161ie je, aby ste boli na jednej vlne so svojimi kolegami.<\/p>\n<p>Tak\u017ee existuj\u00fa 3 pojmy: CI \u2014 Continuous Integration (kontinu\u00e1lna integr\u00e1cia), CD \u2014 Continuous Delivery (kontinu\u00e1lna dod\u00e1vka) a znova CD \u2014 Continuous Deployment (kontinu\u00e1lne nasadzovanie).\u00a0(<i>\u010ealej budem tieto pojmy pou\u017e\u00edva\u0165 v anglickom jazyku<\/i>). Ka\u017ed\u00e1 modifik\u00e1cia prid\u00e1va nieko\u013eko \u010fal\u0161\u00edch krokov do v\u00e1\u0161ho v\u00fdvojov\u00e9ho potrubia. Ale slovo <u>continuous<\/u> (nepretr\u017eit\u00e1) je najd\u00f4le\u017eitej\u0161ia. V tomto kontexte m\u00e1me na mysli nie\u010do, \u010do sa deje od za\u010diatku do konca, bez preru\u0161enia alebo manu\u00e1lneho z\u00e1sahu. Pozrime sa na CI &#038; CD a CD v tomto kontexte.<\/p>\n<ul>\n<li><strong>Continuous Integration \u2013<\/strong> je po\u010diato\u010dn\u00fd krok evol\u00facie. Po odoslan\u00ed nov\u00e9ho k\u00f3du na server o\u010dak\u00e1vame r\u00fdchlu sp\u00e4tn\u00fa v\u00e4zbu, \u017ee s na\u0161imi zmenami je v\u0161etko v poriadku. Zvy\u010dajne CI zah\u0155\u0148a spustenie n\u00e1strojov statickej anal\u00fdzy k\u00f3du a modul\u00e1rne\/ intern\u00e9 API testy. To n\u00e1m umo\u017e\u0148uje z\u00edska\u0165 inform\u00e1cie o na\u0161om k\u00f3de u\u017e po nieko\u013ek\u00fdch sekund\u00e1ch\/min\u00fatach.<\/li>\n<li><strong>Kontinu\u00e1lne dod\u00e1vanie<\/strong> je pokro\u010dilej\u0161\u00ed krok, na ktorom sp\u00fa\u0161\u0165ame integra\u010dn\u00e9\/UI testy. Av\u0161ak v tomto \u0161t\u00e1diu nedost\u00e1vame v\u00fdsledky tak r\u00fdchlo ako v pr\u00edpade CI. Po prv\u00e9, tieto typy testov si vy\u017eaduj\u00fa viac \u010dasu na absolvovanie. Po druh\u00e9, pred spusten\u00edm mus\u00edme nasadi\u0165 na\u0161e zmeny na testovaciu\/ staging - prostredie. Navy\u0161e, ak hovor\u00edme o mobilnom v\u00fdvoji, existuje \u010fal\u0161\u00ed krok na vytvorenie zostavy na\u0161ej aplik\u00e1cie.<\/li>\n<li><strong>Continuous Deployment<\/strong> predpoklad\u00e1, \u017ee automaticky uvo\u013e\u0148ujeme (release) na\u0161e zmeny na production, ak boli v\u0161etky akcepta\u010dn\u00e9 testy \u00faspe\u0161ne vykonan\u00e9 v predch\u00e1dzaj\u00facich f\u00e1zach. Okrem toho po f\u00e1ze uvo\u013enenia m\u00f4\u017eeme nastavi\u0165 r\u00f4zne f\u00e1zy, ako je spustenie smoke testov na production a zber zauj\u00edmav\u00fdch metr\u00edk. Continuous Deployment je mo\u017en\u00e9 iba pri dobrom pokryt\u00ed automatizovan\u00fdmi testami. Ak s\u00fa potrebn\u00e9 nejak\u00e9 manu\u00e1lne z\u00e1sahy, vr\u00e1tane testovania, nie je to u\u017e viac <u>Continuous<\/u> (nepretr\u017eit\u00e9). Potom m\u00f4\u017eeme hovori\u0165, \u017ee n\u00e1\u0161 pipeline zodpoved\u00e1 len praxi Continuous Delivery.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Hodnota pre automatiza\u010dn\u00fa infra\u0161trukt\u00faru<\/h3>\n<p>\n V tejto \u010dasti mus\u00edm objasni\u0165, \u017ee ke\u010f hovor\u00edme o end-to-end UI testoch, to znamen\u00e1, \u017ee mus\u00edme nasadi\u0165 na\u0161e zmeny a s\u00favisiace slu\u017eby na testovacie prostredia. Continuous Integration \u2014 proces nie je aplikovate\u013en\u00fd pre t\u00fato \u00falohu a mus\u00edme zabezpe\u010di\u0165 zavedenie aspo\u0148 prakt\u00edk Continuous Delivery. Continuous Deployment m\u00e1 tie\u017e zmysel v kontexte UI testov, ak pl\u00e1nujeme ich sp\u00fa\u0161\u0165a\u0165 na production.<\/p>\n<p>A predt\u00fdm, ne\u017e sa pozrieme na ilustr\u00e1ciu zmien architekt\u00fary, chcem poveda\u0165 nieko\u013eko slov o GitLab CI. Na rozdiel od in\u00fdch CI\/CD n\u00e1strojov, GitLab poskytuje vzdialen\u00fd repozit\u00e1r a mnoho \u010fal\u0161\u00edch dodato\u010dn\u00fdch funkci\u00ed. Tak\u017ee GitLab je viac ne\u017e len CI. Obsahuje hne\u010f riadenie zdrojov\u00e9ho k\u00f3du, Agile riadenie, CI\/CD pipelines, n\u00e1stroje na logovanie a zbieranie metr\u00edk. Architekt\u00fara GitLab pozost\u00e1va z GitLab CI\/CD a GitLab Runner. Uv\u00e1dzam stru\u010dn\u00fd popis z ofici\u00e1lnej str\u00e1nky:<\/p>\n<blockquote><p>GitLab CI\/CD je webov\u00e1 aplik\u00e1cia s API, ktor\u00e1 uklad\u00e1 svoj stav v datab\u00e1ze, spravuje projekty\/kompil\u00e1cie a poskytuje pou\u017e\u00edvate\u013esk\u00e9 rozhranie. GitLab Runner je aplik\u00e1cia, ktor\u00e1 spracov\u00e1va kompil\u00e1cie. M\u00f4\u017ee by\u0165 nasaden\u00e1 samostatne a funguje s GitLab CI\/CD prostredn\u00edctvom API. Na sp\u00fa\u0161\u0165anie testov potrebujete obidve GitLab in\u0161tancie a Runner.<\/p><\/blockquote>\n<p><\/p>\n<h3>Ilustr\u00e1cia aktu\u00e1lneho stavu infra\u0161trukt\u00fary<\/h3>\n<p>\n<img decoding=\"async\" alt=\"N\u00e1stroje DevOps nie s\u00fa len pre DevOps. Proces budovania infra\u0161trukt\u00fary automatiz\u00e1cie testovania od z\u00e1kladov.\" src=\"\/wp-content\/uploads\/2020\/04\/a05ece39b6c6a9aaec4177d4b5242722.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Odkazy na \u0161t\u00fadium<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/articles\/continuousIntegration.html\">Martin Fowler: Continuous Integration<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.gitlab.com\/ee\/ci\/\">GitLab CI\/CD<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/Continuous-Integration-Improving-Software-Reducing\/dp\/0321336380\">Kniha o Continuous Integration<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/Continuous-Delivery-Deployment-Automation-Addison-Wesley-ebook-dp-B003YMNVC0\/dp\/B003YMNVC0\/ref=mt_kindle?_encoding=UTF8&amp;me=&amp;qid=\">Kniha o Continuous Delivery<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Podobn\u00e9 n\u00e1stroje<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/jenkins.io\/\">Jenkins<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.jetbrains.com\/teamcity\/\">TeamCity<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/travis-ci.com\/\">Travis<\/a><\/noindex>\u00a0<\/li>\n<li>A mnoho \u010fal\u0161\u00edch<\/li>\n<\/ul>\n<p><\/p>\n<h2>5. Cloudov\u00e9 platformy<\/h2>\n<p><\/p>\n<h3>Stru\u010dn\u00e9 zhrnutie technol\u00f3gie<\/h3>\n<p>\n V tejto sekcii sa budeme zaobera\u0165 popul\u00e1rnym trendom, ktor\u00fd sa naz\u00fdva \u2018verejn\u00e9 cloudov\u00e9 slu\u017eby\u2019. Napriek obrovsk\u00e9mu pr\u00ednosu technol\u00f3gi\u00ed virtualiz\u00e1cie a kontajneriz\u00e1cie, ktor\u00e9 sme u\u017e spomenuli, st\u00e1le potrebujeme v\u00fdpo\u010dtov\u00e9 zdroje. Spolo\u010dnosti kupuj\u00fa drah\u00e9 servery alebo si prenaj\u00edmaj\u00fa d\u00e1tov\u00e9 centr\u00e1, av\u0161ak v takom pr\u00edpade je potrebn\u00e9 vykona\u0165 v\u00fdpo\u010dty (niekedy nerealistick\u00e9) o tom, ko\u013eko zdrojov budeme potrebova\u0165, \u010di ich budeme pou\u017e\u00edva\u0165 24\/7 a na ak\u00e9 \u00fa\u010dely. Napr\u00edklad, pre produkciu je potrebn\u00fd server, ktor\u00fd be\u017e\u00ed nonstop, ale potrebujeme rovnak\u00e9 zdroje pre testovanie po pracovnej dobe? To tie\u017e z\u00e1vis\u00ed od typu vykonan\u00e9ho testovania. Pr\u00edkladom m\u00f4\u017eu by\u0165 z\u00e1\u0165a\u017eov\u00e9\/stresov\u00e9 testy, ktor\u00e9 pl\u00e1nujeme vykon\u00e1va\u0165 mimo pracovnej doby, aby sme z\u00edskali v\u00fdsledky na nasleduj\u00faci de\u0148. Av\u0161ak ur\u010dite nie je potrebn\u00e1 celodenn\u00e1 dostupnos\u0165 serverov pre end-to-end automatizovan\u00e9 testy a najm\u00e4 pre prostredia manu\u00e1lneho testovania. Pre tak\u00e9to situ\u00e1cie by bolo dobr\u00e9 ma\u0165 k dispoz\u00edcii presne tak\u00e9 mno\u017estvo zdrojov, ak\u00e9 potrebujeme, vyu\u017ei\u0165 ich a presta\u0165 plati\u0165, ke\u010f ich u\u017e nepotrebujeme. Navy\u0161e, bolo by skvel\u00e9 dosta\u0165 ich okam\u017eite, s nieko\u013ek\u00fdmi kliknutiami my\u0161ou alebo spusten\u00edm nieko\u013ek\u00fdch skriptov. Na tento \u00fa\u010del sa pou\u017e\u00edvaj\u00fa verejn\u00e9 cloudov\u00e9 slu\u017eby. Pozrime sa na defin\u00edciu:<\/p>\n<blockquote><p>\u201eVerejn\u00fd cloud je definovan\u00fd ako v\u00fdpo\u010dtov\u00e9 slu\u017eby pon\u00fakan\u00e9 tret\u00edmi stranami cez verejn\u00fd internet, spr\u00edstup\u0148uj\u00face ich ka\u017ed\u00e9mu, kto ich chce pou\u017e\u00edva\u0165 alebo zak\u00fapi\u0165. M\u00f4\u017eu by\u0165 zadarmo alebo pred\u00e1van\u00e9 na po\u017eiadanie, umo\u017e\u0148uj\u00face z\u00e1kazn\u00edkom plati\u0165 iba za spotrebovan\u00e9 CPU cykly, \u00falo\u017eisko alebo \u0161\u00edrku p\u00e1sma.\u201c<\/p><\/blockquote>\n<p>\n Existuje n\u00e1zor, \u017ee verejn\u00e9 cloudov\u00e9 slu\u017eby s\u00fa drah\u00e9. Ale ich k\u013e\u00fa\u010dovou my\u0161lienkou je zn\u00ed\u017eenie v\u00fddavkov spolo\u010dnosti. Ako sme u\u017e spomenuli, verejn\u00e9 cloudov\u00e9 slu\u017eby umo\u017e\u0148uj\u00fa z\u00edska\u0165 zdroje na po\u017eiadanie a plati\u0165 len za \u010das ich pou\u017e\u00edvania. Tie\u017e niekedy zab\u00fadame, \u017ee zamestnanci dost\u00e1vaj\u00fa plat a odborn\u00edci s\u00fa tie\u017e drah\u00fdm zdrojom. Je potrebn\u00e9 zoh\u013eadni\u0165, \u017ee verejn\u00e9 cloudov\u00e9 slu\u017eby zna\u010dne u\u013eah\u010duj\u00fa podporu infra\u0161trukt\u00fary, \u010do umo\u017e\u0148uje in\u017einierom s\u00fastredi\u0165 sa na d\u00f4le\u017eitej\u0161ie \u00falohy.\u00a0<\/p>\n<h3>Hodnota pre automatiza\u010dn\u00fa infra\u0161trukt\u00faru<\/h3>\n<p>\n Ak\u00e9 konkr\u00e9tne zdroje potrebujeme pre end-to-end UI testovanie? V z\u00e1sade ide o virtu\u00e1lne stroje alebo klastry (o Kubernetes sa budeme rozpr\u00e1va\u0165 v nasleduj\u00facej sekcii), ktor\u00e9 sl\u00fa\u017eia na sp\u00fa\u0161\u0165anie prehliada\u010dov a emul\u00e1torov. \u010c\u00edm viac prehliada\u010dov a emul\u00e1torov chceme spusti\u0165 s\u00fa\u010dasne, t\u00fdm viac CPU a pam\u00e4te potrebujeme a t\u00fdm viac pe\u0148az\u00ed za to budeme musie\u0165 zaplati\u0165. T\u00fdmto sp\u00f4sobom verejn\u00e9 cloudov\u00e9 slu\u017eby v kontexte automatiz\u00e1cie testovania umo\u017e\u0148uj\u00fa spusti\u0165 ve\u013ek\u00fd po\u010det (100, 200, 1000 \u2026) prehliada\u010dov\/emul\u00e1torov na po\u017eiadanie, r\u00fdchlo z\u00edska\u0165 v\u00fdsledky testovania a presta\u0165 plati\u0165 za tak\u00e9 \u0161ialene n\u00e1ro\u010dn\u00e9 zdroje.\u00a0<\/p>\n<p>Najpopul\u00e1rnej\u0161\u00edmi cloudov\u00fdmi poskytovate\u013emi s\u00fa Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP). V praxi s\u00fa uveden\u00e9 pr\u00edklady pou\u017eitia GCP, ale vo v\u0161eobecnosti nie je d\u00f4le\u017eit\u00e9, \u010do presne budete pou\u017e\u00edva\u0165 na automatiza\u010dn\u00e9 \u00falohy. V\u0161etci poskytovatelia pon\u00fakaj\u00fa pribli\u017ene rovnak\u00e9 funkcie. Zvy\u010dajne sa pri v\u00fdbere poskytovate\u013ea hlavn\u00e9 zameranie s\u00fastred\u00ed na cel\u00fa infra\u0161trukt\u00faru spolo\u010dnosti a obchodn\u00e9 po\u017eiadavky, \u010do presahuje r\u00e1mec tohto \u010dl\u00e1nku. Pre automatiza\u010dn\u00fdch in\u017einierov bude zauj\u00edmavej\u0161ie porovna\u0165 pou\u017eitie cloudov\u00fdch poskytovate\u013eov s pou\u017e\u00edvan\u00edm cloudov\u00fdch platforiem \u0161pecificky na \u00fa\u010dely testovania, ako s\u00fa Sauce Labs, BrowserStack, BitBar a podobne. Tak po\u010fme na to! Pod\u013ea m\u00f4jho n\u00e1zoru je Sauce Labs najzn\u00e1mej\u0161ia cloudov\u00e1 testovacia platforma, preto som si ju vybral na porovnanie.\u00a0<\/p>\n<p><u>GCP vs Sauce Labs pre automatiz\u00e1ciu:<\/u><\/p>\n<p>Predpokladajme, \u017ee potrebujeme spusti\u0165 s\u00fa\u010dasne 8 webov\u00fdch testov a 8 Android testov. Na to pou\u017eijeme GCP a spust\u00edme 2 virtu\u00e1lne stroje so Selenoidom. Na prvom spust\u00edme 8 kontajnerov s prehliada\u010dmi. Na druhom \u2013 8 kontajnerov s emul\u00e1tormi. Pozrime sa na ceny:\u00a0\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"N\u00e1stroje DevOps nie s\u00fa len pre DevOps. Proces budovania infra\u0161trukt\u00fary automatiz\u00e1cie testovania od z\u00e1kladov.\" src=\"\/wp-content\/uploads\/2020\/04\/e4688fd2e6e5593d2e1c22fc57f59484.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n Na spustenie jedn\u00e9ho kontajnera s Chrome potrebujeme <strong>n1-standard-1 <\/strong>stroj. V pr\u00edpade Androidu to bude <strong>n1-standard-4 <\/strong>pre jeden emul\u00e1tor. V skuto\u010dnosti je flexibilnej\u0161\u00ed a lacnej\u0161\u00ed sp\u00f4sob zada\u0165 konkr\u00e9tne pou\u017e\u00edvate\u013esk\u00e9 hodnoty pre CPU\/Pam\u00e4\u0165, ale v tejto chv\u00edli to nie je podstatn\u00e9 pre porovnanie so Sauce Labs.<\/p>\n<p>Tu s\u00fa tarify na pou\u017e\u00edvanie Sauce Labs:<\/p>\n<p><img decoding=\"async\" alt=\"N\u00e1stroje DevOps nie s\u00fa len pre DevOps. Proces budovania infra\u0161trukt\u00fary automatiz\u00e1cie testovania od z\u00e1kladov.\" src=\"\/wp-content\/uploads\/2020\/04\/1367d2b59bbef9603b4b4be166e8d721.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nPredpoklad\u00e1m, \u017ee ste si u\u017e v\u0161imli rozdiel, ale aj tak uv\u00e1dzam tabu\u013eku s v\u00fdpo\u010dtami pre na\u0161u \u00falohu:<\/p>\n<p><strong>Potrebn\u00e9 zdroje<\/strong><br \/>\n<strong>Mesa\u010dne<\/strong><br \/>\n<strong>Pracovn\u00e9 hodiny<\/strong><strong>(8:00 \u2014 20:00)<\/strong><br \/>\n<strong>Pracovn\u00e9 hodiny<\/strong><strong>+ Preemptible<\/strong><\/p>\n<p><strong>GCP pre Web<\/strong><br \/>\nn1-standard-1 x 8 = n1-standard-8<br \/>\n$194.18<br \/>\n23 dni * 12h * 0.38 = 104.88$\u00a0<br \/>\n23 dni * 12h * 0.08 = 22.08$<\/p>\n<p><strong>Sauce Labs pre web<\/strong><br \/>\nVirtu\u00e1lny Cloud8 paraleln\u00e9 testy<br \/>\n$1.559<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p><strong>GCP pre Android<\/strong><br \/>\nn1-standard-4 x 8: n1-standard-16<br \/>\n$776.72<br \/>\n23 dni * 12h * 1.52 = 419.52$\u00a0<br \/>\n23 dni * 12h * 0.32 = 88.32$<\/p>\n<p><strong>Sauce Labs pre Android<\/strong><br \/>\nRe\u00e1lny zariaden\u00ed Cloud 8 paraleln\u00e9 testy<br \/>\n$1.999<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>\nAko vidno, rozdiel v n\u00e1kladoch je obrovsk\u00fd, najm\u00e4 ak sp\u00fa\u0161\u0165ate testy len v pracovnom dvan\u00e1s\u0165hodinovom intervale. Ale e\u0161te viac m\u00f4\u017eete u\u0161etri\u0165, ak pou\u017eijete preemptible stroje. \u010co to vlastne je?<\/p>\n<blockquote><p>Preemptible VM je in\u0161tancia, ktor\u00fa m\u00f4\u017eete vytvori\u0165 a spusti\u0165 za ove\u013ea ni\u017e\u0161iu cenu ako norm\u00e1lne in\u0161tancie. Av\u0161ak, Compute Engine m\u00f4\u017ee tieto in\u0161tancie ukon\u010di\u0165 (preempt), ak potrebuje pr\u00edstup k t\u00fdmto zdrojom pre in\u00e9 \u00falohy. Preemptible in\u0161tancie s\u00fa nadbyto\u010dn\u00e1 kapacita Compute Engine, tak\u017ee ich dostupnos\u0165 sa l\u00ed\u0161i v z\u00e1vislosti od pou\u017eitia.<\/p>\n<p>Ak s\u00fa va\u0161e aplik\u00e1cie odoln\u00e9 vo\u010di chyb\u00e1m a m\u00f4\u017eu vydr\u017ea\u0165 mo\u017en\u00e9 preemptions in\u0161tanci\u00ed, potom preemptible in\u0161tancie m\u00f4\u017eu v\u00fdrazne zn\u00ed\u017ei\u0165 va\u0161e n\u00e1klady na Compute Engine. Napr\u00edklad, d\u00e1vkov\u00e9 spracovacie \u00falohy m\u00f4\u017eu be\u017ea\u0165 na preemptible in\u0161tanci\u00e1ch. Ak niektor\u00e9 z t\u00fdchto in\u0161tanci\u00ed ukon\u010dia po\u010das spracovania, \u00faloha sa spomal\u00ed, ale \u00faplne nezastav\u00ed. Preemptible in\u0161tancie dokon\u010dia va\u0161e d\u00e1vkov\u00e9 spracovacie \u00falohy bez prid\u00e1vania \u010fal\u0161ej z\u00e1\u0165a\u017ee na va\u0161e existuj\u00face in\u0161tancie a bez potreby plati\u0165 pln\u00fa cenu za \u010fal\u0161ie norm\u00e1lne in\u0161tancie.<\/p><\/blockquote>\n<p>\n A to st\u00e1le nie je koniec! V skuto\u010dnosti som si ist\u00fd, \u017ee nikto nesp\u00fa\u0161\u0165a testy 12 hod\u00edn bez prest\u00e1vky. A ak je to tak, m\u00f4\u017eete automaticky sp\u00fa\u0161\u0165a\u0165 a zastavova\u0165 virtu\u00e1lne stroje, ke\u010f ich nepotrebujete. Re\u00e1lne vyu\u017eitie m\u00f4\u017ee klesn\u00fa\u0165 na 6 hod\u00edn denne. Potom platba v kontexte na\u0161ej \u00falohy klesne a\u017e na 11$ mesa\u010dne za 8 prehliada\u010dov. Naozaj to nie je n\u00e1dhern\u00e9? Ale s preemptible strojmi mus\u00edme by\u0165 opatrn\u00ed a pripraven\u00ed na preru\u0161enia a nestabiln\u00fd v\u00fdkon, aj ke\u010f tieto situ\u00e1cie m\u00f4\u017eu by\u0165 naprogramovan\u00e9 a spracovan\u00e9. Stoj\u00ed to za to!<\/p>\n<p>Ale v \u017eiadnom pr\u00edpade nehovor\u00edm, \u017ee \u201enikdy nepou\u017e\u00edvajte cloudov\u00e9 testovacie farmy\u201c. Maj\u00fa mno\u017estvo v\u00fdhod. Predov\u0161etk\u00fdm to nie je len virtu\u00e1lny stroj, ale kompletn\u00e9 rie\u0161enie pre automatiz\u00e1ciu testovania s radom funkci\u00ed \u201eout of the box\u201c: vzdialen\u00fd pr\u00edstup, logy, sn\u00edmky obrazovky, videoz\u00e1znam, r\u00f4zne prehliada\u010de a fyzick\u00e9 mobiln\u00e9 zariadenia. V mnoh\u00fdch situ\u00e1ci\u00e1ch to m\u00f4\u017ee by\u0165 nenahradite\u013en\u00e1 luxusn\u00e1 alternat\u00edva. Obzvl\u00e1\u0161\u0165 testovacie platformy s\u00fa u\u017eito\u010dn\u00e9 pri automatiz\u00e1cii IOS, ke\u010f verejn\u00e9 cloudy m\u00f4\u017eu pon\u00faknu\u0165 iba Linuxov\u00e9\/Windows syst\u00e9my. Ale o IOS budeme hovori\u0165 v nasleduj\u00facich \u010dl\u00e1nkoch. Odpor\u00fa\u010dam v\u017edy posudzova\u0165 situ\u00e1ciu a odv\u00edja\u0165 sa od \u00faloh: v niektor\u00fdch pr\u00edpadoch je lacnej\u0161ie a efekt\u00edvnej\u0161ie pou\u017e\u00edva\u0165 verejn\u00e9 cloudy, zatia\u013e \u010do v in\u00fdch s\u00fa testovacie platformy ur\u010dite stoj\u00ed za vynalo\u017een\u00e9 peniaze.<\/p>\n<h3>Ilustr\u00e1cia aktu\u00e1lneho stavu infra\u0161trukt\u00fary<\/h3>\n<p>\n<img decoding=\"async\" alt=\"N\u00e1stroje DevOps nie s\u00fa len pre DevOps. Proces budovania infra\u0161trukt\u00fary automatiz\u00e1cie testovania od z\u00e1kladov.\" src=\"\/wp-content\/uploads\/2020\/04\/f68770c9e27677b9d762af574726c90e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Odkazy na \u0161t\u00fadium<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/gcp\/\">GCP<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/compute\/docs\/instances\/preemptible\">GCP: Preemptible<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/compute\/vm-instance-pricing\">GCP: Ceny VM<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/saucelabs.com\/pricing\">SauceLabs<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.inovex.de\/blog\/comparing-cloud-providers\/\">Porovnanie cloudov\u00fdch poskytovate\u013eov<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Podobn\u00e9 n\u00e1stroje:<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/\">AWS<\/a><\/noindex>\u00a0<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/azure.microsoft.com\/en-us\/\">Azure<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h2>6. Orchestr\u00e1cia<\/h2>\n<p><\/p>\n<h3>Stru\u010dn\u00e9 zhrnutie technol\u00f3gie<\/h3>\n<p>\n M\u00e1m dobr\u00e9 spr\u00e1vy \u2013 takmer sme na konci \u010dl\u00e1nku! Na\u0161a automatiza\u010dn\u00e1 infra\u0161trukt\u00fara moment\u00e1lne pozost\u00e1va z webov\u00fdch a Android testov, ktor\u00e9 sp\u00fa\u0161\u0165ame cez GitLab CI paralelne, vyu\u017e\u00edvaj\u00fac n\u00e1stroje s podporou Docker: Selenium grid a Selenoid. Navy\u0161e pou\u017e\u00edvame virtu\u00e1lne stroje vytvoren\u00e9 cez GCP na sp\u00fa\u0161\u0165anie kontajnerov s prehliada\u010dmi a emul\u00e1tormi. Aby sme zn\u00ed\u017eili n\u00e1klady, sp\u00fa\u0161\u0165ame tieto virtu\u00e1lne stroje iba na po\u017eiadanie a zastavujeme ich, ke\u010f sa netestuje. Existuje nie\u010do \u010fal\u0161ie, \u010do by mohlo zlep\u0161i\u0165 na\u0161u infra\u0161trukt\u00faru? Odpove\u010f znie \u2013 \u00e1no! V\u00edtame Kubernetes (K8s)!<\/p>\n<p>Najprv sa pozrime, ako s\u00fa slov\u00e1 orchestr\u00e1cia, klaster a Kubernetes navz\u00e1jom prepojen\u00e9. Na vysokej \u00farovni je orchestr\u00e1cia syst\u00e9m, ktor\u00fd nasadzuje a spravuje aplik\u00e1cie. Pre automatiz\u00e1ciu testovania s\u00fa tak\u00e9to kontajnerizovan\u00e9 aplik\u00e1cie Selenium grid a Selenoid. Docker a K8s sa navz\u00e1jom dop\u013a\u0148aj\u00fa. Prv\u00fd sa pou\u017e\u00edva na nasadenie aplik\u00e1ci\u00ed, druh\u00fd na orchestru. K8s je klaster. \u00dalohou klastru je vyu\u017e\u00edva\u0165 VMs ako uzly (Nodes), \u010do umo\u017e\u0148uje in\u0161tal\u00e1ciu r\u00f4zneho funk\u010dn\u00e9ho vybavenia, programov a slu\u017eieb na jednom serveri (klastri). Ak niektor\u00fd uzol (Node) zlyh\u00e1, ostatn\u00e9 uzly sa prevezm\u00fa a zabezpe\u010dia bezprobl\u00e9mov\u00fd chod na\u0161ich aplik\u00e1ci\u00ed. Okrem toho K8s m\u00e1 d\u00f4le\u017eit\u00fa funk\u010dnos\u0165, ktor\u00e1 s\u00favis\u00ed s horizont\u00e1lnym \u0161k\u00e1lovan\u00edm (scaling), pri\u010dom automaticky z\u00edskavame optim\u00e1lne mno\u017estvo zdrojov na z\u00e1klade za\u0165a\u017eenia a nastaven\u00fdch obmedzen\u00ed.<\/p>\n<p>Na pravdu povediac, ru\u010dne nasadi\u0165 Kubernetes od z\u00e1kladov je \u00faplne netrivi\u00e1lna \u00faloha. Nech\u00e1m odkaz na zn\u00e1me praktick\u00e9 sprievodcu \u201eKubernetes The Hard Way\u201c, a ak m\u00e1te z\u00e1ujem, m\u00f4\u017eete si to vysk\u00fa\u0161a\u0165. Ale, na\u0161\u0165astie, existuj\u00fa alternat\u00edvne met\u00f3dy a n\u00e1stroje. Najjednoduch\u0161ou z nich je vyu\u017eitie Google Kubernetes Engine (GKE) v GCP, \u010do umo\u017en\u00ed z\u00edska\u0165 pripraven\u00fd klaster po nieko\u013ek\u00fdch kliknutiach. Na za\u010diatok \u0161t\u00fadia odpor\u00fa\u010dam pr\u00e1ve tento pr\u00edstup, preto\u017ee v\u00e1m umo\u017en\u00ed zamera\u0165 sa na to, ako pou\u017e\u00edva\u0165 K8s pre va\u0161e \u00falohy, namiesto sk\u00famania, ako by mali by\u0165 intern\u00e9 komponenty navz\u00e1jom integrovan\u00e9.\u00a0<\/p>\n<h3>Hodnota pre automatiza\u010dn\u00fa infra\u0161trukt\u00faru<\/h3>\n<p>\nPozrime sa na nieko\u013eko v\u00fdznamn\u00fdch funkci\u00ed, ktor\u00e9 K8s poskytuje:<\/p>\n<ul>\n<li>nasadenie aplik\u00e1cie: pou\u017eitie multi-node klastrov namiesto VM;<\/li>\n<li>dynamick\u00e9 \u0161k\u00e1lovanie: zni\u017euje n\u00e1klady na zdroje, ktor\u00e9 s\u00fa vyu\u017e\u00edvan\u00e9 len na po\u017eiadanie;<\/li>\n<li>samoobnova (self-healing): automatick\u00e9 obnovenie pods (\u010d\u00edm sa obnovuj\u00fa aj kontajnery);<\/li>\n<li>nasadenie aktualiz\u00e1ci\u00ed a revertovanie zmien bez prestojov: aktualiz\u00e1cia n\u00e1strojov, prehliada\u010dov a emul\u00e1torov nepreru\u0161uje pr\u00e1cu aktu\u00e1lnych pou\u017e\u00edvate\u013eov.<\/li>\n<\/ul>\n<p>\n Ale K8s st\u00e1le nie je strieborn\u00e1 gu\u013eka. Na to, aby sme pochopili v\u0161etky v\u00fdhody a obmedzenia v kontexte n\u00e1strojov, o ktor\u00fdch hovor\u00edme (Selenium grid, Selenoid), stru\u010dne preberieme \u0161trukt\u00faru K8s. Klaster obsahuje dva typy uzlov: Master Nodes a Workers Nodes. Master Nodes s\u00fa zodpovedn\u00e9 za spr\u00e1vu, nasadenie a rozhodovanie o pl\u00e1novan\u00ed. Workers Nodes s\u00fa tie, na ktor\u00fdch s\u00fa aplik\u00e1cie spusten\u00e9. Uzly tie\u017e obsahuj\u00fa prostredie na sp\u00fa\u0161\u0165anie kontajnerov. V na\u0161om pr\u00edpade je to Docker, ktor\u00fd je zodpovedn\u00fd za oper\u00e1cie s\u00favisiace s kontajnermi. Existuj\u00fa v\u0161ak aj alternat\u00edvne rie\u0161enia, ako napr\u00edklad<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/containerd\/containerd\"> containerd<\/a><\/noindex>. Je d\u00f4le\u017eit\u00e9 pochopi\u0165, \u017ee \u0161k\u00e1lovanie alebo samoobnova sa priamo net\u00fdkaj\u00fa kontajnerov. To sa realizuje prostredn\u00edctvom pridania\/umen\u0161enia po\u010dtu pods, ktor\u00e9 v sebe obsahuj\u00fa kontajnery (zvy\u010dajne jeden kontajner na pod, ale v z\u00e1vislosti od \u00falohy to m\u00f4\u017ee by\u0165 aj viac). Vysoko\u00farov\u0148ov\u00e1 hierarchia predstavuje worker nodes, v ktor\u00fdch sa nach\u00e1dzaj\u00fa pods, v ktor\u00fdch s\u00fa spusten\u00e9 kontajnery.<\/p>\n<p>Funkcia \u0161k\u00e1lovania je k\u013e\u00fa\u010dov\u00e1 a m\u00f4\u017ee by\u0165 pou\u017eit\u00e1 ako pre uzly v r\u00e1mci cluster node-pool, tak aj pre pods v r\u00e1mci uzla. Existuj\u00fa 2 typy \u0161k\u00e1lovania, ktor\u00e9 sa vz\u0165ahuj\u00fa ako na uzly, tak aj na pods. Prv\u00fd typ \u2013 horizont\u00e1lne \u2013 \u0161k\u00e1lovanie prebieha zv\u00fd\u0161en\u00edm po\u010dtu uzlov\/pods. Tento typ je preferovanej\u0161\u00ed. Druh\u00fd typ, zodpovedaj\u00faco, vertik\u00e1lne. \u0160k\u00e1lovanie sa uskuto\u010d\u0148uje zv\u00fd\u0161en\u00edm ve\u013ekosti uzlov\/pods, a nie ich po\u010dtu.<\/p>\n<p>Teraz sa pozrime na na\u0161e n\u00e1stroje v kontexte vy\u0161\u0161ie uveden\u00fdch pojmov.<\/p>\n<p><u>Selenium grid<\/u><\/p>\n<p>Ako bolo spom\u00ednan\u00e9 sk\u00f4r, Selenium grid je ve\u013emi popul\u00e1rny n\u00e1stroj, a nie je prekvapen\u00edm, \u017ee bol kontajnerizovan\u00fd. Preto nie je prekvapuj\u00face, \u017ee Selenium grid mo\u017eno nasadi\u0165 v K8s. Pr\u00edklad toho, ako to urobi\u0165, n\u00e1jdete v ofici\u00e1lnom K8s repozit\u00e1ri. Ako obvykle, priklad\u00e1m odkazy na konci sekcie. Okrem toho v praktickej pr\u00edru\u010dke je uk\u00e1zan\u00e9, ako to urobi\u0165 pomocou Terraformu. Rovnako existuje n\u00e1vod, ako \u0161k\u00e1lova\u0165 po\u010det pods, ktor\u00e9 obsahuj\u00fa kontajnery s prehliada\u010dmi. Av\u0161ak funkcia automatick\u00e9ho \u0161k\u00e1lovania v kontexte K8s je st\u00e1le nejasn\u00e1 \u00faloha. Ke\u010f som za\u010dal \u0161t\u00fadium, nena\u0161iel som \u017eiadne praktick\u00e9 pr\u00edru\u010dky alebo odpor\u00fa\u010dania. Po nieko\u013ek\u00fdch prieskumoch a experimentoch s podporou t\u00edmu DevOps sme zvolili pr\u00edstup zvy\u0161ovania kontajnerov s po\u017eadovan\u00fdmi prehliada\u010dmi v r\u00e1mci jedn\u00e9ho podu, ktor\u00fd sa nach\u00e1dza v r\u00e1mci jedn\u00e9ho worker uzla. Tento sp\u00f4sob n\u00e1m umo\u017e\u0148uje aplikova\u0165 strat\u00e9giu horizont\u00e1lneho \u0161k\u00e1lovania uzlov zv\u00fd\u0161en\u00edm ich po\u010dtu. D\u00fafam, \u017ee v bud\u00facnosti sa situ\u00e1cia zmen\u00ed a uvid\u00edme \u010doraz viac popisov najlep\u0161\u00edch pr\u00edstupov a hotov\u00fdch rie\u0161en\u00ed, najm\u00e4 po vydan\u00ed Selenium grid 4 s upravenou vn\u00fatornou architekt\u00farou.<\/p>\n<p><u>Selenoid<\/u>:<\/p>\n<p>V s\u00fa\u010dasnosti je nasadenie Selenoid v K8s najv\u00e4\u010d\u0161\u00edm sklaman\u00edm. Nie s\u00fa kompatibiln\u00e9. Teoreticky m\u00f4\u017eeme spusti\u0165 Selenoid kontajner v r\u00e1mci podu, ale ke\u010f Selenoid za\u010dne sp\u00fa\u0161\u0165a\u0165 kontajnery s prehliada\u010dmi, v\u0161etky bud\u00fa st\u00e1le v r\u00e1mci tohto ist\u00e9ho podu. To rob\u00ed \u0161k\u00e1lovanie nemo\u017en\u00fdm a v\u00fdsledkom je, \u017ee prev\u00e1dzka Selenoid v r\u00e1mci clusteru sa nebude l\u00ed\u0161i\u0165 od prev\u00e1dzky v r\u00e1mci virtu\u00e1lnej ma\u0161iny. Koniec pr\u00edbehu.<\/p>\n<p><u>Moon<\/u>:<\/p>\n<p>S pozornos\u0165ou na toto \u00fazke miesto pri pr\u00e1ci s Selenoid, v\u00fdvoj\u00e1ri vydali silnej\u0161\u00ed n\u00e1stroj, ktor\u00fd nazvali Moon. Tento n\u00e1stroj bol p\u00f4vodne navrhnut\u00fd na pr\u00e1cu s Kubernetes a v\u00fdsledkom je, \u017ee je mo\u017en\u00e9 a potrebn\u00e9 pou\u017e\u00edva\u0165 funkciu automatick\u00e9ho \u0161k\u00e1lovania. Napriek tomu by som povedal, \u017ee v s\u00fa\u010dasnosti je to <u>jedinou<\/u> n\u00e1stroj v oblasti Selenium, ktor\u00fd m\u00e1 nat\u00edvnu podporu pre K8s cluster priamo z krabice (<i>u\u017e nie, pozri nasleduj\u00faci n\u00e1stroj <\/i>). K\u013e\u00fa\u010dovou vlastnos\u0165ou Moon, ktor\u00e1 t\u00fato podporu zabezpe\u010duje, je:\u00a0<\/p>\n<blockquote><p>\u00daplne bezstavov\u00fd. Selenoid uchov\u00e1va v pam\u00e4ti inform\u00e1cie o aktu\u00e1lne prebiehaj\u00facich rel\u00e1ci\u00e1ch prehliada\u010da. Ak by z nejak\u00e9ho d\u00f4vodu jeho proces havaroval \u2014 v\u0161etky be\u017eiace rel\u00e1cie by sa stratili. Moon naopak nem\u00e1 intern\u00fd stav a m\u00f4\u017ee by\u0165 replikovan\u00fd naprie\u010d d\u00e1tov\u00fdmi centrami. Rel\u00e1cie prehliada\u010da zost\u00e1vaj\u00fa akt\u00edvne, aj ke\u010f jedna alebo viac repl\u00edk zlyh\u00e1.<\/p><\/blockquote>\n<p>Tak\u017ee, Moon je skvel\u00e9 rie\u0161enie, ale m\u00e1 jeden probl\u00e9m \u2014 nie je zadarmo. Cena z\u00e1vis\u00ed od po\u010dtu rel\u00e1ci\u00ed. Bezplatne m\u00f4\u017eete spusti\u0165 iba 0-4 rel\u00e1cie, \u010do nie je ve\u013emi u\u017eito\u010dn\u00e9. Av\u0161ak od piatej rel\u00e1cie budete musie\u0165 zaplati\u0165 5$ za ka\u017ed\u00fa. Situ\u00e1cia sa m\u00f4\u017ee l\u00ed\u0161i\u0165 od spolo\u010dnosti k spolo\u010dnosti, ale v na\u0161om pr\u00edpade je pou\u017e\u00edvanie Moon bezv\u00fdznamn\u00e9. Ako som u\u017e op\u00edsal, m\u00f4\u017eeme spusti\u0165 VMs so Selenium Grid na po\u017eiadanie alebo zv\u00fd\u0161i\u0165 po\u010det uzlov v klastri. Pribli\u017ene na jeden pipeline sp\u00fa\u0161\u0165ame 500 prehliada\u010dov a zastavujeme v\u0161etky zdroje po dokon\u010den\u00ed testov. Keby sme pou\u017e\u00edvali Moon, museli by sme zaplati\u0165 \u010fal\u0161\u00edch 500 x 5 = 2500 $ mesa\u010dne, a nez\u00e1le\u017e\u00ed na tom, ako \u010dasto sp\u00fa\u0161\u0165ame testy. A znova, nehovor\u00edm \"nepou\u017e\u00edvajte Moon\". Pre va\u0161e \u00falohy to m\u00f4\u017ee by\u0165 neocenite\u013en\u00e9 rie\u0161enie, napr\u00edklad ak m\u00e1te v\u00a0organiz\u00e1cii ve\u013ea projektov\/t\u00edmov a potrebujete obrovsk\u00fd spolo\u010dn\u00fd klastra pre v\u0161etk\u00fdch. Ako v\u017edy, zanech\u00e1vam odkaz na konci a odpor\u00fa\u010dam vykona\u0165 v\u0161etky potrebn\u00e9 v\u00fdpo\u010dty v kontexte va\u0161ej \u00falohy.<\/p>\n<p><u>Callisto<\/u>: (<i><strong>Pozor! Toto nie je v origin\u00e1lnom \u010dl\u00e1nku a je obsiahnut\u00e9 iba v ruskom preklade<\/strong><\/i>)<\/p>\n<p>Ako som povedal, Selenium je ve\u013emi popul\u00e1rny n\u00e1stroj a oblas\u0165 IT sa r\u00fdchlo rozv\u00edja. K\u00fdm som pracoval na preklade, na internete sa objavil nov\u00fd s\u013eubn\u00fd n\u00e1stroj Callisto (ahoj Cypress a \u010fal\u0161\u00edm zabijakom Selenium). Pracuje nativne s K8s a umo\u017e\u0148uje sp\u00fa\u0161\u0165a\u0165 Selenoid kontajnery v pods, distribuovane po Nodes. V\u0161etko funguje hne\u010f po vybalen\u00ed, vr\u00e1tane automatick\u00e9ho \u0161k\u00e1lovania. Fant\u00e1zia, ale treba to otestova\u0165. U\u017e som sa podaril nasadi\u0165 tento n\u00e1stroj a vykona\u0165 nieko\u013eko experimentov. Av\u0161ak, je e\u0161te priskoro na z\u00e1very, po z\u00edskan\u00ed v\u00fdsledkov na dlh\u00fa tra\u0165, mo\u017eno urob\u00edm preh\u013ead v nasleduj\u00facich \u010dl\u00e1nkoch. Zatia\u013e zanech\u00e1vam len odkazy na samostatn\u00e9 v\u00fdskumy.\u00a0\u00a0<\/p>\n<h3>Ilustr\u00e1cia aktu\u00e1lneho stavu infra\u0161trukt\u00fary<\/p>\n<h3><img decoding=\"async\" alt=\"N\u00e1stroje DevOps nie s\u00fa len pre DevOps. Proces budovania infra\u0161trukt\u00fary automatiz\u00e1cie testovania od z\u00e1kladov.\" src=\"\/wp-content\/uploads\/2020\/04\/c9c2ffd21df2a261947df809dcec7108.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Odkazy na \u0161t\u00fadium<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/setup\/\">Kubernetes: nastavenie<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kelseyhightower\/kubernetes-the-hard-way\">Kubernetes: \u0165a\u017ek\u00e1 cesta<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/examples\/tree\/master\/staging\/selenium\">Kubernetes: Selenium<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/kubernetes-engine\">GCP: Kubernetes engine<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/aerokube.com\/moon\/latest\/\">Moon<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/Kubernetes-Book-Version-November-2018-ebook\/dp\/B072TS9ZQZ\/ref=pd_sim_351_1\/147-1129855-1615632?_encoding=UTF8&amp;pd_rd_i=B072TS9ZQZ&amp;pd_rd_r=489f0d27-dd2c-4e33-b23c-a420affcba5d&amp;pd_rd_w=HLjs5&amp;pd_rd_wg=eGbU7&amp;pf_rd_p=bab57536-7c8f-4781-a8ed-3e270b9cd303&amp;pf_rd_r=G71DN3V8127KHPXQ6JFN&amp;psc=1&amp;refRID=G71DN3V8127KHPXQ6JFN\">Kubernetes kniha<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=MmdGyqNqs9w\">Distribuovan\u00e1 automatiz\u00e1cia pomocou Kubernetes<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/SeleniumHQ\/selenium\/wiki\/Selenium-Grid-4\">Selenium Grid 4<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wrike\/callisto\">Callisto GitHub<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/software-testing.ru\/events\/review\/3317-wrike-techclub\">Wrike TechClub (Callisto)<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Podobn\u00e9 n\u00e1stroje<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/get-started\/swarm-deploy\/\">Docker swarm<\/a><\/noindex>\u00a0<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/mesosphere.github.io\/marathon\/\">Marathon<\/a><\/noindex>\u00a0<\/li>\n<\/ul>\n<p><\/p>\n<h2>7. Infrastrukt\u00fara ako k\u00f3d (IaC)<\/h2>\n<p><\/p>\n<h3>Stru\u010dn\u00e9 zhrnutie technol\u00f3gie<\/h3>\n<p>\n A tu sme sa dostali k poslednej sekcii. Zvy\u010dajne t\u00e1to technol\u00f3gia a s \u0148ou s\u00favisiace \u00falohy nepatria do zodpovednosti in\u017einierov pre automatiz\u00e1ciu. A na to s\u00fa svoje d\u00f4vody. Po prv\u00e9, v mnoh\u00fdch organiz\u00e1ci\u00e1ch s\u00fa infra\u0161trukt\u00farne ot\u00e1zky pod kontrolou oddelenia DevOps a t\u00edm v\u00fdvoja sa ve\u013emi nezauj\u00edma o to, v\u010faka \u010domu funguje pipeline a ak\u00fdm sp\u00f4sobom je potrebn\u00e9 udr\u017eiava\u0165 v\u0161etko, \u010do s t\u00fdm s\u00favis\u00ed. Po druh\u00e9, bu\u010fme \u00faprimn\u00ed, prax 'Infrastrukt\u00fara ako k\u00f3d (IaC)' sa st\u00e1le e\u0161te v mnoh\u00fdch spolo\u010dnostiach nepou\u017e\u00edva. Ale rozhodne sa to stalo popul\u00e1rnym trendom a je d\u00f4le\u017eit\u00e9 sna\u017ei\u0165 sa by\u0165 zapojen\u00fd do s\u00favisiacich procesov, pr\u00edstupov a n\u00e1strojov. Alebo, aspo\u0148, by\u0165 informovan\u00fd o dian\u00ed.<\/p>\n<p>Za\u010dneme motiv\u00e1ciou na vyu\u017eitie tohto pr\u00edstupu. U\u017e sme diskutovali o tom, \u017ee na spustenie testov v GitlabCI potrebujeme minim\u00e1lne zdroje na spustenie Gitlab Runnera. A na spustenie kontajnerov s prehliada\u010dmi\/emul\u00e1tormi mus\u00edme rezervova\u0165 VM alebo klaster. Okrem prostriedkov na testovanie potrebujeme zna\u010dn\u00e9 mno\u017estvo v\u00fdkonu na udr\u017eanie v\u00fdvojov\u00e9ho, staging a produk\u010dn\u00e9ho prostredia, \u010do zah\u0155\u0148a aj datab\u00e1zy, automatick\u00e9 pl\u00e1novanie, konfigur\u00e1cie siete, vyva\u017eova\u010d z\u00e1\u0165a\u017ee, pr\u00e1va pou\u017e\u00edvate\u013eov a tak \u010falej. K\u013e\u00fa\u010dov\u00fdm probl\u00e9mom s\u00fa \u00fasilie potrebn\u00e9 na podporu tohto v\u0161etk\u00e9ho. Existuje nieko\u013eko sp\u00f4sobov, ako m\u00f4\u017eeme vykon\u00e1va\u0165 zmeny a zav\u00e1dza\u0165 aktualiz\u00e1cie. Napr\u00edklad, v kontexte GCP m\u00f4\u017eeme vyu\u017ei\u0165 UI konzolu v prehliada\u010di a vykon\u00e1va\u0165 v\u0161etky akcie kliknut\u00edm na tla\u010didl\u00e1. Alternat\u00edvnym sp\u00f4sobom m\u00f4\u017ee by\u0165 pou\u017e\u00edvanie API volan\u00ed na interakciu s cloudov\u00fdmi entitami alebo aplik\u00e1cia n\u00e1stroja pr\u00edkazov\u00e9ho riadku gcloud na vykon\u00e1vanie potrebn\u00fdch manipul\u00e1ci\u00ed. Ale pri naozaj ve\u013ekom po\u010dte r\u00f4znych ent\u00edt a infrastrukturn\u00fdch prvkov sa st\u00e1va \u0165a\u017ek\u00e9 alebo dokonca nemo\u017en\u00e9 vykon\u00e1va\u0165 v\u0161etky oper\u00e1cie manu\u00e1lne. Navy\u0161e, v\u0161etky tieto manu\u00e1lne \u00fakony s\u00fa nekontrolovate\u013en\u00e9. Nem\u00f4\u017eeme ich posla\u0165 na rev\u00edziu pred vykonan\u00edm, pou\u017e\u00edva\u0165 syst\u00e9m spr\u00e1vy verzi\u00ed a r\u00fdchlo vr\u00e1ti\u0165 zmeny, ktor\u00e9 viedli k incidentu. Na rie\u0161enie tak\u00fdchto probl\u00e9mov in\u017einieri vytv\u00e1rali a vytv\u00e1raj\u00fa automatick\u00e9 bash\/shell skripty, \u010do nie je o ve\u013ea lep\u0161ie ako predch\u00e1dzaj\u00face met\u00f3dy, preto\u017ee nie s\u00fa \u013eahko \u010ditate\u013en\u00e9, pochopite\u013en\u00e9, udr\u017eiavate\u013en\u00e9 a modifikovate\u013en\u00e9 v procedur\u00e1lnom \u0161t\u00fdle.<\/p>\n<p>V tomto \u010dl\u00e1nku a praktickej pr\u00edru\u010dke pou\u017e\u00edvam 2 n\u00e1stroje, ktor\u00e9 sa t\u00fdkaj\u00fa praxe IaC. Tieto n\u00e1stroje s\u00fa Terraform a Ansible. Niektor\u00ed sa domnievaj\u00fa, \u017ee nem\u00e1 zmysel ich pou\u017e\u00edva\u0165 s\u00fa\u010dasne, preto\u017ee ich funkcie s\u00fa podobn\u00e9 a s\u00fa zamie\u0148ate\u013en\u00e9. Ale skuto\u010dnos\u0165 je tak\u00e1, \u017ee p\u00f4vodne s\u00fa pred nimi kladen\u00e9 \u00faplne in\u00e9 \u00falohy. A fakt, \u017ee by sa tieto n\u00e1stroje mali navz\u00e1jom doplni\u0165, bol potvrden\u00fd na spolo\u010dnej prezent\u00e1cii v\u00fdvoj\u00e1rov zastupuj\u00facich spolo\u010dnosti HashiCorp a RedHat. Konceptu\u00e1lny rozdiel spo\u010d\u00edva v tom, \u017ee Terraform je provisioning n\u00e1stroj na spr\u00e1vu samotn\u00fdch serverov. Zatia\u013e \u010do Ansible je n\u00e1stroj na spr\u00e1vu konfigur\u00e1ci\u00ed, ktor\u00e9ho \u00falohou je in\u0161tal\u00e1cia, nastavenie a spr\u00e1va softv\u00e9ru na t\u00fdchto serveroch.<\/p>\n<p>\u010eal\u0161ou k\u013e\u00fa\u010dovou odli\u0161ovacou vlastnos\u0165ou t\u00fdchto n\u00e1strojov je \u0161t\u00fdl p\u00edsania k\u00f3du. Na rozdiel od bash a Ansible, Terraform pou\u017e\u00edva deklarat\u00edvny \u0161t\u00fdl, zalo\u017een\u00fd na opise \u017eelan\u00e9ho kone\u010dn\u00e9ho stavu, ktor\u00fd je potrebn\u00e9 dosiahnu\u0165 vykonan\u00edm. Napr\u00edklad, ak m\u00e1me v pl\u00e1ne vytvori\u0165 10 VM a aplikova\u0165 zmeny cez Terraform, dostaneme 10 VM. Pri opakovan\u00ed skriptu sa ni\u010d nestane, preto\u017ee u\u017e m\u00e1me 10 VM, a Terraform o tom vie, preto\u017ee uchov\u00e1va aktu\u00e1lny stav infra\u0161trukt\u00fary v state s\u00fabore. Av\u0161ak Ansible pou\u017e\u00edva procedur\u00e1lny pr\u00edstup a ak ho po\u017eiadame o vytvorenie 10 VM, pri prvom spusten\u00ed dostaneme 10 VM, podobne ako v pr\u00edpade Terraform. Ale pri opakovan\u00ed u\u017e budeme ma\u0165 20 VM. V tom je to d\u00f4le\u017eit\u00e9 odl\u00ed\u0161enie. V procedur\u00e1lnom \u0161t\u00fdle neuchov\u00e1vame aktu\u00e1lny stav a jednoducho popisujeme sekvenciu krokov, ktor\u00e9 je potrebn\u00e9 vykona\u0165. Samozrejme, m\u00f4\u017eeme spracova\u0165 r\u00f4zne situ\u00e1cie, prida\u0165 nieko\u013eko kontrol na existenciu zdrojov a aktu\u00e1lny stav, ale nem\u00e1 zmysel tr\u00e1vi\u0165 n\u00e1\u0161 \u010das a \u00fasilie kontrolovan\u00edm tejto logiky. Okrem toho to zvy\u0161uje riziko ch\u00fdb.\u00a0<\/p>\n<p>Zhrnut\u00edm v\u0161etk\u00e9ho vy\u0161\u0161ie uveden\u00e9ho m\u00f4\u017eeme dospie\u0165 k z\u00e1veru, \u017ee pre provisioning serverov je vhodnej\u0161\u00edm n\u00e1strojom Terraform a deklarat\u00edvna not\u00e1cia. Na pr\u00e1cu so spr\u00e1vou konfigur\u00e1ci\u00ed je lep\u0161ie delegova\u0165 \u00falohu na Ansible. Po vyjasnen\u00ed tohto, pozrime sa na pr\u00edklady pou\u017eitia v kontexte automatiz\u00e1cie.<\/p>\n<h3>Hodnota pre automatiza\u010dn\u00fa infra\u0161trukt\u00faru<\/h3>\n<p>\n Tu je d\u00f4le\u017eit\u00e9 ch\u00e1pa\u0165, \u017ee infra\u0161trukt\u00fara automatiz\u00e1cie testovania by sa mala pova\u017eova\u0165 za s\u00fa\u010das\u0165 celej infra\u0161trukt\u00fary spolo\u010dnosti. To znamen\u00e1, \u017ee v\u0161etky praktiky IaC by sa mali glob\u00e1lne aplikova\u0165 na zdroje celej organiz\u00e1cie. Kto za to zodpoved\u00e1, z\u00e1vis\u00ed od va\u0161ich procesov. DevOps t\u00edm m\u00e1 viac sk\u00fasenost\u00ed v t\u00fdchto ot\u00e1zkach, vid\u00ed celkov\u00fd obraz. Av\u0161ak QA in\u017einieri s\u00fa viac zapojen\u00ed do procesu budovania automatiz\u00e1cie a \u0161trukt\u00fary pipeline, \u010do im umo\u017e\u0148uje lep\u0161ie vidie\u0165 v\u0161etky po\u017eadovan\u00e9 zmeny a mo\u017enosti na zlep\u0161enie. Najlep\u0161\u00ed variant je pracova\u0165 spolo\u010dne, zdie\u013ea\u0165 vedomosti a n\u00e1pady na dosiahnutie o\u010dak\u00e1van\u00e9ho v\u00fdsledku.\u00a0<\/p>\n<p>Uvediem nieko\u013eko pr\u00edkladov pou\u017eitia Terraform a Ansible v kontexte automatiz\u00e1cie testovania a n\u00e1strojov, ktor\u00e9 sme predt\u00fdm diskutovali:<\/p>\n<p>1. Op\u00edsa\u0165 cez Terraform potrebn\u00e9 charakteristiky a parametre VM a klastrov.<\/p>\n<p>2. Nain\u0161talova\u0165 pomocou Ansible potrebn\u00e9 n\u00e1stroje na testovanie: docker, Selenoid, Selenium Grid a stiahnu\u0165 potrebn\u00e9 verzie prehliada\u010dov\/emul\u00e1torov.<\/p>\n<p>3. Op\u00edsa\u0165 cez Terraform charakteristiky VM, v ktorej bude spusten\u00fd GitLab Runner.<\/p>\n<p>4. Nain\u0161talova\u0165 pomocou Ansible GitLab Runner a potrebn\u00e9 sprievodn\u00e9 n\u00e1stroje, nastavi\u0165 konfigura\u010dn\u00e9 parametre a nastavenia.<\/p>\n<h3>Ilustr\u00e1cia aktu\u00e1lneho stavu infra\u0161trukt\u00fary<\/h3>\n<p>\n<img decoding=\"async\" alt=\"N\u00e1stroje DevOps nie s\u00fa len pre DevOps. Proces budovania infra\u0161trukt\u00fary automatiz\u00e1cie testovania od z\u00e1kladov.\" src=\"\/wp-content\/uploads\/2020\/04\/5d793a800a4ef62e181e6cb3a3f0544e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Odkazy na \u0161t\u00fadium:<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.terraform.io\/\">Terraform<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.ansible.com\/\">Ansible<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.hashicorp.com\/resources\/ansible-terraform-better-together\">Ansible a Terraform lep\u0161ie spolu<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/blog.gruntwork.io\/a-comprehensive-guide-to-terraform-b3d32832baca\">Komplexn\u00fd sprievodca Terraform<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/blog.gruntwork.io\/why-we-use-terraform-and-not-chef-puppet-ansible-saltstack-or-cloudformation-7989dad2865c\">Pre\u010do pou\u017e\u00edvame Terraform a nie Chef, Puppet, Ansible, SaltStack alebo CloudFormation<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/solutions\/infrastructure-as-code\">GCP: IaC<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Podobn\u00e9 n\u00e1stroje<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.chef.io\/\">Chef<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/puppet.com\/\">Puppet<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/saltstack.com\/\">SaltStack<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.vagrantup.com\/\">Vagrant<\/a><\/noindex><\/li>\n<\/ul>\n<h2>Zhr\u0148me to!<\/h2>\n<p><\/p>\n<p><strong>Krok<\/strong><br \/>\n<strong>Technol\u00f3gia<\/strong><br \/>\n<strong>N\u00e1stroje<\/strong><br \/>\n<strong>Hodnota pre automatiza\u010dn\u00fa infra\u0161trukt\u00faru<\/strong><\/p>\n<p><strong>1<\/strong><br \/>\nLok\u00e1lne sp\u00fa\u0161\u0165anie<br \/>\nNode.js, Selenium, Appium<\/p>\n<ul>\n<li>Najpopul\u00e1rnej\u0161ie n\u00e1stroje pre web a mobil<\/li>\n<li>Podpora mnoh\u00fdch jazykov a platforiem (vr\u00e1tane Node.js)<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>2<\/strong><br \/>\nSyst\u00e9my spr\u00e1vy verzi\u00ed\u00a0<br \/>\nGit<\/p>\n<ul>\n<li>Podobn\u00e9 v\u00fdhody s v\u00fdvojov\u00fdm k\u00f3dom<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>3<\/strong><br \/>\nKontajneriz\u00e1cia<br \/>\nDocker, Selenium grid, Selenoid (Web, Android)<\/p>\n<ul>\n<li>Paraleln\u00e9 sp\u00fa\u0161\u0165anie testov<\/li>\n<li>Izolovan\u00e9 prostredia<\/li>\n<li>Jednoduch\u00e9, flexibiln\u00e9 aktualiz\u00e1cie verzi\u00ed<\/li>\n<li>Dynamick\u00e9 zastavenie nepou\u017e\u00edvan\u00fdch zdrojov<\/li>\n<li>\u013dahko sa nastavuje<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>4<\/strong><br \/>\nCI \/ CD<br \/>\nGitlab CI<\/p>\n<ul>\n<li>Testy s\u00fa s\u00fa\u010das\u0165ou konveja<\/li>\n<li>R\u00fdchla sp\u00e4tn\u00e1 v\u00e4zba<\/li>\n<li>Vidite\u013enos\u0165 pre cel\u00fa spolo\u010dnos\u0165\/t\u00edm<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>5<\/strong><br \/>\nCloudov\u00e9 platformy<br \/>\nGoogle Cloud Platform<\/p>\n<ul>\n<li>Prostredky na po\u017eiadanie (plat\u00edme len vtedy, ke\u010f s\u00fa potrebn\u00e9)<\/li>\n<li>\u013dahko sa spravuje a aktualizuje<\/li>\n<li>Vidite\u013enos\u0165 a kontrola v\u0161etk\u00fdch zdrojov<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>6<\/strong><br \/>\nOrkestr\u00e1cia<br \/>\nKubernetes<br \/>\nV kontexte kontajnerov s prehliada\u010dmi\/emul\u00e1tormi vo vn\u00fatri pods:<\/p>\n<ul>\n<li>\u0160k\u00e1lovanie \/ automatick\u00e9 \u0161k\u00e1lovanie<\/li>\n<li>Samovzpr\u00e1vovanie<\/li>\n<li>Aktualiz\u00e1cie a vracania bez preru\u0161enia<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>7<\/strong><br \/>\nInfrastrukt\u00fara ako k\u00f3d (IaC)<br \/>\nTerraform, Ansible<\/p>\n<ul>\n<li>Podobn\u00e9 v\u00fdhody s v\u00fdvojovou infra\u0161trukt\u00farou<\/li>\n<li>V\u0161etky v\u00fdhody verzovania k\u00f3du<\/li>\n<li>\u013dahko prisp\u00f4sobite\u013en\u00e9 a udr\u017eiavate\u013en\u00e9<\/li>\n<li>\u00daplne automatizovan\u00e9<\/li>\n<\/ul>\n<p><\/p>\n<h2>My\u0161lienkov\u00e1 mapa: evol\u00facia infra\u0161trukt\u00fary<\/h2>\n<p>\nkrok 1: Miestne<br \/>\n<img decoding=\"async\" alt=\"N\u00e1stroje DevOps nie s\u00fa len pre DevOps. Proces budovania infra\u0161trukt\u00fary automatiz\u00e1cie testovania od z\u00e1kladov.\" src=\"\/wp-content\/uploads\/2020\/04\/507908ba097a603adc3b301ab2f94a8d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>krok 2: VCS<br \/>\n<img decoding=\"async\" alt=\"N\u00e1stroje DevOps nie s\u00fa len pre DevOps. Proces budovania infra\u0161trukt\u00fary automatiz\u00e1cie testovania od z\u00e1kladov.\" src=\"\/wp-content\/uploads\/2020\/04\/71c5170293d98375d8ab86d05eb47a33.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>krok 3: Kontajneriz\u00e1cia\u00a0<br \/>\n<img decoding=\"async\" alt=\"N\u00e1stroje DevOps nie s\u00fa len pre DevOps. Proces budovania infra\u0161trukt\u00fary automatiz\u00e1cie testovania od z\u00e1kladov.\" src=\"\/wp-content\/uploads\/2020\/04\/da33442a592851e07c3f5800c3ee9ead.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>krok 4: CI\/CD\u00a0<br \/>\n<img decoding=\"async\" alt=\"N\u00e1stroje DevOps nie s\u00fa len pre DevOps. Proces budovania infra\u0161trukt\u00fary automatiz\u00e1cie testovania od z\u00e1kladov.\" src=\"\/wp-content\/uploads\/2020\/04\/900f18b45124412a1ad00d3901efb40e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>krok 5: Cloudov\u00e9 platformy<br \/>\n<img decoding=\"async\" alt=\"N\u00e1stroje DevOps nie s\u00fa len pre DevOps. Proces budovania infra\u0161trukt\u00fary automatiz\u00e1cie testovania od z\u00e1kladov.\" src=\"\/wp-content\/uploads\/2020\/04\/840e5063141ac8787612e2fc46b5d690.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>krok 6: Orchestr\u00e1cia<br \/>\n<img decoding=\"async\" alt=\"N\u00e1stroje DevOps nie s\u00fa len pre DevOps. Proces budovania infra\u0161trukt\u00fary automatiz\u00e1cie testovania od z\u00e1kladov.\" src=\"\/wp-content\/uploads\/2020\/04\/4651b552efdc893695cbf359c6992e9e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>krok 7: IaC<br \/>\n<img decoding=\"async\" alt=\"N\u00e1stroje DevOps nie s\u00fa len pre DevOps. Proces budovania infra\u0161trukt\u00fary automatiz\u00e1cie testovania od z\u00e1kladov.\" src=\"\/wp-content\/uploads\/2020\/04\/e784130f570260fc6c3aa263916e3db5.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>\u010co \u010falej?<\/h2>\n<p>\nTak\u017ee, toto je koniec \u010dl\u00e1nku. Na z\u00e1ver by som r\u00e1d stanovil niektor\u00e9 dohody s vami.<\/p>\n<p><u>Z va\u0161ej strany<\/u><br \/>\n Ako som povedal na za\u010diatku, chcem, aby \u010dl\u00e1nok mal praktick\u00fa hodnotu a pomohol v\u00e1m aplikova\u0165 z\u00edskan\u00e9 vedomosti v re\u00e1lnom svete. E\u0161te raz posielam<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/AlexeyAltunin\/devops-tools-for-qa-automation-infrastructure\"> odkaz na praktick\u00fa pr\u00edru\u010dku<\/a><\/noindex>.<\/p>\n<p>Ale ani potom sa nezastavujte, cvi\u010dte, presk\u00famajte relevantn\u00e9 odkazy a knihy, zistite, ako to funguje vo va\u0161ej spolo\u010dnosti, n\u00e1jdite sp\u00f4soby, ako to zlep\u0161i\u0165, a zapojte sa do toho. Ve\u013ea \u0161\u0165astia!<\/p>\n<p><u>Z mojej strany<\/u><\/p>\n<p>Z nadpisu je jasn\u00e9, \u017ee to bola iba prv\u00e1 \u010das\u0165. Napriek tomu, \u017ee je pomerne rozsiahla, st\u00e1le tu zost\u00e1vaj\u00fa d\u00f4le\u017eit\u00e9 t\u00e9my, ktor\u00e9 neboli vyjadren\u00e9. V druhej \u010dasti pl\u00e1nujem presk\u00fama\u0165 infra\u0161trukt\u00faru automatiz\u00e1cie v kontexte IOS. Kv\u00f4li obmedzeniam Apple t\u00fdkaj\u00facemu sa sp\u00fa\u0161\u0165ania IOS simul\u00e1torov iba na macOS syst\u00e9mov, s\u00fa na\u0161e rie\u0161enia obmedzen\u00e9. Napr\u00edklad sme zbaven\u00ed mo\u017enosti pou\u017e\u00edva\u0165 Docker na spustenie simul\u00e1tora alebo verejn\u00fdch cloudov na spustenie virtu\u00e1lnych strojov. Ale to neznamen\u00e1, \u017ee neexistuj\u00fa in\u00e9 alternat\u00edvy. Sna\u017e\u00edm sa udr\u017ea\u0165 v\u00e1s informovan\u00fdch o najnov\u0161\u00edch rie\u0161eniach a modern\u00fdch n\u00e1strojoch!<\/p>\n<p>Tie\u017e som nespomenul celkom rozsiahle t\u00e9my spojen\u00e9 s monitoringom. V tretej \u010dasti sa pl\u00e1nujem venova\u0165 najpopul\u00e1rnej\u0161\u00edm n\u00e1strojom na monitoring infra\u0161trukt\u00fary a ak\u00e9 d\u00e1ta a metriky by sme mali zv\u00e1\u017ei\u0165.<\/p>\n<p>A napokon. V bud\u00facnosti pl\u00e1nujem vydanie video kurzu o budovan\u00ed testovacej infra\u0161trukt\u00fary a popul\u00e1rnych n\u00e1strojoch. V s\u00fa\u010dasnosti je vo svete ve\u013ea kurzov a predn\u00e1\u0161ok o DevOps, ale v\u0161etky materi\u00e1ly s\u00fa zameran\u00e9 na v\u00fdvoj, nie na automatiz\u00e1ciu testovania. V tejto ot\u00e1zke ve\u013emi potrebujem sp\u00e4tn\u00fa v\u00e4zbu, \u010di by tak\u00fd kurz bol zauj\u00edmav\u00fd a cenn\u00fd pre komunitu testerov a automatiz\u00e1torov. Vopred \u010fakujem!<\/h3>\n<\/h3>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/497918\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0427\u0430\u0441\u0442\u044c 1: Web \/ Android \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438\u00a0\u00abDevOps tools are not only for DevOps. Building test automation infrastructure from scratch\u00bb. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u0441\u0435 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438, \u0441\u0441\u044b\u043b\u043a\u0438, \u0446\u0438\u0442\u0430\u0442\u044b \u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0430, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043c\u044b\u0441\u043b\u0430 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a. \u0416\u0435\u043b\u0430\u044e \u0432\u0430\u043c \u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0433\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f! \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":78677,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-78676","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=\"\u0427\u0430\u0441\u0442\u044c 1: Web \/ Android \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\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\/devops-instrumenty-ne-tolko-dlya-devops-proczess-postroeniya-infrastruktury-avtomatizaczii-testirovaniya-s-nulya\" \/>\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\udd47DevOps \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f DevOps. \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441 \u043d\u0443\u043b\u044f | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0427\u0430\u0441\u0442\u044c 1: Web \/ Android \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/devops-instrumenty-ne-tolko-dlya-devops-proczess-postroeniya-infrastruktury-avtomatizaczii-testirovaniya-s-nulya\" \/>\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=\"2020-04-21T05:42:22+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-04-21T05:42:22+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\udd47DevOps n\u00e1stroje nie s\u00fa len pre DevOps. Proces budovania infra\u0161trukt\u00fary automatiz\u00e1cie testovania od nuly | ProHoster","description":"\u010cas\u0165 1: Web \/ Android Pozn\u00e1mka: tento \u010dl\u00e1nok je prekladom origin\u00e1lneho \u010dl\u00e1nku do sloven\u010diny","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/devops-instrumenty-ne-tolko-dlya-devops-proczess-postroeniya-infrastruktury-avtomatizaczii-testirovaniya-s-nulya","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\udd47DevOps \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f DevOps. \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441 \u043d\u0443\u043b\u044f | ProHoster","og:description":"\u0427\u0430\u0441\u0442\u044c 1: Web \/ Android \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438","og:url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/devops-instrumenty-ne-tolko-dlya-devops-proczess-postroeniya-infrastruktury-avtomatizaczii-testirovaniya-s-nulya","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":"2020-04-21T05:42:22+00:00","article:modified_time":"2020-04-21T05:42:22+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"78676","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 16:53:59","updated":"2022-10-05 06:14:03","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\/78676","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=78676"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/78676\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/78677"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=78676"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=78676"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=78676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}