{"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\/sq\/blog\/administrirovanie\/devops-instrumenty-ne-tolko-dlya-devops-proczess-postroeniya-infrastruktury-avtomatizaczii-testirovaniya-s-nulya","title":{"rendered":"Mjetet e DevOps nuk jan\u00eb vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testeve nga zero.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Pjesa 1: Web \/ Android<\/h1>\n<p>\n <u>Sh\u00ebnim<\/u>: <i>ky artikull \u00ebsht\u00eb p\u00ebrkthim n\u00eb shqip i artikullit origjinal\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>\u00abMjetet e DevOps nuk jan\u00eb vet\u00ebm p\u00ebr DevOps. Nd\u00ebrtimi i infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testeve nga zero\u00bb.<\/i><\/a><\/noindex><i> Megjithat\u00eb, t\u00eb gjitha ilustrimet, lidhjet, citatet dhe terma jan\u00eb ruajtur n\u00eb gjuh\u00ebn origjinale p\u00ebr t\u00eb shmangur shkeljen e kuptimit gjat\u00eb p\u00ebrkthimit n\u00eb shqip. Ju uroj nj\u00eb studim t\u00eb k\u00ebndsh\u00ebm!<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Mjetet e DevOps nuk jan\u00eb vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testeve nga zero.\" 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 Aktualisht, specializimi DevOps \u00ebsht\u00eb nj\u00eb nga m\u00eb t\u00eb k\u00ebrkuarat n\u00eb industrin\u00eb e IT. N\u00ebse hapni faqet e njohura p\u00ebr k\u00ebrkimin e pun\u00ebs dhe vendosni filtrin p\u00ebr pagat, do t\u00eb shihni se ofertat e pun\u00ebs lidhur me DevOps jan\u00eb n\u00eb fillim t\u00eb list\u00ebs. Megjithat\u00eb, \u00ebsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb kuptohet se kjo lidhet kryesisht me pozitat \u2018Senior\u2019, gj\u00eb q\u00eb n\u00ebnkupton se kandidati ka nj\u00eb nivel t\u00eb lart\u00eb aft\u00ebsish, njohuri p\u00ebr teknologji dhe mjete. Kjo gjithashtu vjen me nj\u00eb shkall\u00eb t\u00eb lart\u00eb p\u00ebrgjegj\u00ebsie lidhur me funksionimin e vazhduesh\u00ebm t\u00eb production. Megjithat\u00eb, kemi filluar t\u00eb harrojm\u00eb se \u00e7far\u00eb \u00ebsht\u00eb realisht DevOps. Fillimisht, kjo nuk ishte nj\u00eb person ose departament specifik. N\u00ebse k\u00ebrkojm\u00eb definicione t\u00eb k\u00ebtij termi, do t\u00eb gjejm\u00eb shum\u00eb substanca dhe t\u00eb sakta, si metodologji, praktika, filozofi kulturore, grup koncepcionesh dhe k\u00ebshtu me radh\u00eb.<\/p>\n<p>Specializimi im \u00ebsht\u00eb inxhinier i automatizimit t\u00eb testeve (QA automation engineer), por un\u00eb besoj se kjo nuk duhet t\u00eb lidhet vet\u00ebm me shkrimin e testeve automatike ose zhvillimin e arkitektur\u00ebs s\u00eb framework-ut p\u00ebr teste. N\u00eb vitin 2020, njohurit\u00eb mbi infrastruktur\u00ebn e automatizimit gjithashtu jan\u00eb t\u00eb nevojshme. Kjo lejon q\u00eb procesi i automatizimit t\u00eb organizohet vet\u00eb, duke filluar nga ekzekutimi i testeve dhe duke p\u00ebrfunduar me ofrimin e rezultateve p\u00ebr t\u00eb gjith\u00eb personat e interesuar n\u00eb p\u00ebrputhje me objektivat e vendosura. Si rezultat, aft\u00ebsit\u00eb DevOps jan\u00eb nj\u00eb faktor i domosdosh\u00ebm p\u00ebr kryerjen e k\u00ebsaj pune. Dhe gjith\u00eb kjo \u00ebsht\u00eb e bukur, por fatkeq\u00ebsisht, ka nj\u00eb problem (<i>spoiler: ky artikull b\u00ebn p\u00ebrpjekje p\u00ebr ta thjeshtuar k\u00ebt\u00eb problem<\/i>). Ai q\u00ebndron n\u00eb faktin se DevOps \u00ebsht\u00eb i komplikuar. Dhe kjo \u00ebsht\u00eb e qart\u00eb, pasi kompanit\u00eb nuk do t\u00eb paguajn\u00eb shum\u00eb p\u00ebr at\u00eb q\u00eb \u00ebsht\u00eb e leht\u00eb p\u00ebr t'u b\u00ebr\u00eb\u2026 N\u00eb bot\u00ebn e DevOps ekziston nj\u00eb num\u00ebr i madh mjetesh, termash, praktikash, q\u00eb duhen zot\u00ebruar. Sidomos kjo \u00ebsht\u00eb e v\u00ebshtir\u00eb n\u00eb fillim t\u00eb karrier\u00ebs dhe varet nga do\u015bwiadcja teknike e mbledhur.<\/p>\n<p><img decoding=\"async\" alt=\"Mjetet e DevOps nuk jan\u00eb vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testeve nga zero.\" src=\"\/wp-content\/uploads\/2020\/04\/20712bd4acf881d5346b87f5a2b359d2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nBurimi: <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>K\u00ebtu, mendoj se do ta p\u00ebrfundojm\u00eb me pjes\u00ebn hyr\u00ebse dhe do t\u00eb fokusohemi n\u00eb q\u00ebllimin e k\u00ebtij artikulli.\u00a0<\/p>\n<h3>P\u00ebr \u00e7far\u00eb ka t\u00eb b\u00ebj\u00eb ky artikull<\/h3>\n<p>\nN\u00eb k\u00ebt\u00eb artikull, do t\u00eb ndaj p\u00ebrvoj\u00ebn time n\u00eb nd\u00ebrtimin e infrastruktur\u00ebs p\u00ebr automatizimin e testimit. N\u00eb internet mund t\u00eb gjeni shum\u00eb burime informacioni rreth veglave t\u00eb ndryshme dhe si t'i p\u00ebrdorni ato, por do doja t'i shqyrtoja ato ekskluzivisht n\u00eb kontekstin e automatizimit. Besoj se shum\u00eb inxhinier\u00eb t\u00eb automatizimit e njohin situat\u00ebn kur testet e zhvilluara, p\u00ebrve\u00e7 vetes, askush nuk i ekzekuton dhe nuk kujdeset p\u00ebr mb\u00ebshtetje. Si rezultat, testet b\u00ebhen t\u00eb tejkaluara dhe duhet t\u00eb shpenzohet koh\u00eb p\u00ebr t\u2019i aktualizuar. N\u00eb fillim t\u00eb karrier\u00ebs, kjo mund t\u00eb jet\u00eb nj\u00eb detyr\u00eb mjaft e v\u00ebshtir\u00eb: t\u00eb zgjidhni n\u00eb m\u00ebnyr\u00eb t\u00eb men\u00e7ur se cilat vegla duhet t\u00eb ndihmojn\u00eb p\u00ebr t'u zbuluar kjo problematik\u00eb, si t'i zgjidhni, konfiguroni dhe mbani. Disa testues k\u00ebrkojn\u00eb ndihm\u00eb nga DevOps (individ\u00eb), dhe po t\u00eb jemi t\u00eb sinqert\u00eb, nj\u00eb qasje e till\u00eb funksionon. N\u00eb shum\u00eb raste, kjo mund t\u00eb jet\u00eb opsioni i vet\u00ebm, pasi na mungon transparenca mbi t\u00eb gjitha var\u00ebsit\u00eb. Por, si\u00e7 e dim\u00eb, DevOps jan\u00eb djem t\u00eb z\u00ebn\u00eb, sepse ata duhet t\u00eb mendojn\u00eb p\u00ebr infrastruktur\u00ebn e t\u00ebr\u00eb kompanis\u00eb, implementimin, monitorimin, mikrosh\u00ebrbimet dhe detyra t\u00eb tjera t\u00eb ngjashme n\u00eb var\u00ebsi t\u00eb organizat\u00ebs\/faqes. Si\u00e7 ndodh zakonisht, automatizimi nuk \u00ebsht\u00eb prioritet. N\u00eb k\u00ebto raste, duhet t\u00eb p\u00ebrpiqemi t\u00eb b\u00ebjm\u00eb gjith\u00e7ka n\u00eb an\u00ebn ton\u00eb nga fillimi deri n\u00eb fund. Kjo do ta reduktoj\u00eb var\u00ebsin\u00eb, do t\u00eb p\u00ebrshpejtoj\u00eb procesin e pun\u00ebs, do t\u00eb p\u00ebrmir\u00ebsoj\u00eb aft\u00ebsit\u00eb tona dhe do t\u00eb na lejoj\u00eb t\u00eb shohim nj\u00eb pamje m\u00eb t\u00eb gjer\u00eb t\u00eb asaj q\u00eb ndodh.<\/p>\n<p>N\u00eb k\u00ebt\u00eb artikull, paraqiten mjetet m\u00eb t\u00eb k\u00ebrkuara dhe m\u00eb t\u00eb njohura, s\u00eb bashku me m\u00ebnyr\u00ebn se si t\u00eb p\u00ebrdoren ato p\u00ebr nd\u00ebrtimin hap pas hapi t\u00eb infrastruktur\u00ebs s\u00eb automatizimit. \u00c7do grup paraqitet me mjete q\u00eb jan\u00eb verifikuar p\u00ebrmes p\u00ebrvoj\u00ebs personale. Por kjo nuk do t\u00eb thot\u00eb se ju duhet t\u00eb p\u00ebrdorni t\u00eb nj\u00ebjtat. Vet\u00ebm mjetet nuk jan\u00eb t\u00eb r\u00ebnd\u00ebsishme, ato shfaqen dhe b\u00ebhen t\u00eb tejkalueshme. Detyra jon\u00eb inxhinierike \u00ebsht\u00eb t\u00eb kuptojm\u00eb parimet baz\u00eb: p\u00ebrse na nevojitet ky grup mjete dhe cilat detyra pun\u00ebs mund t\u00eb zgjidhim me ndihm\u00ebn e tyre. Prandaj, n\u00eb fund t\u00eb secil\u00ebs seksioni, l\u00eb lidhje p\u00ebr mjete t\u00eb ngjashme q\u00eb ndoshta p\u00ebrdoren n\u00eb organizat\u00ebn tuaj.<\/p>\n<h3>\u00c7far\u00eb nuk ka n\u00eb k\u00ebt\u00eb artikull<\/h3>\n<p>\nP\u00ebrs\u00ebris p\u00ebr t\u00eb disat\u00ebn her\u00eb, artikulli nuk \u00ebsht\u00eb p\u00ebr mjete specifike, prandaj k\u00ebtu nuk do t\u00eb ket\u00eb fragmentesh kode nga dokumentacioni dhe p\u00ebrshkrime t\u00eb komandave specifike. Por n\u00eb fund t\u00eb secil\u00ebs seksion, l\u00eb lidhje p\u00ebr studim m\u00eb t\u00eb detajuar.<\/p>\n<p>Kjo \u00ebsht\u00eb b\u00ebr\u00eb p\u00ebr shkak se:\u00a0<\/p>\n<ul>\n<li>k\u00ebt\u00eb material \u00ebsht\u00eb shum\u00eb e leht\u00eb ta gjeni n\u00eb burime t\u00eb ndryshme (dokumentacion, libra, kurse video);<\/li>\n<li>n\u00ebse fillojm\u00eb t\u00eb thellohemi, do t\u00eb duhet t\u00eb shkruajm\u00eb 10, 20, 30 pjes\u00eb t\u00eb k\u00ebtij artikulli (nd\u00ebrsa planet jan\u00eb 2-3);<\/li>\n<li>Thjesht nuk dua t\u00eb humbas koh\u00ebn tuaj, sepse ndoshta d\u00ebshironi t\u00eb p\u00ebrdorni mjete t\u00eb tjera p\u00ebr t\u00eb arritur t\u00eb nj\u00ebjtat q\u00ebllime.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Praktika<\/h3>\n<p>\nDo t\u00eb doja shum\u00eb q\u00eb ky material t\u00eb ishte i dobish\u00ebm p\u00ebr \u00e7do lexues, dhe jo thjesht t\u00eb lexohej dhe t\u00eb harrohej. N\u00eb \u00e7do studim, praktika \u00ebsht\u00eb nj\u00eb komponent shum\u00eb i r\u00ebnd\u00ebsish\u00ebm. P\u00ebr k\u00ebt\u00eb, kam p\u00ebrgatitur<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/AlexeyAltunin\/devops-tools-for-qa-automation-infrastructure\"> repo GitHub me udh\u00ebzime hap pas hapi se si t\u00eb b\u00ebni gjith\u00e7ka nga e para<\/a><\/noindex>. Po ashtu, do t\u00eb keni detyra p\u00ebr t\u00eb qen\u00eb t\u00eb sigurt se nuk keni kopjuar verb\u00ebrisht rreshtat e komandave t\u00eb ekzekutimit. <\/p>\n<h3>Plani<\/h3>\n<p><\/p>\n<p><strong>Hapi<\/strong><br \/>\n<strong>Teknologjia<\/strong><br \/>\n<strong>Mjetet<\/strong><\/p>\n<p><strong>1<\/strong><br \/>\nEkzekutimi lokal (p\u00ebrgatitni teste demo web \/ android dhe ekzekutoni ato lokalmente)\u00a0<br \/>\nNode.js, Selenium, Appium<\/p>\n<p><strong>2<\/strong><br \/>\nSistemet e kontrollit t\u00eb versioneve\u00a0<br \/>\nGit<\/p>\n<p><strong>3<\/strong><br \/>\nContainerizimi<br \/>\nDocker, Selenium grid, Selenoid (Web, Android)<\/p>\n<p><strong>4<\/strong><br \/>\nCI \/ CD<br \/>\nGitlab CI<\/p>\n<p><strong>5<\/strong><br \/>\nPlatforma n\u00eb cloud<br \/>\nGoogle Cloud Platform<\/p>\n<p><strong>6<\/strong><br \/>\nOrkestrimi<br \/>\nKubernetes<\/p>\n<p><strong>7<\/strong><br \/>\nInfrastruktura si kod (IaC)<br \/>\nTerraform, Ansible<\/p>\n<p><\/p>\n<h3>Struktura e \u00e7do seksioni<\/h3>\n<p>\nP\u00ebr t\u00eb mbajtur narrativin n\u00eb nj\u00eb pamje t\u00eb qart\u00eb, \u00e7do seksion p\u00ebrshkruhet sipas skem\u00ebs s\u00eb m\u00ebposhtme:<\/p>\n<ul>\n<li>p\u00ebrshkrim t\u00eb shkurt\u00ebr t\u00eb teknologjis\u00eb,<\/li>\n<li>vlera p\u00ebr infrastruktur\u00ebn e automatizimit,<\/li>\n<li>ilustrimi i gjendjes aktuale t\u00eb infrastruktur\u00ebs,<\/li>\n<li>linket p\u00ebr studim,<\/li>\n<li>mjetet e ngjashme.<\/li>\n<\/ul>\n<p><\/p>\n<h2>1. Ekzekutimi lokal i testeve<\/h2>\n<p><\/p>\n<h3>P\u00ebrshkrim i shkurt\u00ebr i teknologjis\u00eb<\/h3>\n<p>\nKy \u00ebsht\u00eb thjesht nj\u00eb hap p\u00ebrgatitor p\u00ebr t\u00eb nisur testet demonstrative n\u00eb m\u00ebnyr\u00eb lokale dhe p\u00ebr t\u00eb verifikuar q\u00eb ato kalojn\u00eb me sukses. N\u00eb pjes\u00ebn praktike p\u00ebrdoret Node.js, por gjuha e programimit dhe platforma gjithashtu nuk jan\u00eb t\u00eb r\u00ebnd\u00ebsishme dhe mund t\u00eb p\u00ebrdoren ato q\u00eb p\u00ebrdoren n\u00eb kompanin\u00eb tuaj.\u00a0<\/p>\n<p>Megjithat\u00eb, si mjete automatizimi rekomandoj t\u00eb p\u00ebrdorni Selenium WebDriver p\u00ebr platformat web dhe Appium p\u00ebr platform\u00ebn Android, pasi n\u00eb hapat e ardhsh\u00ebm do t\u00eb p\u00ebrdorim imazhe Docker q\u00eb jan\u00eb optimizuar p\u00ebr t\u00eb punuar me k\u00ebto mjete. P\u00ebr m\u00eb tep\u00ebr, duke iu referuar k\u00ebrkesave n\u00eb shpalljet e pun\u00ebs, k\u00ebto mjete jan\u00eb m\u00eb t\u00eb k\u00ebrkuara n\u00eb treg.<\/p>\n<p>Si\u00e7 mund ta keni v\u00ebn\u00eb re, ne po shqyrtojm\u00eb vet\u00ebm testet web dhe Android. Fatkeq\u00ebsisht, IOS \u00ebsht\u00eb nj\u00eb histori krejt e ndryshme (faleminderit Apple). Planifikoj t\u00eb ilustroj zgjidhje dhe praktika t\u00eb lidhura me IOS n\u00eb pjes\u00ebt e ardhshme.<\/p>\n<h3>Vlera p\u00ebr infrastruktur\u00ebn e automatizimit<\/h3>\n<p>\nNga k\u00ebndv\u00ebshtrimi i infrastruktur\u00ebs, nisja lokale nuk ka asnj\u00eb vler\u00eb. Ju thjesht po kontrolloni n\u00ebse testet funksionojn\u00eb n\u00eb makin\u00ebn lokale n\u00eb shfletuesit dhe simulator\u00ebt lokal\u00eb. Por megjithat\u00eb, kjo \u00ebsht\u00eb nj\u00eb pik\u00eb fillestare e nevojshme.<\/p>\n<h3>Ilustrimi i gjendjes aktuale t\u00eb infrastruktur\u00ebs<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Mjetet e DevOps nuk jan\u00eb vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testeve nga zero.\" src=\"\/wp-content\/uploads\/2020\/04\/504f28744e29938f66be41c32d9a7dc6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Linket p\u00ebr studim<\/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\">Emulatori i Androidit<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/SeleniumHQ\/selenium\/tree\/master\/javascript\/node\/selenium-webdriver\/example\">Shembujt e Selenium JS n\u00eb GitHub<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/appium\/appium\/tree\/master\/sample-code\/javascript-wd\">Shembujt e Appium JS n\u00eb GitHub<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Vegla t\u00eb ngjashme<\/h3>\n<p><\/p>\n<ul>\n<li>cdo gjuh\u00eb programuese q\u00eb ju p\u00eblqen, n\u00eb bashk\u00ebpunim me Selenium\/Appium - testet;<\/li>\n<li>\u00e7do test;<\/li>\n<li>cdo test-runners.<\/li>\n<\/ul>\n<p><\/p>\n<h2>2. Sistemet e kontrollit t\u00eb versioneve (Git)<\/h2>\n<p><\/p>\n<h3>P\u00ebrshkrim i shkurt\u00ebr i teknologjis\u00eb<\/h3>\n<p>\n Nuk e ka t\u00eb v\u00ebshtir\u00eb t\u00eb themi se sistemi i kontrollit t\u00eb versioneve \u00ebsht\u00eb nj\u00eb pjes\u00eb jasht\u00ebzakonisht e r\u00ebnd\u00ebsishme e zhvillimit, si n\u00eb ekip ashtu edhe individualisht. Duke u mb\u00ebshtetur n\u00eb burime t\u00eb ndryshme, mund t\u00eb themi me siguri se Git \u00ebsht\u00eb p\u00ebrfaq\u00ebsuesi m\u00eb i njohur. Sistemi i kontrollit t\u00eb versioneve ofron shum\u00eb avantazhe, si shk\u00ebmbimi i kodit, ruajtja e versioneve, rikuperimi n\u00eb deg\u00ebt e m\u00ebparshme, monitorimi i historis\u00eb s\u00eb projektit, dhe kopjet rezerv\u00eb. Nuk do t'i diskutojm\u00eb \u00e7do pik\u00eb n\u00eb detaje, pasi jam i sigurt se jeni t\u00eb njohur me to dhe i p\u00ebrdorni n\u00eb pun\u00ebn tuaj t\u00eb p\u00ebrditshme. Por n\u00ebse ndodhemi n\u00eb rastin tjet\u00ebr, ju rekomandoj t\u00eb ndaloni leximin e k\u00ebtij artikulli dhe t\u00eb plot\u00ebsoni sa m\u00eb shpejt k\u00ebt\u00eb boshll\u00ebk.<\/p>\n<h3>Vlera p\u00ebr infrastruktur\u00ebn e automatizimit<\/h3>\n<p>\n Dhe k\u00ebtu mund t\u00eb b\u00ebni nj\u00eb pyetje t\u00eb arsyeshme: \u00abP\u00ebrse po na flet p\u00ebr Git? T\u00eb gjith\u00eb e din\u00eb dhe e p\u00ebrdorin p\u00ebr kodin e zhvillimit, si dhe p\u00ebr kodin e testeve automatike\u00bb. Do t\u00eb jeni plot\u00ebsisht t\u00eb drejt\u00eb, por n\u00eb k\u00ebt\u00eb artikull po flasim p\u00ebr infrastruktur\u00ebn dhe kjo seksion ka rol si nj\u00eb parashikim p\u00ebr seksionin 7: \u00abInfrastruktura si kod (IaC)\u00bb. P\u00ebr ne, kjo do t\u00eb thot\u00eb q\u00eb e gjith\u00eb infrastruktura, duke p\u00ebrfshir\u00eb at\u00eb t\u00eb testimit, p\u00ebrshkruhet n\u00eb form\u00eb kode, p\u00ebr rrjedhoj\u00eb mund t'i aplikojm\u00eb sisteme versionimi dhe t\u00eb p\u00ebrfitojm\u00eb p\u00ebrfitime t\u00eb ngjashme si p\u00ebr kodin e zhvillimit dhe automatizimin.<\/p>\n<p>Do ta shqyrtojm\u00eb IaC m\u00eb n\u00eb detaje n\u00eb hapin 7, por edhe tani mund t\u00eb filloni t\u00eb p\u00ebrdorni Git lokalisht duke krijuar nj\u00eb repository lokal. Pamja e p\u00ebrgjithshme do t\u00eb jet\u00eb m\u00eb e gjer\u00eb kur t\u00eb shtojm\u00eb n\u00eb infrastruktur\u00eb nj\u00eb repository t\u00eb larg\u00ebt.<\/p>\n<h3>Ilustrimi i gjendjes aktuale t\u00eb infrastruktur\u00ebs<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Mjetet e DevOps nuk jan\u00eb vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testeve nga zero.\" src=\"\/wp-content\/uploads\/2020\/04\/f17c1d2b2f18aa814c44f7c443e49416.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Linket p\u00ebr studim<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.atlassian.com\/git\/tutorials\/what-is-version-control\">\u00c7far\u00eb \u00ebsht\u00eb kontrolli i versionit<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/git-scm.com\/\">Git<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/git-scm.com\/book\/en\/v2\/Getting-Started-About-Version-Control\">M\u00ebnyra e fillimit \u2014 Rreth Kontrollit t\u00eb Versionit<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Vegla t\u00eb ngjashme<\/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 (tani pjes\u00eb e Sh\u00ebrbimeve t\u00eb Azure DevOps)<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h2>3. Kontenjerizimi (Docker)<\/h2>\n<p><\/p>\n<h3>P\u00ebrshkrim i shkurt\u00ebr i teknologjis\u00eb<\/h3>\n<p>\n P\u00ebr t\u00eb demonstruar se si containerizimi ka ndryshuar rregullat e loj\u00ebs, le t\u00eb kthehemi disa dekada mbrapa. N\u00eb ato koh\u00eb, njer\u00ebzit blinin dhe p\u00ebrdornin server\u00eb p\u00ebr t\u00eb drejtuar aplikacione. Por n\u00eb shumic\u00ebn e rasteve, resurset e nevojshme p\u00ebr funksionimin nuk njiheshin paraprakisht. Si rezultat, kompanit\u00eb shpenzonin para p\u00ebr t\u00eb bler\u00eb server\u00eb t\u00eb fuqish\u00ebm dhe t\u00eb shtrenjt\u00eb, por nj\u00eb pjes\u00eb e k\u00ebtyre kapaciteteve nuk p\u00ebrdorej plot\u00ebsisht.<\/p>\n<p>Hapi tjet\u00ebr i evolucionit ishin makinat virtuale (VM), q\u00eb zgjidh\u00ebn problemin e shpenzimeve p\u00ebr burime t\u00eb pap\u00ebrdorura. Kjo teknologji lejonte q\u00eb aplikacionet t\u00eb funksiononin t\u00eb pavarura nga nj\u00ebra-tjetra brenda nj\u00eb serveri, duke ndar\u00eb hap\u00ebsir\u00eb plot\u00ebsisht t\u00eb izoluar. Por, fatkeq\u00ebsisht, \u00e7do teknologji ka disavantazhet e saj. Funksionimi i VM k\u00ebrkon nj\u00eb sistem operativ t\u00eb plot\u00eb, i cili konsumon CPU, RAM, ruajtje dhe, var\u00ebsisht nga sistemi operativ, duhet marr\u00eb parasysh edhe kostoja e licenc\u00ebs. K\u00ebta faktor\u00eb ndikojn\u00eb n\u00eb shpejt\u00ebsin\u00eb e ngarkes\u00ebs dhe e komplikojn\u00eb portabilitetin.<\/p>\n<p>Dhe ja, kemi arritur te kontenjerizimi. P\u00ebrs\u00ebri, kjo teknologji zgjidhi problemin e m\u00ebparsh\u00ebm, sepse kontenjer\u00ebt nuk p\u00ebrdorin nj\u00eb OS t\u00eb plot\u00eb, duke \u00e7liruar k\u00ebshtu nj\u00eb sasi t\u00eb madhe burimesh dhe ofruar nj\u00eb zgjidhje t\u00eb shpejt\u00eb dhe fleksibile p\u00ebr portabilitetin.<\/p>\n<p>Sigurisht, teknologjia e kontenjerizimit nuk \u00ebsht\u00eb di\u00e7ka e re dhe u prezantua p\u00ebr her\u00eb t\u00eb par\u00eb n\u00eb fund t\u00eb viteve '70. N\u00eb at\u00eb koh\u00eb, u zhvilluan shum\u00eb studime, p\u00ebrpjekje dhe eksperimente. Por pik\u00ebrisht Docker adaptoi k\u00ebt\u00eb teknologji dhe e b\u00ebri at\u00eb t\u00eb leht\u00eb p\u00ebr t'u aksesuar nga masa. N\u00eb dit\u00ebt tona, kur flasim p\u00ebr kontenjer\u00eb, n\u00eb shumic\u00ebn e rasteve kemi parasysh Docker-in. Kur flasim p\u00ebr kontenjer\u00ebt Docker, n\u00ebnkuptojm\u00eb kontenjer\u00ebt Linux. Mund t\u00eb p\u00ebrdorim sisteme Windows dhe macOS p\u00ebr t\u00eb ekzekutuar kontenjer\u00eb, por \u00ebsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb kuptojm\u00eb se n\u00eb k\u00ebt\u00eb rast shfaqet nj\u00eb shtres\u00eb shtes\u00eb. P\u00ebr shembull, Docker n\u00eb Mac fshehurazi ekzekuton kontenjer\u00eb brenda nj\u00eb VM t\u00eb leht\u00eb Linux. Do t\u00eb kthehemi p\u00ebrs\u00ebri te kjo tem\u00eb kur t\u00eb diskutojm\u00eb p\u00ebr ekranuar\u00ebt Android brenda kontenjer\u00ebve, sepse k\u00ebtu shfaqet nj\u00eb aspekt shum\u00eb i r\u00ebnd\u00ebsish\u00ebm q\u00eb duhet t\u00eb shqyrtohet m\u00eb n\u00eb detail.<\/p>\n<h3>Vlera p\u00ebr infrastruktur\u00ebn e automatizimit<\/h3>\n<p>\n Ne kemi zbuluar se kontenizimi dhe Docker jan\u00eb t\u00eb shk\u00eblqyera. Le t\u00eb shohim k\u00ebt\u00eb n\u00eb kontekstin e automatizimit, sepse \u00e7do mjet ose teknologji duhet t\u00eb zgjidh\u00eb nj\u00eb problem. Le t\u00eb p\u00ebrcaktojm\u00eb problemet e dukshme t\u00eb automatizimit t\u00eb testimit n\u00eb kontekstin e testeve UI:<\/p>\n<ul>\n<li>num\u00ebr i madh var\u00ebsish gjat\u00eb instalimit t\u00eb Selenium dhe ve\u00e7an\u00ebrisht t\u00eb Appium;<\/li>\n<li>probleme pajtueshm\u00ebrie midis versioneve t\u00eb shfletuesve, simulatoreve dhe driver\u00ebve;<\/li>\n<li>munges\u00eb e hap\u00ebsir\u00ebs s\u00eb izoluar p\u00ebr shfletuesit\/simulatoret, q\u00eb \u00ebsht\u00eb ve\u00e7an\u00ebrisht kritike p\u00ebr ekzekutimin paralel;<\/li>\n<li>\u00ebsht\u00eb e v\u00ebshtir\u00eb t\u00eb menaxhohet dhe t\u00eb mb\u00ebshtetet, n\u00ebse duhet t\u00eb ekzekutoni 10, 50, 100 ose madje 1000 shfletuesit nj\u00ebkoh\u00ebsisht.<\/li>\n<\/ul>\n<p>\nPor pasi q\u00eb Selenium \u00ebsht\u00eb mjeti m\u00eb popullor i automatizimit dhe Docker \u00ebsht\u00eb mjeti m\u00eb popullor i kontenizimit, nuk duhet t\u00eb jet\u00eb befasi p\u00ebr ask\u00ebnd q\u00eb dikush p\u00ebrpiqet t'i bashkoj\u00eb k\u00ebto dy p\u00ebr t\u00eb krijuar nj\u00eb mjet t\u00eb fuqish\u00ebm p\u00ebr zgjidhjen e problemeve t\u00eb m\u00ebsip\u00ebrme. Le t\u00eb shqyrtojm\u00eb zgjidhjet e tilla m\u00eb n\u00eb detaje.\u00a0<\/p>\n<p><u>Selenium grid n\u00eb docker<\/u><\/p>\n<p>Ky ky\u00e7 \u00ebsht\u00eb mjeti m\u00eb i njohur n\u00eb bot\u00eb p\u00ebr Selenium p\u00ebr t\u00eb drejtuar disa shfletues n\u00eb disa makina dhe p\u00ebr t'i menaxhuar ato nga nj\u00eb qend\u00ebr. P\u00ebr t\u00eb drejtuar t\u00eb pakt\u00ebn 2 komponent\u00eb: Hub dhe Node(s) duhet t\u00eb regjistrohemi. Hub \u00ebsht\u00eb qendra q\u00eb merr t\u00eb gjitha k\u00ebrkesat nga testet dhe i shp\u00ebrndan ato n\u00eb Nodes p\u00ebrkat\u00ebse. P\u00ebr \u00e7do Node mund t\u00eb konfiguroni specifikime konkrete, si p\u00ebr shembull t\u00eb tregoni shfletuesin dhe versionin e tij t\u00eb d\u00ebshiruar. Megjithat\u00eb, na nevojitet ende t\u00eb sigurohemi p\u00ebr shofer\u00ebt e p\u00ebrputhsh\u00ebm p\u00ebr shfletuesit dhe t'i instalojm\u00eb ato n\u00eb Nodes p\u00ebrkat\u00ebse. P\u00ebr k\u00ebt\u00eb arsye, Selenium grid nuk p\u00ebrdoret n\u00eb form\u00ebn e tij t\u00eb past\u00ebr, p\u00ebrve\u00e7 rasteve kur na nevojitet t\u00eb punojm\u00eb me shfletues q\u00eb nuk mund t\u00eb instalohen n\u00eb sistemi operacional Linux. P\u00ebr t\u00eb gjitha rastet e tjera, nj\u00eb zgjidhje shum\u00eb fleksib\u00ebl dhe e p\u00ebrshtatshme do t\u00eb ishte p\u00ebrdorimi i imazheve Docker p\u00ebr t\u00eb drejtuar Selenium grid Hub dhe Nodes. Ky qasje shum\u00eb e leht\u00ebson menaxhimin e nod\u00ebve, pasi mund t\u00eb zgjedhim imazhin e d\u00ebshiruar me versionet e shfletuesve dhe shofer\u00ebve t\u00eb p\u00ebrputhsh\u00ebm tashm\u00eb t\u00eb instaluara.<\/p>\n<p>Megjith\u00ebse ka komente negative mbi stabilitetin e operimit, ve\u00e7an\u00ebrisht kur ekzekutohen nj\u00eb num\u00ebr i madh Nodes paralelisht, Selenium grid vazhdon t\u00eb mbetet mjeti m\u00eb i njohur p\u00ebr ekzekutimin paralel t\u00eb testeve Selenium. \u00cbsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb theksohet se n\u00eb open-source po shfaqen vazhdimisht p\u00ebrmir\u00ebsime dhe modifikime t\u00eb ndryshme t\u00eb k\u00ebtij mjeti, t\u00eb cilat p\u00ebrballen me ngushticat e ndryshme.<\/p>\n<p><u>Selenoid p\u00ebr Web<\/u><\/p>\n<p>Kyta mjet \u00ebsht\u00eb nj\u00eb revolucion n\u00eb bot\u00ebn e Selenium, pasi funksionon menj\u00ebher\u00eb nga kutia dhe ka b\u00ebr\u00eb jet\u00ebn e shum\u00eb inxhinier\u00ebve t\u00eb automatizimit ndjesh\u00ebm m\u00eb t\u00eb leht\u00eb. S\u00eb pari, kjo nuk \u00ebsht\u00eb thjesht nj\u00eb modifikim tjet\u00ebr i Selenium grid. N\u00eb vend t\u00eb k\u00ebsaj, zhvilluesit kan\u00eb krijuar nj\u00eb version krejt\u00ebsisht t\u00eb ri t\u00eb Selenium Hub n\u00eb gjuh\u00ebn Golang, e cila, n\u00eb lidhje me imazhet e lehta Docker p\u00ebr shfletues t\u00eb ndrysh\u00ebm, ka dh\u00ebn\u00eb nj\u00eb nxitje n\u00eb zhvillimin e automatizimit t\u00eb testeve. P\u00ebr m\u00eb tep\u00ebr, n\u00eb rastin e Selenium Grid, ne duhet t\u00eb p\u00ebrcaktojm\u00eb t\u00eb gjith\u00eb shfletuesit dhe versionet e tyre t\u00eb k\u00ebrkuara paraprakisht, \u00e7ka nuk \u00ebsht\u00eb problem kur punojm\u00eb vet\u00ebm me nj\u00eb shfletues. Por kur flasim p\u00ebr disa shfletues t\u00eb mb\u00ebshtetur, Selenoid \u00ebsht\u00eb zgjidhja num\u00ebr nj\u00eb, fal\u00eb funksionit 'shfletues sipas k\u00ebrkes\u00ebs'. T\u00eb gjitha q\u00eb na nevojitet \u00ebsht\u00eb t\u00eb shkarkojm\u00eb paraprakisht imazhet e nevojshme t\u00eb shfletuesve dhe t\u00eb azhurnojm\u00eb skedarin e konfigurimit me t\u00eb cilin nd\u00ebrvepron Selenoid. Pas k\u00ebrkes\u00ebs nga testet, Selenoid automatikisht do t\u00eb nis\u00eb kontejnerin e nevojsh\u00ebm me shfletuesin p\u00ebrkat\u00ebs. Pas p\u00ebrfundimit t\u00eb testit, Selenoid do t\u00eb heq\u00eb kontejnerin, duke e liruar k\u00ebshtu burimin p\u00ebr k\u00ebrkesa t\u00eb ardhshme. Ky qasje eliminon plot\u00ebsisht problemin e njohur t\u00eb 'degradimit t\u00eb nyjave', t\u00eb cilin shpesh e hasim n\u00eb Selenium grid.<\/p>\n<p>Megjithat\u00eb, Selenoid nuk \u00ebsht\u00eb ende nj\u00eb zgjidhje magjike. Ne mor\u00ebm funksionin 'shfletues n\u00eb k\u00ebrkes\u00eb', por funksioni 'burime n\u00eb k\u00ebrkes\u00eb' ende nuk \u00ebsht\u00eb i disponuesh\u00ebm. P\u00ebr t\u00eb p\u00ebrdorur Selenoid, ne duhet ta angazhojm\u00eb at\u00eb n\u00eb harduerin fizik ose n\u00eb VM, q\u00eb do t\u00eb thot\u00eb se duhet t\u00eb dim\u00eb paraprakisht sa burime na nevojiten. Mendoj se kjo nuk \u00ebsht\u00eb nj\u00eb problem p\u00ebr projektet e vogla q\u00eb ekzekutojn\u00eb 10, 20 ose madje 30 shfletues paralelisht. Por \u00e7far\u00eb ndodh n\u00ebse na duhen 100, 500, 1000 e m\u00eb shum\u00eb? Nuk ka kuptim t\u00eb mbash dhe t\u00eb paguash p\u00ebr nj\u00eb num\u00ebr kaq t\u00eb madh burimesh vazhdimisht. N\u00eb seksionet 5 dhe 6 t\u00eb k\u00ebtij artikulli, ne do t\u00eb diskutojm\u00eb zgjidhjet q\u00eb lejojn\u00eb t\u00eb shkall\u00ebzohen, duke ulur ndjesh\u00ebm kostot p\u00ebr kompanin\u00eb.<\/p>\n<p><u>Selenoid p\u00ebr Android<\/u><\/p>\n<p>Pas suksesit t\u00eb Selenoid si nj\u00eb instrument p\u00ebr automatizimin web, njer\u00ebzit d\u00ebshironin t\u00eb kishin di\u00e7ka t\u00eb ngjashme p\u00ebr Android. Dhe kjo ndodhi \u2013 Selenoid u lan\u00e7ua me mb\u00ebshtetje p\u00ebr Android. Nga pik\u00ebpamja e p\u00ebrdoruesit, principi i funksionimit \u00ebsht\u00eb i ngjash\u00ebm me automatizimin web. Dallimi i vet\u00ebm \u00ebsht\u00eb se, n\u00eb vend t\u00eb kontejner\u00ebve me shfletues, Selenoid nis kontejner\u00eb me emulator\u00eb Android. Sipas mendimit tim, deri m\u00eb sot, ky \u00ebsht\u00eb instrumenti m\u00eb i fuqish\u00ebm falas p\u00ebr t\u00eb executuar teste Android n\u00eb paralel.<\/p>\n<p>Nuk doja t\u00eb flas p\u00ebr an\u00ebt negative t\u00eb k\u00ebtij instrumenti, pasi m\u00eb p\u00eblqen shum\u00eb. Megjithat\u00eb, ka disa t\u00eb nj\u00ebjtat kufizime si n\u00eb web-automatik\u00ebn e lidhur me shkall\u00ebzimin. P\u00ebrve\u00e7 k\u00ebsaj, \u00ebsht\u00eb e nevojshme t\u00eb p\u00ebrmendim nj\u00eb kufizim tjet\u00ebr q\u00eb mund t\u00eb jet\u00eb befasues n\u00ebse po e konfiguroni k\u00ebt\u00eb instrument p\u00ebr her\u00eb t\u00eb par\u00eb. P\u00ebr t\u00eb nisur imazhet Android na nevojitet nj\u00eb makin\u00eb fizike ose VM me mb\u00ebshtetje p\u00ebr virtualizimin n\u00eb nivele t\u00eb thella. N\u00eb udh\u00ebzimin praktik, tregoj si ta aktivizoni k\u00ebt\u00eb n\u00eb nj\u00eb VM Linux. Megjithat\u00eb, n\u00ebse jeni p\u00ebrdorues i macOS dhe d\u00ebshironi t\u00eb shkoni n\u00eb Selenoid lokal, do t\u00eb jet\u00eb e pamundur t\u00eb ekzekutoni testet Android. Por gjithmon\u00eb mund t\u00eb nisni nj\u00eb VM Linux lokal me \u2018virtualizimin n\u00eb nivele t\u00eb thella\u2019 t\u00eb aktivizuar dhe t\u00eb vendosni Selenoid brenda.<\/p>\n<h3>Ilustrimi i gjendjes aktuale t\u00eb infrastruktur\u00ebs<\/h3>\n<p>\n N\u00eb kontekstin e k\u00ebtij artikulli, do t\u00eb shtojm\u00eb 2 mjete p\u00ebr t\u00eb ilustruar infrastruktur\u00ebn. K\u00ebto jan\u00eb Selenium grid p\u00ebr testet web dhe Selenoid p\u00ebr testet Android. N\u00eb udh\u00ebzimin n\u00eb GitHub, do t\u00eb tregoj gjithashtu si t\u00eb p\u00ebrdorni Selenoid p\u00ebr t\u00eb ekzekutuar testet web.\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"Mjetet e DevOps nuk jan\u00eb vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testeve nga zero.\" src=\"\/wp-content\/uploads\/2020\/04\/1202ae79eba9cffc965f3a5b2648c755.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Linket p\u00ebr studim<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.docker.com\/resources\/what-container\">Docker: \u00e7far\u00eb \u00ebsht\u00eb nj\u00eb kontejner<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.docker.com\/get-started\">Docker: filloni<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/containerjournal.com\/topics\/container-ecosystems\/5-container-alternatives-to-docker\/\">5 Alternativa t\u00eb Kontejner\u00ebve p\u00ebr Docker<\/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\">Konfigurimi KVM p\u00ebr emulatoret Android<\/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\">Libri Docker Deep Dive<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Vegla t\u00eb ngjashme<\/h3>\n<p><\/p>\n<ul>\n<li>Ekzistojn\u00eb mjete t\u00eb tjera t\u00eb konteinerizimit, por Docker \u00ebsht\u00eb m\u00eb i popullarizuari. N\u00ebse d\u00ebshironi t\u00eb provoni di\u00e7ka tjet\u00ebr, mbani parasysh se ato mjete q\u00eb shqyrtuam p\u00ebr ekzekutimin paralel t\u00eb testeve Selenium nuk do t\u00eb funksionojn\u00eb nga kutia.\u00a0\u00a0<\/li>\n<li>Si\u00e7 \u00ebsht\u00eb th\u00ebn\u00eb tashm\u00eb, ekzistojn\u00eb shum\u00eb modifikime t\u00eb Selenium grid, p\u00ebr shembull,<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>P\u00ebrshkrim i shkurt\u00ebr i teknologjis\u00eb<\/h3>\n<p>\n Praktika e integrimit t\u00eb vazhduesh\u00ebm \u00ebsht\u00eb mjaft e njohur n\u00eb zhvillim dhe q\u00ebndron n\u00eb t\u00eb nj\u00ebjtin nivel me sistemet e kontrollit t\u00eb versioneve. Megjithat\u00eb, ndiej se ekziston konfuzion n\u00eb terminologji. N\u00eb k\u00ebt\u00eb paragraf, d\u00ebshiroj t\u00eb p\u00ebrshkruaj 3 modifikime t\u00eb k\u00ebsaj teknologjie nga pik\u00ebpamja ime. N\u00eb internet mund t\u00eb gjeni shum\u00eb artikuj me interpretime t\u00eb ndryshme, dhe \u00ebsht\u00eb plot\u00ebsisht normale n\u00ebse mendimi juaj ndryshon. M\u00eb e r\u00ebnd\u00ebsishmja, \u00ebsht\u00eb q\u00eb t\u00eb jeni n\u00eb t\u00eb nj\u00ebjt\u00ebn val\u00eb me koleg\u00ebt tuaj.<\/p>\n<p>Pra, ekzistojn\u00eb 3 terma: CI \u2014 Integrimi i Vazhdush\u00ebm (Continuous Integration), CD \u2014 Dor\u00ebzimi i Vazhdush\u00ebm (Continuous Delivery) dhe s\u00ebrish CD \u2014 Zbatimi i Vazhdush\u00ebm (Continuous Deployment). (<i>M\u00eb tutje, do t\u00eb p\u00ebrdor k\u00ebta terma n\u00eb anglisht<\/i>). \u00c7do modifikim shton disa etapa t\u00eb tjera n\u00eb procesin tuaj t\u00eb zhvillimit. Por fjala <u>e vazhdueshme<\/u> (ciklike) \u00ebsht\u00eb thelb\u00ebsore. N\u00eb k\u00ebt\u00eb kontekst, ne kuptojm\u00eb di\u00e7ka q\u00eb ndodh nga fillimi deri n\u00eb fund, pa nd\u00ebrprerje apo nd\u00ebrhyrje manuale. Le t\u00eb shqyrtojm\u00eb CI &#038; CD dhe CD n\u00eb k\u00ebt\u00eb kontekst.<\/p>\n<ul>\n<li><strong>Integrimi i vazhduesh\u00ebm \u2013<\/strong> \u00ebsht\u00eb hapi fillestar i evolucionit. Pas d\u00ebrgimit t\u00eb kodit t\u00eb ri n\u00eb server, ne presim t\u00eb marrim nj\u00eb p\u00ebrgjigje t\u00eb shpejt\u00eb, q\u00eb ndryshimet tona jan\u00eb n\u00eb rregull. Zakonisht, CI p\u00ebrfshin ekzekutimin e mjeteve p\u00ebr analizimin statik t\u00eb kodit dhe teste t\u00eb brendshme t\u00eb API-ve modulare. Kjo lejon t\u00eb marrim informacion n\u00eb lidhje me kodin ton\u00eb vet\u00ebm disa sekonda\/m\u00eb von\u00eb.<\/li>\n<li><strong>Continuous Delivery<\/strong> \u00ebsht\u00eb nj\u00eb hap m\u00eb i avancuar, ku ne nisnim testet integruese\/UI. Megjithat\u00eb, n\u00eb k\u00ebt\u00eb faz\u00eb ne nuk marrim rezultate aq shpejt si n\u00eb rastin e CI. N\u00eb radh\u00eb t\u00eb par\u00eb, k\u00ebto lloje testesh k\u00ebrkojn\u00eb m\u00eb shum\u00eb koh\u00eb p\u00ebr t'u realizuar. N\u00eb t\u00eb dyt\u00ebn, para se t\u00eb nisnim, duhet t\u00eb implementojm\u00eb ndryshimet tona n\u00eb ambientin test\/staging. M\u00eb shum\u00eb se kaq, n\u00ebse flasim p\u00ebr zhvillimin e aplikacioneve mobile, do t\u00eb ket\u00eb nj\u00eb hap shtes\u00eb p\u00ebr krijimin e versionit t\u00eb aplikacionit ton\u00eb.<\/li>\n<li><strong>Continuous Deployment<\/strong> parashikon q\u00eb ne automatikisht l\u00ebshojm\u00eb (release) ndryshimet tona n\u00eb production, n\u00ebse t\u00eb gjitha testet e pranuara jan\u00eb kaluar n\u00eb fazat e m\u00ebparshme. P\u00ebrve\u00e7 k\u00ebsaj, pas faz\u00ebs release mund t\u00eb konfigurohen faza t\u00eb ndryshme, si\u00e7 \u00ebsht\u00eb ekzekutimi i testeve smoke n\u00eb production dhe mbledhja e metrikeve t\u00eb interesit. Continuous Deployment \u00ebsht\u00eb e mundur vet\u00ebm me nj\u00eb mbulueshm\u00ebri t\u00eb mir\u00eb nga testet automatike. N\u00ebse k\u00ebrkohen nd\u00ebrhyrje manuale, duke p\u00ebrfshir\u00eb testimin, at\u00ebher\u00eb kjo nuk \u00ebsht\u00eb m\u00eb <u>Continuous<\/u> (pa nd\u00ebrprerje). At\u00ebher\u00eb ne mund t\u00eb flasim q\u00eb kona i yn\u00eb p\u00ebrputhet vet\u00ebm me praktik\u00ebn e Continuous Delivery.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Vlera p\u00ebr infrastruktur\u00ebn e automatizimit<\/h3>\n<p>\n N\u00eb k\u00ebt\u00eb seksion, dua t\u00eb theksoj se kur flasim p\u00ebr testet UI end-to-end, kjo do t\u00eb thot\u00eb se duhet t\u00eb deploy-n\u00eb ndryshimet tona dhe sh\u00ebrbimet lidh\u00ebse n\u00eb ambientet testuese. Continuous Integration \u2014 procesi nuk aplikohet p\u00ebr k\u00ebt\u00eb detyr\u00eb dhe duhet t\u00eb kujdesemi p\u00ebr t\u00eb implementuar praktik\u00ebn e pakt\u00ebn t\u00eb Continuous Delivery. Continuous Deployment ka gjithashtu kuptim n\u00eb kontekstin e testeve UI, n\u00ebse planifikojm\u00eb t'i ekzekutojm\u00eb ato n\u00eb production.<\/p>\n<p>Dhe para se t\u00eb shohim ilustrimin e ndryshimit t\u00eb arkitektur\u00ebs, dua t\u00eb them disa fjal\u00eb p\u00ebr GitLab CI. Ndryshe nga mjetet e tjera CI\/CD, GitLab ofron nj\u00eb depo t\u00eb larg\u00ebt dhe shum\u00eb funksione t\u00eb tjera shtes\u00eb. Prandaj, GitLab \u00ebsht\u00eb m\u00eb shum\u00eb se CI. Ai p\u00ebrfshin nga kutia menaxhimin e kodit burimor, menaxhimin Agile, CI\/CD pipelines, mjetet e logimit dhe mbledhjen e metrikave. Arkitektura e GitLab p\u00ebrb\u00ebhet nga GitLab CI\/CD dhe GitLab Runner. Po sjell nj\u00eb p\u00ebrshkrim t\u00eb shkurt\u00ebr nga faqja zyrtare:<\/p>\n<blockquote><p>GitLab CI\/CD \u00ebsht\u00eb nj\u00eb aplikacion n\u00eb internet me nj\u00eb API q\u00eb ruan gjendjen e tij n\u00eb nj\u00eb baz\u00eb t\u00eb dh\u00ebnash, menaxhon projektet\/build-et dhe ofron nj\u00eb nd\u00ebrfaqe p\u00ebrdoruesi. GitLab Runner \u00ebsht\u00eb nj\u00eb aplikacion q\u00eb proceson build-et. Ai mund t\u00eb deploy-het ve\u00e7mas dhe punon me GitLab CI\/CD p\u00ebrmes nj\u00eb API. P\u00ebr ekzekutimin e testeve, ju nevojiten si instanca e GitLab ashtu edhe Runner-i.<\/p><\/blockquote>\n<p><\/p>\n<h3>Ilustrimi i gjendjes aktuale t\u00eb infrastruktur\u00ebs<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Mjetet e DevOps nuk jan\u00eb vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testeve nga zero.\" src=\"\/wp-content\/uploads\/2020\/04\/a05ece39b6c6a9aaec4177d4b5242722.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Linket p\u00ebr studim<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/articles\/continuousIntegration.html\">Martin Fowler: Continuous Integration<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.gitlab.com\/ee\/ci\/\">GitLab CI\/CD<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/Continuous-Integration-Improving-Software-Reducing\/dp\/0321336380\">Liberi mbi Continuous Integration<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/Continuous-Delivery-Deployment-Automation-Addison-Wesley-ebook-dp-B003YMNVC0\/dp\/B003YMNVC0\/ref=mt_kindle?_encoding=UTF8&amp;me=&amp;qid=\">Liberi mbi Continuous Delivery<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Vegla t\u00eb ngjashme<\/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>Dhe shum\u00eb t\u00eb tjera<\/li>\n<\/ul>\n<p><\/p>\n<h2>5. Platforma t\u00eb cloud<\/h2>\n<p><\/p>\n<h3>P\u00ebrshkrim i shkurt\u00ebr i teknologjis\u00eb<\/h3>\n<p>\n N\u00eb k\u00ebt\u00eb seksion, do t\u00eb flasim p\u00ebr nj\u00eb trend t\u00eb njohur q\u00eb quhet 'rrjetet publike t\u00eb reja'. Pavar\u00ebsisht nga p\u00ebrfitimet e m\u00ebdha q\u00eb ofrojn\u00eb teknologjit\u00eb e p\u00ebrshkruara m\u00eb sip\u00ebr p\u00ebr virtualizimin dhe kontejnerizimin, ne ende kemi nevoj\u00eb p\u00ebr burime kompjuterike. Kompanit\u00eb blejn\u00eb servera t\u00eb shtrenjt\u00eb ose paguajn\u00eb p\u00ebr qendrat e t\u00eb dh\u00ebnave, por n\u00eb k\u00ebt\u00eb rast, \u00ebsht\u00eb e nevojshme t\u00eb b\u00ebhen kalkulime (ndonj\u00ebher\u00eb t\u00eb paarsyeshme) p\u00ebr sa burime do na nevojiten, n\u00ebse do t'i p\u00ebrdorim ato 24\/7 dhe p\u00ebr cilat q\u00ebllime. P\u00ebr shembull, p\u00ebr produksi, na nevojitet nj\u00eb server aktiv 24 or\u00eb, por a na duhen burime t\u00eb ngjashme p\u00ebr testimin jasht\u00eb orarit t\u00eb pun\u00ebs? Kjo varet gjithashtu nga lloji i testimit q\u00eb po b\u00ebjm\u00eb. Nj\u00eb shembull mund t\u00eb jen\u00eb testet e ngarkes\u00ebs\/stresit, t\u00eb cilat planifikojm\u00eb t'i realizojm\u00eb jasht\u00eb orareve t\u00eb pun\u00ebs p\u00ebr t\u00eb marr\u00eb rezultate p\u00ebr dit\u00ebn tjet\u00ebr. Por, patjet\u00ebr, qasja 24-or\u00ebshe n\u00eb servera nuk \u00ebsht\u00eb e nevojshme p\u00ebr testet automatike end-to-end dhe sidomos p\u00ebr ambientet e testimit manual. P\u00ebr k\u00ebto situata do t\u00eb ishte mir\u00eb t\u00eb merrnim aq burime sa na nevojiten n\u00eb k\u00ebrkes\u00eb, t'i p\u00ebrdorim dhe t\u00eb ndalojm\u00eb pagesat kur ato nuk jan\u00eb m\u00eb t\u00eb nevojshme. M\u00eb tej, do t\u00eb ishte e mrekullueshme t'i merrnim ato menj\u00ebher\u00eb, duke b\u00ebr\u00eb disa klikime ose duke nisur disa skripta. P\u00ebr k\u00ebt\u00eb q\u00ebllim p\u00ebrdoren rrjetet publike. Le t\u00eb shohim p\u00ebrkufizimin:<\/p>\n<blockquote><p>\u00abNdexhi i publike p\u00ebrkufizohet si sh\u00ebrbime kompjuterike t\u00eb ofruara nga ofrues t\u00eb jasht\u00ebm p\u00ebrmes Internetit publik, duke i b\u00ebr\u00eb ato t\u00eb disponueshme p\u00ebr k\u00ebdo q\u00eb d\u00ebshiron t'i p\u00ebrdor\u00eb ose t'i blej\u00eb. Ato mund t\u00eb jen\u00eb falas ose t\u00eb shiten sipas k\u00ebrkes\u00ebs, duke i lejuar klient\u00ebt t\u00eb paguajn\u00eb vet\u00ebm p\u00ebr p\u00ebrdorimin p\u00ebr ciklet e CPU, ruajtjen ose bandwidth-in q\u00eb konsumojn\u00eb\u00bb.<\/p><\/blockquote>\n<p>\n Ekziston nj\u00eb mendim i zakonsh\u00ebm se re t\u00eb publikut jan\u00eb t\u00eb shtrenjta. Por ideja kryesore e tyre \u00ebsht\u00eb ulja e shpenzimeve p\u00ebr kompanin\u00eb. Si\u00e7 u p\u00ebrmend m\u00eb par\u00eb, re t\u00eb publikut lejojn\u00eb q\u00eb t\u00eb merren burime sipas k\u00ebrkes\u00ebs dhe t\u00eb paguhet vet\u00ebm p\u00ebr koh\u00ebn e p\u00ebrdorimit t\u00eb tyre. Gjithashtu, ndonj\u00ebher\u00eb harrojm\u00eb se punonj\u00ebsit marrin pag\u00eb dhe specialist\u00ebt gjithashtu jan\u00eb nj\u00eb burim i shtrenjt\u00eb. Duhet t\u00eb merret n\u00eb konsiderat\u00eb se re t\u00eb publikut ndihmojn\u00eb shum\u00eb n\u00eb mb\u00ebshtetje t\u00eb infrastruktur\u00ebs, \u00e7ka i lejon inxhinier\u00ebt t\u00eb p\u00ebrqendrohen n\u00eb detyra m\u00eb t\u00eb r\u00ebnd\u00ebsishme.\u00a0<\/p>\n<h3>Vlera p\u00ebr infrastruktur\u00ebn e automatizimit<\/h3>\n<p>\n Cilat burime konkretisht na nevojiten p\u00ebr testimi UI end-to-end? Kryesisht, k\u00ebto jan\u00eb makina virtuale ose klastere (do t\u00eb flasim p\u00ebr Kubernetes n\u00eb seksionin e ardhsh\u00ebm) p\u00ebr t\u00eb nisur shfletuesit dhe emuluesit. M\u00eb shum\u00eb shfletues dhe emulues q\u00eb d\u00ebshirojm\u00eb t\u00eb nisim nj\u00ebkoh\u00ebsisht, aq m\u00eb shum\u00eb CPU dhe memorie na nevojitet dhe aq m\u00eb shum\u00eb do t\u00eb duhet t\u00eb paguajm\u00eb p\u00ebr k\u00ebt\u00eb. N\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb, cloud-et publike n\u00eb kontekstin e automatizimit t\u00eb testimit na lejojn\u00eb t\u00eb nisnim nj\u00eb num\u00ebr t\u00eb madh (100, 200, 1000 \u2026) shfletuesish\/emuluesish sipas k\u00ebrkes\u00ebs, t\u00eb marrim rezultatet e testimit sa m\u00eb shpejt t\u00eb jet\u00eb e mundur dhe t\u00eb ndalojm\u00eb s\u00eb paguari p\u00ebr k\u00ebto kapacitete jasht\u00ebzakonisht t\u00eb shpenzuara me burime.\u00a0<\/p>\n<p>Ofertat m\u00eb t\u00eb njohura t\u00eb sh\u00ebrbimeve n\u00eb re jan\u00eb Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP). N\u00eb udh\u00ebzuesin praktik, paraqiten shembuj t\u00eb p\u00ebrdorimit t\u00eb GCP, por n\u00eb p\u00ebrgjith\u00ebsi nuk ka r\u00ebnd\u00ebsi se \u00e7far\u00eb do t\u00eb p\u00ebrdorni p\u00ebr detyrat e automatizimit. T\u00eb gjith\u00eb ata ofrojn\u00eb funksionalitete t\u00eb ngjashme. Zgjedhja e ofruesit zakonisht fokusohet n\u00eb infrastruktur\u00ebn e t\u00ebr\u00eb t\u00eb kompanis\u00eb dhe k\u00ebrkesat e biznesit, q\u00eb \u00ebsht\u00eb jasht\u00eb k\u00ebtij artikulli. P\u00ebr inxhinier\u00ebt e automatizimit, do t\u00eb ishte m\u00eb interesante t\u00eb krahasohej p\u00ebrdorimi i ofruesve t\u00eb sh\u00ebrbimeve n\u00eb re me p\u00ebrdorimin e platformave specifike p\u00ebr q\u00ebllime testi, si\u00e7 jan\u00eb Sauce Labs, BrowserStack, BitBar dhe k\u00ebshtu me radh\u00eb. Pra, le t\u00eb b\u00ebjm\u00eb k\u00ebt\u00eb! N\u00eb mendimin tim, Sauce Labs \u00ebsht\u00eb ferm\u00eb m\u00eb e njohur e testeve n\u00eb re, prandaj e kam zgjedhur at\u00eb p\u00ebr krahasim.\u00a0<\/p>\n<p><u>GCP kund\u00ebr Sauce Labs p\u00ebr q\u00ebllime automatizimi:<\/u><\/p>\n<p>Imagjinoni se na nevojitet t\u00eb kryejm\u00eb nj\u00ebkoh\u00ebsisht 8 teste web dhe 8 teste Android. P\u00ebr k\u00ebt\u00eb, do t\u00eb p\u00ebrdorim GCP dhe do t\u00eb nisim 2 makina virtuale me Selenoid. N\u00eb t\u00eb par\u00ebn, do t\u00eb ngrem\u00eb 8 kontejner\u00eb me shfletues. N\u00eb t\u00eb dyt\u00ebn \u2013 8 kontejner\u00eb me emulues. Le t\u00eb shikojm\u00eb \u00e7mimet:\u00a0\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"Mjetet e DevOps nuk jan\u00eb vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testeve nga zero.\" src=\"\/wp-content\/uploads\/2020\/04\/e4688fd2e6e5593d2e1c22fc57f59484.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n P\u00ebr t\u00eb nisur nj\u00eb kontejner me Chrome, na nevojitet <strong>n1-standard-1 <\/strong>makina. N\u00eb rastin e Android, kjo do t\u00eb jet\u00eb <strong>n1-standard-4 <\/strong>p\u00ebr nj\u00eb emulator. N\u00eb t\u00eb v\u00ebrtet\u00eb, nj\u00eb m\u00ebnyr\u00eb m\u00eb fleksib\u00ebl dhe m\u00eb e lir\u00eb \u00ebsht\u00eb p\u00ebrcaktimi i vlerave specifike p\u00ebr CPU\/Memorie, por aktualisht p\u00ebr krahasim me Sauce Labs, kjo nuk \u00ebsht\u00eb thelb\u00ebsore.<\/p>\n<p>K\u00ebtu jan\u00eb tarifat p\u00ebr p\u00ebrdorimin e Sauce Labs:<\/p>\n<p><img decoding=\"async\" alt=\"Mjetet e DevOps nuk jan\u00eb vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testeve nga zero.\" src=\"\/wp-content\/uploads\/2020\/04\/1367d2b59bbef9603b4b4be166e8d721.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nMendoj se e keni v\u00ebn\u00eb re ndryshimin, por p\u00ebrs\u00ebri do t\u00eb sjell nj\u00eb tabel\u00eb me llogaritjet p\u00ebr detyr\u00ebn ton\u00eb:<\/p>\n<p><strong>Burimet e nevojshme<\/strong><br \/>\n<strong>Muajore<\/strong><br \/>\n<strong>Or\u00ebt e pun\u00ebs<\/strong><strong>(8 a.m \u2014 8 p.m)<\/strong><br \/>\n<strong>Or\u00ebt e pun\u00ebs<\/strong><strong>+ Preemptible<\/strong><\/p>\n<p><strong>GCP p\u00ebr Web<\/strong><br \/>\nn1-standard-1 x 8 = n1-standard-8<br \/>\n$194.18<br \/>\n23 dit\u00eb * 12h * 0.38 = 104.88$\u00a0<br \/>\n23 dit\u00eb * 12h * 0.08 = 22.08$<\/p>\n<p><strong>Sauce Labs p\u00ebr Web<\/strong><br \/>\nVirtual Cloud 8 teste paralele<br \/>\n$1.559<br \/>\n&#8212;<br \/>\n&#8212;<\/p>\n<p><strong>GCP p\u00ebr Android<\/strong><br \/>\nn1-standard-4 x 8: n1-standard-16<br \/>\n$776.72<br \/>\n23 dit\u00eb * 12h * 1.52 = 419.52$\u00a0<br \/>\n23 dit\u00eb * 12h * 0.32 = 88.32$<\/p>\n<p><strong>Sauce Labs p\u00ebr Android<\/strong><br \/>\nReal Device Cloud 8 teste paralele<br \/>\n$1.999<br \/>\n&#8212;<br \/>\n&#8212;<\/p>\n<p>\nSi\u00e7 duket, ndryshimi n\u00eb kostot \u00ebsht\u00eb i madh, ve\u00e7an\u00ebrisht n\u00ebse ekzekutoni testet vet\u00ebm gjat\u00eb orarit t\u00eb pun\u00ebs dymb\u00ebdhjet\u00eb or\u00eb. Por mund t\u00eb reduktoni kostot edhe m\u00eb shum\u00eb n\u00ebse p\u00ebrdorni makinat preemptible. \u00c7far\u00eb \u00ebsht\u00eb kjo?<\/p>\n<blockquote><p>Nj\u00eb VM preemptible \u00ebsht\u00eb nj\u00eb instanc\u00eb q\u00eb mund t\u00eb krijoni dhe ekzekutoni me nj\u00eb \u00e7mim shum\u00eb m\u00eb t\u00eb ul\u00ebt se instancat normale. Megjithat\u00eb, Motorri i Llogaritjes mund t'i ndal\u00eb (preempt) k\u00ebto instanca n\u00ebse ka nevoj\u00eb p\u00ebr qasje n\u00eb ato burime p\u00ebr detyra t\u00eb tjera. Instancat preemptible jan\u00eb kapacitet i tepruar i Motorit t\u00eb Llogaritjes, k\u00ebshtu q\u00eb disponibiliteti i tyre variacion me p\u00ebrdorimin.<\/p>\n<p>N\u00ebse aplikacionet tuaja jan\u00eb t\u00eb q\u00ebndrueshme ndaj defekteve dhe mund t\u00eb p\u00ebrballojn\u00eb mund\u00ebsit\u00eb e mundshme t\u00eb nd\u00ebrprerjes s\u00eb instanceve, at\u00ebher\u00eb instancat e nd\u00ebrprershme mund t\u00eb ulin ndjesh\u00ebm kostot tuaja t\u00eb Compute Engine. P\u00ebr shembull, pun\u00ebt e p\u00ebrpunimit t\u00eb grumbujve mund t\u00eb ekzekutohen n\u00eb instanca t\u00eb nd\u00ebrprershme. N\u00ebse disa nga k\u00ebto instance ndalen gjat\u00eb p\u00ebrpunimit, puna ngadal\u00ebsohet, por nuk ndalon krejt\u00ebsisht. Instancat e nd\u00ebrprershme p\u00ebrfundojn\u00eb detyrat tuaja t\u00eb p\u00ebrpunimit t\u00eb grumbujve pa vendosur nj\u00eb ngarkes\u00eb shtes\u00eb mbi instancat tuaja ekzistuese dhe pa e b\u00ebr\u00eb t\u00eb nevojshme t\u00eb paguani \u00e7mimin e plot\u00eb p\u00ebr instance normale shtes\u00eb.<\/p><\/blockquote>\n<p>\n Dhe kjo nuk \u00ebsht\u00eb akoma fundi! N\u00eb t\u00eb v\u00ebrtet\u00eb, jam i sigurt q\u00eb askush nuk b\u00ebn testet p\u00ebr 12 or\u00eb pa pushim. Dhe n\u00ebse \u00ebsht\u00eb k\u00ebshtu, at\u00ebher\u00eb mund t\u00eb nisni dhe ndaloni automatikisht makinat virtuale kur ato nuk jan\u00eb t\u00eb nevojshme. Koha reale e p\u00ebrdorimit mund t\u00eb ulet n\u00eb 6 or\u00eb n\u00eb dit\u00eb. At\u00ebher\u00eb pagesa n\u00eb kontekstin e detyr\u00ebs ton\u00eb do t\u00eb ulet deri n\u00eb 11$ n\u00eb muaj p\u00ebr 8 shfletues. A nuk \u00ebsht\u00eb kjo e mrekullueshme? Por me makinat e nd\u00ebrprershme duhet t\u00eb jemi t\u00eb kujdessh\u00ebm dhe t\u00eb p\u00ebrgatitur p\u00ebr nd\u00ebrprerje dhe funksionim t\u00eb paq\u00ebndruesh\u00ebm, edhe pse k\u00ebto situata mund t\u00eb parashikohen dhe trajtohen programatikisht. Vlen!<\/p>\n<p>Por t\u00eb qenit t\u00eb qart\u00eb, un\u00eb nuk po th\u00ebm\u00eb \u2018kurr\u00eb mos p\u00ebrdorni ferma testimi n\u00eb re\u2019. Ato kan\u00eb disa p\u00ebrfitime. Para s\u00eb gjithash, nuk jan\u00eb vet\u00ebm makina virtuale, por nj\u00eb zgjidhje e plot\u00eb p\u00ebr automatizimin e testimit me nj\u00eb paket\u00eb funksionalitetesh q\u00eb vijn\u00eb nga kutia: akses n\u00eb distanc\u00eb, regjistrime, skrinshot, videoincizime, shfletues t\u00eb ndrysh\u00ebm dhe pajisje mobile fizike. N\u00eb shum\u00eb raste, kjo mund t\u00eb jet\u00eb nj\u00eb alternativ\u00eb e shk\u00eblqyer. Sidomos platformat e testimit jan\u00eb t\u00eb dobishme p\u00ebr automatizimin e IOS-it, kur reja publike ofron vet\u00ebm sisteme Linux\/Windows. Por biseda p\u00ebr IOS-in do t\u00eb jet\u00eb n\u00eb artikujt e ardhsh\u00ebm. Un\u00eb rekomandoj q\u00eb gjithmon\u00eb t\u00eb vler\u00ebsoni situat\u00ebn dhe t\u00eb bazoheni n\u00eb detyrat: ndonj\u00ebher\u00eb \u00ebsht\u00eb m\u00eb e lir\u00eb dhe efektive t\u00eb p\u00ebrdorni re publike, nd\u00ebrsa n\u00eb disa raste platformat e testimit padyshim q\u00eb meritojn\u00eb parat\u00eb e shpenzuara.<\/p>\n<h3>Ilustrimi i gjendjes aktuale t\u00eb infrastruktur\u00ebs<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Mjetet e DevOps nuk jan\u00eb vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testeve nga zero.\" src=\"\/wp-content\/uploads\/2020\/04\/f68770c9e27677b9d762af574726c90e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Linket p\u00ebr studim<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/gcp\/\">GCP<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/compute\/docs\/instances\/preemptible\">GCP: Preemptible<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/compute\/vm-instance-pricing\">GCP: \u00c7mimi i VM<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/saucelabs.com\/pricing\">SauceLabs<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.inovex.de\/blog\/comparing-cloud-providers\/\">Krahasimi i Oferuesve t\u00eb Rejve<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Mjete t\u00eb ngjashme:<\/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. Orkestrimi<\/h2>\n<p><\/p>\n<h3>P\u00ebrshkrim i shkurt\u00ebr i teknologjis\u00eb<\/h3>\n<p>\n Kam nj\u00eb lajmi t\u00eb mir\u00eb \u2013 pothuajse arrit\u00ebm n\u00eb fund t\u00eb artikullit! Aktualisht, infrastruktura jon\u00eb e automatizimit p\u00ebrb\u00ebhet nga teste web dhe Android, t\u00eb cilat i kryejm\u00eb p\u00ebrmes GitLab CI n\u00eb m\u00ebnyr\u00eb paralelisht, duke p\u00ebrdorur mjete me mb\u00ebshtetje Docker: Selenium grid dhe Selenoid. P\u00ebr m\u00eb tep\u00ebr, ne p\u00ebrdorim makinat virtuale t\u00eb krijuara p\u00ebrmes GCP p\u00ebr t\u00eb ngritur n\u00eb to kontejner\u00eb me shfletues dhe emulator\u00eb. P\u00ebr t\u00eb reduktuar shpenzimet, i aktivizojm\u00eb k\u00ebto makina virtuale vet\u00ebm kur \u00ebsht\u00eb e nevojshme dhe i ndalojm\u00eb kur testingu nuk \u00ebsht\u00eb n\u00eb zhvillim. A ka di\u00e7ka tjet\u00ebr q\u00eb mund t\u00eb p\u00ebrmir\u00ebsoj\u00eb infrastruktur\u00ebn ton\u00eb? P\u00ebrgjigjja \u00ebsht\u00eb po! Mir\u00eb se erdhi Kubernetes (K8s)!<\/p>\n<p>S\u00eb pari, le t\u00eb shqyrtojm\u00eb se si fjal\u00ebt orkestrim, grumbull dhe Kubernetes jan\u00eb t\u00eb lidhura me nj\u00ebra-tjetr\u00ebn. N\u00eb nj\u00eb nivel t\u00eb lart\u00eb, orkestrimi \u00ebsht\u00eb nj\u00eb sistem q\u00eb dislokon dhe menaxhon aplikacionet. P\u00ebr automatizimin e testimit, aplikacionet e containerizuara jan\u00eb Selenium grid dhe Selenoid. Docker dhe K8s plot\u00ebsojn\u00eb nj\u00ebri-tjetrin. I pari p\u00ebrdoret p\u00ebr dislokimin e aplikacioneve, i dyti \u2013 p\u00ebr orkestrimin. Nga ana tjet\u00ebr, K8s \u00ebsht\u00eb nj\u00eb grumbull. Detyra e grumbullit \u00ebsht\u00eb t\u00eb p\u00ebrdor\u00eb VM-t\u00eb si Node, q\u00eb lejon instalimin e funksionaliteteve t\u00eb ndryshme, programeve dhe sh\u00ebrbimeve brenda nj\u00eb serveri (grumbulli). N\u00ebse ndonj\u00eb Node rr\u00ebzohet, at\u00ebher\u00eb Nodes t\u00eb tjera do ta marrin p\u00ebrsip\u00ebr, duke garantuar funksionimin pa nd\u00ebrprerje t\u00eb aplikacionit ton\u00eb. P\u00ebrve\u00e7 k\u00ebsaj, K8s ka nj\u00eb funksionalitet t\u00eb r\u00ebnd\u00ebsish\u00ebm q\u00eb lidhet me shkall\u00ebzimin (scaling), duke na ofruar automatikisht numrin optimal t\u00eb burimeve, n\u00eb baz\u00eb t\u00eb ngarkes\u00ebs dhe kufizimeve t\u00eb caktuara.<\/p>\n<p>Sipas t\u00eb v\u00ebrtet\u00eb, konfigurimi manual i Kubernetes nga zero \u00ebsht\u00eb nj\u00eb detyr\u00eb mjaft e nd\u00ebrlikuar. Do t\u00eb l\u00eb nj\u00eb lidhje me udh\u00ebzimin e njohur praktik \"Kubernetes The Hard Way\", dhe n\u00ebse jeni t\u00eb interesuar, mund t\u00eb praktikoni. Por, p\u00ebr fat t\u00eb mir\u00eb, ekzistojn\u00eb m\u00ebnyra dhe mjete alternative. M\u00eb i lehti prej tyre \u00ebsht\u00eb t\u00eb p\u00ebrdorni Google Kubernetes Engine (GKE) n\u00eb GCP, i cili do t\u00eb siguroj\u00eb nj\u00eb klaster t\u00eb gatsh\u00ebm pas disa klikimeve. P\u00ebr fillimin e studimeve, rekomandoj t\u00eb p\u00ebrdorni k\u00ebt\u00eb qasje, pasi do t'ju lejoj\u00eb t\u00eb p\u00ebrqendroheni n\u00eb m\u00ebnyr\u00ebn se si t\u00eb p\u00ebrdorni K8s p\u00ebr nevojat tuaja n\u00eb vend t\u00eb eksplorimit t\u00eb m\u00ebnyr\u00ebs se si komponent\u00ebt e brendsh\u00ebm duhet t\u00eb integrohen me nj\u00ebri-tjetrin.\u00a0<\/p>\n<h3>Vlera p\u00ebr infrastruktur\u00ebn e automatizimit<\/h3>\n<p>\nLe t\u00eb shqyrtojm\u00eb disa karakteristika t\u00eb r\u00ebnd\u00ebsishme q\u00eb ofron K8s:<\/p>\n<ul>\n<li>n\u00eb shp\u00ebrndarjen e aplikacioneve: p\u00ebrdorimi i nj\u00eb klasteri multi-nodes, n\u00eb vend t\u00eb VM-ve;<\/li>\n<li>shkall\u00ebzim dinamik: redukton shpenzimet p\u00ebr burimet, t\u00eb cilat p\u00ebrdoren vet\u00ebm sipas k\u00ebrkes\u00ebs;<\/li>\n<li>riparimi automat (Self-healing): rikthimi automatik i pods (duke rikthyer gjithashtu dhe kontejner\u00ebt);<\/li>\n<li>rilizimi i p\u00ebrdit\u00ebsimeve dhe rikthimeve t\u00eb ndryshimeve pa ndalje: p\u00ebrdit\u00ebsimi i mjeteve, shfletuesve dhe emulator\u00ebve nuk e nd\u00ebrpret pun\u00ebn e p\u00ebrdoruesve aktual\u00eb<\/li>\n<\/ul>\n<p>\n Por K8s \u2013 ende nuk \u00ebsht\u00eb nj\u00eb plumb argjendi. P\u00ebr t\u00eb kuptuar t\u00eb gjith\u00eb p\u00ebrfitimet dhe kufizimet n\u00eb kontekstin e mjeteve q\u00eb po shqyrtojm\u00eb (Selenium grid, Selenoid), le t\u00eb diskutojm\u00eb shkurtimisht nd\u00ebrtimin e K8s. Klasteri p\u00ebrmban dy lloje nodash: Master Nodes dhe Workers Nodes. Master Nodes jan\u00eb p\u00ebrgjegj\u00ebs p\u00ebr menaxhimin, shp\u00ebrndarjen dhe vendimet e grafikut. Workers nodes \u2013 k\u00ebtu jan\u00eb aplika\u00e7ionet q\u00eb jan\u00eb t\u00eb laufruara. Nodes gjithashtu p\u00ebrmbajn\u00eb mjedisin e ekzekutimit t\u00eb kontejner\u00ebve. N\u00eb rastin ton\u00eb, ky \u00ebsht\u00eb Docker, i cili \u00ebsht\u00eb p\u00ebrgjegj\u00ebs p\u00ebr operacionet e lidhura me kontejner\u00ebt. Por ka edhe zgjidhje alternative, p\u00ebr shembull<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/containerd\/containerd\"> containerd<\/a><\/noindex>. \u00cbsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb kuptohet se shkall\u00ebzimi ose vet\u00eb-riparimi nuk i referohet drejtp\u00ebrdrejt kontejner\u00ebve. Kjo realizohet p\u00ebrmes shtimit\/redukimit t\u00eb numrit t\u00eb pods, t\u00eb cilat nga ana e tyre p\u00ebrmbajn\u00eb kontejner\u00eb (zakonisht nj\u00eb kontejner n\u00eb pod, por n\u00eb var\u00ebsi t\u00eb detyr\u00ebs mund t\u00eb ket\u00eb edhe m\u00eb shum\u00eb). Hierarkia n\u00eb nivel t\u00eb lart\u00eb p\u00ebrb\u00ebn nodet e pun\u00ebs, brenda t\u00eb cilave ndodhen pods, brenda t\u00eb cilave ngrihen kontejner\u00ebt.<\/p>\n<p>Funksioni i shkall\u00ebzimit \u00ebsht\u00eb thelb\u00ebsor dhe mund t\u00eb aplikohet si p\u00ebr nodes brenda cluster node-pool, ashtu edhe p\u00ebr pods brenda node. Ekzistojn\u00eb 2 lloje shkall\u00ebzimi q\u00eb i p\u00ebrkasin si nodes, ashtu edhe pods. Lloji i par\u00eb \u2013 horizontal \u2013 shkall\u00ebzimi ndodh p\u00ebrmes rritjes s\u00eb numrit t\u00eb nodes\/pods. Ky lloj \u00ebsht\u00eb m\u00eb i preferuar. Lloji i dyt\u00eb, p\u00ebrkat\u00ebsisht, vertikal. Shkall\u00ebzimi b\u00ebhet p\u00ebrmes rritjes s\u00eb dimensioneve t\u00eb nodes\/pods, jo t\u00eb numrit t\u00eb tyre.<\/p>\n<p>Tani le t\u00eb shqyrtojm\u00eb mjetet tona n\u00eb kontekstin e termave t\u00eb p\u00ebrmendur m\u00eb sip\u00ebr.<\/p>\n<p><u>Selenium grid<\/u><\/p>\n<p>Si\u00e7 \u00ebsht\u00eb p\u00ebrmendur m\u00eb par\u00eb, Selenium grid \u00ebsht\u00eb nj\u00eb mjet shum\u00eb i njohur, dhe nuk \u00ebsht\u00eb befasi q\u00eb ai \u00ebsht\u00eb containerizuar. Prandaj, nuk \u00ebsht\u00eb \u00e7udi q\u00eb Selenium grid mund t\u00eb implementohet n\u00eb K8s. Nj\u00eb shembull se si ta b\u00ebni k\u00ebt\u00eb mund t\u00eb gjeni n\u00eb depot zyrtare t\u00eb K8s. Si zakonisht, po bashkangjis\u00eb lidhjet n\u00eb fund t\u00eb seksionit. P\u00ebrve\u00e7 k\u00ebsaj, n\u00eb udh\u00ebzimin praktik tregohet si ta realizoni k\u00ebt\u00eb n\u00ebp\u00ebrmjet Terraform. Ka gjithashtu nj\u00eb udh\u00ebzues se si t\u00eb shkall\u00ebzoni numrin e pods q\u00eb p\u00ebrmbajn\u00eb kontejner\u00eb me shfletues. Por, funksioni i shkall\u00ebzimit automatizuar n\u00eb kontekstin e K8s mbetet ende nj\u00eb detyr\u00eb jo plot\u00ebsisht e qart\u00eb. Kur fillova studimin, nuk gjeta asnj\u00eb udh\u00ebzim praktik ose rekomandime. Pas disa k\u00ebrkimeve dhe eksperimentesh me mb\u00ebshtetje nga ekipi DevOps, ne zgjodh\u00ebm qasjen e ngritjes s\u00eb kontejner\u00ebve me shfletuesit e nevojsh\u00ebm brenda nj\u00eb pod-i q\u00eb ndodhet brenda nj\u00eb node punues. Kjo qasje na lejon t\u00eb aplikojm\u00eb strategjin\u00eb e shkall\u00ebzimit horizontal t\u00eb nodes duke rritur numrin e tyre. Shpresoj q\u00eb n\u00eb t\u00eb ardhmen situata t\u00eb ndryshoj\u00eb, dhe t\u00eb shohim gjithnj\u00eb e m\u00eb shum\u00eb p\u00ebrshkrime t\u00eb metodave m\u00eb t\u00eb mira dhe zgjidhjeve t\u00eb gatshme, ve\u00e7an\u00ebrisht pas l\u00ebshimit t\u00eb Selenium grid 4 me arkitektur\u00ebn e brendshme t\u00eb ndryshuar.<\/p>\n<p><u>Selenoid<\/u>:<\/p>\n<p>Aktualisht, shp\u00ebrndarja e Selenoid n\u00eb K8s \u00ebsht\u00eb zhg\u00ebnjimi m\u00eb i madh. Ata nuk jan\u00eb t\u00eb kompatibilsh\u00ebm. Teorikisht, mund t\u00eb ngrem\u00eb kontejnerin Selenoid brenda pod-it, por kur Selenoid fillon t\u00eb nis\u00eb kontejner\u00ebt me shfletues, ata ende do t\u00eb jen\u00eb brenda t\u00eb nj\u00ebjtit pod. Kjo b\u00ebn q\u00eb shkall\u00ebzimi t\u00eb jet\u00eb e pamundur dhe, si rezultat, funksionimi i Selenoid brenda klasterit nuk do t\u00eb jet\u00eb i ndrysh\u00ebm nga funksionimi brenda nj\u00eb makine virtuale. Fundi i historis\u00eb.<\/p>\n<p><u>Moon<\/u>:<\/p>\n<p>Duke e ditur k\u00ebt\u00eb ngushtic\u00eb kur punoni me Selenoid, zhvilluesit l\u00ebshuan nj\u00eb mjet m\u00eb t\u00eb fuqish\u00ebm, t\u00eb cilin e quajt\u00ebn Moon. Ky mjet ishte fillimisht konceptuar p\u00ebr t\u00eb punuar me Kubernetes dhe, si rezultat, mund dhe duhet t\u00eb p\u00ebrdoret funksioni i skalimit automatik. M\u00eb shum\u00eb se kaq, do t\u00eb thosha se aktualisht \u00ebsht\u00eb <u>i vetmi<\/u> m\u00eb i miri mjet n\u00eb bot\u00eb p\u00ebr Selenium, q\u00eb nga arka vjen me mb\u00ebshtetje native p\u00ebr klasterin K8s (<i>nuk ka m\u00eb, shih mjetin e ardhsh\u00ebm <\/i>). Karakteristika kryesore e Moon, q\u00eb siguron k\u00ebt\u00eb mb\u00ebshtetje, \u00ebsht\u00eb:\u00a0<\/p>\n<blockquote><p>Plot\u00ebsisht pa gjendje. Selenoid ruan n\u00eb memorje informacionin rreth sesioneve aktuale t\u00eb shfletuesit. N\u00ebse p\u00ebr nj\u00eb arsye procesi i tij rr\u00ebzohet \u2014 at\u00ebher\u00eb t\u00eb gjitha sesionet n\u00eb pun\u00eb humbasin. Moon, nga ana tjet\u00ebr, nuk ka gjendje t\u00eb brendshme dhe mund t\u00eb riprodhohet n\u00ebp\u00ebr qendra t\u00eb t\u00eb dh\u00ebnave. Sesionet e shfletuesit mbeten aktive edhe n\u00ebse nj\u00eb ose m\u00eb shum\u00eb kopje bien.<\/p><\/blockquote>\n<p>Pra ndaj, Moon \u00ebsht\u00eb nj\u00eb zgjidhje e shk\u00eblqyer, por ka nj\u00eb problem: nuk \u00ebsht\u00eb falas. \u00c7mimi varet nga numri i seancave. Mund t\u00eb aktivizoni pa pages\u00eb vet\u00ebm 0-4 seanca, q\u00eb nuk \u00ebsht\u00eb shum\u00eb e dobishme. Megjithat\u00eb, duke filluar nga seanca e pest\u00eb, do t\u00eb duhet t\u00eb paguani 5$ p\u00ebr secil\u00ebn. Situata mund t\u00eb ndryshoj\u00eb nga kompanit\u00eb e ndryshme, por n\u00eb rastin ton\u00eb, p\u00ebrdorimi i Moon \u00ebsht\u00eb pa kuptim. Si\u00e7 e p\u00ebrshkrova m\u00eb sip\u00ebr, mund t\u00eb aktivizojm\u00eb VMs me Selenium Grid sipas k\u00ebrkes\u00ebs ose t\u00eb rrisim numrin e Nodes n\u00eb klaster. N\u00eb m\u00ebnyr\u00eb aproximative, p\u00ebr nj\u00eb pipeline aktivizojm\u00eb 500 shfletues dhe ndalojm\u00eb t\u00eb gjitha burimet pas p\u00ebrfundimit t\u00eb testeve. Po t\u00eb ishim p\u00ebrdorur Moon, do t\u00eb na duhej t\u00eb paguanim 500 x 5 = 2500 $ n\u00eb muaj, pavar\u00ebsisht sa shpesh e aktivizojm\u00eb testet. Dhe p\u00ebrs\u00ebri, nuk po them \"mos p\u00ebrdorni Moon\". P\u00ebr nevojat tuaja, mund t\u00eb jet\u00eb nj\u00eb zgjidhje e paz\u00ebvend\u00ebsueshme, p\u00ebr shembull, n\u00ebse n\u00eb organizat\u00ebn tuaj ka shum\u00eb projekte\/equipe dhe ju nevojitet nj\u00eb klaster i madh p\u00ebr t\u00eb gjith\u00eb. Si gjithmon\u00eb, po l\u00eb nj\u00eb lidhje n\u00eb fund dhe rekomandoj t\u00eb b\u00ebni t\u00eb gjitha llogarit\u00eb e nevojshme n\u00eb kontekstin e detyrave tuaja.<\/p>\n<p><u>Callisto<\/u>: (<i><strong>Kujdes! Kjo nuk \u00ebsht\u00eb n\u00eb artikullin origjinal dhe p\u00ebrfshihet vet\u00ebm n\u00eb p\u00ebrkthimin n\u00eb rusisht.<\/strong><\/i>)<\/p>\n<p>Si\u00e7 thash\u00eb, Selenium \u00ebsht\u00eb nj\u00eb mjet shum\u00eb i njohur, dhe fusha e IT po zhvillohet shum\u00eb shpejt. Nd\u00ebrsa punoja mbi p\u00ebrkthimin, n\u00eb internet doli nj\u00eb mjet i ri premtues Callisto (p\u00ebrsh\u00ebndetje Cypress dhe vras\u00ebsve t\u00eb tjer\u00eb t\u00eb Selenium). Ai punon natyrsh\u00ebm me K8s dhe lejon ekzekutimin e kontejner\u00ebve Selenoid n\u00eb pods, shp\u00ebrndar\u00eb n\u00eb Nodes. E gjith\u00eb kjo funksionon menj\u00ebher\u00eb nga kutia, duke p\u00ebrfshir\u00eb automatikisht shkall\u00ebzimin. Fantastike, por duhet testuar. M\u00eb \u00ebsht\u00eb arritur t\u00eb vendos k\u00ebt\u00eb mjet dhe t\u00eb realizoj disa eksperimente. Por \u00ebsht\u00eb ende her\u00ebt p\u00ebr t\u00eb nxjerr\u00eb p\u00ebrfundime; pas marrjes s\u00eb rezultateve n\u00eb nj\u00eb distanc\u00eb t\u00eb gjat\u00eb, ndoshta do t\u00eb b\u00ebj nj\u00eb rishikim n\u00eb artikujt e ardhsh\u00ebm. Deri at\u00ebher\u00eb, l\u00eb vet\u00ebm lidhjet p\u00ebr hulumtime t\u00eb pavarura.\u00a0\u00a0<\/p>\n<h3>Ilustrimi i gjendjes aktuale t\u00eb infrastruktur\u00ebs<\/p>\n<h3><img decoding=\"async\" alt=\"Mjetet e DevOps nuk jan\u00eb vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testeve nga zero.\" src=\"\/wp-content\/uploads\/2020\/04\/c9c2ffd21df2a261947df809dcec7108.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Linket p\u00ebr studim<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/setup\/\">Kubernetes: konfigurimi<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kelseyhightower\/kubernetes-the-hard-way\">Kubernetes: m\u00ebnyra e v\u00ebshtir\u00eb<\/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: motori Kubernetes<\/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\">Libri i Kubernetes<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=MmdGyqNqs9w\">Automatizimi i shp\u00ebrndar\u00eb duke p\u00ebrdorur Kubernetes<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/SeleniumHQ\/selenium\/wiki\/Selenium-Grid-4\">Selenium Grid 4<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wrike\/callisto\">Callisto GitHub<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/software-testing.ru\/events\/review\/3317-wrike-techclub\">Wrike TechClub (Callisto)<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Vegla t\u00eb ngjashme<\/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. Infrastruktur\u00eb si kod (IaC)<\/h2>\n<p><\/p>\n<h3>P\u00ebrshkrim i shkurt\u00ebr i teknologjis\u00eb<\/h3>\n<p>\n Dhe ja, po arrijm\u00eb n\u00eb seksionin e fundit. Zakonisht, kjo teknologji dhe detyrat e lidhura me t\u00eb nuk jan\u00eb brenda fush\u00ebs s\u00eb p\u00ebrgjegj\u00ebsis\u00eb s\u00eb inxhinier\u00ebve t\u00eb automatizimit. Dhe ka arsye p\u00ebr k\u00ebt\u00eb. S\u00eb pari, n\u00eb shum\u00eb organizata, \u00e7\u00ebshtjet infrastrukturore jan\u00eb n\u00ebn kontrollin e departamentit DevOps dhe ekipi i zhvillimit nuk shqet\u00ebsohet shum\u00eb p\u00ebr at\u00eb se \u00e7far\u00eb mban n\u00eb funksion pipeline dhe si duhet t\u00eb mbahen t\u00eb gjitha gj\u00ebrat q\u00eb lidhen me t\u00eb. S\u00eb dyti, t\u00eb jemi t\u00eb sinqert\u00eb, praktika e \"Infrastruktur\u00ebs si Kod (IaC)\" ende nuk \u00ebsht\u00eb aplikuar n\u00eb shum\u00eb kompani. Por padyshim q\u00eb ka filluar t\u00eb b\u00ebhet nj\u00eb trend i njohur dhe \u00ebsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb p\u00ebrpiqemi t\u00eb jemi t\u00eb angazhuar n\u00eb proceset, qasjet dhe mjetet q\u00eb lidhen me t\u00eb. Ose, t\u00eb pakt\u00ebn, t\u00eb jemi n\u00eb dijeni t\u00eb ngjarjeve.<\/p>\n<p>T\u00eb fillojm\u00eb me motivimin p\u00ebr p\u00ebrdorimin e k\u00ebtij qasjeje. Ne tashm\u00eb kemi diskutuar se p\u00ebr t\u00eb nisur testet n\u00eb GitlabCI, na nevojiten s\u00eb paku burime p\u00ebr t\u00eb nisur Gitlab Runner. Dhe p\u00ebr t\u00eb nisur kontenier\u00ebt me shfletues\/emulator\u00eb, na nevojitet t\u00eb rezervojm\u00eb nj\u00eb VM ose nj\u00eb klaster. P\u00ebrve\u00e7 burimeve p\u00ebr testim, na nevojitet nj\u00eb num\u00ebr t\u00eb konsideruesh\u00ebm kapacitetesh p\u00ebr t\u00eb mb\u00ebshtetur ambientet e zhvillimit, staging, dhe production, q\u00eb gjithashtu p\u00ebrfshin bazat e t\u00eb dh\u00ebnave, oraret automatike, konfigurimet e rrjetit, balancuesin e ngarkes\u00ebs, t\u00eb drejtat e p\u00ebrdoruesve dhe k\u00ebshtu me radh\u00eb. Problemi kryesor q\u00ebndron te p\u00ebrpjekjet e nevojshme p\u00ebr t\u00eb mb\u00ebshtetur gjith\u00e7ka k\u00ebt\u00eb. Ekzistojn\u00eb disa m\u00ebnyra se si mund t\u00eb b\u00ebjm\u00eb ndryshime dhe t\u00eb publikojm\u00eb p\u00ebrdit\u00ebsime. P\u00ebr shembull, n\u00eb kontekstin e GCP, mund t\u00eb p\u00ebrdorim konzol\u00ebn UI n\u00eb shfletues dhe t\u00eb kryejm\u00eb t\u00eb gjitha veprimet duke klikuar butona. Nj\u00eb m\u00ebnyr\u00eb alternative mund t\u00eb jet\u00eb p\u00ebrdorimi i thirrjeve API p\u00ebr t\u00eb nd\u00ebrvepruar me entitetet e mjeteve ose aplikimi i utilitarit t\u00eb linj\u00ebs s\u00eb komand\u00ebs gcloud p\u00ebr t\u00eb kryer manipulimet e nevojshme. Por, me t\u00eb v\u00ebrtet\u00eb n\u00eb nj\u00eb num\u00ebr t\u00eb madh entitetesh t\u00eb ndryshme dhe element\u00ebve t\u00eb infrastruktur\u00ebs, b\u00ebhet e v\u00ebshtir\u00eb ose madje e pamundur t\u00eb kryhen t\u00eb gjitha operacionet manualisht. P\u00ebr m\u00eb tep\u00ebr, t\u00eb gjitha k\u00ebto veprime manuale jan\u00eb t\u00eb pakontrolluara. Ne nuk mund t'i d\u00ebrgojm\u00eb ato p\u00ebr rishikim para se t'i ekzekutojm\u00eb, t\u00eb p\u00ebrdorim nj\u00eb sistem kontrolli versioni dhe t\u00eb rikthejm\u00eb shpejt ndryshimet q\u00eb shkaktuan incidentin. P\u00ebr t\u00eb zgjidhur k\u00ebto probleme, inxhinier\u00ebt kan\u00eb krijuar dhe krijojn\u00eb skripte automatike bash\/shell, q\u00eb nuk jan\u00eb shum\u00eb m\u00eb t\u00eb mira se metodat e m\u00ebparshme, pasi nuk jan\u00eb aq t\u00eb lehta p\u00ebr t'u lexuar, kuptuar, mbajtur dhe modifikuar n\u00eb stilin proceduror.<\/p>\n<p>N\u00eb k\u00ebt\u00eb artikull dhe udh\u00ebzues praktik, un\u00eb po p\u00ebrdor 2 mjete q\u00eb i p\u00ebrkasin praktik\u00ebs IaC. K\u00ebto jan\u00eb Terraform dhe Ansible. Disa mendojn\u00eb se nuk ka kuptim t'i p\u00ebrdor\u00ebsh ato nj\u00ebkoh\u00ebsisht, pasi funksionalitetet e tyre jan\u00eb shum\u00eb t\u00eb ngjashme dhe ato nd\u00ebrruesh\u00ebm. Por e v\u00ebrteta \u00ebsht\u00eb se fillimisht ato kan\u00eb detyra t\u00ebr\u00ebsisht t\u00eb ndryshme. Dhe fakti q\u00eb k\u00ebto mjete duhet t\u00eb plot\u00ebsojn\u00eb nj\u00ebra-tjetr\u00ebn u konfirmua n\u00eb nj\u00eb prezantim t\u00eb p\u00ebrbashk\u00ebt nga zhvilluesit q\u00eb p\u00ebrfaq\u00ebsonin kompanit\u00eb HashiCorp dhe RedHat. Diferenca konceptuale q\u00ebndron n\u00eb at\u00eb se Terraform \u00ebsht\u00eb nj\u00eb mjet provisioning p\u00ebr menaxhimin e server\u00ebve t\u00eb vet\u00eb. Nd\u00ebrsa Ansible \u00ebsht\u00eb nj\u00eb mjet p\u00ebr menaxhimin e konfiguracioneve, detyra e t\u00eb cilit \u00ebsht\u00eb instalimi, konfigurimi dhe menaxhimi i softuerit n\u00eb k\u00ebta servera.<\/p>\n<p>Nj\u00eb ve\u00e7ori tjet\u00ebr kryesore dalluese e k\u00ebtyre mjeteve \u00ebsht\u00eb stili i shkrimit t\u00eb kodit. Ndryshe nga bash dhe Ansible, Terraform p\u00ebrdor nj\u00eb stil deklarativ, t\u00eb bazuar n\u00eb p\u00ebrshkrimin e gjendjes p\u00ebrfundimtare t\u00eb d\u00ebshiruar q\u00eb duhet arritur si rezultat i ekzekutimit. P\u00ebr shembull, n\u00ebse kemi nd\u00ebrmend t\u00eb krijojm\u00eb 10 VM dhe t\u00eb aplikojm\u00eb ndryshimet p\u00ebrmes Terraform, do t\u00eb marrim 10 VM. N\u00ebse ekzekutimi b\u00ebhet p\u00ebrs\u00ebri, nuk do t\u00eb ndodhi asgj\u00eb, pasi tashm\u00eb kemi 10 VM, dhe Terraform e di k\u00ebt\u00eb sepse ruan gjendjen aktuale t\u00eb infrastruktur\u00ebs n\u00eb skedarin e gjendjes. Nd\u00ebrsa Ansible p\u00ebrdor nj\u00eb qasje procedurale dhe, n\u00ebse i k\u00ebrkojm\u00eb t\u00eb krijoj\u00eb 10 VM, n\u00eb ekzekutimin e par\u00eb do t\u00eb marrim 10 VM, si me Terraform. Por pas ekzekutimit t\u00eb dyt\u00eb, do t\u00eb kemi tashm\u00eb 20 VM. Kjo \u00ebsht\u00eb dallimi i r\u00ebnd\u00ebsish\u00ebm. N\u00eb stilin procedurial, ne nuk ruajm\u00eb gjendjen aktuale dhe thjesht p\u00ebrshkruajm\u00eb sekuenc\u00ebn e hapave q\u00eb duhet t\u00eb kryhen. Sigurisht, mund t\u00eb p\u00ebrballojm\u00eb situata t\u00eb ndryshme, t\u00eb shtojm\u00eb disa kontrollime p\u00ebr ekzistenc\u00ebn e burimeve dhe gjendjen aktuale, por nuk ka kuptim t\u00eb harxhojm\u00eb koh\u00ebn ton\u00eb dhe t\u00eb b\u00ebjm\u00eb p\u00ebrpjekje p\u00ebr t\u00eb kontroluar k\u00ebt\u00eb logjik\u00eb. Po ashtu, kjo rrit riskun e kryerjes s\u00eb gabimeve.\u00a0<\/p>\n<p>Duke p\u00ebrmbledhur gjith\u00e7ka m\u00eb sip\u00ebr, mund t\u00eb nxjerrim p\u00ebrfundimin se mjeti m\u00eb i p\u00ebrshtatsh\u00ebm p\u00ebr provisioning e server\u00ebve \u00ebsht\u00eb Terraform dhe nota deklarative. Nd\u00ebrsa, pun\u00ebn p\u00ebr menaxhimin e konfigurimeve \u00ebsht\u00eb m\u00eb mir\u00eb ta delegojm\u00eb tek Ansible. Pas k\u00ebtij sqarimi, le t\u00eb shohim disa shembuj p\u00ebrdorimi n\u00eb kontekstin e automatizimit.<\/p>\n<h3>Vlera p\u00ebr infrastruktur\u00ebn e automatizimit<\/h3>\n<p>\n \u00cbsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb kuptohet se infrastruktura e automatizimit t\u00eb testimit duhet t\u00eb konsiderohet si nj\u00eb pjes\u00eb e gjith\u00eb infrastruktur\u00ebs s\u00eb kompanis\u00eb. Kjo do t\u00eb thot\u00eb se t\u00eb gjitha praktikat IaC duhet t\u00eb aplikohen n\u00eb m\u00ebnyr\u00eb globale mbi resurset e gjith\u00eb organizat\u00ebs. Kush \u00ebsht\u00eb p\u00ebrgjegj\u00ebs p\u00ebr k\u00ebt\u00eb varet nga proceset tuaja. Ekipa DevOps \u00ebsht\u00eb m\u00eb e eksperiencuar n\u00eb k\u00ebto \u00e7\u00ebshtje, ata shohin gjith\u00eb pamjen e asaj q\u00eb ndodh. Megjithat\u00eb, inxhinier\u00ebt QA jan\u00eb m\u00eb tep\u00ebr t\u00eb p\u00ebrfshir\u00eb n\u00eb procesin e nd\u00ebrtimit t\u00eb automatizimit dhe struktur\u00ebs s\u00eb pipeline, gj\u00eb q\u00eb u lejon atyre t\u00eb shohin m\u00eb mir\u00eb t\u00eb gjitha ndryshimet e nevojshme dhe mund\u00ebsit\u00eb p\u00ebr p\u00ebrmir\u00ebsim. Zgjedhja m\u00eb e mir\u00eb \u00ebsht\u00eb t\u00eb punoni s\u00eb bashku, t\u00eb shk\u00ebmbeni dije dhe ide p\u00ebr t\u00eb arritur rezultatin e pritur.\u00a0<\/p>\n<p>Do t'i jap disa shembuj t\u00eb p\u00ebrdorimit t\u00eb Terraform dhe Ansible n\u00eb kontekstin e automatizimit t\u00eb testeve dhe mjeteve q\u00eb kemi diskutuar deri tani:<\/p>\n<p>1. T\u00eb p\u00ebrshkruajm\u00eb n\u00ebp\u00ebrmjet Terraform karakteristikat e nevojshme dhe parametrat e VM-ve dhe klaster\u00ebve.<\/p>\n<p>2. T\u00eb instalojm\u00eb me Ansible mjetet e nevojshme p\u00ebr testim: docker, Selenoid, Selenium Grid dhe t\u00eb ngarkojm\u00eb versionet e duhura t\u00eb shfletuesve\/emulator\u00ebve.<\/p>\n<p>3. T\u00eb p\u00ebrshkruajm\u00eb n\u00ebp\u00ebrmjet Terraform karakteristikat e VM-s\u00eb ku do t\u00eb ekzekutohet GitLab Runner.<\/p>\n<p>4. T\u00eb instalojm\u00eb me Ansible GitLab Runner dhe mjetet p\u00ebrkat\u00ebse, t\u00eb caktrojm\u00eb konfigurimet dhe cil\u00ebsimet.<\/p>\n<h3>Ilustrimi i gjendjes aktuale t\u00eb infrastruktur\u00ebs<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Mjetet e DevOps nuk jan\u00eb vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testeve nga zero.\" src=\"\/wp-content\/uploads\/2020\/04\/5d793a800a4ef62e181e6cb3a3f0544e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Linke p\u00ebr studim:<\/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 dhe Terraform s\u00eb bashku jan\u00eb m\u00eb t\u00eb mir\u00eb<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/blog.gruntwork.io\/a-comprehensive-guide-to-terraform-b3d32832baca\">Nj\u00eb Udh\u00ebzues i Plot\u00eb p\u00ebr Terraform<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/blog.gruntwork.io\/why-we-use-terraform-and-not-chef-puppet-ansible-saltstack-or-cloudformation-7989dad2865c\">Pse ne p\u00ebrdorim Terraform dhe jo Chef, Puppet, Ansible, SaltStack, apo CloudFormation<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/solutions\/infrastructure-as-code\">GCP: IaC<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Vegla t\u00eb ngjashme<\/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>T\u00eb p\u00ebrmbledhim!<\/h2>\n<p><\/p>\n<p><strong>Hapi<\/strong><br \/>\n<strong>Teknologjia<\/strong><br \/>\n<strong>Mjetet<\/strong><br \/>\n<strong>Vlera p\u00ebr infrastruktur\u00ebn e automatizimit<\/strong><\/p>\n<p><strong>1<\/strong><br \/>\nEkzekutimi lokal<br \/>\nNode.js, Selenium, Appium<\/p>\n<ul>\n<li>Mjetet m\u00eb t\u00eb njohura p\u00ebr web dhe mobile<\/li>\n<li>Mb\u00ebshtetje p\u00ebr shum\u00eb gjuh\u00eb dhe platforma (duke p\u00ebrfshir\u00eb Node.js)<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>2<\/strong><br \/>\nSistemet e kontrollit t\u00eb versioneve\u00a0<br \/>\nGit<\/p>\n<ul>\n<li>Avantazhe t\u00eb ngjashme me kodin e zhvillimit<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>3<\/strong><br \/>\nContainerizimi<br \/>\nDocker, Selenium grid, Selenoid (Web, Android)<\/p>\n<ul>\n<li>Ekzekutimi paralel i testeve<\/li>\n<li>Mjedise t\u00eb izoluar<\/li>\n<li>P\u00ebrdit\u00ebsime t\u00eb thjeshta dhe fleksib\u00ebl t\u00eb versioneve<\/li>\n<li>NDinimizimi i resurseve t\u00eb pap\u00ebrdorura<\/li>\n<li>E leht\u00eb p\u00ebr t'u konfiguruar<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>4<\/strong><br \/>\nCI \/ CD<br \/>\nGitlab CI<\/p>\n<ul>\n<li>Testet pjes\u00eb e konvejerit<\/li>\n<li>Feedback i shpejt\u00eb<\/li>\n<li>Dukshm\u00ebri p\u00ebr t\u00eb gjith\u00eb kompanin\u00eb \/ ekipin<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>5<\/strong><br \/>\nPlatforma n\u00eb cloud<br \/>\nGoogle Cloud Platform<\/p>\n<ul>\n<li>Burime sipas k\u00ebrkes\u00ebs (paguajm\u00eb vet\u00ebm kur jan\u00eb t\u00eb nevojshme)<\/li>\n<li>Leht\u00eb p\u00ebr t'u menaxhuar dhe p\u00ebrdit\u00ebsuar<\/li>\n<li>Dukshm\u00ebria dhe kontrolli i t\u00eb gjitha burimeve<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>6<\/strong><br \/>\nOrkestrimi<br \/>\nKubernetes<br \/>\nN\u00eb kontekstin e kontejner\u00ebve me shfletues\/emulator\u00eb brenda pods:<\/p>\n<ul>\n<li>Shkall\u00ebzimi \/ automatik i shkall\u00ebzimit<\/li>\n<li>Rim\u00ebk\u00ebmbje e vet\u00eb-automatuar<\/li>\n<li>P\u00ebrdit\u00ebsime dhe rikthime pa nd\u00ebrprerje<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>7<\/strong><br \/>\nInfrastruktura si kod (IaC)<br \/>\nTerraform, Ansible<\/p>\n<ul>\n<li>P\u00ebrfitime t\u00eb ngjashme me infrastruktur\u00ebn e zhvillimit<\/li>\n<li>T\u00eb gjitha p\u00ebrfitimet e versionimit t\u00eb kodit<\/li>\n<li>Leht\u00eb p\u00ebr t\u00eb b\u00ebr\u00eb ndryshime dhe p\u00ebr t\u00eb mbajtur<\/li>\n<li>Plot\u00ebsisht i automatizuar<\/li>\n<\/ul>\n<p><\/p>\n<h2>Diagramet e hart\u00ebs mendore: evolucioni i infrastruktur\u00ebs<\/h2>\n<p>\nhapi1: Lokal<br \/>\n<img decoding=\"async\" alt=\"Mjetet e DevOps nuk jan\u00eb vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testeve nga zero.\" src=\"\/wp-content\/uploads\/2020\/04\/507908ba097a603adc3b301ab2f94a8d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>hapi2: VCS<br \/>\n<img decoding=\"async\" alt=\"Mjetet e DevOps nuk jan\u00eb vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testeve nga zero.\" src=\"\/wp-content\/uploads\/2020\/04\/71c5170293d98375d8ab86d05eb47a33.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>hapi3: Konteinerizimi\u00a0<br \/>\n<img decoding=\"async\" alt=\"Mjetet e DevOps nuk jan\u00eb vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testeve nga zero.\" src=\"\/wp-content\/uploads\/2020\/04\/da33442a592851e07c3f5800c3ee9ead.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>hapi4: CI\/CD\u00a0<br \/>\n<img decoding=\"async\" alt=\"Mjetet e DevOps nuk jan\u00eb vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testeve nga zero.\" src=\"\/wp-content\/uploads\/2020\/04\/900f18b45124412a1ad00d3901efb40e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>hapi5: Platformat e Cloud<br \/>\n<img decoding=\"async\" alt=\"Mjetet e DevOps nuk jan\u00eb vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testeve nga zero.\" src=\"\/wp-content\/uploads\/2020\/04\/840e5063141ac8787612e2fc46b5d690.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>hapi6: Orkestrimi<br \/>\n<img decoding=\"async\" alt=\"Mjetet e DevOps nuk jan\u00eb vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testeve nga zero.\" src=\"\/wp-content\/uploads\/2020\/04\/4651b552efdc893695cbf359c6992e9e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>hapi7: IaC<br \/>\n<img decoding=\"async\" alt=\"Mjetet e DevOps nuk jan\u00eb vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testeve nga zero.\" src=\"\/wp-content\/uploads\/2020\/04\/e784130f570260fc6c3aa263916e3db5.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>\u00c7far\u00eb ndodh m\u00eb tej?<\/h2>\n<p>\nK\u00ebshtu, kjo \u00ebsht\u00eb fundi i artikullit. Por n\u00eb p\u00ebrfundim, do doja t\u00eb vendosja disa marr\u00ebveshje me ju.<\/p>\n<p><u>Nga ana juaj<\/u><br \/>\n Si\u00e7 u tha n\u00eb fillim, do doja q\u00eb artikulli t\u00eb kishte nj\u00eb dobi praktike dhe t\u00eb ndihmonte n\u00eb aplikimin e njohurive t\u00eb marra n\u00eb pun\u00ebn reale. Po shtoj p\u00ebrs\u00ebri<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/AlexeyAltunin\/devops-tools-for-qa-automation-infrastructure\"> linkun n\u00eb udh\u00ebzuesin praktik<\/a><\/noindex>.<\/p>\n<p>Por edhe pas k\u00ebsaj, mos u ndalni, st\u00ebrvituni, studiojini lidhjet p\u00ebrkat\u00ebse dhe librat, merrni vesh si funksionon tek ju n\u00eb kompani, gjeni vende q\u00eb mund t\u00eb p\u00ebrmir\u00ebsohen dhe merrni pjes\u00eb n\u00eb k\u00ebt\u00eb. Suksese!<\/p>\n<p><u>Nga ana ime<\/u><\/p>\n<p>Nga titulli duket se kjo ishte vet\u00ebm pjesa e par\u00eb. Edhe pse doli mjaft e gjat\u00eb, k\u00ebtu ende nuk jan\u00eb zbuluar tema t\u00eb r\u00ebnd\u00ebsishme. N\u00eb pjes\u00ebn e dyt\u00eb planifikoj t\u00eb shqyrtoj infrastruktur\u00ebn e automatizimit n\u00eb kontekstin e IOS. P\u00ebr shkak t\u00eb kufizimeve t\u00eb Apple q\u00eb lidhen me ekzekutimin e simulator\u00ebve t\u00eb IOS vet\u00ebm n\u00eb sistemet macOS, seti yn\u00eb i zgjidhjeve \u00ebsht\u00eb ngushtuar. P\u00ebr shembull, ne nuk kemi mund\u00ebsin\u00eb t\u00eb p\u00ebrdorim Docker p\u00ebr t\u00eb ekzekutuar simulatorin ose cloud publik p\u00ebr t\u00eb nisur makina virtuale. Por kjo nuk do t\u00eb thot\u00eb se nuk ka alternativa t\u00eb tjera. Do t\u00eb p\u00ebrpiqem t'ju mbaj n\u00eb dijeni p\u00ebr zgjidhjet m\u00eb t\u00eb avancuara dhe mjetet moderne!<\/p>\n<p>Po ashtu, nuk e p\u00ebrmenda tem\u00ebn e r\u00ebnd\u00ebsishme lidhur me monitorimin. N\u00eb pjes\u00ebn 3 do t\u00eb shqyrtoj mjetet m\u00eb t\u00eb njohura p\u00ebr monitorimin e infrastruktur\u00ebs, si dhe cilat t\u00eb dh\u00ebna dhe metrika duhet t\u00eb kemi parasysh.<\/p>\n<p>Dhe p\u00ebrfundimisht. N\u00eb t\u00eb ardhmen, planifikoj t\u00eb publikoj nj\u00eb kurs video mbi nd\u00ebrtimin e infrastruktur\u00ebs s\u00eb testimit dhe mjetet e njohura. Aktualisht, n\u00eb internet ka shum\u00eb kurse dhe ligj\u00ebrata p\u00ebr DevOps, por t\u00eb gjitha materialet jan\u00eb paraqitur n\u00eb kontekstin e zhvillimit, jo t\u00eb automatizimit t\u00eb testimit. N\u00eb k\u00ebt\u00eb \u00e7\u00ebshtje, kam nevoj\u00eb p\u00ebr reagime; n\u00ebse nj\u00eb kurs i till\u00eb do t\u00eb ishte i dobish\u00ebm dhe i vlefsh\u00ebm p\u00ebr komunitetin e testuesve dhe automatizuesve. Faleminderit paraprakisht!<\/h3>\n<\/h3>\n<p>Burimi: <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 4.9.10 - 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 \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\" \/>\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\/sq\/blog\/administrirovanie\/devops-instrumenty-ne-tolko-dlya-devops-proczess-postroeniya-infrastruktury-avtomatizaczii-testirovaniya-s-nulya\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\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 \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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/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\udd47Mjetet DevOps nuk jan\u00eb vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testimit nga zero | ProHoster","description":"Pjesa 1: Web \/ Android Sh\u00ebnim: ky artikull \u00ebsht\u00eb nj\u00eb p\u00ebrkthim n\u00eb shqip i artikullit origjinal \"Mjetet DevOps nuk jan\u00eb vet\u00ebm p\u00ebr DevOps. Nd\u00ebrtimi i infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testimit nga zero\". Megjithat\u00eb, t\u00eb gjitha ilustraret, lidhjet, citatet dhe terminologjia jan\u00eb ruajtur n\u00eb gjuh\u00ebn origjinale p\u00ebr t\u00eb shmangur deformimin e kuptimit gjat\u00eb p\u00ebrkthimit. Ju uroj nj\u00eb studim t\u00eb k\u00ebndsh\u00ebm! Aktualisht, specialiteti","canonical_url":"https:\/\/prohoster.info\/sq\/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":"sq_AL","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 \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","og:url":"https:\/\/prohoster.info\/sq\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/78676","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=78676"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/78676\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/78677"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=78676"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=78676"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=78676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}