{"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\/hu\/blog\/administrirovanie\/devops-instrumenty-ne-tolko-dlya-devops-proczess-postroeniya-infrastruktury-avtomatizaczii-testirovaniya-s-nulya","title":{"rendered":"A DevOps eszk\u00f6z\u00f6k nemcsak a DevOps sz\u00e1m\u00e1ra k\u00e9sz\u00fcltek. Az automatiz\u00e1lt tesztel\u00e9si infrastrukt\u00fara fel\u00e9p\u00edt\u00e9se a null\u00e1r\u00f3l.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>1. r\u00e9sz: Web \/ Android<\/h1>\n<p>\n <u>Megjegyz\u00e9s<\/u>: <i>ez a cikk az eredeti cikk magyar nyelv\u0171 ford\u00edt\u00e1sa\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>A DevOps eszk\u00f6z\u00f6k nemcsak a DevOps sz\u00e1m\u00e1ra k\u00e9sz\u00fcltek. Az automatiz\u00e1lt tesztel\u00e9si infrastrukt\u00fara fel\u00e9p\u00edt\u00e9se a null\u00e1r\u00f3l.<\/i><\/a><\/noindex><i> Fontos megjegyezni, hogy minden illusztr\u00e1ci\u00f3, hivatkoz\u00e1s, id\u00e9zet \u00e9s kifejez\u00e9s az eredeti nyelven maradt, hogy elker\u00fclj\u00fck a jelent\u00e9s torzul\u00e1s\u00e1t a magyarra ford\u00edt\u00e1s sor\u00e1n. Kellemes tanul\u00e1st k\u00edv\u00e1nok!<\/i><\/p>\n<p><img decoding=\"async\" alt=\"A DevOps eszk\u00f6z\u00f6k nemcsak a DevOps sz\u00e1m\u00e1ra k\u00e9sz\u00fcltek. Az automatiz\u00e1lt tesztel\u00e9si infrastrukt\u00fara fel\u00e9p\u00edt\u00e9se a null\u00e1r\u00f3l.\" 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 Jelenleg a DevOps szakma az egyik legkeresettebb az IT iparban. Ha n\u00e9pszer\u0171 \u00e1ll\u00e1skeres\u0151 oldalakat nyit meg, \u00e9s a fizet\u00e9sek alapj\u00e1n sz\u0171r, l\u00e1thatja, hogy a DevOps-szal kapcsolatos \u00e1ll\u00e1sok a lista elej\u00e9n szerepelnek. Fontos azonban meg\u00e9rteni, hogy ez f\u0151k\u00e9nt a 'Senior' poz\u00edci\u00f3kra vonatkozik, ami azt jelenti, hogy a jel\u00f6lt magas szint\u0171 szak\u00e9rtelemmel \u00e9s technol\u00f3giai ismeretekkel rendelkezik. Ehhez magas fok\u00fa felel\u0151ss\u00e9g is t\u00e1rsul, amely a folyamatos production m\u0171k\u00f6d\u00e9s\u00e9vel j\u00e1r. Azonban hajlamosak vagyunk elfelejteni, hogy mi is a DevOps. Kezdetben nem volt egy konkr\u00e9t szem\u00e9ly vagy oszt\u00e1ly. Ha megkeress\u00fck ennek a kifejez\u00e9snek a meghat\u00e1roz\u00e1sait, sok sz\u00e9p \u00e9s helyes f\u0151nevet tal\u00e1lunk, p\u00e9ld\u00e1ul metodol\u00f3gia, gyakorlatok, kultur\u00e1lis filoz\u00f3fia, fogalomcsoportok stb.<\/p>\n<p>A szakter\u00fcletem a tesztel\u00e9si automatiz\u00e1l\u00e1s m\u00e9rn\u00f6ke (QA automation engineer), de \u00fagy gondolom, hogy ez nem csup\u00e1n az automatikus tesztek \u00edr\u00e1s\u00e1ra vagy a tesztkeretrendszer fejleszt\u00e9s\u00e9re vonatkozik. 2020-ban az automatiz\u00e1l\u00e1si infrastrukt\u00fara tud\u00e1sa is elengedhetetlen. Ez lehet\u0151v\u00e9 teszi, hogy \u00f6n\u00e1ll\u00f3an szervezze meg az automatiz\u00e1l\u00e1si folyamatot, a tesztek futtat\u00e1s\u00e1t\u00f3l kezdve a resultatenek minden \u00e9rdekelt f\u00e9l sz\u00e1m\u00e1ra t\u00f6rt\u00e9n\u0151 bemutat\u00e1s\u00e1ig az el\u0151\u00edrt c\u00e9loknak megfelel\u0151en. Ennek eredm\u00e9nyek\u00e9ppen a DevOps k\u00e9szs\u00e9gek k\u00f6telez\u0151 t\u00e9nyez\u0151k a munkak\u00f6r bet\u00f6lt\u00e9s\u00e9hez. Mindez sz\u00e9p, de sajnos van egy probl\u00e9ma (<i>spoiler: ez a cikk megpr\u00f3b\u00e1lja leegyszer\u0171s\u00edteni ezt a probl\u00e9m\u00e1t.<\/i>). A DevOps \u00f6sszetett. \u00c9s ez egy\u00e9rtelm\u0171, hiszen a c\u00e9gek nem fognak sokat fizetni az\u00e9rt, amit k\u00f6nnyen meg lehet csin\u00e1lni\u2026 A DevOps vil\u00e1g\u00e1ban sz\u00e1mos eszk\u00f6z, kifejez\u00e9s \u00e9s gyakorlat l\u00e9tezik, amelyeket el kell saj\u00e1t\u00edtani. Ez k\u00fcl\u00f6n\u00f6sen neh\u00e9z lehet a karrier elej\u00e9n, \u00e9s az eddig megszerzett technikai tapasztalatt\u00f3l f\u00fcgg.<\/p>\n<p><img decoding=\"async\" alt=\"A DevOps eszk\u00f6z\u00f6k nemcsak a DevOps sz\u00e1m\u00e1ra k\u00e9sz\u00fcltek. Az automatiz\u00e1lt tesztel\u00e9si infrastrukt\u00fara fel\u00e9p\u00edt\u00e9se a null\u00e1r\u00f3l.\" src=\"\/wp-content\/uploads\/2020\/04\/20712bd4acf881d5346b87f5a2b359d2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nForr\u00e1s: <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>Itt tal\u00e1n befejezz\u00fck az bevezet\u0151 r\u00e9szt, \u00e9s a cikk c\u00e9lj\u00e1ra \u00f6sszpontos\u00edtunk.\u00a0<\/p>\n<h3>Mir\u0151l sz\u00f3l ez a cikk<\/h3>\n<p>\nEbben a cikkben meg fogom osztani a tesztel\u00e9si automatiz\u00e1l\u00e1s infrastrukt\u00far\u00e1j\u00e1nak ki\u00e9p\u00edt\u00e9s\u00e9vel kapcsolatos tapasztalataimat. Az interneten sok inform\u00e1ci\u00f3forr\u00e1s tal\u00e1lhat\u00f3 a k\u00fcl\u00f6nb\u00f6z\u0151 eszk\u00f6z\u00f6kr\u0151l \u00e9s azok haszn\u00e1lat\u00e1r\u00f3l, de \u00e9n szeretn\u00e9m \u0151ket kiz\u00e1r\u00f3lag az automatiz\u00e1l\u00e1s kontextus\u00e1ban megvizsg\u00e1lni. Meggy\u0151z\u0151d\u00e9sem, hogy sok automatiz\u00e1l\u00f3 m\u00e9rn\u00f6k ismeri azt a helyzetet, amikor a kidolgozott teszteket senki m\u00e1s nem futtatja \u00e9s nem t\u00f6r\u0151dik a karbantart\u00e1sukkal, csak ti magatok. Ennek k\u00f6vetkezt\u00e9ben a tesztek elavultt\u00e1 v\u00e1lnak, \u00e9s id\u0151t kell \u00e1ldoznunk a friss\u00edt\u00e9s\u00fckre. Ism\u00e9t, a karrier elej\u00e9n ez meglehet\u0151sen neh\u00e9z feladat lehet: okosan eld\u00f6nteni, hogy mely eszk\u00f6z\u00f6k seg\u00edthetnek megoldani ezt a probl\u00e9m\u00e1t, hogyan v\u00e1lasszuk ki, \u00e1ll\u00edtsuk be \u00e9s t\u00e1mogassuk \u0151ket. N\u00e9h\u00e1ny tesztel\u0151 seg\u00edts\u00e9get k\u00e9r a DevOps-t\u00f3l (emberekt\u0151l), \u00e9s legy\u00fcnk \u0151szint\u00e9k, ez a megk\u00f6zel\u00edt\u00e9s m\u0171k\u00f6dik. Sok esetben ez lehet az egyetlen lehet\u0151s\u00e9g, mivel hi\u00e1nyzik a teljes \u00e1ttekint\u00e9s az \u00f6sszes f\u00fcgg\u0151s\u00e9gr\u0151l. De, ahogy tudjuk, a DevOps nagyon elfoglalt fi\u00fak, hiszen az eg\u00e9sz c\u00e9g infrastrukt\u00far\u00e1j\u00e1n, a telep\u00edt\u00e9sen, a monitoroz\u00e1son, a mikroszolg\u00e1ltat\u00e1sokon \u00e9s hasonl\u00f3 feladatokon kell gondolkodniuk a szervezett\u0151l\/csapatokt\u00f3l f\u00fcgg\u0151en. Ahogy \u00e1ltal\u00e1ban lenni szokott, az automatiz\u00e1l\u00e1s nem priorit\u00e1s. Ilyen esetekben pr\u00f3b\u00e1lnunk kell a lehet\u0151 legjobbat kihozni magunkt\u00f3l az elej\u00e9t\u0151l a v\u00e9g\u00e9ig. Ez cs\u00f6kkenti a f\u00fcgg\u0151s\u00e9geket, felgyors\u00edtja a munkafolyamatot, sim\u00e1bb\u00e1 teszi a k\u00e9szs\u00e9geinket, \u00e9s lehet\u0151v\u00e9 teszi, hogy \u00e1tfog\u00f3bb k\u00e9pet kapjunk arr\u00f3l, ami t\u00f6rt\u00e9nik.<\/p>\n<p>A cikk a legkeresettebb \u00e9s legn\u00e9pszer\u0171bb eszk\u00f6z\u00f6ket mutatja be, valamint azt, hogyan haszn\u00e1lhat\u00f3k l\u00e9p\u00e9sr\u0151l l\u00e9p\u00e9sre az automatiz\u00e1l\u00e1si infrastrukt\u00fara fel\u00e9p\u00edt\u00e9s\u00e9re. Minden csoport olyan eszk\u00f6z\u00f6ket tartalmaz, amelyeket szem\u00e9lyes tapasztalat alapj\u00e1n ellen\u0151riztek. De ez nem jelenti azt, hogy ugyanazt kell haszn\u00e1lnod. Maguk az eszk\u00f6z\u00f6k nem l\u00e9nyegesek, folyamatosan megjelennek \u00e9s elavulnak. M\u00e9rn\u00f6ki feladatunk a alapelvek meg\u00e9rt\u00e9se: mi\u00e9rt van sz\u00fcks\u00e9g erre a csoport eszk\u00f6z\u00f6kre \u00e9s milyen munkafeladatokat oldhatunk meg a seg\u00edts\u00e9g\u00fckkel. Ez\u00e9rt minden szakasz v\u00e9g\u00e9n linkeket hagyok hasonl\u00f3 eszk\u00f6z\u00f6kh\u00f6z, amelyeket esetleg a te szervezetedben is haszn\u00e1lnak.<\/p>\n<h3>Mi hi\u00e1nyzik a cikkb\u0151l<\/h3>\n<p>\nM\u00e9g egyszer hangs\u00falyozom, hogy a cikk nem konkr\u00e9t eszk\u00f6z\u00f6kr\u0151l sz\u00f3l, ez\u00e9rt nem lesznek benne k\u00f3dr\u00e9szletek a dokument\u00e1ci\u00f3b\u00f3l \u00e9s konkr\u00e9t parancsok le\u00edr\u00e1sa. De minden szakasz v\u00e9g\u00e9n linkeket hagyok a r\u00e9szletes tanulm\u00e1nyoz\u00e1shoz.<\/p>\n<p>Ez annak a k\u00f6vetkezm\u00e9nye, hogy:\u00a0<\/p>\n<ul>\n<li>ezt az anyagot nagyon k\u00f6nny\u0171 megtal\u00e1lni k\u00fcl\u00f6nb\u00f6z\u0151 forr\u00e1sokban (dokument\u00e1ci\u00f3, k\u00f6nyvek, vide\u00f3kurzusok);<\/li>\n<li>ha m\u00e9lyebbre \u00e1sunk, akkor 10, 20, 30 r\u00e9szletet kellene \u00edrnom err\u0151l a cikkr\u0151l (m\u00edg \u00e9n 2-3 r\u00e9szre terveztem);<\/li>\n<li>egyszer\u0171en nem szeretn\u00e9m pazarolni az id\u0151det, mivel lehet, hogy m\u00e1s eszk\u00f6z\u00f6ket szeretn\u00e9l haszn\u00e1lni ugyanezen c\u00e9lok el\u00e9r\u00e9s\u00e9hez.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Gyakorlat<\/h3>\n<p>\nNagyon szeretn\u00e9m, ha ez az anyag minden olvas\u00f3nak hasznos lenne, nem csak elolvasva \u00e9s elfelejtve. B\u00e1rmelyik tanulm\u00e1nyoz\u00e1sban a gyakorlat rendk\u00edv\u00fcl fontos elem. Ehhez k\u00e9sz\u00edtettem<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/AlexeyAltunin\/devops-tools-for-qa-automation-infrastructure\"> GitHub-repozit\u00f3riumot egy l\u00e9p\u00e9sr\u0151l l\u00e9p\u00e9sre k\u00e9zik\u00f6nyvvel arr\u00f3l, hogyan v\u00e9gezhetsz mindent null\u00e1r\u00f3l<\/a><\/noindex>. Emellett otthoni feladat v\u00e1r r\u00e1d, hogy biztos lehess benne, hogy nem m\u00e1soltad gondolkod\u00e1s n\u00e9lk\u00fcl a v\u00e9grehajtand\u00f3 parancsokat <\/p>\n<h3>Terv<\/h3>\n<p><\/p>\n<p><strong>L\u00e9p\u00e9s<\/strong><br \/>\n<strong>Technol\u00f3gia<\/strong><br \/>\n<strong>Helyi futtat\u00e1s (web \/ android bemutat\u00f3 tesztek el\u0151k\u00e9sz\u00edt\u00e9se \u00e9s helyi futtat\u00e1suk)<\/strong><\/p>\n<p><strong>1<\/strong><br \/>\nNode.js, Selenium, Appium\u00a0<br \/>\nVerzi\u00f3kezel\u0151 rendszerek<\/p>\n<p><strong>2<\/strong><br \/>\nGit\u00a0<br \/>\nKont\u00e9neriz\u00e1l\u00e1s<\/p>\n<p><strong>3<\/strong><br \/>\nDocker, Selenium grid, Selenoid (Web, Android)<br \/>\nCI \/ CD<\/p>\n<p><strong>4<\/strong><br \/>\nGitlab CI<br \/>\nFelh\u0151platformok<\/p>\n<p><strong>5<\/strong><br \/>\nOrkesztr\u00e1ci\u00f3<br \/>\nGoogle Cloud Platform<\/p>\n<p><strong>6<\/strong><br \/>\nInfrastrukt\u00fara mint k\u00f3d (IaC)<br \/>\nKubernetes<\/p>\n<p><strong>7<\/strong><br \/>\nTerraform, Ansible<br \/>\nMinden szakasz fel\u00e9p\u00edt\u00e9se<\/p>\n<p><\/p>\n<h3>Az elbesz\u00e9l\u00e9s szeml\u00e9letes fenntart\u00e1s\u00e1nak \u00e9rdek\u00e9ben minden szakasz a k\u00f6vetkez\u0151 terv szerint van le\u00edrva:<\/h3>\n<p>\na technol\u00f3gia r\u00f6vid le\u00edr\u00e1sa,<\/p>\n<ul>\n<li>\u00e9rt\u00e9k az automatiz\u00e1l\u00e1si infrastrukt\u00far\u00e1ban,<\/li>\n<li>a jelenlegi infrastrukt\u00fara \u00e1llapot\u00e1nak illusztr\u00e1ci\u00f3ja,<\/li>\n<li>linkek a tanulm\u00e1nyoz\u00e1shoz,<\/li>\n<li>hasonl\u00f3 eszk\u00f6z\u00f6k.<\/li>\n<li>1. Helyi tesztek futtat\u00e1sa<\/li>\n<\/ul>\n<p><\/p>\n<h2>A technol\u00f3gia r\u00f6vid le\u00edr\u00e1sa<\/h2>\n<p><\/p>\n<h3>K\u00f6rvonalazott technol\u00f3gia<\/h3>\n<p>\nEz csup\u00e1n el\u0151k\u00e9sz\u00edt\u0151 l\u00e9p\u00e9s a helyi dem\u00f3tesztek elind\u00edt\u00e1s\u00e1hoz \u00e9s annak ellen\u0151rz\u00e9s\u00e9hez, hogy sikeresen teljes\u00fclnek. A gyakorlati r\u00e9sz Node.js-t haszn\u00e1l, de a programoz\u00e1si nyelv \u00e9s a platform nem l\u00e9nyeges, haszn\u00e1lhatja azokat, amelyek a c\u00e9gn\u00e9l rendelkez\u00e9sre \u00e1llnak.\u00a0<\/p>\n<p>Automatiz\u00e1l\u00e1si eszk\u00f6z\u00f6kk\u00e9nt azonban javaslom a Selenium WebDriver haszn\u00e1lat\u00e1t webplatformokhoz \u00e9s az Appiumot Android-platformhoz, mivel a k\u00f6vetkez\u0151 l\u00e9p\u00e9sekben Docker-k\u00e9peket fogunk haszn\u00e1lni, amelyek kifejezetten ezekkel az eszk\u00f6z\u00f6kkel m\u0171k\u00f6dnek. Tov\u00e1bb\u00e1, az \u00e1ll\u00e1shirdet\u00e9sek k\u00f6vetelm\u00e9nyeire hivatkozva, ezek az eszk\u00f6z\u00f6k a legkeresettebbek a piacon.<\/p>\n<p>Ahogy \u00e9szrevehette, csak a web- \u00e9s Android-teszteket vizsg\u00e1ljuk. Sajnos az IOS \u2013 teljesen m\u00e1s t\u00f6rt\u00e9net (k\u00f6sz\u00f6nj\u00fck Apple). A tervek szerint a k\u00f6vetkez\u0151 r\u00e9szekben szeretn\u00e9m bemutatni az IOS-szal kapcsolatos megold\u00e1sokat \u00e9s gyakorlatokat.<\/p>\n<h3>\u00c9rt\u00e9k az automatiz\u00e1l\u00e1si infrastrukt\u00far\u00e1hoz<\/h3>\n<p>\nInfrastrukt\u00fara szempontj\u00e1b\u00f3l a helyi ind\u00edt\u00e1snak nincs \u00e9rt\u00e9ke. Csak annyit ellen\u0151riz, hogy a tesztek m\u0171k\u00f6dnek a helyi g\u00e9pen helyi b\u00f6ng\u00e9sz\u0151kben \u00e9s szimul\u00e1torokban. De mindenk\u00e9ppen ez egy sz\u00fcks\u00e9ges kiindul\u00f3pont.<\/p>\n<h3>A jelenlegi infrastrukt\u00fara \u00e1llapot\u00e1nak illusztr\u00e1ci\u00f3ja<\/h3>\n<p>\n<img decoding=\"async\" alt=\"A DevOps eszk\u00f6z\u00f6k nemcsak a DevOps sz\u00e1m\u00e1ra k\u00e9sz\u00fcltek. Az automatiz\u00e1lt tesztel\u00e9si infrastrukt\u00fara fel\u00e9p\u00edt\u00e9se a null\u00e1r\u00f3l.\" src=\"\/wp-content\/uploads\/2020\/04\/504f28744e29938f66be41c32d9a7dc6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Tanulm\u00e1nyoz\u00e1sra vonatkoz\u00f3 linkek<\/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 p\u00e9ld\u00e1k<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/appium\/appium\/tree\/master\/sample-code\/javascript-wd\">Appium JS GitHub p\u00e9ld\u00e1k<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Hasonl\u00f3 eszk\u00f6z\u00f6k<\/h3>\n<p><\/p>\n<ul>\n<li>b\u00e1rmilyen programoz\u00e1si nyelv, amelyet szeret, a Selenium\/Appium \u2013 tesztekkel;<\/li>\n<li>b\u00e1rmilyen teszt;<\/li>\n<li>b\u00e1rmilyen tesztfuttat\u00f3.<\/li>\n<\/ul>\n<p><\/p>\n<h2>2. Verzi\u00f3kezel\u0151 rendszerek (Git)<\/h2>\n<p><\/p>\n<h3>K\u00f6rvonalazott technol\u00f3gia<\/h3>\n<p>\n Senkit sem \u00e9r meglepet\u00e9sk\u00e9nt, ha azt mondom, hogy a verzi\u00f3kezel\u0151 rendszer rendk\u00edv\u00fcl fontos r\u00e9sze a fejleszt\u00e9snek csapatban \u00e9s egyed\u00fcl is. K\u00fcl\u00f6nb\u00f6z\u0151 forr\u00e1sokra t\u00e1maszkodva, magabiztosan mondhatjuk, hogy a Git a legn\u00e9pszer\u0171bb k\u00e9pvisel\u0151. A verzi\u00f3kezel\u0151 rendszer sz\u00e1mos el\u0151nyt k\u00edn\u00e1l, p\u00e9ld\u00e1ul k\u00f3dmegoszt\u00e1st, verzi\u00f3k t\u00e1rol\u00e1s\u00e1t, vissza\u00e1ll\u00edt\u00e1st el\u0151z\u0151 \u00e1gakra, a projekt t\u00f6rt\u00e9net\u00e9nek figyelemmel k\u00eds\u00e9r\u00e9s\u00e9t \u00e9s biztons\u00e1gi m\u00e1solatokat. Nem fogunk minden egyes pontot r\u00e9szletesen megvitatni, mivel biztos vagyok benne, hogy ezzel j\u00f3l ismeri \u00e9s haszn\u00e1lja a mindennapi munk\u00e1j\u00e1ban. De ha esetleg nem, javaslom, hogy \u00e1lljon meg a cikk olvas\u00e1s\u00e1ban, \u00e9s amilyen gyorsan csak lehet, p\u00f3tolja ezt a hi\u00e1nyoss\u00e1got.<\/p>\n<h3>\u00c9rt\u00e9k az automatiz\u00e1l\u00e1si infrastrukt\u00far\u00e1hoz<\/h3>\n<p>\n Itt feltehetj\u00fck a jogos k\u00e9rd\u00e9st: \u201eMi\u00e9rt mes\u00e9l nek\u00fcnk a Git-r\u0151l? Ezt mindenki tudja, \u00e9s haszn\u00e1lja a fejleszt\u00e9si k\u00f3d \u00e9s az automatikus tesztel\u00e9s k\u00f3dja sz\u00e1m\u00e1ra.\u201d Teljesen igaza van, de ebben a cikkben az infrastrukt\u00far\u00e1r\u00f3l besz\u00e9l\u00fcnk, \u00e9s ez a r\u00e9sz \u00e1ttekint\u00e9st ny\u00fajt a 7. szakaszhoz: \u201eInfrastrukt\u00fara mint k\u00f3d (IaC)\u201d. Sz\u00e1munkra ez azt jelenti, hogy az eg\u00e9sz infrastrukt\u00fara, bele\u00e9rtve a tesztk\u00f6rnyezetet is, k\u00f3dk\u00e9nt van le\u00edrva, ez\u00e9rt a verzi\u00f3kezel\u0151 rendszereket is r\u00e1 lehet alkalmazni, \u00e9s hasonl\u00f3 el\u0151ny\u00f6ket \u00e9lvezhet\u00fcnk, mint a fejleszt\u00e9si k\u00f3d eset\u00e9ben.<\/p>\n<p>R\u00e9szletesebben fogunk foglalkozni az IaC-vel a 7. l\u00e9p\u00e9sben, de m\u00e9g most is elkezdhetj\u00fck haszn\u00e1lni a Git-et helyben, egy helyi t\u00e1rol\u00f3 l\u00e9trehoz\u00e1s\u00e1val. Az \u00e1ltal\u00e1nos k\u00e9p b\u0151v\u00fclni fog, amikor t\u00e1voli t\u00e1rol\u00f3t adunk az infrastrukt\u00far\u00e1hoz.<\/p>\n<h3>A jelenlegi infrastrukt\u00fara \u00e1llapot\u00e1nak illusztr\u00e1ci\u00f3ja<\/h3>\n<p>\n<img decoding=\"async\" alt=\"A DevOps eszk\u00f6z\u00f6k nemcsak a DevOps sz\u00e1m\u00e1ra k\u00e9sz\u00fcltek. Az automatiz\u00e1lt tesztel\u00e9si infrastrukt\u00fara fel\u00e9p\u00edt\u00e9se a null\u00e1r\u00f3l.\" src=\"\/wp-content\/uploads\/2020\/04\/f17c1d2b2f18aa814c44f7c443e49416.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Tanulm\u00e1nyoz\u00e1sra vonatkoz\u00f3 linkek<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.atlassian.com\/git\/tutorials\/what-is-version-control\">Mi az a verzi\u00f3kezel\u00e9s<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/git-scm.com\/\">Kont\u00e9neriz\u00e1l\u00e1s<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/git-scm.com\/book\/en\/v2\/Getting-Started-About-Version-Control\">Kezd\u0151knek \u2013 A verzi\u00f3kezel\u00e9sr\u0151l<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Hasonl\u00f3 eszk\u00f6z\u00f6k<\/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 (jelenleg az Azure DevOps Services r\u00e9sze)<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h2>3. Kont\u00e9neriz\u00e1ci\u00f3 (Docker)<\/h2>\n<p><\/p>\n<h3>K\u00f6rvonalazott technol\u00f3gia<\/h3>\n<p>\n A kont\u00e9neriz\u00e1ci\u00f3s technol\u00f3gia j\u00e1t\u00e9kv\u00e1ltoztat\u00e1s\u00e1t bemutatand\u00f3, menj\u00fcnk vissza t\u00f6bb \u00e9vtizeddel ezel\u0151ttre. Akkoriban az emberek szerverg\u00e9peket v\u00e1s\u00e1roltak \u00e9s haszn\u00e1ltak az alkalmaz\u00e1sok futtat\u00e1s\u00e1hoz. De a sz\u00fcks\u00e9ges er\u0151forr\u00e1sok t\u00f6bbs\u00e9ge nem volt el\u0151re ismert. Ennek k\u00f6vetkezt\u00e9ben a c\u00e9gek p\u00e9nzt k\u00f6lt\u00f6ttek dr\u00e1ga, er\u0151s szerverek v\u00e1s\u00e1rl\u00e1s\u00e1ra, de ezen kapacit\u00e1sok egy r\u00e9sze nem volt teljesen kihaszn\u00e1lva.<\/p>\n<p>A k\u00f6vetkez\u0151 evol\u00faci\u00f3s l\u00e9p\u00e9s a virtu\u00e1lis g\u00e9pek (VM) bevezet\u00e9se volt, amelyek megoldott\u00e1k a felhaszn\u00e1latlan er\u0151forr\u00e1sok k\u00f6lts\u00e9gsorvaszt\u00e1s\u00e1t. Ez a technol\u00f3gia lehet\u0151v\u00e9 tette az alkalmaz\u00e1sok f\u00fcggetlen futtat\u00e1s\u00e1t egyetlen szerveren bel\u00fcl, teljesen elk\u00fcl\u00f6n\u00edtett k\u00f6rnyezet biztos\u00edt\u00e1s\u00e1val. De sajnos, b\u00e1rmely technol\u00f3gi\u00e1nak megvannak a saj\u00e1t h\u00e1tr\u00e1nyai. A VM-ek ind\u00edt\u00e1sa teljes oper\u00e1ci\u00f3s rendszert ig\u00e9nyel, ami CPU-, RAM-, t\u00e1rol\u00e1si ig\u00e9nyt jelent, \u00e9s az OS-t\u00f3l f\u00fcgg\u0151en figyelembe kell venni a licenszk\u00f6lts\u00e9geket is. Ezek a t\u00e9nyez\u0151k befoly\u00e1solj\u00e1k a bet\u00f6lt\u00e9si sebess\u00e9get \u00e9s bonyol\u00edtj\u00e1k a hordozhat\u00f3s\u00e1got.<\/p>\n<p>\u00cdgy el\u00e9rkezt\u00fcnk a kont\u00e9neriz\u00e1ci\u00f3hoz. Ism\u00e9t ez a technol\u00f3gia megoldotta az el\u0151z\u0151 probl\u00e9m\u00e1t, mivel a kont\u00e9nerek nem haszn\u00e1lnak teljes oper\u00e1ci\u00f3s rendszert, ami jelent\u0151s er\u0151forr\u00e1s-kibocs\u00e1t\u00e1st tesz lehet\u0151v\u00e9, \u00e9s gyors, rugalmas megold\u00e1st k\u00edn\u00e1l a hordozhat\u00f3s\u00e1gra.<\/p>\n<p>Term\u00e9szetesen a kont\u00e9neriz\u00e1ci\u00f3s technol\u00f3gia nem \u00fajkelet\u0171, \u00e9s el\u0151sz\u00f6r az 1970-es \u00e9vek v\u00e9g\u00e9n jelent meg. Ezekben az id\u0151kben sz\u00e1mos kutat\u00e1s, fejleszt\u00e9s \u00e9s k\u00eds\u00e9rlet folyt. De pontosan a Docker alkalmazta ezt a technol\u00f3gi\u00e1t, \u00e9s tette t\u00f6megek sz\u00e1m\u00e1ra k\u00f6nnyen hozz\u00e1f\u00e9rhet\u0151v\u00e9. Manaps\u00e1g, amikor a kont\u00e9nerekr\u0151l besz\u00e9l\u00fcnk, t\u00f6bbnyire a Dockerra gondolunk. Amikor Docker-kont\u00e9nerekr\u0151l besz\u00e9l\u00fcnk, Linux-kont\u00e9nereket \u00e9rt\u00fcnk alatta. Haszn\u00e1lhatunk Windows- \u00e9s macOS-rendszereket is kont\u00e9nerek futtat\u00e1s\u00e1ra, de fontos meg\u00e9rteni, hogy ebben az esetben tov\u00e1bbi r\u00e9teg jelenik meg. P\u00e9ld\u00e1ul a Docker a Mac-en l\u00e1thatatlanul ind\u00edtja a kont\u00e9nereket egy k\u00f6nny\u0171 Linux VM belsej\u00e9ben. Ezzel a t\u00e9m\u00e1val m\u00e9g visszat\u00e9r\u00fcnk, amikor az Android-emul\u00e1torok kont\u00e9nerekben t\u00f6rt\u00e9n\u0151 futtat\u00e1s\u00e1r\u00f3l besz\u00e9l\u00fcnk, mivel itt egy nagyon fontos szempont mer\u00fcl fel, amelyet r\u00e9szletesebben kell megvizsg\u00e1lnunk.<\/p>\n<h3>\u00c9rt\u00e9k az automatiz\u00e1l\u00e1si infrastrukt\u00far\u00e1hoz<\/h3>\n<p>\n Meg\u00e1llap\u00edtottuk, hogy a kont\u00e9neriz\u00e1ci\u00f3 \u00e9s a Docker nagyszer\u0171. N\u00e9zz\u00fck meg ezt az automatiz\u00e1ci\u00f3 kontextus\u00e1ban, hiszen minden eszk\u00f6znek vagy technol\u00f3gi\u00e1nak meg kell oldania valamilyen probl\u00e9m\u00e1t. Jel\u00f6lj\u00fck meg az automatiz\u00e1lt tesztel\u00e9s nyilv\u00e1nval\u00f3 probl\u00e9m\u00e1it a UI-tesztek kontextus\u00e1ban:<\/p>\n<ul>\n<li>rengeteg f\u00fcgg\u0151s\u00e9g a Selenium \u00e9s k\u00fcl\u00f6n\u00f6sen az Appium telep\u00edt\u00e9sekor;<\/li>\n<li>kompatibilit\u00e1si probl\u00e9m\u00e1k a b\u00f6ng\u00e9sz\u0151k, szimul\u00e1torok \u00e9s driverek verzi\u00f3i k\u00f6z\u00f6tt;<\/li>\n<li>izol\u00e1lt t\u00e9r hi\u00e1nya a b\u00f6ng\u00e9sz\u0151k\/szimul\u00e1torok sz\u00e1m\u00e1ra, ami k\u00fcl\u00f6n\u00f6sen kritikus a p\u00e1rhuzamos futtat\u00e1s sor\u00e1n;<\/li>\n<li>neh\u00e9z kezelni \u00e9s karbantartani, ha egyszerre 10, 50, 100 vagy ak\u00e1r 1000 b\u00f6ng\u00e9sz\u0151t kell futtatnunk.<\/li>\n<\/ul>\n<p>\nDe mivel a Selenium a legn\u00e9pszer\u0171bb automatiz\u00e1l\u00e1si eszk\u00f6z, m\u00edg a Docker a legn\u00e9pszer\u0171bb kont\u00e9neriz\u00e1l\u00e1si eszk\u00f6z, senkit nem lephet meg, hogy valaki megpr\u00f3b\u00e1lta \u0151ket kombin\u00e1lni, hogy egy er\u0151teljes eszk\u00f6zt kapjon a fent eml\u00edtett probl\u00e9m\u00e1k megold\u00e1s\u00e1ra. N\u00e9zz\u00fck meg ezeket a megold\u00e1sokat r\u00e9szletesebben.\u00a0<\/p>\n<p><u>Selenium grid dockerben<\/u><\/p>\n<p>Ez az eszk\u00f6z a vil\u00e1g legn\u00e9pszer\u0171bb Selenium eszk\u00f6ze a t\u00f6bb b\u00f6ng\u00e9sz\u0151 egyidej\u0171 futtat\u00e1s\u00e1ra t\u00f6bb g\u00e9pen, k\u00f6zponti csom\u00f3pontb\u00f3l t\u00f6rt\u00e9n\u0151 kezel\u00e9s mellett. A futtat\u00e1shoz legal\u00e1bb 2 r\u00e9szegys\u00e9get kell regisztr\u00e1lni: Hub \u00e9s Node(s). A Hub a k\u00f6zponti csom\u00f3pont, amely megkap minden k\u00e9r\u00e9st a tesztekt\u0151l, \u00e9s elosztja azokat a megfelel\u0151 Nodes-ra. Minden Node sz\u00e1m\u00e1ra be\u00e1ll\u00edthatunk egy konkr\u00e9t konfigur\u00e1ci\u00f3t, p\u00e9ld\u00e1ul megadhatjuk a k\u00edv\u00e1nt b\u00f6ng\u00e9sz\u0151t \u00e9s annak verzi\u00f3j\u00e1t. Azonban nek\u00fcnk magunknak is gondoskodnunk kell a b\u00f6ng\u00e9sz\u0151k megfelel\u0151 illeszt\u0151programjair\u00f3l, \u00e9s telep\u00edten\u00fcnk kell \u0151ket a sz\u00fcks\u00e9ges Nodes-ra. \u00c9ppen ez\u00e9rt a Selenium grid tiszta form\u00e1ban nem haszn\u00e1lhat\u00f3, kiv\u00e9ve azon eseteket, amikor olyan b\u00f6ng\u00e9sz\u0151kkel kell dolgoznunk, amelyeket nem lehet telep\u00edteni Linux OS-re. Minden egy\u00e9b esetben jelent\u0151sen rugalmasabb \u00e9s helyes megold\u00e1s a Docker-k\u00e9pek haszn\u00e1lata a Selenium grid Hub \u00e9s Nodes ind\u00edt\u00e1s\u00e1hoz. Ez a megk\u00f6zel\u00edt\u00e9s jelent\u0151sen leegyszer\u0171s\u00edti a csom\u00f3pontok kezel\u00e9s\u00e9t, mivel kiv\u00e1laszthatjuk a sz\u00e1munkra sz\u00fcks\u00e9ges k\u00e9pet, amely m\u00e1r tartalmazza a megfelel\u0151 b\u00f6ng\u00e9sz\u0151- \u00e9s illeszt\u0151program-verzi\u00f3kat.<\/p>\n<p>A stabilit\u00e1s\u00e1val kapcsolatos negat\u00edv v\u00e9lem\u00e9nyek ellen\u00e9re, k\u00fcl\u00f6n\u00f6sen ha sok Node-ot ind\u00edtunk p\u00e1rhuzamosan, a Selenium grid m\u00e9g mindig a legn\u00e9pszer\u0171bb eszk\u00f6z a p\u00e1rhuzamos Selenium-tesztek futtat\u00e1s\u00e1ra. Fontos megjegyezni, hogy az open-source folyamatban folyamatosan k\u00fcl\u00f6nf\u00e9le fejleszt\u00e9sek \u00e9s m\u00f3dos\u00edt\u00e1sok jelennek meg, amelyek a k\u00fcl\u00f6nb\u00f6z\u0151 sz\u0171k keresztmetszetek ellen k\u00fczdenek.<\/p>\n<p><u>Selenoid for Web<\/u><\/p>\n<p>Ez az eszk\u00f6z \u00e1tt\u00f6r\u00e9st jelent a Selenium vil\u00e1g\u00e1ban, mivel azonnal m\u0171k\u00f6dik, \u00e9s jelent\u0151sen megk\u00f6nny\u00edtette sok automatiz\u00e1l\u00e1si m\u00e9rn\u00f6k \u00e9let\u00e9t. Mindenekel\u0151tt nem egy \u00fajabb m\u00f3dos\u00edt\u00e1sa a Selenium grid-nek. Ehelyett a fejleszt\u0151k egy teljesen \u00faj Selenium Hub verzi\u00f3t hoztak l\u00e9tre Golang nyelven, ami a k\u00fcl\u00f6nb\u00f6z\u0151 b\u00f6ng\u00e9sz\u0151khez k\u00e9sz\u00fclt k\u00f6nny\u0171 Docker-k\u00e9pek kombin\u00e1ci\u00f3j\u00e1val l\u00f6k\u00e9st adott a tesztel\u00e9s automatiz\u00e1l\u00e1s\u00e1nak fejl\u0151d\u00e9s\u00e9ben. R\u00e1ad\u00e1sul a Selenium Grid eset\u00e9ben el\u0151re meg kell hat\u00e1roznunk az \u00f6sszes sz\u00fcks\u00e9ges b\u00f6ng\u00e9sz\u0151t \u00e9s azok verzi\u00f3it, ami nem jelent probl\u00e9m\u00e1t, ha csak egyetlen b\u00f6ng\u00e9sz\u0151vel dolgozunk. De amikor t\u00f6bb t\u00e1mogathat\u00f3 b\u00f6ng\u00e9sz\u0151r\u0151l van sz\u00f3, a Selenoid az els\u0151 sz\u00e1m\u00fa megold\u00e1s, k\u00f6sz\u00f6nhet\u0151en a 'b\u00f6ng\u00e9sz\u0151 ig\u00e9ny szerint' funkci\u00f3nak. Minden, amire sz\u00fcks\u00e9g\u00fcnk van, az el\u0151re lementett sz\u00fcks\u00e9ges k\u00e9pek \u00e9s a Selenoid \u00e1ltal haszn\u00e1lt konfigur\u00e1ci\u00f3s f\u00e1jl friss\u00edt\u00e9se. Miut\u00e1n a Selenoid k\u00e9r\u00e9st kap a tesztekt\u0151l, automatikusan elind\u00edtja a sz\u00fcks\u00e9ges kont\u00e9nert a megfelel\u0151 b\u00f6ng\u00e9sz\u0151vel. Amikor a teszt befejez\u0151dik, a Selenoid le\u00e1ll\u00edtja a kont\u00e9nert, ezzel felszabad\u00edtva az er\u0151forr\u00e1sokat a k\u00f6vetkez\u0151 k\u00e9r\u00e9sekhez. Ez a megk\u00f6zel\u00edt\u00e9s teljesen megsz\u00fcnteti a 'csom\u00f3pontok degrad\u00e1ci\u00f3j\u00e1nak' ismert probl\u00e9m\u00e1j\u00e1t, amit gyakran tapasztalunk a Selenium grid eset\u00e9ben.<\/p>\n<p>De sajnos a Selenoid m\u00e9g mindig nem ez\u00fcstl\u00f6ved\u00e9k. Megkaptuk a 'b\u00f6ng\u00e9sz\u0151 ig\u00e9ny szerint' funkci\u00f3t, de a 'k\u00fcl\u00f6nb\u00f6z\u0151 er\u0151forr\u00e1sok ig\u00e9ny szerint' m\u00e9g nem el\u00e9rhet\u0151. A Selenoid haszn\u00e1lat\u00e1hoz fizikai g\u00e9pen vagy virtu\u00e1lis g\u00e9pen kell telep\u00edten\u00fcnk, ami azt jelenti, hogy el\u0151re tudnunk kell, mennyi er\u0151forr\u00e1st kell biztos\u00edtanunk. \u00dagy gondolom, hogy ez nem probl\u00e9ma a kis projektek sz\u00e1m\u00e1ra, amelyek p\u00e1rhuzamosan 10, 20 vagy ak\u00e1r 30 b\u00f6ng\u00e9sz\u0151t futtatnak. De mi van, ha 100, 500, 1000 \u00e9s ann\u00e1l t\u00f6bb kell? Nincs \u00e9rtelme folyamatosan fenntartani \u00e9s fizetni ennyi er\u0151forr\u00e1s\u00e9rt. Az 5. \u00e9s 6. szekci\u00f3ban besz\u00e9lni fogunk azokr\u00f3l a megold\u00e1sokr\u00f3l, amelyek lehet\u0151v\u00e9 teszik a sk\u00e1l\u00e1z\u00e1st, ezzel jelent\u0151sen cs\u00f6kkentve a c\u00e9g k\u00f6lts\u00e9geit.<\/p>\n<p><u>Selenoid Androidhoz<\/u><\/p>\n<p>A Selenoid siker\u00e9t k\u00f6vet\u0151en, mint webautomatikai eszk\u00f6z, az emberek valami hasonl\u00f3t szerettek volna Android sz\u00e1m\u00e1ra. \u00c9s ez megt\u00f6rt\u00e9nt \u2013 a Selenoid megjelent Android t\u00e1mogat\u00e1ssal. Magas szint\u0171 felhaszn\u00e1l\u00f3i szempontb\u00f3l a m\u0171k\u00f6d\u00e9si elv hasonl\u00f3 a webautomatik\u00e1hoz. Az egyetlen k\u00fcl\u00f6nbs\u00e9g, hogy a b\u00f6ng\u00e9sz\u0151kkel ell\u00e1tott kont\u00e9nerek helyett a Selenoid Android-emul\u00e1torokkal ell\u00e1tott kont\u00e9nereket ind\u00edt. V\u00e9lem\u00e9nyem szerint ez a legfejlettebb ingyenes eszk\u00f6z az Android-teszteken p\u00e1rhuzamos futtat\u00e1s\u00e1ra.<\/p>\n<p>Nagyon nem szeretn\u00e9m megeml\u00edteni ennek az eszk\u00f6znek a negat\u00edv oldalait, mivel val\u00f3ban nagyon tetszik. De m\u00e9gis, ugyanazok a probl\u00e9m\u00e1k jelentkeznek itt is, amelyek a webautomatik\u00e1hoz kapcsol\u00f3dnak, \u00e9s amelyek sk\u00e1l\u00e1z\u00e1ssal kapcsolatosak. Ezen fel\u00fcl egy m\u00e1sik korl\u00e1toz\u00e1sr\u00f3l is besz\u00e9lnem kell, amely meglepet\u00e9st okozhat, ha el\u0151sz\u00f6r \u00e1ll\u00edtjuk be az eszk\u00f6zt. Android-k\u00e9pek futtat\u00e1s\u00e1hoz fizikai g\u00e9pre vagy VM-re van sz\u00fcks\u00e9g, amely t\u00e1mogatja a nested virtualisation-t. A gyakorlati \u00fatmutat\u00f3mban megmutatom, hogyan aktiv\u00e1lhatjuk ezt Linux VM-en. Azonban, ha macOS felhaszn\u00e1l\u00f3 vagy, \u00e9s helyben szeretn\u00e9d telep\u00edteni a Selenoid-ot, az Android-tesztek futtat\u00e1sa lehetetlen lesz. De mindig elind\u00edthatod a Linux VM-et helyben, a be\u00e1ll\u00edtott \u2018nested virtualisation\u2019-nal \u00e9s futtathatod a Selenoid-ot bel\u00fcl.<\/p>\n<h3>A jelenlegi infrastrukt\u00fara \u00e1llapot\u00e1nak illusztr\u00e1ci\u00f3ja<\/h3>\n<p>\n A cikk kontextus\u00e1ban 2 eszk\u00f6zt fogunk hozz\u00e1adni az infrastrukt\u00fara illusztr\u00e1l\u00e1s\u00e1hoz. Ezek a Selenium grid webtesztekhez \u00e9s a Selenoid Android-tesztekhez. A GitHub \u00fatmutat\u00f3mban azt is meg fogom mutatni, hogyan haszn\u00e1lhatjuk a Selenoid-ot webtesztek futtat\u00e1s\u00e1ra.\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"A DevOps eszk\u00f6z\u00f6k nemcsak a DevOps sz\u00e1m\u00e1ra k\u00e9sz\u00fcltek. Az automatiz\u00e1lt tesztel\u00e9si infrastrukt\u00fara fel\u00e9p\u00edt\u00e9se a null\u00e1r\u00f3l.\" src=\"\/wp-content\/uploads\/2020\/04\/1202ae79eba9cffc965f3a5b2648c755.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Tanulm\u00e1nyoz\u00e1sra vonatkoz\u00f3 linkek<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.docker.com\/resources\/what-container\">Docker: milyen kont\u00e9ner ez<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.docker.com\/get-started\">Docker: kezdj\u00fck el<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/containerjournal.com\/topics\/container-ecosystems\/5-container-alternatives-to-docker\/\">5 alternat\u00edva a Dockerhez<\/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\">KVM be\u00e1ll\u00edt\u00e1s Android emul\u00e1torokhoz<\/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\">Docker Deep Dive k\u00f6nyv<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Hasonl\u00f3 eszk\u00f6z\u00f6k<\/h3>\n<p><\/p>\n<ul>\n<li>Vannak m\u00e1s kont\u00e9neriz\u00e1l\u00f3 eszk\u00f6z\u00f6k is, de a Docker a legn\u00e9pszer\u0171bb. Ha valami m\u00e1st szeretn\u00e9l kipr\u00f3b\u00e1lni, vedd figyelembe, hogy azok az eszk\u00f6z\u00f6k, amelyeket a Selenium-tesztek p\u00e1rhuzamos futtat\u00e1s\u00e1ra megvizsg\u00e1ltunk, nem fognak m\u0171k\u00f6dni dobozb\u00f3l kiv\u00e9ve.\u00a0\u00a0<\/li>\n<li>Ahogy m\u00e1r eml\u00edtettem, sok Selenium grid m\u00f3dos\u00edt\u00e1s l\u00e9tezik, p\u00e9ld\u00e1ul<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>K\u00f6rvonalazott technol\u00f3gia<\/h3>\n<p>\n A folyamatos integr\u00e1ci\u00f3 gyakorlata meglehet\u0151sen n\u00e9pszer\u0171 a fejleszt\u00e9sben, \u00e9s egy szinten \u00e1ll a verzi\u00f3kezel\u0151 rendszerekkel. Ennek ellen\u00e9re \u00fagy \u00e9rzem, hogy n\u00e9mi z\u0171rzavar van a terminol\u00f3gi\u00e1t illet\u0151en. Ebben a bekezd\u00e9sben szeretn\u00e9m bemutatni ennek a technol\u00f3gi\u00e1nak h\u00e1rom m\u00f3dos\u00edt\u00e1s\u00e1t az \u00e9n n\u00e9z\u0151pontomb\u00f3l. Az interneten sz\u00e1mos cikket tal\u00e1lhat k\u00fcl\u00f6nb\u00f6z\u0151 \u00e9rtelmez\u00e9sekkel, \u00e9s ez teljesen norm\u00e1lis, ha a v\u00e9lem\u00e9nye elt\u00e9r a m\u00e1sok\u00e9t\u00f3l. A legfontosabb, hogy egy hull\u00e1mhosszon legyen a koll\u00e9g\u00e1ival.<\/p>\n<p>Teh\u00e1t, h\u00e1rom kifejez\u00e9s l\u00e9tezik: CI \u2014 Continuous Integration (folyamatos integr\u00e1ci\u00f3), CD \u2014 Continuous Delivery (folyamatos sz\u00e1ll\u00edt\u00e1s) \u00e9s \u00fajra CD \u2014 Continuous Deployment (folyamatos telep\u00edt\u00e9s). (<i>A tov\u00e1bbiakban ezeket a kifejez\u00e9seket angol nyelven fogom haszn\u00e1lni.<\/i>). Minden m\u00f3dos\u00edt\u00e1s kieg\u00e9sz\u00edt n\u00e9h\u00e1ny extra l\u00e9p\u00e9st a fejleszt\u00e9si folyamat\u00e1ban. De a sz\u00f3 <u>continuous<\/u> (folytonos) a legfontosabb. Ebb\u0151l a szempontb\u00f3l olyan dologra utalunk, ami kezdet\u00e9t\u0151l a v\u00e9g\u00e9ig, meg\u00e1ll\u00edt\u00e1sok vagy k\u00e9zi beavatkoz\u00e1s n\u00e9lk\u00fcl t\u00f6rt\u00e9nik. N\u00e9zz\u00fck meg a CI &#038; CD \u00e9s a CD-t ebben a kontextusban.<\/p>\n<ul>\n<li><strong>A Continuous Integration \u2013<\/strong> a fejl\u0151d\u00e9s els\u0151 l\u00e9p\u00e9se. Miut\u00e1n \u00faj k\u00f3dot k\u00fcld\u00fcnk a szerverre, gyors visszajelz\u00e9st v\u00e1runk arr\u00f3l, hogy a m\u00f3dos\u00edt\u00e1sainkkal minden rendben van. A CI \u00e1ltal\u00e1ban mag\u00e1ban foglalja a statikus k\u00f3d-elemz\u0151 eszk\u00f6z\u00f6k \u00e9s a modul\u00e1ris\/bels\u0151 API-tesztek futtat\u00e1s\u00e1t. Ez lehet\u0151v\u00e9 teszi sz\u00e1munkra, hogy n\u00e9h\u00e1ny m\u00e1sodpercen vagy percen bel\u00fcl inform\u00e1ci\u00f3t nyerj\u00fcnk a k\u00f3dunkr\u00f3l.<\/li>\n<li><strong>A Continuous Delivery<\/strong> a fejlettebb l\u00e9p\u00e9s, ahol integr\u00e1ci\u00f3s\/UI teszteket futtatunk. Azonban ezen a ponton nem kapunk visszajelz\u00e9seket olyan gyorsan, mint a CI eset\u00e9ben. El\u0151sz\u00f6r is, ezek a tesztek t\u00f6bb id\u0151t ig\u00e9nyelnek a v\u00e9grehajt\u00e1shoz. M\u00e1sodszor, a futtat\u00e1s el\u0151tt a v\u00e1ltoztat\u00e1sokat a teszt\/staging k\u00f6rnyezetbe kell telep\u00edteni. Tov\u00e1bb\u00e1, ha mobilfejleszt\u00e9sr\u0151l besz\u00e9l\u00fcnk, akkor egy plusz l\u00e9p\u00e9s is van az alkalmaz\u00e1sunk \u00e9p\u00edt\u00e9s\u00e9nek elk\u00e9sz\u00edt\u00e9s\u00e9re.<\/li>\n<li><strong>A Continuous Deployment<\/strong> A folyamattal automatikusan kiadjuk (release) a m\u00f3dos\u00edt\u00e1sainkat a production-ra, ha az \u00f6sszes elfogad\u00e1si tesztet sikeresen teljes\u00edtett\u00fck az el\u0151z\u0151 szakaszokban. Ezen k\u00edv\u00fcl a kiad\u00e1si szakasz ut\u00e1n k\u00fcl\u00f6nf\u00e9le l\u00e9p\u00e9seket, p\u00e9ld\u00e1ul smoke tesztek futtat\u00e1s\u00e1t a production-on \u00e9s \u00e9rdekes metrik\u00e1k gy\u0171jt\u00e9s\u00e9t is be\u00e1ll\u00edthatjuk. A Folyamatos Telep\u00edt\u00e9s csak akkor lehets\u00e9ges, ha az automatiz\u00e1lt tesztekkel val\u00f3 lefedetts\u00e9g megfelel\u0151. Ha b\u00e1rmilyen manu\u00e1lis beavatkoz\u00e1sra, bele\u00e9rtve a tesztel\u00e9st is, sz\u00fcks\u00e9g van, akkor az m\u00e1r nem <u>Folyamatos<\/u> (continuous). Ekkor azt mondhatjuk, hogy a vez\u00e9rl\u0151nk csak a Folyamatos Kisz\u00e1ll\u00edt\u00e1s gyakorlatainak felel meg.<\/li>\n<\/ul>\n<p><\/p>\n<h3>\u00c9rt\u00e9k az automatiz\u00e1l\u00e1si infrastrukt\u00far\u00e1hoz<\/h3>\n<p>\n Ebben a fejezetben pontos\u00edtanom kell, hogy amikor az end-to-end UI-tesztekr\u0151l besz\u00e9l\u00fcnk, ez azt jelenti, hogy be kell \u00e1ll\u00edtanunk a m\u00f3dos\u00edt\u00e1sainkat \u00e9s a kapcsol\u00f3d\u00f3 szolg\u00e1ltat\u00e1sokat a tesztk\u00f6rnyezetekben. A Folyamatos Integr\u00e1ci\u00f3s folyamat nem alkalmazhat\u00f3 erre a feladatra, ez\u00e9rt legal\u00e1bb a Folyamatos Kisz\u00e1ll\u00edt\u00e1s gyakorlatait be kell vezetn\u00fcnk. A Folyamatos Telep\u00edt\u00e9s szint\u00e9n \u00e9rtelmet nyer az UI-tesztekkel kapcsolatban, ha a production-on szeretn\u00e9nk futtatni \u0151ket.<\/p>\n<p>Miel\u0151tt a strukt\u00fara m\u00f3dos\u00edt\u00e1s\u00e1nak p\u00e9ld\u00e1j\u00e1ra r\u00e1t\u00e9rn\u00e9nk, szeretn\u00e9k n\u00e9h\u00e1ny sz\u00f3t sz\u00f3lni a GitLab CI-r\u0151l. M\u00e1s CI\/CD eszk\u00f6z\u00f6kkel ellent\u00e9tben a GitLab t\u00e1voli t\u00e1rol\u00f3t \u00e9s sok egy\u00e9b kieg\u00e9sz\u00edt\u0151 funkci\u00f3t is k\u00edn\u00e1l. \u00cdgy a GitLab t\u00f6bb mint CI. Alap\u00e9rtelmez\u00e9s szerint tartalmaz forr\u00e1sk\u00f3dkezel\u00e9st, Agile menedzsmentet, CI\/CD pipeline-okat, napl\u00f3z\u00e1si eszk\u00f6z\u00f6ket \u00e9s metrik\u00e1k gy\u0171jt\u00e9s\u00e9t. A GitLab architekt\u00far\u00e1ja a GitLab CI\/CD-b\u0151l \u00e9s a GitLab Runnerb\u0151l \u00e1ll. Az al\u00e1bbiakban bemutatok egy r\u00f6vid le\u00edr\u00e1st a hivatalos weboldalr\u00f3l:<\/p>\n<blockquote><p>A Gitlab CI\/CD egy webalkalmaz\u00e1s, amely API-val rendelkezik, \u00e1llapot\u00e1t egy adatb\u00e1zisban t\u00e1rolja, projektek\/\u00e9p\u00edtkez\u00e9sek kezel\u00e9s\u00e9re \u00e9s felhaszn\u00e1l\u00f3i fel\u00fclet biztos\u00edt\u00e1s\u00e1ra szolg\u00e1l. A GitLab Runner egy alkalmaz\u00e1s, amely feldolgozza az \u00e9p\u00edtkez\u00e9seket. K\u00fcl\u00f6n telep\u00edthet\u0151 \u00e9s a GitLab CI\/CD-vel API-n kereszt\u00fcl m\u0171k\u00f6dik. A tesztek futtat\u00e1s\u00e1hoz sz\u00fcks\u00e9ged van mind a GitLab p\u00e9ld\u00e1nyra, mind a Runner-re.<\/p><\/blockquote>\n<p><\/p>\n<h3>A jelenlegi infrastrukt\u00fara \u00e1llapot\u00e1nak illusztr\u00e1ci\u00f3ja<\/h3>\n<p>\n<img decoding=\"async\" alt=\"A DevOps eszk\u00f6z\u00f6k nemcsak a DevOps sz\u00e1m\u00e1ra k\u00e9sz\u00fcltek. Az automatiz\u00e1lt tesztel\u00e9si infrastrukt\u00fara fel\u00e9p\u00edt\u00e9se a null\u00e1r\u00f3l.\" src=\"\/wp-content\/uploads\/2020\/04\/a05ece39b6c6a9aaec4177d4b5242722.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Tanulm\u00e1nyoz\u00e1sra vonatkoz\u00f3 linkek<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/articles\/continuousIntegration.html\">Martin Fowler: Folyamatos Integr\u00e1ci\u00f3<\/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\">A Folyamatos Integr\u00e1ci\u00f3 k\u00f6nyv<\/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=\">A Folyamatos Kisz\u00e1ll\u00edt\u00e1s k\u00f6nyv<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Hasonl\u00f3 eszk\u00f6z\u00f6k<\/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>\u00c9s sok m\u00e1s<\/li>\n<\/ul>\n<p><\/p>\n<h2>5. Felh\u0151platformok<\/h2>\n<p><\/p>\n<h3>K\u00f6rvonalazott technol\u00f3gia<\/h3>\n<p>\n Ebben a szakaszban a n\u00e9pszer\u0171 \u00edr\u00e1nyr\u00f3l besz\u00e9l\u00fcnk, amelyet 'nyilv\u00e1nos felh\u0151knek' neveznek. Annak ellen\u00e9re, hogy a fent eml\u00edtett virtualiz\u00e1ci\u00f3s \u00e9s kont\u00e9neriz\u00e1ci\u00f3s technol\u00f3gi\u00e1k \u00f3ri\u00e1si el\u0151ny\u00f6ket ny\u00fajtanak, m\u00e9g mindig sz\u00fcks\u00e9g\u00fcnk van sz\u00e1m\u00edt\u00e1si er\u0151forr\u00e1sokra. A v\u00e1llalatok dr\u00e1ga szervereket v\u00e1s\u00e1rolnak vagy adatk\u00f6zpontokat b\u00e9relnek, de ilyenkor el kell v\u00e9gezni\u00fck a sz\u00e1m\u00edt\u00e1sokat (n\u00e9ha irre\u00e1lisakat) arr\u00f3l, mennyi er\u0151forr\u00e1sra lesz sz\u00fcks\u00e9g\u00fcnk, fogjuk-e azokat 24\/7-ben haszn\u00e1lni \u00e9s mire. P\u00e9ld\u00e1ul a gy\u00e1rt\u00e1si k\u00f6rnyezethez 24 \u00f3r\u00e1s m\u0171k\u00f6d\u00e9s\u0171 szerver sz\u00fcks\u00e9ges, de sz\u00fcks\u00e9g\u00fcnk van hasonl\u00f3 er\u0151forr\u00e1sokra a tesztel\u00e9shez munkaid\u0151n k\u00edv\u00fcl? Ez szint\u00e9n a v\u00e9grehajtott tesztel\u00e9s t\u00edpus\u00e1t\u00f3l f\u00fcgg. P\u00e9ld\u00e1ul terhel\u00e9s- vagy stresszteszteket tervez\u00fcnk futtatni munkaid\u0151n k\u00edv\u00fcl, hogy m\u00e1snapra eredm\u00e9nyeket kapjunk. De a v\u00e9gpontok k\u00f6z\u00f6tti automatikus tesztekhez \u00e9s k\u00fcl\u00f6n\u00f6sen a manu\u00e1lis tesztel\u00e9si k\u00f6rnyezetekhez nem sz\u00fcks\u00e9ges a szerverek 24 \u00f3r\u00e1s el\u00e9rhet\u0151s\u00e9ge. Az ilyen helyzetekre j\u00f3 lenne annyi er\u0151forr\u00e1st kapni, amennyire sz\u00fcks\u00e9g van, haszn\u00e1lni \u0151ket, \u00e9s le\u00e1ll\u00edtani a fizet\u00e9st, amikor m\u00e1r nincs r\u00e1juk sz\u00fcks\u00e9g. R\u00e1ad\u00e1sul nagyszer\u0171 lenne azokat azonnal megkapni, mind\u00f6ssze n\u00e9h\u00e1ny kattint\u00e1ssal vagy p\u00e1r szkript futtat\u00e1s\u00e1val. Erre szolg\u00e1lnak a nyilv\u00e1nos felh\u0151k. N\u00e9zz\u00fck meg a defin\u00edci\u00f3t:<\/p>\n<blockquote><p>A nyilv\u00e1nos felh\u0151 azon sz\u00e1m\u00edt\u00e1si szolg\u00e1ltat\u00e1sokat jelenti, amelyeket harmadik f\u00e9l szolg\u00e1ltat\u00f3i ny\u00fajtanak a nyilv\u00e1nos Interneten, lehet\u0151v\u00e9 t\u00e9ve, hogy b\u00e1rki ig\u00e9nybe vegye vagy megv\u00e1s\u00e1rolja azokat. Ezek lehetnek ingyenesek vagy k\u00e9r\u00e9sre \u00e9rt\u00e9kes\u00edthet\u0151k, lehet\u0151v\u00e9 t\u00e9ve a v\u00e1s\u00e1rl\u00f3k sz\u00e1m\u00e1ra, hogy csak a felhaszn\u00e1lt CPU ciklusok\u00e9rt, t\u00e1rol\u00e1s\u00e9rt vagy s\u00e1vsz\u00e9less\u00e9g\u00e9rt fizessenek.<\/p><\/blockquote>\n<p>\n Az a v\u00e9lem\u00e9ny terjedt el, hogy a nyilv\u00e1nos felh\u0151k dr\u00e1g\u00e1k. De a kulcsfontoss\u00e1g\u00fa koncepci\u00f3juk a v\u00e1llalat k\u00f6lts\u00e9geinek cs\u00f6kkent\u00e9se. Mint eml\u00edtettem, a nyilv\u00e1nos felh\u0151k lehet\u0151v\u00e9 teszik az er\u0151forr\u00e1sok ig\u00e9ny szerinti beszerz\u00e9s\u00e9t, \u00e9s csak a haszn\u00e1latuk id\u0151tartama ut\u00e1n kell fizetni. Ezen k\u00edv\u00fcl n\u00e9ha elfelejtj\u00fck, hogy a munkav\u00e1llal\u00f3k fizet\u00e9st kapnak, \u00e9s a szakemberek is dr\u00e1ga er\u0151forr\u00e1snak sz\u00e1m\u00edtanak. Figyelembe kell venni, hogy a nyilv\u00e1nos felh\u0151k jelent\u0151sen megk\u00f6nny\u00edtik az infrastrukt\u00fara karbantart\u00e1s\u00e1t, lehet\u0151v\u00e9 t\u00e9ve, hogy a m\u00e9rn\u00f6k\u00f6k fontosabb feladatokra \u00f6sszpontos\u00edtsanak.\u00a0<\/p>\n<h3>\u00c9rt\u00e9k az automatiz\u00e1l\u00e1si infrastrukt\u00far\u00e1hoz<\/h3>\n<p>\n Milyen konkr\u00e9t er\u0151forr\u00e1sokra van sz\u00fcks\u00e9g\u00fcnk az end-to-end UI tesztel\u00e9shez? F\u0151k\u00e9nt virtu\u00e1lis g\u00e9pekre vagy klaszterekre (a Kubernetesr\u0151l a k\u00f6vetkez\u0151 szekci\u00f3ban besz\u00e9l\u00fcnk) van sz\u00fcks\u00e9g\u00fcnk a b\u00f6ng\u00e9sz\u0151k \u00e9s emul\u00e1torok futtat\u00e1s\u00e1hoz. Min\u00e9l t\u00f6bb b\u00f6ng\u00e9sz\u0151t \u00e9s emul\u00e1tort szeretn\u00e9nk egyszerre futtatni, ann\u00e1l t\u00f6bb CPU-ra \u00e9s mem\u00f3ri\u00e1ra van sz\u00fcks\u00e9g, \u00e9s ann\u00e1l t\u00f6bbet kell ez\u00e9rt fizetn\u00fcnk. \u00cdgy a nyilv\u00e1nos felh\u0151k az automatiz\u00e1lt tesztel\u00e9s szempontj\u00e1b\u00f3l lehet\u0151v\u00e9 teszik sz\u00e1munkra, hogy ig\u00e9ny szerint nagy sz\u00e1m\u00fa (100, 200, 1000 \u2026) b\u00f6ng\u00e9sz\u0151t\/emul\u00e1tort futtassunk, a tesztel\u00e9si eredm\u00e9nyekhez a lehet\u0151 leggyorsabban hozz\u00e1f\u00e9rj\u00fcnk, \u00e9s abbahagyjuk az ilyen \u0151r\u00fclt er\u0151forr\u00e1sig\u00e9nyes kapacit\u00e1sok\u00e9rt val\u00f3 fizet\u00e9st.\u00a0<\/p>\n<p>A legn\u00e9pszer\u0171bb felh\u0151szolg\u00e1ltat\u00f3k k\u00f6z\u00e9 tartozik az Amazon Web Services (AWS), a Microsoft Azure \u00e9s a Google Cloud Platform (GCP). A gyakorlati \u00fatmutat\u00f3ban a GCP haszn\u00e1lat\u00e1nak p\u00e9ld\u00e1it mutatjuk be, de l\u00e9nyeg\u00e9ben nem sz\u00e1m\u00edt, hogy mit haszn\u00e1lsz az automatiz\u00e1l\u00e1si feladatokhoz. Mindegyik k\u00f6r\u00fclbel\u00fcl hasonl\u00f3 funkci\u00f3kat k\u00edn\u00e1l. \u00c1ltal\u00e1ban, a szolg\u00e1ltat\u00f3 kiv\u00e1laszt\u00e1s\u00e1n\u00e1l az \u00fatmutat\u00f3 az eg\u00e9sz v\u00e1llalat infrastrukt\u00far\u00e1j\u00e1nak \u00e9s \u00fczleti k\u00f6vetelm\u00e9nyeinek f\u00f3kusz\u00e1l, ami t\u00falmutat a cikk keretein. Az automatiz\u00e1l\u00e1si m\u00e9rn\u00f6k\u00f6k sz\u00e1m\u00e1ra \u00e9rdekesebb lenne \u00f6sszehasonl\u00edtani a felh\u0151szolg\u00e1ltat\u00f3k \u00e9s a kifejezetten tesztel\u00e9si c\u00e9lokra szolg\u00e1l\u00f3 felh\u0151platformok, mint a Sauce Labs, a BrowserStack, a BitBar stb. haszn\u00e1lat\u00e1t. Sz\u00f3val, n\u00e9zz\u00fck is meg! V\u00e9lem\u00e9nyem szerint a Sauce Labs a legismertebb felh\u0151tesztel\u0151 szolg\u00e1ltat\u00e1s, ez\u00e9rt ezt v\u00e1lasztottam \u00f6sszehasonl\u00edt\u00e1sra.\u00a0<\/p>\n<p><u>GCP vs Sauce Labs automatiz\u00e1l\u00e1si c\u00e9lokra:<\/u><\/p>\n<p>K\u00e9pzelj\u00fck el, hogy egyszerre 8 webtesztet \u00e9s 8 Android tesztet kell futtatnunk. Ehhez a GCP-t fogjuk haszn\u00e1lni, \u00e9s 2 virtu\u00e1lis g\u00e9pet ind\u00edtunk el Selenoid-dal. Az els\u0151n 8 b\u00f6ng\u00e9sz\u0151 kont\u00e9nert fogunk ind\u00edtani. A m\u00e1sodikon \u2013 8 emul\u00e1tor kont\u00e9nert. N\u00e9zz\u00fck meg az \u00e1rakat:\u00a0\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"A DevOps eszk\u00f6z\u00f6k nemcsak a DevOps sz\u00e1m\u00e1ra k\u00e9sz\u00fcltek. Az automatiz\u00e1lt tesztel\u00e9si infrastrukt\u00fara fel\u00e9p\u00edt\u00e9se a null\u00e1r\u00f3l.\" src=\"\/wp-content\/uploads\/2020\/04\/e4688fd2e6e5593d2e1c22fc57f59484.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n Egy Chrome kont\u00e9ner elind\u00edt\u00e1s\u00e1hoz sz\u00fcks\u00e9g\u00fcnk lesz <strong>n1-standard-1 <\/strong>g\u00e9p. Android eset\u00e9n ez lesz <strong>n1-standard-4 <\/strong>az egyik emul\u00e1torhoz. Val\u00f3j\u00e1ban egy rugalmasabb \u00e9s olcs\u00f3bb megold\u00e1s, ha konkr\u00e9t felhaszn\u00e1l\u00f3i \u00e9rt\u00e9keket \u00e1ll\u00edtunk be a CPU\/Mem\u00f3ria sz\u00e1m\u00e1ra, de jelenleg a Sauce Labs-szal val\u00f3 \u00f6sszehasonl\u00edt\u00e1s szempontj\u00e1b\u00f3l ez nem l\u00e9nyeges.<\/p>\n<p>\u00c9s itt vannak a Sauce Labs haszn\u00e1lati tarif\u00e1i:<\/p>\n<p><img decoding=\"async\" alt=\"A DevOps eszk\u00f6z\u00f6k nemcsak a DevOps sz\u00e1m\u00e1ra k\u00e9sz\u00fcltek. Az automatiz\u00e1lt tesztel\u00e9si infrastrukt\u00fara fel\u00e9p\u00edt\u00e9se a null\u00e1r\u00f3l.\" src=\"\/wp-content\/uploads\/2020\/04\/1367d2b59bbef9603b4b4be166e8d721.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nAzt hiszem, m\u00e1r \u00e9szrevetted a k\u00fcl\u00f6nbs\u00e9get, de mindenesetre itt egy t\u00e1bl\u00e1zat a sz\u00e1m\u00edt\u00e1sainkr\u00f3l a feladatunkhoz:<\/p>\n<p><strong>Sz\u00fcks\u00e9ges er\u0151forr\u00e1sok<\/strong><br \/>\n<strong>Havi<\/strong><br \/>\n<strong>Munka\u00f3r\u00e1k<\/strong><strong>(8 a.m \u2014 8 p.m)<\/strong><br \/>\n<strong>Munka\u00f3r\u00e1k<\/strong><strong>+ Preemptible<\/strong><\/p>\n<p><strong>GCP Webhez<\/strong><br \/>\nn1-standard-1 x 8 = n1-standard-8<br \/>\n$194.18<br \/>\n23 nap * 12 \u00f3ra * 0.38 = 104.88$\u00a0<br \/>\n23 nap * 12 \u00f3ra * 0.08 = 22.08$<\/p>\n<p><strong>Sauce Labs a Webb\u0151l<\/strong><br \/>\nVirtu\u00e1lis Cloud8 p\u00e1rhuzamos tesztel\u00e9s<br \/>\n$1.559<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p><strong>GCP Androidra<\/strong><br \/>\nn1-standard-4 x 8: n1-standard-16<br \/>\n$776.72<br \/>\n23 nap * 12 \u00f3ra * 1.52 = 419.52$\u00a0<br \/>\n23 nap * 12 \u00f3ra * 0.32 = 88.32$<\/p>\n<p><strong>Sauce Labs Androidra<\/strong><br \/>\nVal\u00f3s Eszk\u00f6z Felh\u0151 8 p\u00e1rhuzamos tesztel\u00e9s<br \/>\n$1.999<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>\nAhogy l\u00e1that\u00f3, az \u00e1rk\u00fcl\u00f6nbs\u00e9g hatalmas, k\u00fcl\u00f6n\u00f6sen ha a teszteket csak a munkaid\u0151 12 \u00f3r\u00e1s id\u0151tartam\u00e1ban futtatjuk. De a k\u00f6lts\u00e9gek m\u00e9g tov\u00e1bb cs\u00f6kkenthet\u0151k, ha preemptible g\u00e9peket haszn\u00e1lunk. Mi is az?<\/p>\n<blockquote><p>A preemptible VM egy olyan p\u00e9ld\u00e1ny, amelyet sokkal alacsonyabb \u00e1ron hozhatunk l\u00e9tre \u00e9s futhatunk, mint a norm\u00e1l p\u00e9ld\u00e1nyok. Azonban a Compute Engine megsz\u00fcntetheti (preempt) ezeket a p\u00e9ld\u00e1nyokat, ha m\u00e1s feladatokhoz hozz\u00e1f\u00e9r\u00e9sre van sz\u00fcks\u00e9ge. A preemptible p\u00e9ld\u00e1nyok a Compute Engine felesleges kapacit\u00e1sa, \u00edgy a rendelkez\u00e9sre \u00e1ll\u00e1suk a haszn\u00e1lattal v\u00e1ltozik.<\/p>\n<p>Ha az alkalmaz\u00e1sai hibat\u0171r\u0151ek, \u00e9s elb\u00edrj\u00e1k a p\u00e9ld\u00e1nyok esetleges megsz\u00fcntet\u00e9s\u00e9t, akkor a preemptible p\u00e9ld\u00e1nyok jelent\u0151sen cs\u00f6kkenthetik a Compute Engine k\u00f6lts\u00e9geit. P\u00e9ld\u00e1ul a t\u00e9teles feldolgoz\u00f3 munka futtathat\u00f3 preemptible p\u00e9ld\u00e1nyokon. Ha ezek k\u00f6z\u00fcl n\u00e9h\u00e1ny p\u00e9ld\u00e1ny megsz\u0171nik a feldolgoz\u00e1s sor\u00e1n, a munka lelassul, de nem \u00e1ll meg teljesen. A preemptible p\u00e9ld\u00e1nyok befejezik a t\u00e9teles feldolgoz\u00e1si feladatait an\u00e9lk\u00fcl, hogy tov\u00e1bbi terhet r\u00f3n\u00e1nak a megl\u00e9v\u0151 p\u00e9ld\u00e1nyaira, \u00e9s an\u00e9lk\u00fcl, hogy teljes \u00e1rat kellene fizetnie tov\u00e1bbi norm\u00e1l p\u00e9ld\u00e1nyok\u00e9rt.<\/p><\/blockquote>\n<p>\n \u00c9s ez m\u00e9g nem minden! Val\u00f3j\u00e1ban biztos vagyok benne, hogy senki sem futtat teszteket 12 \u00f3r\u00e1n kereszt\u00fcl megszak\u00edt\u00e1s n\u00e9lk\u00fcl. Ha \u00edgy van, akkor automatikusan ind\u00edthatja \u00e9s le\u00e1ll\u00edthatja a virtu\u00e1lis g\u00e9peket, amikor nincsenek sz\u00fcks\u00e9g. A t\u00e9nyleges haszn\u00e1lati id\u0151 lecs\u00f6kkenthet\u0151 ak\u00e1r napi 6 \u00f3r\u00e1ra is. Ekkor a k\u00f6lts\u00e9gek a mi feladatunk kontextus\u00e1ban havi 11$-ra cs\u00f6kkennek 8 b\u00f6ng\u00e9sz\u0151 eset\u00e9n. Nem csod\u00e1s? De a preemptible g\u00e9pekkel \u00f3vatosnak kell lenn\u00fcnk, \u00e9s k\u00e9szen kell \u00e1llnunk az megszak\u00edt\u00e1sokra \u00e9s a nem stabil m\u0171k\u00f6d\u00e9sre, b\u00e1r ezek a helyzetek el\u0151re megfontolhat\u00f3k \u00e9s programoz\u00e1silag kezelhet\u0151k. Meg\u00e9ri!<\/p>\n<p>De semmik\u00e9ppen sem mondom, hogy 'soha ne haszn\u00e1lja a felh\u0151s tesztel\u00e9si farmokat'. Sz\u00e1mos el\u0151ny\u00fck van. El\u0151sz\u00f6r is, ez nem csak egy virtu\u00e1lis g\u00e9p, hanem egy val\u00f3di automatiz\u00e1l\u00e1si megold\u00e1s be\u00e9p\u00edtett funkci\u00f3kkal: t\u00e1voli hozz\u00e1f\u00e9r\u00e9s, napl\u00f3k, k\u00e9perny\u0151felv\u00e9telek, video r\u00f6gz\u00edt\u00e9s, k\u00fcl\u00f6nf\u00e9le b\u00f6ng\u00e9sz\u0151k \u00e9s val\u00f3s mobil eszk\u00f6z\u00f6k. Sok helyzetben ez p\u00f3tolhatatlan, luxus alternat\u00edva lehet. K\u00fcl\u00f6n\u00f6sen a tesztel\u00e9si platformokat hasznosak az IOS automatiz\u00e1l\u00e1s\u00e1ra, amikor a nyilv\u00e1nos felh\u0151k csak Linux\/WIndows rendszereket tudnak k\u00edn\u00e1lni. De az IOS-r\u00f3l a k\u00f6vetkez\u0151 cikkekben fogunk besz\u00e9lni. Mindig azt javaslom, hogy a helyzet alapj\u00e1n d\u00f6nts\u00fcnk, \u00e9s a feladatokt\u00f3l induljunk ki: egyes helyzetekben olcs\u00f3bb \u00e9s hat\u00e9konyabb nyilv\u00e1nos felh\u0151ket haszn\u00e1lni, m\u00edg m\u00e1sokban a tesztel\u00e9si platformok k\u00e9ts\u00e9gtelen\u00fcl meg\u00e9rik a p\u00e9nz\u00fcket.<\/p>\n<h3>A jelenlegi infrastrukt\u00fara \u00e1llapot\u00e1nak illusztr\u00e1ci\u00f3ja<\/h3>\n<p>\n<img decoding=\"async\" alt=\"A DevOps eszk\u00f6z\u00f6k nemcsak a DevOps sz\u00e1m\u00e1ra k\u00e9sz\u00fcltek. Az automatiz\u00e1lt tesztel\u00e9si infrastrukt\u00fara fel\u00e9p\u00edt\u00e9se a null\u00e1r\u00f3l.\" src=\"\/wp-content\/uploads\/2020\/04\/f68770c9e27677b9d762af574726c90e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Tanulm\u00e1nyoz\u00e1sra vonatkoz\u00f3 linkek<\/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: El\u0151re l\u00e1that\u00f3<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/compute\/vm-instance-pricing\">GCP: VM \u00e1rak<\/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\/\">Felh\u0151szoftver-ny\u00fajt\u00f3k \u00f6sszehasonl\u00edt\u00e1sa<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Hasonl\u00f3 eszk\u00f6z\u00f6k:<\/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. Orkestr\u00e1ci\u00f3<\/h2>\n<p><\/p>\n<h3>K\u00f6rvonalazott technol\u00f3gia<\/h3>\n<p>\n J\u00f3 h\u00edrem van \u2013 majdnem a cikk v\u00e9g\u00e9re \u00e9rt\u00fcnk! Jelenleg az automatiz\u00e1l\u00e1si infrastrukt\u00far\u00e1nk a web- \u00e9s Android-teszteket tartalmazza, amelyeket a GitLab CI p\u00e1rhuzamosan futtatunk Docker-t\u00e1mogat\u00f3 eszk\u00f6z\u00f6kkel: Selenium grid \u00e9s Selenoid. Ezen k\u00edv\u00fcl a GCP-n kereszt\u00fcl l\u00e9trehozott virtu\u00e1lis g\u00e9peinket haszn\u00e1ljuk b\u00f6ng\u00e9sz\u0151kkel \u00e9s emul\u00e1torokkal teli kont\u00e9nerek ind\u00edt\u00e1s\u00e1ra. A k\u00f6lts\u00e9gek cs\u00f6kkent\u00e9se \u00e9rdek\u00e9ben ezeket a virtu\u00e1lis g\u00e9peket csak ig\u00e9ny szerint ind\u00edtjuk el, \u00e9s le\u00e1ll\u00edtjuk, amikor nincs folyamatban tesztel\u00e9s. Van m\u00e9g valami, ami jav\u00edthatja az infrastrukt\u00far\u00e1nkat? A v\u00e1lasz \u2013 igen! \u00dcdv\u00f6z\u00f6lj\u00fck a Kubernetest (K8s)!<\/p>\n<p>El\u0151sz\u00f6r n\u00e9zz\u00fck meg, hogyan kapcsol\u00f3dnak egym\u00e1shoz az orkestr\u00e1ci\u00f3, a klaszter \u00e9s a Kubernetes. Magas szinten az orkestr\u00e1ci\u00f3 egy rendszer, amely telep\u00edti \u00e9s kezeli az alkalmaz\u00e1sokat. Az automatiz\u00e1lt tesztel\u00e9shez ilyen kont\u00e9neriz\u00e1lhat\u00f3 alkalmaz\u00e1sok a Selenium grid \u00e9s a Selenoid. A Docker \u00e9s a K8s kieg\u00e9sz\u00edtik egym\u00e1st. Az els\u0151t alkalmaz\u00e1sok telep\u00edt\u00e9s\u00e9re, a m\u00e1sodikat orkestr\u00e1ci\u00f3ra haszn\u00e1lj\u00e1k. A K8s viszont egy klaszter. A klaszter feladata, hogy a virtu\u00e1lis g\u00e9peket node-k\u00e9nt haszn\u00e1lja, ami lehet\u0151v\u00e9 teszi k\u00fcl\u00f6nb\u00f6z\u0151 funkci\u00f3k, programok \u00e9s szolg\u00e1ltat\u00e1sok telep\u00edt\u00e9s\u00e9t egyetlen szerveren (klaszteren) bel\u00fcl. Ha valamelyik node le\u00e1ll, a t\u00f6bbi node \u00e1tveszi a feladatokat, biztos\u00edtva az alkalmaz\u00e1sunk z\u00f6kken\u0151mentes m\u0171k\u00f6d\u00e9s\u00e9t. Ezen k\u00edv\u00fcl a K8s fontos funkci\u00f3val rendelkezik a sk\u00e1l\u00e1z\u00e1s (scaling) ter\u00e9n, amely lehet\u0151v\u00e9 teszi sz\u00e1munkra az optim\u00e1lis er\u0151forr\u00e1sok automatikus beszerz\u00e9s\u00e9t a terhel\u00e9s \u00e9s az el\u0151\u00edrt korl\u00e1tok alapj\u00e1n.<\/p>\n<p>Az igazs\u00e1g az, hogy a Kubernetes manu\u00e1lis telep\u00edt\u00e9se a null\u00e1r\u00f3l egy\u00e1ltal\u00e1n nem trivi\u00e1lis feladat. Hivatkozom a h\u00edres \"Kubernetes The Hard Way\" gyakorlati \u00fatmutat\u00f3ra, \u00e9s ha \u00e9rdekel, gyakorolhatsz is. Szerencs\u00e9re azonban l\u00e9teznek alternat\u00edv m\u00f3dok \u00e9s eszk\u00f6z\u00f6k. Az egyik legegyszer\u0171bb a Google Kubernetes Engine (GKE) haszn\u00e1lata a GCP-n, amely lehet\u0151v\u00e9 teszi, hogy n\u00e9h\u00e1ny kattint\u00e1ssal k\u00e9szen \u00e1ll\u00f3 klasztert kapjunk. Az alapk\u00e9pz\u00e9semhez kifejezetten ezt a megk\u00f6zel\u00edt\u00e9st aj\u00e1nlom, mert lehet\u0151v\u00e9 teszi, hogy arra \u00f6sszpontos\u00edts, hogyan haszn\u00e1ld a K8s-t a feladataidhoz, ahelyett, hogy azzal foglalkozn\u00e1l, hogyan kell az egyes bels\u0151 komponenseket integr\u00e1lni egym\u00e1ssal.\u00a0<\/p>\n<h3>\u00c9rt\u00e9k az automatiz\u00e1l\u00e1si infrastrukt\u00far\u00e1hoz<\/h3>\n<p>\nN\u00e9zz\u00fck meg n\u00e9h\u00e1ny jelent\u0151s funkci\u00f3t, amelyet a K8s ny\u00fajt:<\/p>\n<ul>\n<li>alkalmaz\u00e1s telep\u00edt\u00e9se: multi-node klaszter haszn\u00e1lata, a VM-ek helyett;<\/li>\n<li>dinamikus sk\u00e1l\u00e1z\u00e1s: cs\u00f6kkenti az er\u0151forr\u00e1sok k\u00f6lts\u00e9geit, amelyeket csak ig\u00e9ny szerint haszn\u00e1lnak;<\/li>\n<li>\u00f6njav\u00edt\u00e1s (Self-healing): automatikus helyre\u00e1ll\u00edt\u00e1s a pods eset\u00e9n (ami vissza\u00e1ll\u00edtja a kont\u00e9nereket is);<\/li>\n<li>friss\u00edt\u00e9sek kiad\u00e1sa \u00e9s v\u00e1ltoz\u00e1sok vissza\u00e1ll\u00edt\u00e1sa le\u00e1ll\u00e1s n\u00e9lk\u00fcl: az eszk\u00f6z\u00f6k, b\u00f6ng\u00e9sz\u0151k \u00e9s emul\u00e1torok friss\u00edt\u00e9se nem zavarja a jelenlegi felhaszn\u00e1l\u00f3k munk\u00e1j\u00e1t<\/li>\n<\/ul>\n<p>\n De a K8s m\u00e9g mindig nem ez\u00fcst ny\u00edlvessz\u0151. Hogy meg\u00e9rts\u00fck az \u00f6sszes el\u0151ny\u00e9t \u00e9s korl\u00e1toz\u00e1s\u00e1t az \u00e1ltalunk vizsg\u00e1lt eszk\u00f6z\u00f6k (Selenium grid, Selenoid) kontextus\u00e1ban, r\u00f6viden besz\u00e9lj\u00fcnk a K8s fel\u00e9p\u00edt\u00e9s\u00e9r\u0151l. A klaszter k\u00e9t t\u00edpus\u00fa csom\u00f3pontot tartalmaz: Master Nodes \u00e9s Worker Nodes. A Master Nodes felel\u0151sek a kezel\u00e9s\u00e9rt, telep\u00edt\u00e9s\u00e9rt \u00e9s a \u00fctemez\u00e9si d\u00f6nt\u00e9sek\u00e9rt. A Worker Nodes az, ahol az alkalmaz\u00e1sok futnak. A Csom\u00f3pontok tartalmazz\u00e1k a kont\u00e9ner futtat\u00e1si k\u00f6rnyezet\u00e9t is. Eset\u00fcnkben ez a Docker, amely felel\u0151s a kont\u00e9nerekkel kapcsolatos m\u0171veletek\u00e9rt. De l\u00e9teznek alternat\u00edv megold\u00e1sok is, p\u00e9ld\u00e1ul<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/containerd\/containerd\"> containerd<\/a><\/noindex>. Fontos meg\u00e9rteni, hogy a sk\u00e1l\u00e1z\u00e1s vagy az \u00f6njav\u00edt\u00e1s nem k\u00f6zvetlen\u00fcl a kont\u00e9nerekre vonatkozik. Ez a pods sz\u00e1m\u00e1nak hozz\u00e1ad\u00e1s\u00e1val\/cs\u00f6kkent\u00e9s\u00e9vel val\u00f3sul meg, amelyek viszont kont\u00e9nereket tartalmaznak (\u00e1ltal\u00e1ban egy kont\u00e9ner pod-on, de a feladat f\u00fcggv\u00e9ny\u00e9ben lehet t\u00f6bb is). A magas szint\u0171 hierarchia a worker nodes-t k\u00e9pviseli, amelyekben pods tal\u00e1lhat\u00f3k, \u00e9s amelyekben kont\u00e9nerek m\u0171k\u00f6dnek.<\/p>\n<p>A sk\u00e1l\u00e1z\u00e1si funkci\u00f3 kulcsfontoss\u00e1g\u00fa, \u00e9s alkalmazhat\u00f3 mind a cluster node-pool belsej\u00e9ben tal\u00e1lhat\u00f3 nodes, mind a node-on bel\u00fcli pods eset\u00e9ben. K\u00e9tf\u00e9le sk\u00e1l\u00e1z\u00e1s l\u00e9tezik, amelyek mind a nodes-ra, mind a pods-ra vonatkozhatnak. Az els\u0151 t\u00edpusa - horizont\u00e1lis - a nodes\/pods sz\u00e1m\u00e1nak n\u00f6vel\u00e9s\u00e9vel val\u00f3sul meg. Ez a t\u00edpus a prefer\u00e1ltabb. A m\u00e1sodik t\u00edpus, ennek megfelel\u0151en, vertik\u00e1lis. A sk\u00e1l\u00e1z\u00e1s a nodes\/pods m\u00e9ret\u00e9nek n\u00f6vel\u00e9s\u00e9vel t\u00f6rt\u00e9nik, nem pedig a sz\u00e1muk\u00e9vel.<\/p>\n<p>Most n\u00e9zz\u00fck meg eszk\u00f6zeinket a fent eml\u00edtett kifejez\u00e9sek t\u00fckr\u00e9ben.<\/p>\n<p><u>Selenium grid<\/u><\/p>\n<p>Ahogyan azt kor\u00e1bban eml\u00edtett\u00fck, a Selenium grid nagyon n\u00e9pszer\u0171 eszk\u00f6z, \u00e9s nem meglep\u0151, hogy kont\u00e9neriz\u00e1lt\u00e1k. K\u00f6vetkez\u00e9sk\u00e9ppen nem meglep\u0151, hogy a Selenium grid telep\u00edthet\u0151 K8s-be. P\u00e9lda arra, hogyan kell ezt megtenni, megtal\u00e1lhat\u00f3 a hivatalos K8s-repozit\u00f3riumban. Mint mindig, linkeket csatolok a szekci\u00f3 v\u00e9g\u00e9n. Ezenk\u00edv\u00fcl a gyakorlati \u00fatmutat\u00f3 bemutatja, hogyan lehet ezt megtenni Terraformon kereszt\u00fcl. Van egy \u00fatmutat\u00f3 is, amely bemutatja, hogyan lehet sk\u00e1l\u00e1zni a pods sz\u00e1m\u00e1t, amelyek b\u00f6ng\u00e9sz\u0151ket tartalmaz\u00f3 kont\u00e9nereket tartalmaznak. Azonban az automatikus sk\u00e1l\u00e1z\u00e1si funkci\u00f3 a K8s kontextus\u00e1ban m\u00e9g mindig nem teljesen egy\u00e9rtelm\u0171 feladat. Amikor elkezdtem a tanul\u00e1st, nem tal\u00e1ltam gyakorlati \u00fatmutat\u00f3t vagy aj\u00e1nl\u00e1sokat. T\u00f6bb kutat\u00e1s \u00e9s k\u00eds\u00e9rlet ut\u00e1n, a DevOps csapat t\u00e1mogat\u00e1s\u00e1val, a b\u00f6ng\u00e9sz\u0151ket tartalmaz\u00f3 kont\u00e9nerek egy pod-on bel\u00fcli fel\u00e1ll\u00edt\u00e1s\u00e1nak megk\u00f6zel\u00edt\u00e9s\u00e9t v\u00e1lasztottuk, amely egy worker node-on tal\u00e1lhat\u00f3. Ez a megold\u00e1s lehet\u0151v\u00e9 teszi sz\u00e1munkra a nodes horizont\u00e1lis sk\u00e1l\u00e1z\u00e1si strat\u00e9gi\u00e1j\u00e1nak alkalmaz\u00e1s\u00e1t a sz\u00e1muk n\u00f6vel\u00e9s\u00e9vel. Rem\u00e9lem, hogy a j\u00f6v\u0151ben helyzet v\u00e1ltozni fog, \u00e9s egyre t\u00f6bb le\u00edr\u00e1st \u00e9s k\u00e9sz megold\u00e1st l\u00e1tunk, k\u00fcl\u00f6n\u00f6sen a Selenium grid 4 kibocs\u00e1t\u00e1sa ut\u00e1n, amely \u00e1talak\u00edtott bels\u0151 architekt\u00far\u00e1val rendelkezik.<\/p>\n<p><u>Selenoid<\/u>:<\/p>\n<p>Jelenleg a Selenoid K8s-ben val\u00f3 telep\u00edt\u00e9se a legnagyobb csal\u00f3d\u00e1s. Nem kompatibilisek. Elm\u00e9letileg fel tudjuk emelni a Selenoid kont\u00e9nert egy pod-on bel\u00fcl, de amikor a Selenoid b\u00f6ng\u00e9sz\u0151ket futtatni kezd, azok m\u00e9g mindig ugyanabban a pod-ban lesznek. Ez lehetetlenn\u00e9 teszi a sk\u00e1l\u00e1z\u00e1st, \u00e9s ennek eredm\u00e9nyek\u00e9nt a Selenoid munk\u00e1ja a klaszterben nem k\u00fcl\u00f6nb\u00f6zik a virtu\u00e1lis g\u00e9pen val\u00f3 m\u0171k\u00f6d\u00e9st\u0151l. A t\u00f6rt\u00e9net v\u00e9ge.<\/p>\n<p><u>Moon<\/u>:<\/p>\n<p>Tudva ezt a sz\u0171k keresztmetszetet a Selenoid haszn\u00e1lata sor\u00e1n, a fejleszt\u0151k egy er\u0151sebb eszk\u00f6zt jelentettek be, amelyet Moonnak h\u00edvtak. Ez az eszk\u00f6z eredetileg a Kubernetes kezel\u00e9s\u00e9re lett tervezve, ez\u00e9rt lehet\u00e9sges \u00e9s sz\u00fcks\u00e9ges az automatikus sk\u00e1l\u00e1z\u00e1s funkci\u00f3 haszn\u00e1lata. S\u0151t, azt mondan\u00e1m, hogy jelenleg ez <u>a cikk bemutatja az etcd adatok k\u00f6zvetlen kezel\u00e9s\u00e9nek lehet\u0151s\u00e9g\u00e9t, vagyis a Kubernetes API megker\u00fcl\u00e9s\u00e9t. N\u00e9ha ez a megk\u00f6zel\u00edt\u00e9s lehet\u0151v\u00e9 teszi, hogy 'furfangos dolgokat' csin\u00e1ljunk. A sz\u00f6vegben bemutatott m\u0171veleteket val\u00f3di K8s klasztereken tesztelt\u00fck. Azonban a sz\u00e9lesk\u00f6r\u0171 felhaszn\u00e1l\u00e1sra val\u00f3 alkalmass\u00e1guk st\u00e1tusza -<\/u> az eszk\u00f6z a Selenium vil\u00e1g\u00e1ban, amely dobozb\u00f3l kiv\u00e9ve t\u00e1mogatja a nat\u00edv K8s klasztert (<i>m\u00e1r nem, l\u00e1sd a k\u00f6vetkez\u0151 eszk\u00f6zt <\/i>). A Moon kulcsfontoss\u00e1g\u00fa jellemz\u0151je, amely biztos\u00edtja ezt a t\u00e1mogat\u00e1st, a k\u00f6vetkez\u0151:\u00a0<\/p>\n<blockquote><p>Teljesen \u00e1llapotmentes. A Selenoid mem\u00f3ri\u00e1ban t\u00e1rolja a jelenleg fut\u00f3 b\u00f6ng\u00e9sz\u0151 \u00fcl\u00e9sekr\u0151l sz\u00f3l\u00f3 inform\u00e1ci\u00f3kat. Ha valamilyen okb\u00f3l a folyamata \u00f6sszeomlik, akkor az \u00f6sszes fut\u00f3 \u00fcl\u00e9s elveszik. Ezzel szemben a Moonnak nincsen bels\u0151 \u00e1llapota, \u00e9s sok p\u00e9ld\u00e1nyban replik\u00e1lhat\u00f3 adatk\u00f6zpontok k\u00f6z\u00f6tt. A b\u00f6ng\u00e9sz\u0151 \u00fcl\u00e9sek \u00e9letben maradnak, m\u00e9g akkor is, ha egy vagy t\u00f6bb replik\u00e1t le\u00e1ll\u00edtanak.<\/p><\/blockquote>\n<p>Teh\u00e1t a Moon egy nagyszer\u0171 megold\u00e1s, de van egy probl\u00e9m\u00e1ja: nem ingyenes. Az \u00e1r a \u00fcl\u00e9sek sz\u00e1m\u00e1t\u00f3l f\u00fcgg. Ingyen csak 0-4 \u00fcl\u00e9st ind\u00edthat, ami nem igaz\u00e1n hasznos. De az \u00f6t\u00f6dik \u00fcl\u00e9st\u0151l kezdve minden egyes \u00fcl\u00e9s\u00e9rt 5 doll\u00e1rt kell fizetni. A helyzet c\u00e9gr\u0151l c\u00e9gre v\u00e1ltozhat, de a mi eset\u00fcnkben a Moon haszn\u00e1lata \u00e9rtelmetlen. Ahogy fentebb m\u00e1r eml\u00edtettem, ind\u00edthatunk VMs-t Selenium Grid-del ig\u00e9ny szerint, vagy n\u00f6velhetj\u00fck a Nodes sz\u00e1m\u00e1t a klaszterben. K\u00f6r\u00fclbel\u00fcl egy pipeline-on 500 b\u00f6ng\u00e9sz\u0151t ind\u00edtunk el, \u00e9s minden er\u0151forr\u00e1st le\u00e1ll\u00edtunk a tesztek befejez\u00e9se ut\u00e1n. Ha Moon-t haszn\u00e1ln\u00e1nk, 500 x 5 = 2500 doll\u00e1rt kellene fizetn\u00fcnk havonta, f\u00fcggetlen\u00fcl att\u00f3l, hogy milyen gyakran futtatjuk a teszteket. Ism\u00e9tlem, nem azt mondom, hogy \u201ene haszn\u00e1lja a Moon-t\u201d. A feladataihoz ez elengedhetetlen megold\u00e1s lehet, p\u00e9ld\u00e1ul, ha a szervezet\u00e9ben sok projekt\/csapat van, \u00e9s egy hatalmas k\u00f6z\u00f6s klaszterre van sz\u00fcks\u00e9ge mindenkinek. Mint mindig, a cikk v\u00e9g\u00e9n linket hagyok, \u00e9s aj\u00e1nlom, hogy v\u00e9gezze el a sz\u00fcks\u00e9ges sz\u00e1m\u00edt\u00e1sokat a saj\u00e1t helyzete szempontj\u00e1b\u00f3l.<\/p>\n<p><u>Callisto<\/u>: (<i><strong>Figyelem! Ez nem szerepel az eredeti cikkben, \u00e9s csak a orosz ford\u00edt\u00e1sban tal\u00e1lhat\u00f3.<\/strong><\/i>)<\/p>\n<p>Ahogy mondtam, a Selenium egy nagyon n\u00e9pszer\u0171 eszk\u00f6z, \u00e9s az IT szf\u00e9ra nagyon gyorsan fejl\u0151dik. Am\u00edg a ford\u00edt\u00e1son dolgoztam, megjelent egy \u00faj, \u00edg\u00e9retes eszk\u00f6z, a Callisto (hell\u00f3 Cypress \u00e9s m\u00e1s Selenium-\u00f6l\u0151k). Ez nat\u00edvan m\u0171k\u00f6dik a K8s-szel, \u00e9s lehet\u0151v\u00e9 teszi a Selenoid-kont\u00e9nerek ind\u00edt\u00e1s\u00e1t a pods-ban, elosztva a Nodes-on. Minden azonnal m\u0171k\u00f6dik dobozb\u00f3l kiv\u00e9ve, bele\u00e9rtve az automatikus sk\u00e1l\u00e1z\u00e1st is. Fantasztikus, de tesztelni kell. M\u00e1r siker\u00fclt telep\u00edtenem ezt az eszk\u00f6zt, \u00e9s elv\u00e9gezni n\u00e9h\u00e1ny k\u00eds\u00e9rletet. De korai lenne k\u00f6vetkeztet\u00e9seket levonni, hossz\u00fa t\u00e1v\u00fa eredm\u00e9nyek ut\u00e1n tal\u00e1n \u00edrok egy \u00e1ttekint\u00e9st a k\u00f6vetkez\u0151 cikkekben. Most csak linkeket hagyok az \u00f6n\u00e1ll\u00f3 kutat\u00e1shoz.\u00a0\u00a0<\/p>\n<h3>A jelenlegi infrastrukt\u00fara \u00e1llapot\u00e1nak illusztr\u00e1ci\u00f3ja<\/p>\n<h3><img decoding=\"async\" alt=\"A DevOps eszk\u00f6z\u00f6k nemcsak a DevOps sz\u00e1m\u00e1ra k\u00e9sz\u00fcltek. Az automatiz\u00e1lt tesztel\u00e9si infrastrukt\u00fara fel\u00e9p\u00edt\u00e9se a null\u00e1r\u00f3l.\" src=\"\/wp-content\/uploads\/2020\/04\/c9c2ffd21df2a261947df809dcec7108.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Tanulm\u00e1nyoz\u00e1sra vonatkoz\u00f3 linkek<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/setup\/\">Kubernetes: be\u00e1ll\u00edt\u00e1s<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kelseyhightower\/kubernetes-the-hard-way\">Kubernetes: a neh\u00e9z \u00fat<\/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 motor<\/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\">A Kubernetes k\u00f6nyv<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=MmdGyqNqs9w\">Kib\u0151v\u00edtett automatiz\u00e1l\u00e1s Kubernetes-szel<\/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>Hasonl\u00f3 eszk\u00f6z\u00f6k<\/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, mint k\u00f3d (IaC)<\/h2>\n<p><\/p>\n<h3>K\u00f6rvonalazott technol\u00f3gia<\/h3>\n<p>\n \u00c9s itt vagyunk az utols\u00f3 fejezetn\u00e9l. \u00c1ltal\u00e1ban ez a technol\u00f3gia \u00e9s a hozz\u00e1 kapcsol\u00f3d\u00f3 feladatok nem tartoznak az automatiz\u00e1l\u00f3 m\u00e9rn\u00f6k\u00f6k felel\u0151ss\u00e9gi k\u00f6r\u00e9be. Ennek megvannak a maga okai. El\u0151sz\u00f6r is, sok szervezetben az infrastrukt\u00fara k\u00e9rd\u00e9seit a DevOps oszt\u00e1ly ir\u00e1ny\u00edtja, \u00e9s a fejleszt\u0151csapatok nem k\u00fcl\u00f6n\u00f6sebben agg\u00f3dnak amiatt, hogy mivel m\u0171k\u00f6dik a pipeline, \u00e9s hogyan kell fenntartani mindazt, ami kapcsol\u00f3dik hozz\u00e1. M\u00e1sodszor, legy\u00fcnk \u0151szint\u00e9k, az \u201eInfrastrukt\u00fara, mint k\u00f3d (IaC)\u201d gyakorlata m\u00e9g mindig nem elterjedt sok c\u00e9gn\u00e9l. De k\u00e9ts\u00e9gtelen\u00fcl n\u00e9pszer\u0171 trendd\u00e9 v\u00e1lt, \u00e9s fontos, hogy pr\u00f3b\u00e1ljunk r\u00e9szt venni a hozz\u00e1 kapcsol\u00f3d\u00f3 folyamatokban, megk\u00f6zel\u00edt\u00e9sekben \u00e9s eszk\u00f6z\u00f6kben. Vagy legal\u00e1bb legy\u00fcnk t\u00e1j\u00e9kozottak a fejlem\u00e9nyekr\u0151l.<\/p>\n<p>Kezdj\u00fck a motiv\u00e1ci\u00f3val, hogy mi\u00e9rt haszn\u00e1ljuk ezt a megk\u00f6zel\u00edt\u00e9st. M\u00e1r besz\u00e9lt\u00fcnk arr\u00f3l, hogy a GitlabCI tesztek futtat\u00e1s\u00e1hoz legal\u00e1bb a Gitlab Runner ind\u00edt\u00e1s\u00e1hoz sz\u00fcks\u00e9ges er\u0151forr\u00e1sokra van sz\u00fcks\u00e9g. A b\u00f6ng\u00e9sz\u0151k\/emul\u00e1torokkal rendelkez\u0151 kont\u00e9nerek ind\u00edt\u00e1s\u00e1hoz VM-et vagy klasztert kell lefoglalnunk. A tesztel\u00e9shez sz\u00fcks\u00e9ges er\u0151forr\u00e1sok mellett jelent\u0151s sz\u00e1m\u00fa kapacit\u00e1sra van sz\u00fcks\u00e9g a fejleszt\u00e9si, staging \u00e9s production k\u00f6rnyezetek fenntart\u00e1s\u00e1hoz, ami mag\u00e1ban foglalja az adatb\u00e1zisokat, automatikus \u00fctemez\u00e9seket, h\u00e1l\u00f3zati konfigur\u00e1ci\u00f3kat, terhel\u00e9smegoszt\u00f3t, felhaszn\u00e1l\u00f3i jogosults\u00e1gokat \u00e9s \u00edgy tov\u00e1bb. A kulcsprobl\u00e9ma a mindenhez sz\u00fcks\u00e9ges t\u00e1mogat\u00e1si er\u0151fesz\u00edt\u00e9sekben rejlik. Sz\u00e1mos m\u00f3dja van annak, hogyan m\u00f3dos\u00edthatunk \u00e9s g\u00f6rd\u00edthet\u00fcnk ki friss\u00edt\u00e9seket. P\u00e9ld\u00e1ul a GCP kontextus\u00e1ban haszn\u00e1lhatjuk a b\u00f6ng\u00e9sz\u0151 UI konzolj\u00e1t, \u00e9s minden m\u0171veletet v\u00e9grehajthatunk gombok kattint\u00e1s\u00e1val. Alternat\u00edv megold\u00e1sk\u00e9nt haszn\u00e1lhatjuk az API-h\u00edv\u00e1sokat, hogy interakci\u00f3ba l\u00e9pj\u00fcnk a felh\u0151 entit\u00e1sokkal, vagy alkalmazhatjuk a gcloud parancssori eszk\u00f6zt a sz\u00fcks\u00e9ges m\u0171veletek elv\u00e9gz\u00e9s\u00e9hez. De ha val\u00f3ban sok k\u00fcl\u00f6nb\u00f6z\u0151 entit\u00e1s \u00e9s infrastruktur\u00e1lis elem van, akkor neh\u00e9zz\u00e9 vagy ak\u00e1r lehetetlenn\u00e9 v\u00e1lik minden m\u0171velet manu\u00e1lis v\u00e9grehajt\u00e1sa. Tov\u00e1bb\u00e1, minden ilyen manu\u00e1lis akci\u00f3 nem ellen\u0151rz\u00f6tt. Nem tudjuk \u0151ket review-ra k\u00fcldeni v\u00e9grehajt\u00e1s el\u0151tt, nem haszn\u00e1lhatjuk a verzi\u00f3kezel\u0151 rendszert, \u00e9s gyorsan vissza\u00e1ll\u00edtani a m\u00f3dos\u00edt\u00e1sokat, amelyek incidenshez vezettek. E probl\u00e9m\u00e1k megold\u00e1s\u00e1ra az m\u00e9rn\u00f6k\u00f6k automatikus bash\/shell szkriptek l\u00e9trehoz\u00e1s\u00e1val foglalkoztak, ami nem sokkal jobb, mint a kor\u00e1bbi m\u00f3dszerek, mivel nem igaz\u00e1n k\u00f6nny\u0171 ezeket gyorsan elolvasni, meg\u00e9rteni, karbantartani \u00e9s m\u00f3dos\u00edtani elj\u00e1r\u00e1sos st\u00edlusban.<\/p>\n<p>Ebben a cikkben \u00e9s gyakorlati \u00fatmutat\u00f3ban k\u00e9t olyan eszk\u00f6zt haszn\u00e1lok, amelyek az IaC gyakorlat\u00e1hoz tartoznak. Ezek a Terraform \u00e9s az Ansible. N\u00e9h\u00e1nyan \u00fagy v\u00e9lik, hogy nincs \u00e9rtelme ezeket egyidej\u0171leg haszn\u00e1lni, mivel a funkci\u00f3ik hasonl\u00f3ak \u00e9s k\u00f6lcs\u00f6n\u00f6sen helyettes\u00edthetik egym\u00e1st. Az igazs\u00e1g azonban az, hogy eredetileg teljesen m\u00e1s feladatokat l\u00e1tnak el. A t\u00e9ny, hogy ezeket az eszk\u00f6z\u00f6ket kieg\u00e9sz\u00edtik egym\u00e1st, a HashiCorp \u00e9s a RedHat c\u00e9geket k\u00e9pvisel\u0151 fejleszt\u0151k k\u00f6z\u00f6s prezent\u00e1ci\u00f3j\u00e1n is meger\u0151s\u00edtett\u00e9k. A koncepcion\u00e1lis k\u00fcl\u00f6nbs\u00e9g abban rejlik, hogy a Terraform egy provisioning-eszk\u00f6z, amely a szerverek kezel\u00e9s\u00e9re szolg\u00e1l. M\u00edg az Ansible egy konfigur\u00e1ci\u00f3kezel\u0151 eszk\u00f6z, amelynek feladata a szoftver telep\u00edt\u00e9se, be\u00e1ll\u00edt\u00e1sa \u00e9s kezel\u00e9se ezeken a szervereken.<\/p>\n<p>Ezeknek az eszk\u00f6z\u00f6knek egy m\u00e1sik kulcsfontoss\u00e1g\u00fa megk\u00fcl\u00f6nb\u00f6ztet\u0151 jellemz\u0151je a k\u00f3d \u00edr\u00e1s\u00e1nak st\u00edlusa. A bash \u00e9s az Ansible-t\u00f3l elt\u00e9r\u0151en a Terraform deklarat\u00edv st\u00edlust haszn\u00e1l, amely a k\u00edv\u00e1nt v\u00e9g\u00e1llapot le\u00edr\u00e1s\u00e1n alapul, amelyet el kell \u00e9rni a v\u00e9grehajt\u00e1s eredm\u00e9nyek\u00e9ppen. P\u00e9ld\u00e1ul, ha 10 VMs-t szeretn\u00e9nk l\u00e9trehozni, \u00e9s a v\u00e1ltoztat\u00e1sokat a Terraform seg\u00edts\u00e9g\u00e9vel alkalmazzuk, akkor 10 VMs-t kapunk. Ha a szkriptet ism\u00e9t alkalmazzuk, akkor nem t\u00f6rt\u00e9nik semmi, mivel m\u00e1r van 10 VMs, \u00e9s a Terraform tud err\u0151l, mivel az aktu\u00e1lis infrastrukt\u00fara \u00e1llapot\u00e1t a state-f\u00e1jlban t\u00e1rolja. Az Ansible viszont procedur\u00e1lis megk\u00f6zel\u00edt\u00e9st alkalmaz, \u00e9s ha megk\u00e9rj\u00fck, hogy hozzon l\u00e9tre 10 VMs-t, akkor az els\u0151 futtat\u00e1skor 10 VMs-t kapunk, hasonl\u00f3an a Terraformhoz. De egy ism\u00e9telt futtat\u00e1skor m\u00e1r 20 VMs-\u00fcnk lesz. Ez a fontos k\u00fcl\u00f6nbs\u00e9g. A procedur\u00e1lis st\u00edlusban nem t\u00e1roljuk az aktu\u00e1lis \u00e1llapotot, \u00e9s egyszer\u0171en csak le\u00edrjuk a v\u00e9grehajtand\u00f3 l\u00e9p\u00e9sek sorrendj\u00e9t. Term\u00e9szetesen kezelhetj\u00fck a k\u00fcl\u00f6nb\u00f6z\u0151 helyzeteket, hozz\u00e1adhatunk n\u00e9h\u00e1ny ellen\u0151rz\u00e9st az er\u0151forr\u00e1sok l\u00e9tez\u00e9s\u00e9re \u00e9s az aktu\u00e1lis \u00e1llapotra, de nincs \u00e9rtelme id\u0151t pazarolni \u00e9s er\u0151fesz\u00edt\u00e9seket ford\u00edtani ennek a logik\u00e1nak az ir\u00e1ny\u00edt\u00e1s\u00e1ra. R\u00e1ad\u00e1sul ez n\u00f6veli a hib\u00e1z\u00e1s kock\u00e1zat\u00e1t.\u00a0<\/p>\n<p>\u00d6sszefoglalva az eddig elhangzottakat, meg\u00e1llap\u00edthatjuk, hogy a szerverek provisioning-j\u00e1ra a megfelel\u0151bb eszk\u00f6z a Terraform \u00e9s a deklarat\u00edv jel\u00f6l\u00e9s. Ezzel szemben a konfigur\u00e1ci\u00f3kezel\u00e9si feladatokat jobb deleg\u00e1lni az Ansible-re. Miut\u00e1n ezzel tiszt\u00e1ban vagyunk, n\u00e9zz\u00fcnk meg n\u00e9h\u00e1ny p\u00e9ld\u00e1t az automatiz\u00e1l\u00e1s kontextus\u00e1ban.<\/p>\n<h3>\u00c9rt\u00e9k az automatiz\u00e1l\u00e1si infrastrukt\u00far\u00e1hoz<\/h3>\n<p>\n Fontos meg\u00e9rteni, hogy a tesztel\u00e9si automatiz\u00e1l\u00e1s infrastrukt\u00far\u00e1j\u00e1t a v\u00e1llalat teljes infrastrukt\u00far\u00e1j\u00e1nak r\u00e9sz\u00e9nek kell tekinteni. Ez azt jelenti, hogy minden IaC-gyakorlatot glob\u00e1lisan kell alkalmazni a szervezet \u00f6sszes er\u0151forr\u00e1s\u00e1ra. A felel\u0151ss\u00e9g att\u00f3l f\u00fcgg, hogy milyenek a folyamataik. A DevOps csapat tapasztaltabb ezeken a ter\u00fcleteken, \u0151k l\u00e1tj\u00e1k az esem\u00e9nyek teljes k\u00e9p\u00e9t. Ugyanakkor a QA m\u00e9rn\u00f6k\u00f6k jobban r\u00e9szt vesznek az automatiz\u00e1l\u00e1s fel\u00e9p\u00edt\u00e9s\u00e9ben \u00e9s a pipeline strukt\u00far\u00e1j\u00e1ban, ami lehet\u0151v\u00e9 teszi sz\u00e1mukra, hogy jobban \u00e1tl\u00e1ss\u00e1k az \u00f6sszes sz\u00fcks\u00e9ges v\u00e1ltoztat\u00e1st \u00e9s a fejleszt\u00e9si lehet\u0151s\u00e9geket. A legjobb megold\u00e1s, ha egy\u00fctt dolgoznak, megosztj\u00e1k tud\u00e1sukat \u00e9s \u00f6tleteiket a v\u00e1rt eredm\u00e9nyek el\u00e9r\u00e9s\u00e9nek \u00e9rdek\u00e9ben.\u00a0<\/p>\n<p>N\u00e9h\u00e1ny p\u00e9ld\u00e1t hozn\u00e9k a Terraform \u00e9s Ansible tesztel\u00e9si automatiz\u00e1l\u00e1sban val\u00f3 felhaszn\u00e1l\u00e1s\u00e1ra, valamint az eddig t\u00e1rgyalt eszk\u00f6z\u00f6kre:<\/p>\n<p>1. A Terraform seg\u00edts\u00e9g\u00e9vel le\u00edrni a sz\u00fcks\u00e9ges jellemz\u0151ket \u00e9s param\u00e9tereket a VMs-hez \u00e9s a klaszterekhez.<\/p>\n<p>2. Az Ansible seg\u00edts\u00e9g\u00e9vel telep\u00edteni a tesztel\u00e9shez sz\u00fcks\u00e9ges eszk\u00f6z\u00f6ket: docker, Selenoid, Selenium Grid, \u00e9s let\u00f6lteni a sz\u00fcks\u00e9ges b\u00f6ng\u00e9sz\u0151\/verzi\u00f3kat.<\/p>\n<p>3. A Terraform seg\u00edts\u00e9g\u00e9vel le\u00edrni a VM jellemz\u0151it, amelyben a GitLab Runner fog futni.<\/p>\n<p>4. Az Ansible seg\u00edts\u00e9g\u00e9vel telep\u00edteni a GitLab Runner-t \u00e9s a sz\u00fcks\u00e9ges kieg\u00e9sz\u00edt\u0151 eszk\u00f6z\u00f6ket, be\u00e1ll\u00edtani a konfigur\u00e1ci\u00f3kat.<\/p>\n<h3>A jelenlegi infrastrukt\u00fara \u00e1llapot\u00e1nak illusztr\u00e1ci\u00f3ja<\/h3>\n<p>\n<img decoding=\"async\" alt=\"A DevOps eszk\u00f6z\u00f6k nemcsak a DevOps sz\u00e1m\u00e1ra k\u00e9sz\u00fcltek. Az automatiz\u00e1lt tesztel\u00e9si infrastrukt\u00fara fel\u00e9p\u00edt\u00e9se a null\u00e1r\u00f3l.\" src=\"\/wp-content\/uploads\/2020\/04\/5d793a800a4ef62e181e6cb3a3f0544e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Tanulm\u00e1nyoz\u00e1sra aj\u00e1nlott linkek:<\/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 \u00e9s Terraform jobb egy\u00fctt<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/blog.gruntwork.io\/a-comprehensive-guide-to-terraform-b3d32832baca\">\u00c1tfog\u00f3 \u00fatmutat\u00f3 a Terraformhoz<\/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\">Mi\u00e9rt haszn\u00e1ljuk a Terraformot, \u00e9s nem a Chefet, Puppetet, Ansible-t, SaltStack-et vagy CloudFormation-t<\/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>Hasonl\u00f3 eszk\u00f6z\u00f6k<\/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>\u00d6sszefoglalva!<\/h2>\n<p><\/p>\n<p><strong>L\u00e9p\u00e9s<\/strong><br \/>\n<strong>Technol\u00f3gia<\/strong><br \/>\n<strong>Helyi futtat\u00e1s (web \/ android bemutat\u00f3 tesztek el\u0151k\u00e9sz\u00edt\u00e9se \u00e9s helyi futtat\u00e1suk)<\/strong><br \/>\n<strong>\u00c9rt\u00e9k az automatiz\u00e1l\u00e1si infrastrukt\u00far\u00e1hoz<\/strong><\/p>\n<p><strong>1<\/strong><br \/>\nHelyi futtat\u00e1s<br \/>\nVerzi\u00f3kezel\u0151 rendszerek<\/p>\n<ul>\n<li>A legn\u00e9pszer\u0171bb eszk\u00f6z\u00f6k web \u00e9s mobil sz\u00e1m\u00e1ra<\/li>\n<li>T\u00f6bb nyelv \u00e9s platform (bele\u00e9rtve a Node.js-t) t\u00e1mogat\u00e1sa<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>2<\/strong><br \/>\nGit\u00a0<br \/>\nKont\u00e9neriz\u00e1l\u00e1s<\/p>\n<ul>\n<li>Hasonl\u00f3 el\u0151ny\u00f6k a fejleszt\u00e9si k\u00f3dhoz<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>3<\/strong><br \/>\nDocker, Selenium grid, Selenoid (Web, Android)<br \/>\nCI \/ CD<\/p>\n<ul>\n<li>P\u00e1rhuzamos tesztfuttat\u00e1s<\/li>\n<li>Elk\u00fcl\u00f6n\u00edtett k\u00f6rnyezetek<\/li>\n<li>Egyszer\u0171, rugalmas verzi\u00f3friss\u00edt\u00e9s<\/li>\n<li>Dinamika az inakt\u00edv er\u0151forr\u00e1sok le\u00e1ll\u00edt\u00e1sakor<\/li>\n<li>K\u00f6nnyen be\u00e1ll\u00edthat\u00f3<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>4<\/strong><br \/>\nGitlab CI<br \/>\nFelh\u0151platformok<\/p>\n<ul>\n<li>A tesztek r\u00e9szei a folyamatnak<\/li>\n<li>Gyors visszajelz\u00e9s<\/li>\n<li>\u00c1tl\u00e1that\u00f3s\u00e1g az eg\u00e9sz v\u00e1llalat \/ csapat sz\u00e1m\u00e1ra<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>5<\/strong><br \/>\nOrkesztr\u00e1ci\u00f3<br \/>\nGoogle Cloud Platform<\/p>\n<ul>\n<li>Er\u0151forr\u00e1sok ig\u00e9ny szerint (csak akkor fizet\u00fcnk, amikor sz\u00fcks\u00e9ges)<\/li>\n<li>K\u00f6nnyen kezelhet\u0151 \u00e9s friss\u00edthet\u0151<\/li>\n<li>Minden er\u0151forr\u00e1s \u00e1tl\u00e1that\u00f3s\u00e1ga \u00e9s ellen\u0151rz\u00e9se<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>6<\/strong><br \/>\nInfrastrukt\u00fara mint k\u00f3d (IaC)<br \/>\nKubernetes<br \/>\nA kont\u00e9nerekkel, b\u00f6ng\u00e9sz\u0151kkel \/ emul\u00e1torokkal bels\u0151 pods kontextus\u00e1ban:<\/p>\n<ul>\n<li>Sk\u00e1l\u00e1z\u00e1s \/ automatikus sk\u00e1l\u00e1z\u00e1s<\/li>\n<li>\u00d6n-helyre\u00e1ll\u00edt\u00e1s<\/li>\n<li>Friss\u00edt\u00e9sek \u00e9s visszag\u00f6rget\u00e9sek megszak\u00edt\u00e1s n\u00e9lk\u00fcl<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>7<\/strong><br \/>\nTerraform, Ansible<br \/>\nMinden szakasz fel\u00e9p\u00edt\u00e9se<\/p>\n<ul>\n<li>Hasonl\u00f3 el\u0151ny\u00f6k a fejleszt\u00e9si infrastrukt\u00far\u00e1val<\/li>\n<li>A k\u00f3d verzion\u00e1l\u00e1s\u00e1nak minden el\u0151nye<\/li>\n<li>K\u00f6nny\u0171 m\u00f3dos\u00edtani \u00e9s karbantartani<\/li>\n<li>Teljesen automatiz\u00e1lt<\/li>\n<\/ul>\n<p><\/p>\n<h2>Elmet\u00e9r-diagrammok: az infrastrukt\u00fara evol\u00faci\u00f3ja<\/h2>\n<p>\nstep1: Helyi<br \/>\n<img decoding=\"async\" alt=\"A DevOps eszk\u00f6z\u00f6k nemcsak a DevOps sz\u00e1m\u00e1ra k\u00e9sz\u00fcltek. Az automatiz\u00e1lt tesztel\u00e9si infrastrukt\u00fara fel\u00e9p\u00edt\u00e9se a null\u00e1r\u00f3l.\" src=\"\/wp-content\/uploads\/2020\/04\/507908ba097a603adc3b301ab2f94a8d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>step2: VCS<br \/>\n<img decoding=\"async\" alt=\"A DevOps eszk\u00f6z\u00f6k nemcsak a DevOps sz\u00e1m\u00e1ra k\u00e9sz\u00fcltek. Az automatiz\u00e1lt tesztel\u00e9si infrastrukt\u00fara fel\u00e9p\u00edt\u00e9se a null\u00e1r\u00f3l.\" src=\"\/wp-content\/uploads\/2020\/04\/71c5170293d98375d8ab86d05eb47a33.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>step3: Kont\u00e9neriz\u00e1l\u00e1s\u00a0<br \/>\n<img decoding=\"async\" alt=\"A DevOps eszk\u00f6z\u00f6k nemcsak a DevOps sz\u00e1m\u00e1ra k\u00e9sz\u00fcltek. Az automatiz\u00e1lt tesztel\u00e9si infrastrukt\u00fara fel\u00e9p\u00edt\u00e9se a null\u00e1r\u00f3l.\" src=\"\/wp-content\/uploads\/2020\/04\/da33442a592851e07c3f5800c3ee9ead.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>step4: CI\/CD\u00a0<br \/>\n<img decoding=\"async\" alt=\"A DevOps eszk\u00f6z\u00f6k nemcsak a DevOps sz\u00e1m\u00e1ra k\u00e9sz\u00fcltek. Az automatiz\u00e1lt tesztel\u00e9si infrastrukt\u00fara fel\u00e9p\u00edt\u00e9se a null\u00e1r\u00f3l.\" src=\"\/wp-content\/uploads\/2020\/04\/900f18b45124412a1ad00d3901efb40e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>step5: Felh\u0151platformok<br \/>\n<img decoding=\"async\" alt=\"A DevOps eszk\u00f6z\u00f6k nemcsak a DevOps sz\u00e1m\u00e1ra k\u00e9sz\u00fcltek. Az automatiz\u00e1lt tesztel\u00e9si infrastrukt\u00fara fel\u00e9p\u00edt\u00e9se a null\u00e1r\u00f3l.\" src=\"\/wp-content\/uploads\/2020\/04\/840e5063141ac8787612e2fc46b5d690.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>step6: Orkesztr\u00e1ci\u00f3<br \/>\n<img decoding=\"async\" alt=\"A DevOps eszk\u00f6z\u00f6k nemcsak a DevOps sz\u00e1m\u00e1ra k\u00e9sz\u00fcltek. Az automatiz\u00e1lt tesztel\u00e9si infrastrukt\u00fara fel\u00e9p\u00edt\u00e9se a null\u00e1r\u00f3l.\" src=\"\/wp-content\/uploads\/2020\/04\/4651b552efdc893695cbf359c6992e9e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>step7: IaC<br \/>\n<img decoding=\"async\" alt=\"A DevOps eszk\u00f6z\u00f6k nemcsak a DevOps sz\u00e1m\u00e1ra k\u00e9sz\u00fcltek. Az automatiz\u00e1lt tesztel\u00e9si infrastrukt\u00fara fel\u00e9p\u00edt\u00e9se a null\u00e1r\u00f3l.\" src=\"\/wp-content\/uploads\/2020\/04\/e784130f570260fc6c3aa263916e3db5.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Mi k\u00f6vetkezik?<\/h2>\n<p>\nTeh\u00e1t ez a cikk v\u00e9ge. De a z\u00e1r\u00e1sk\u00e9nt szeretn\u00e9k n\u00e9h\u00e1ny meg\u00e1llapod\u00e1st k\u00f6tni veletek.<\/p>\n<p><u>A te r\u00e9szedr\u0151l<\/u><br \/>\n Ahogy az elej\u00e9n mondtam, szeretn\u00e9m, ha a cikk gyakorlati hasznot hozna, \u00e9s seg\u00edtene a megszerzett tud\u00e1s gyakorlati alkalmaz\u00e1s\u00e1ban. M\u00e9g egyszer megosztom veletek<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/AlexeyAltunin\/devops-tools-for-qa-automation-infrastructure\"> a gyakorlati \u00fatmutat\u00f3 linkj\u00e9t<\/a><\/noindex>.<\/p>\n<p>De m\u00e9g enn\u00e9l is fontosabb, hogy ne \u00e1lljatok meg, gyakoroljatok, tanulm\u00e1nyozz\u00e1tok a relev\u00e1ns linkeket \u00e9s k\u00f6nyveket, ismerj\u00e9tek meg, hogyan m\u0171k\u00f6dik mindez n\u00e1latok a c\u00e9gn\u00e9l, tal\u00e1lj\u00e1tok meg a fejleszt\u00e9sre v\u00e1r\u00f3 helyeket, \u00e9s vegyetek r\u00e9szt ebben. Sok sikert!<\/p>\n<p><u>Az \u00e9n r\u00e9szemr\u0151l<\/u><\/p>\n<p>A c\u00edm alapj\u00e1n l\u00e1that\u00f3, hogy ez csak az els\u0151 r\u00e9sz volt. B\u00e1r el\u00e9g terjedelmes lett, m\u00e9g mindig fontos t\u00e9m\u00e1k nincsenek kifejtve. A m\u00e1sodik r\u00e9szben az automatiz\u00e1l\u00e1s infrastrukt\u00far\u00e1j\u00e1t k\u00edv\u00e1nom megvizsg\u00e1lni az IOS kontextus\u00e1ban. Az Apple \u00e1ltal bevezetett korl\u00e1toz\u00e1sok, amelyeket az IOS szimul\u00e1torok futtat\u00e1s\u00e1ra csak macOS rendszerekre alkalmaznak, lecs\u00f6kkentik a megold\u00e1saink k\u00f6r\u00e9t. P\u00e9ld\u00e1ul nem haszn\u00e1lhatjuk a Dockert a szimul\u00e1tor futtat\u00e1s\u00e1ra, \u00e9s a nyilv\u00e1nos felh\u0151k sem \u00e1llnak rendelkez\u00e9sre virtu\u00e1lis g\u00e9pek ind\u00edt\u00e1s\u00e1hoz. De ez nem jelenti azt, hogy nincsenek m\u00e1s alternat\u00edv\u00e1k. Igyekszem t\u00e1j\u00e9koztatni benneteket a leg\u00fajabb megold\u00e1sokr\u00f3l \u00e9s korszer\u0171 eszk\u00f6z\u00f6kr\u0151l!<\/p>\n<p>Emellett nem eml\u00edtettem a monitoroz\u00e1ssal kapcsolatos el\u00e9g jelent\u0151s t\u00e9m\u00e1kat. A 3. r\u00e9szben a legn\u00e9pszer\u0171bb infrastrukt\u00fara-monitoroz\u00f3 eszk\u00f6z\u00f6ket fogom \u00e1ttekinteni, valamint azokat az adatokat \u00e9s metrik\u00e1kat, amelyeket figyelembe \u00e9rdemes venni.<\/p>\n<p>V\u00e9g\u00fcl pedig. A j\u00f6v\u0151ben szeretn\u00e9k kiadni egy vide\u00f3s kurzust a tesztel\u00e9si infrastrukt\u00fara fel\u00e1ll\u00edt\u00e1s\u00e1r\u00f3l \u00e9s n\u00e9pszer\u0171 eszk\u00f6z\u00f6kr\u0151l. Jelenleg az interneten sz\u00e1mos kurzus \u00e9s el\u0151ad\u00e1s tal\u00e1lhat\u00f3 a DevOpsr\u00f3l, de minden anyag a fejleszt\u00e9s kontextus\u00e1ban van, nem pedig a tesztel\u00e9s automatiz\u00e1l\u00e1s\u00e1r\u00f3l. Ebben a k\u00e9rd\u00e9sben nagyon fontos lenne a visszajelz\u00e9s, hogy \u00e9rdekes \u00e9s \u00e9rt\u00e9kes lenne-e egy ilyen kurzus a tesztel\u0151k \u00e9s automatiz\u00e1l\u00f3k k\u00f6z\u00f6ss\u00e9ge sz\u00e1m\u00e1ra. El\u0151re is k\u00f6sz\u00f6n\u00f6m!<\/h3>\n<\/h3>\n<p>Forr\u00e1s: <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.3 - 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\/hu\/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.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\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\/hu\/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 eszk\u00f6z\u00f6k nemcsak DevOps sz\u00e1m\u00e1ra. Az automatiz\u00e1lt tesztel\u00e9si infrastrukt\u00fara fel\u00e9p\u00edt\u00e9se null\u00e1r\u00f3l | ProHoster","description":"1. r\u00e9sz: Web \/ Android Megjegyz\u00e9s: ez a cikk az eredeti cikk orosz nyelv\u0171 ford\u00edt\u00e1sa","canonical_url":"https:\/\/prohoster.info\/hu\/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":"hu_HU","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\/hu\/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\/hu\/wp-json\/wp\/v2\/posts\/78676","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=78676"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/78676\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/78677"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=78676"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=78676"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=78676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}