{"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 DevOps jo vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testimit nga e para","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 DevOps nuk jan\u00eb vet\u00ebm p\u00ebr DevOps. Nd\u00ebrtesa e infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testimit nga fillimi\u00bb.<\/i><\/a><\/noindex><i> Megjithat\u00eb, t\u00eb gjitha ilustarimet, lidhjet, citimet dhe terminologjia jan\u00eb ruajtur n\u00eb gjuh\u00ebn origjinale, p\u00ebr t\u00eb shmangur ndonj\u00eb keqinterpretim 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 DevOps jo vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testimit nga e para\" 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, \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0442\u0430 DevOps \u00ebsht\u00eb nj\u00eb prej m\u00eb t\u00eb k\u00ebrkuarave n\u00eb industrin\u00eb IT. N\u00ebse hapni faqet e njohura p\u00ebr k\u00ebrkimin e pun\u00ebs dhe vendosni filtrin sipas pagave, do t\u00eb shihni se ofertat e pun\u00ebs q\u00eb lidhen me DevOps jan\u00eb n\u00eb krye t\u00eb list\u00ebs. Megjithat\u00eb, \u00ebsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb kuptoni se kjo kryesisht i referohet pozites \u2018Senior\u2019, e cila n\u00ebnkupton se kandidati ka nj\u00eb nivel t\u00eb lart\u00eb aft\u00ebsish, njohuri p\u00ebr teknologjit\u00eb dhe mjetet. Kjo gjithashtu vjen me nj\u00eb shkall\u00eb t\u00eb lart\u00eb p\u00ebrgjegj\u00ebsie, e lidhur me funksionimin pa nd\u00ebrprerje t\u00eb production. Megjithat\u00eb, po harrojm\u00eb \u00e7far\u00eb \u00ebsht\u00eb DevOps. Fillimisht nuk ishte ndonj\u00eb person ose departament specifik. N\u00ebse k\u00ebrkojm\u00eb p\u00ebrkufizimet e k\u00ebtij termi, do t\u00eb gjejm\u00eb shum\u00eb emra t\u00eb bukur dhe t\u00eb sakt\u00eb, si metodologji, praktika, filozofia kulturore, grup konceputesh dhe k\u00ebshtu me radh\u00eb.<\/p>\n<p>Specializimi im \u00ebsht\u00eb inxhinier i automatizimit t\u00eb testimit (QA automation engineer), por un\u00eb mendoj se ai nuk duhet t\u00eb lidhet vet\u00ebm me shkruarjen e testeve automatike ose zhvillimin e arkitektur\u00ebs s\u00eb framework-ut p\u00ebr testim. N\u00eb vitin 2020, njohurit\u00eb p\u00ebr infrastruktur\u00ebn e automatizimit gjithashtu jan\u00eb t\u00eb nevojshme. Kjo lejon organizimin e procesit t\u00eb automatizimit vet\u00eb, duke filluar nga ekzekutimi i testeve dhe p\u00ebrfunduar me ofrimin e rezultateve p\u00ebr t\u00eb gjith\u00eb pal\u00ebt e interesuara n\u00eb p\u00ebrputhje me objektivat e caktuara. Si pasoje, aft\u00ebsit\u00eb DevOps jan\u00eb faktor t\u00eb domosdosh\u00ebm p\u00ebr kryerjen e k\u00ebsaj pune. Dhe gjith\u00e7ka \u00ebsht\u00eb mir\u00eb, por, fatkeq\u00ebsisht, ka nj\u00eb problem (<i>spoiler: ky artikull b\u00ebn p\u00ebrpjekje p\u00ebr t\u00eb thjeshtuar k\u00ebt\u00eb problem<\/i>). Ai lidhet me faktin se DevOps \u00ebsht\u00eb e komplikuar. Dhe kjo \u00ebsht\u00eb e dukshme, sepse kompanit\u00eb nuk do t\u00eb paguajn\u00eb shum\u00eb p\u00ebr di\u00e7ka q\u00eb \u00ebsht\u00eb e leht\u00eb p\u00ebr t'u b\u00ebr\u00eb... N\u00eb bot\u00ebn DevOps ka nj\u00eb num\u00ebr t\u00eb madh mjetesh, termash dhe praktikash q\u00eb duhet t\u00eb zot\u00ebrohen. Sidomos \u00ebsht\u00eb e v\u00ebshtir\u00eb n\u00eb fillim t\u00eb karrier\u00ebs dhe varet nga p\u00ebrvoja teknike e grumbulluar.<\/p>\n<p><img decoding=\"async\" alt=\"Mjetet DevOps jo vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testimit nga e para\" 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 ndoshta do ta p\u00ebrmbyllim 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 \u00ebsht\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 s\u00eb automatizimit t\u00eb testeve. N\u00eb internet mund t\u00eb gjenden shum\u00eb burime informacioni n\u00eb lidhje me mjete t\u00eb ndryshme dhe si t'i p\u00ebrdorim ato, por do t\u00eb donja t'i shqyrtoja ato ekskluzivisht n\u00eb kontekstin e automatizimit. Besoj se shumica e inxhinier\u00ebve t\u00eb automatizimit e njohin situat\u00ebn kur testet e zhvilluara nuk jan\u00eb ekzekutuar dhe nuk jan\u00eb mbajtur p\u00ebrve\u00e7se nga vet\u00eb ju. Si rezultat, testet b\u00ebhen t\u00eb vjetra dhe duhet t\u00eb harxhohet koh\u00eb p\u00ebr t'i p\u00ebrdit\u00ebsuar. Edhe nj\u00eb her\u00eb, n\u00eb fillim t\u00eb karrier\u00ebs, kjo mund t\u00eb jet\u00eb nj\u00eb detyr\u00eb e v\u00ebshtir\u00eb: t\u00eb vendosni se cilat mjete duhet t\u00eb ndihmojn\u00eb p\u00ebr t\u00eb zgjidhur k\u00ebt\u00eb problem, si t'i zgjidhni ato, t'i konfiguroni dhe t'i mbani. Disa testues k\u00ebrkojn\u00eb ndihm\u00eb nga DevOps (njer\u00ebzit) dhe, le t\u00eb jemi t\u00eb sinqert\u00eb, kjo qasje funksionon. N\u00eb shum\u00eb raste, kjo mund t\u00eb jet\u00eb opsioni i vet\u00ebm, sepse na mungon pamja e t\u00eb gjitha var\u00ebsive. Por, si\u00e7 e dim\u00eb, DevOps jan\u00eb djem shum\u00eb t\u00eb z\u00ebn\u00eb, sepse ata duhet t\u00eb mendojn\u00eb p\u00ebr infrastruktur\u00ebn e gjith\u00eb kompanis\u00eb, p\u00ebr shp\u00ebrndarjen, monitorimin, mikrosh\u00ebrbimet dhe detyra t\u00eb tjera t\u00eb ngjashme n\u00eb var\u00ebsi t\u00eb organizat\u00ebs\/ekipit. Si zakonisht, automatizimi nuk \u00ebsht\u00eb prioritet. N\u00eb k\u00ebt\u00eb rast, duhet t\u00eb p\u00ebrpiqemi t\u00eb b\u00ebjm\u00eb gjith\u00e7ka q\u00eb \u00ebsht\u00eb e mundur nga ana jon\u00eb nga fillimi deri n\u00eb fund. Kjo do t\u00eb zvog\u00ebloj\u00eb var\u00ebsit\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 shikojm\u00eb nj\u00eb pamje m\u00eb t\u00eb gjer\u00eb t\u00eb asaj q\u00eb po ndodh.<\/p>\n<p>N\u00eb artikull jan\u00eb paraqitur mjetet m\u00eb t\u00eb k\u00ebrkuara dhe t\u00eb njohura dhe tregohet si t'i p\u00ebrdorni ato p\u00ebr nd\u00ebrtimin hap pas hapi t\u00eb infrastruktur\u00ebs s\u00eb automatizimit. \u00c7do grup \u00ebsht\u00eb p\u00ebrfaq\u00ebsuar me mjete q\u00eb jan\u00eb provuar me p\u00ebrvoj\u00ebn 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 vjetra. Detyra jon\u00eb inxhinierike \u00ebsht\u00eb t\u00eb kuptojm\u00eb parimet baz\u00eb: p\u00ebrse na nevojitet ky grup mjetesh dhe cilat detyra pune mund t\u00eb zgjidhim me to. Prandaj, n\u00eb p\u00ebrfundim t\u00eb \u00e7do seksioni, l\u00eb lidhje me 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>\nRikuj p\u00ebr her\u00eb t\u00eb dyt\u00eb se artikulli nuk \u00ebsht\u00eb p\u00ebr mjete specifike, prandaj nuk do t\u00eb ket\u00eb inserte kodesh nga dokumentacioni dhe p\u00ebrshkrime t\u00eb komandeve t\u00eb caktuara. Por n\u00eb fund t\u00eb \u00e7do seksioni, do t\u00eb l\u00eb lidhje p\u00ebr studim m\u00eb t\u00eb holl\u00ebsish\u00ebm.<\/p>\n<p>Kjo \u00ebsht\u00eb b\u00ebr\u00eb p\u00ebr shkak se:\u00a0<\/p>\n<ul>\n<li>ky material \u00ebsht\u00eb shum\u00eb leht\u00eb p\u00ebr t'u gjetur n\u00eb burime t\u00eb ndryshme (dokumentacion, libra, kurse video);<\/li>\n<li>n\u00ebse fillojm\u00eb t\u00eb thelloheni, do t\u00eb duhet t\u00eb shkruajm\u00eb 10, 20, 30 pjes\u00eb t\u00eb k\u00ebtij artikulli (kur n\u00eb planet jan\u00eb 2-3);<\/li>\n<li>un\u00eb thjesht nuk dua t\u00eb shpenzoj koh\u00ebn tuaj, pasi 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>\nM\u00eb p\u00eblqen shum\u00eb q\u00eb ky material t\u00eb jet\u00eb i dobish\u00ebm p\u00ebr \u00e7do lexues, jo thjesht t\u00eb lexohet dhe t\u00eb harrohet. N\u00eb \u00e7do studim, praktik\u00ebn e r\u00ebnd\u00ebsishme. P\u00ebr k\u00ebt\u00eb, kam p\u00ebrgatitur<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/AlexeyAltunin\/devops-tools-for-qa-automation-infrastructure\"> nj\u00eb depo GitHub me nj\u00eb udh\u00ebzues hap pas hapi p\u00ebr t\u00eb b\u00ebr\u00eb gjith\u00e7ka nga e para<\/a><\/noindex>. Gjithashtu do t'ju pres\u00eb nj\u00eb detyr\u00eb sht\u00ebpie, n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb siguroheni se nuk keni kopjuar n\u00eb m\u00ebnyr\u00eb pa mend komanda t\u00eb ekzekutueshme. <\/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 web \/ android teste demo 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 \/>\nKontraktimi<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 \/>\nPlatformat e cloud<br \/>\nGoogle Cloud Platform<\/p>\n<p><strong>6<\/strong><br \/>\nOrkestrimi<br \/>\nKubernetes<\/p>\n<p><strong>7<\/strong><br \/>\nInfrastruktur\u00eb si kod (IaC)<br \/>\nTerraform, Ansible<\/p>\n<p><\/p>\n<h3>Struktura e \u00e7do seksioni<\/h3>\n<p>\nP\u00ebr t\u00eb mbajtur narracionin n\u00eb nj\u00eb m\u00ebnyr\u00eb t\u00eb qart\u00eb, \u00e7do seksion p\u00ebrshkruhet sipas planit t\u00eb m\u00ebposht\u00ebm:<\/p>\n<ul>\n<li>p\u00ebrshkrim i shkurt\u00ebr i 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>lidhje p\u00ebr studim,<\/li>\n<li>mjete t\u00eb ngjashme.<\/li>\n<\/ul>\n<p><\/p>\n<h2>1. Ekzekutimi lokal i testeve<\/h2>\n<p><\/p>\n<h3>P\u00ebrshkrimi i shkurt\u00ebr i teknologjis\u00eb<\/h3>\n<p>\nKy \u00ebsht\u00eb thjesht nj\u00eb hap p\u00ebrgatitor p\u00ebr t\u00eb ekzekutuar testet demo lokalmente dhe p\u00ebr t\u00eb verifikuar se 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\u00ebrdorni 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 platforma web dhe Appium p\u00ebr platform\u00ebn Android p\u00ebrkat\u00ebsisht, pasi n\u00eb hapat e ardhsh\u00ebm do t\u00eb p\u00ebrdorim imazhe Docker, t\u00eb cilat jan\u00eb p\u00ebrgatitur p\u00ebr t\u00eb punuar sakt\u00ebsisht me k\u00ebto mjete. P\u00ebr m\u00eb tep\u00ebr, duke u referuar k\u00ebrkesave n\u00eb ofertat e pun\u00ebs, k\u00ebto mjete jan\u00eb m\u00eb t\u00eb k\u00ebrkuarat n\u00eb treg.<\/p>\n<p>Si mund t\u00eb keni v\u00ebn\u00eb re, ne po shqyrtojm\u00eb vet\u00ebm testet p\u00ebr web dhe Android. Fatkeq\u00ebsisht, IOS \u00ebsht\u00eb nj\u00eb histori krejt tjet\u00ebr (faleminderit Apple). Kam p\u00ebr q\u00ebllim t\u00eb demonstroj zgjidhje dhe praktika t\u00eb lidhura me IOS n\u00eb pjes\u00ebt n\u00eb vazhdim.<\/p>\n<h3>Vlera p\u00ebr infrastruktur\u00ebn e automatizimit<\/h3>\n<p>\nNga k\u00ebndv\u00ebshtrimi i infrastruktur\u00ebs, ekzekutimi lokal nuk ka asnj\u00eb vler\u00eb. Ju thjesht po kontrolloni n\u00ebse testet funksionojn\u00eb n\u00eb makinat lokale n\u00eb shfletuesit lokal\u00eb dhe simuluesit. Por, n\u00eb \u00e7do rast, kjo \u00ebsht\u00eb nj\u00eb pik\u00eb e nevojshme fillestare.<\/p>\n<h3>Ilustrimi i gjendjes aktuale t\u00eb infrastruktur\u00ebs<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Mjetet DevOps jo vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testimit nga e para\" 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\">Simulatori i Android<\/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>Mjetet e ngjashme<\/h3>\n<p><\/p>\n<ul>\n<li>\u00e7do gjuh\u00eb programimi, q\u00eb ju p\u00eblqen, n\u00eb lidhje me Selenium\/Appium \u2014 testet;<\/li>\n<li>\u00e7do test;<\/li>\n<li>\u00e7do ekzekutues t\u00eb testeve.<\/li>\n<\/ul>\n<p><\/p>\n<h2>2. Sistemet e kontrollit t\u00eb versioneve (Git)<\/h2>\n<p><\/p>\n<h3>P\u00ebrshkrimi i shkurt\u00ebr i teknologjis\u00eb<\/h3>\n<p>\n Nuk do t\u00eb jet\u00eb nj\u00eb zbules\u00eb p\u00ebr ask\u00ebnd n\u00ebse them 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 iu referuar burimeve t\u00eb ndryshme, mund t\u00eb themi me siguri q\u00eb Git \u00ebsht\u00eb p\u00ebrfaq\u00ebsuesi m\u00eb i popullarizuar. Sistemi i kontrollit t\u00eb versioneve ofron shum\u00eb p\u00ebrfitime, si shk\u00ebmbimi i kodit, ruajtja e versioneve, rikuperimi n\u00eb deg\u00ebt e m\u00ebparshme, monitorimi i historis\u00eb s\u00eb projektit, kopjet rezerv\u00eb. Nuk do t\u00eb diskutojm\u00eb \u00e7do pik\u00eb n\u00eb detaje, pasi jam i sigurt q\u00eb ju e njihni mir\u00eb dhe e p\u00ebrdorni n\u00eb pun\u00ebn tuaj t\u00eb p\u00ebrditshme. Por n\u00ebse ndonj\u00ebher\u00eb nuk e njihni, un\u00eb rekomandoj t\u00eb ndaloni leximin e k\u00ebtij artikulli dhe sa m\u00eb shpejt t\u00eb plot\u00ebsoni 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: \"Pse na flet ai p\u00ebr Git? T\u00eb gjith\u00eb e din\u00eb dhe e p\u00ebrdorin at\u00eb si p\u00ebr kodin e zhvillimit ashtu edhe p\u00ebr kodin e testeve automatike\". Do t\u00eb keni plot\u00ebsisht t\u00eb drejt\u00eb, por n\u00eb k\u00ebt\u00eb artikull po flasim p\u00ebr infrastruktur\u00ebn dhe k\u00ebt\u00eb seksion luan nj\u00eb rol paraqit\u00ebs p\u00ebr seksionin 7: \"Infrastruktura si Kod (IaC)\". P\u00ebr ne kjo do t\u00eb thot\u00eb se e gjith\u00eb infrastruktura, p\u00ebrfshir\u00eb at\u00eb testuese, p\u00ebrshkruhet n\u00eb form\u00eb kodi, p\u00ebrkat\u00ebsisht ne mund t'ua aplikojm\u00eb sistemet e versionimit dhe t\u00eb marrim p\u00ebrfitime t\u00eb ngjashme si p\u00ebr kodin e zhvillimit dhe automatizimin.<\/p>\n<p>Ne do ta shqyrtojm\u00eb IaC m\u00eb n\u00eb detaje n\u00eb hapin 7, por mund t\u00eb filloni ta p\u00ebrdorni Git lokalisht tani, duke krijuar nj\u00eb depo lokale. Pamja e p\u00ebrgjithshme do t\u00eb zgjerodheshin kur t\u00eb shtojm\u00eb nj\u00eb depo t\u00eb larg\u00ebt n\u00eb infrastruktur\u00eb.<\/p>\n<h3>Ilustrimi i gjendjes aktuale t\u00eb infrastruktur\u00ebs<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Mjetet DevOps jo vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testimit nga e para\" 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 versioneve<\/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\">Fillimi \u2014 Rreth Kontrollit t\u00eb Versioneve<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Mjetet e 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 \u00ebsht\u00eb pjes\u00eb e sh\u00ebrbimeve Azure DevOps)<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h2>3. Kontenjerizimi (Docker)<\/h2>\n<p><\/p>\n<h3>P\u00ebrshkrimi i shkurt\u00ebr i teknologjis\u00eb<\/h3>\n<p>\n P\u00ebr t\u00eb demonstruar se si kontenjerizimi ndryshoi rregullat e loj\u00ebs, le t\u00eb kthehemi disa dekada n\u00eb t\u00eb kaluar\u00ebn. N\u00eb ato koh\u00ebra, njer\u00ebzit blinin dhe p\u00ebrdornin makina server p\u00ebr t\u00eb ekzekutuar aplikacione. Por, n\u00eb shumic\u00ebn e rasteve, burimet e nevojshme p\u00ebr ekzekutimin e tyre nuk ishin t\u00eb njohura paraprakisht. Si rezultat, kompanit\u00eb shpenzonin para p\u00ebr blerjen e server\u00ebve t\u00eb fuqish\u00ebm t\u00eb shtrenjt\u00eb, por nj\u00eb pjes\u00eb e k\u00ebtyre kapaciteteve nuk ishin p\u00ebrdorur plot\u00ebsisht.<\/p>\n<p>Hapi tjet\u00ebr n\u00eb evolucionin ishin makinat virtuale (VM), t\u00eb cilat zgjidh\u00ebn problemin e shpenzimeve p\u00ebr burimet e pap\u00ebrdorura. Kjo teknologji lejoi ekzekutimin e aplikacioneve t\u00eb pavarura nd\u00ebrsjelltas brenda nj\u00eb serveri, duke ndar\u00eb nj\u00eb hap\u00ebsir\u00eb t\u00eb plot\u00eb t\u00eb izoluara. Por, fatkeq\u00ebsisht, \u00e7do teknologji ka disavantazhet e saj. Ekzekutimi i VM k\u00ebrkon nj\u00eb sistem operativ t\u00eb plot\u00eb, i cili konsumon CPU, RAM, ruajtje dhe, var\u00ebsisht nga OS, \u00ebsht\u00eb e nevojshme t\u00eb merren parasysh kostot e licenc\u00ebs. K\u00ebto faktor\u00eb ndikojn\u00eb n\u00eb shpejt\u00ebsin\u00eb e ngarkes\u00ebs dhe e komplikuar portabilitetin.<\/p>\n<p>Dhe tani kemi ardhur te kontenjerizimi. P\u00ebrs\u00ebri, kjo teknologji zgjidhi problemin e m\u00ebparsh\u00ebm, pasi kontenjer\u00ebt nuk p\u00ebrdorin nj\u00eb OS t\u00eb plot\u00eb, duke lejuar k\u00ebshtu t\u00eb \u00e7lirohen shum\u00eb burime dhe ofrojn\u00eb nj\u00eb zgjidhje t\u00eb shpejt\u00eb dhe t\u00eb fleksib\u00ebl p\u00ebr portabilitetin.<\/p>\n<p>Sigurisht, teknologjia e kontejnerizimit 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 ato koh\u00eb, u b\u00ebn\u00eb shum\u00eb k\u00ebrkime, zhvillime dhe p\u00ebrpjekje. Por ishte pik\u00ebrisht Docker q\u00eb e p\u00ebrshtati k\u00ebt\u00eb teknologji dhe e b\u00ebri t\u00eb leht\u00eb p\u00ebr masat. N\u00eb koh\u00ebt tona, kur flasim p\u00ebr kontejner\u00eb, n\u00eb shumic\u00ebn e rasteve kemi parasysh Docker. Kur flasim p\u00ebr kontejner\u00ebt Docker, n\u00ebnkuptojm\u00eb kontejner\u00eb Linux. Ne mund t\u00eb p\u00ebrdorim sisteme Windows dhe macOS p\u00ebr t\u00eb drejtuar kontejner\u00eb, por \u00ebsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb kuptojm\u00eb se n\u00eb k\u00ebt\u00eb rast shfaqet nj\u00eb shtres\u00eb e shtuar. P\u00ebr shembull, Docker n\u00eb Mac fshehurazi drejton kontejner\u00ebt brenda nj\u00eb VM t\u00eb leht\u00eb Linux. Ne do t\u00eb kthehemi n\u00eb k\u00ebt\u00eb tem\u00eb kur t\u00eb diskutojm\u00eb p\u00ebr drejtuar emulator\u00ebt Android brenda kontejner\u00ebve, pasi ka nj\u00eb nuanc\u00eb shum\u00eb t\u00eb r\u00ebnd\u00ebsishme q\u00eb duhet shqyrtuar m\u00eb n\u00eb detaje.<\/p>\n<h3>Vlera p\u00ebr infrastruktur\u00ebn e automatizimit<\/h3>\n<p>\n Ne zbuluam se kontejnerizimi dhe Docker jan\u00eb t\u00eb shk\u00eblqyera. Le t\u00eb shikojm\u00eb k\u00ebt\u00eb n\u00eb kontekstin e automatizimit, sepse \u00e7do mjet ose teknologji duhet t\u00eb zgjidh\u00eb nj\u00eb problem. T\u00eb identifikojm\u00eb problemet e dukshme t\u00eb automatizimit t\u00eb testimit n\u00eb kontekstin e testeve UI:<\/p>\n<ul>\n<li>nj\u00eb num\u00ebr i madh var\u00ebsish gjat\u00eb instalimit t\u00eb Selenium dhe ve\u00e7an\u00ebrisht t\u00eb Appium;<\/li>\n<li>probleme p\u00ebrshtatjeje mes versioneve t\u00eb shfletuesve, simulator\u00ebve dhe drejtuesve;<\/li>\n<li>mungesa e nj\u00eb hap\u00ebsire t\u00eb izoluar p\u00ebr shfletuesit\/simulator\u00ebt, 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 mbahen, n\u00ebse duhen drejtuar 10, 50, 100 ose madje 1000 shfletues nj\u00ebherazi.<\/li>\n<\/ul>\n<p>\nPor, pasi Selenium \u00ebsht\u00eb mjeti m\u00eb i njohur p\u00ebr automatizim dhe Docker \u00ebsht\u00eb mjeti m\u00eb i njohur p\u00ebr kontejnerizim, askush nuk duhet t\u00eb befasohet q\u00eb dikush p\u00ebrpiqet t'i bashkoj\u00eb ato p\u00ebr t\u00eb krijuar nj\u00eb mjet t\u00eb fuqish\u00ebm p\u00ebr t\u00eb zgjidhur problemet e p\u00ebrmendura m\u00eb lart. Le t\u00eb shqyrtojm\u00eb k\u00ebto zgjidhje m\u00eb n\u00eb detaje.\u00a0<\/p>\n<p><u>Selenium grid n\u00eb docker<\/u><\/p>\n<p>Ky ky\u00e7 ky\u00e7 ky\u00e7 ky\u00e7 populare n\u00eb bot\u00eb Selenium p\u00ebr t\u00eb drejtuar disa shfletues n\u00eb disa makina dhe p\u00ebr t'i menaxhuar ato nga nj\u00eb trung qendror. P\u00ebr t\u00eb nisur, ne duhet t\u00eb regjistrojm\u00eb t\u00eb pakt\u00ebn 2 pjes\u00eb: Hub dhe Node(s). Hub \u00ebsht\u00eb trung qendror q\u00eb merr t\u00eb gjitha k\u00ebrkesat nga provat dhe i shp\u00ebrndan ato n\u00eb Nodes p\u00ebrkat\u00ebse. P\u00ebr \u00e7do Node, ne mund t\u00eb konfigurojm\u00eb nj\u00eb konfigurim specifik, p\u00ebr shembull, duke treguar shfletuesin e nevojsh\u00ebm dhe versionin e tij. Megjithat\u00eb, ne ende kemi nevoj\u00eb t\u00eb kujdesemi p\u00ebr drejtuesit 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 m\u00ebnyr\u00eb t\u00eb past\u00ebr, p\u00ebrve\u00e7 se n\u00eb ato raste kur kemi nevoj\u00eb t\u00eb punojm\u00eb me shfletuesit q\u00eb nuk mund t\u00eb instalohen n\u00eb Linux OS. P\u00ebr t\u00eb gjitha rastet e tjera, nj\u00eb zgjidhje shum\u00eb fleksibile dhe e sakt\u00eb do t\u00eb ishte p\u00ebrdorimi i imazheve Docker p\u00ebr t\u00eb nisur Hub dhe Nodes t\u00eb Selenium grid. Ky qasje ndihmon shum\u00eb n\u00eb menaxhimin e nyjeve, pasi ne mund t\u00eb zgjedhim imazhin q\u00eb na nevojitet me versionet p\u00ebrkat\u00ebse t\u00eb shfletuesve dhe drejtuesve tashm\u00eb t\u00eb instaluar.<\/p>\n<p>Megjith\u00ebse ka komente negative p\u00ebr stabilitetin e funksionimit, ve\u00e7an\u00ebrisht kur ekzekutohen nj\u00eb num\u00ebr t\u00eb madh Node-esh paralelisht, Selenium grid ende mbetet mjeti m\u00eb i popullarizuar p\u00ebr ekzekutimin paralel t\u00eb testeve Selenium. \u00cbsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb theksohet se n\u00eb open-source vazhdimisht shfaqen p\u00ebrdit\u00ebsime dhe modifikime t\u00eb ndryshme t\u00eb k\u00ebtij instrumenti, t\u00eb cilat luftojn\u00eb kund\u00ebr ngushticave t\u00eb ndryshme.<\/p>\n<p><u>Selenoid p\u00ebr Web<\/u><\/p>\n<p>Ky ky\u00e7 \u00ebsht\u00eb nj\u00eb hap p\u00ebrpara 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 shum\u00eb m\u00eb t\u00eb thjesht\u00eb. Para s\u00eb gjithash, nuk \u00ebsht\u00eb nj\u00eb modifikim tjet\u00ebr i Selenium grid. N\u00eb vend t\u00eb k\u00ebsaj, zhvilluesit krijuan nj\u00eb version t\u00eb entirely 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, e dha nj\u00eb nxitje n\u00eb zhvillimin e automatizimit t\u00eb testimeve. P\u00ebr m\u00eb tep\u00ebr, n\u00eb rastin e Selenium Grid ne duhet t\u00eb p\u00ebrcaktojm\u00eb t\u00eb gjitha shfletuesit dhe versionet e tyre t\u00eb k\u00ebrkuara p\u00ebrpara, \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, p\u00ebr shkak t\u00eb funksionit \u2018shfletues n\u00eb k\u00ebrkes\u00eb\u2019. E gjith\u00eb \u00e7far\u00eb na duhet \u00ebsht\u00eb t\u00eb shkarkojm\u00eb paraprakisht imazhet e nevojshme me shfletues dhe t\u00eb p\u00ebrdit\u00ebsojm\u00eb skedarin e konfigurimit me t\u00eb cilin Selenoid nd\u00ebrvepron. Pas k\u00ebrkes\u00ebs nga testet, Selenoid automatikisht do t\u00eb nis\u00eb kontejnerin e nevojsh\u00ebm me shfletuesin e nevojsh\u00ebm. Pasi testi t\u00eb p\u00ebrfundoj\u00eb, Selenoid do ta heq\u00eb kontejnerin, duke liruar k\u00ebshtu burimet p\u00ebr k\u00ebrkesat e tjera. Ky qasje eliminon plot\u00ebsisht problemin e njohur t\u00eb \u2018degradimit t\u00eb nyjave\u2019, q\u00eb shpesh e hasim n\u00eb Selenium grid.<\/p>\n<p>Por, fatkeq\u00ebsisht, Selenoid ende nuk \u00ebsht\u00eb plumbi i argjendt\u00eb. Ne mor\u00ebm funksionin \u2018shfletues n\u00eb k\u00ebrkes\u00eb\u2019, por funksioni \u2018burime n\u00eb k\u00ebrkes\u00eb\u2019 ende nuk \u00ebsht\u00eb i disponuesh\u00ebm. P\u00ebr t\u00eb p\u00ebrdorur Selenoid, ne duhet ta instalojm\u00eb at\u00eb n\u00eb hardware fizik ose n\u00eb VM, \u00e7ka do t\u00eb thot\u00eb se duhet t\u00eb dim\u00eb paraprakisht se sa burime t\u00eb nevojshme duhet t\u00eb dedikojm\u00eb. Un\u00eb 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 n\u00ebse na duhen 100, 500, 1000 ose m\u00eb shum\u00eb? Nuk ka asnj\u00eb kuptim t\u00eb mb\u00ebshtesim dhe paguajm\u00eb nj\u00eb sasi t\u00eb till\u00eb burimesh vazhdimisht. N\u00eb seksionet 5 dhe 6 t\u00eb k\u00ebtij artikulli, ne do t\u00eb diskutojm\u00eb zgjidhjet q\u00eb lejojn\u00eb shkall\u00ebzim, duke reduktuar ndjesh\u00ebm shpenzimet e kompanis\u00eb.<\/p>\n<p><u>Selenoid p\u00ebr Android<\/u><\/p>\n<p>Pas suksesit t\u00eb Selenoid si nj\u00eb mjet p\u00ebr automatizimin e web-it, njer\u00ebzit donin 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 nj\u00eb pik\u00ebpamje e nivelit t\u00eb lart\u00eb t\u00eb p\u00ebrdoruesit, parimi i funksionimit \u00ebsht\u00eb i ngjash\u00ebm me automatizimin e web-it. Dallimi i vet\u00ebm \u00ebsht\u00eb se, p\u00ebrve\u00e7 kontejner\u00ebve me shfletues, Selenoid lan\u00e7on kontejner\u00eb me emulator\u00eb t\u00eb Android. Sipas mendimit tim, n\u00eb k\u00ebt\u00eb moment, ky \u00ebsht\u00eb mjeti m\u00eb i fuqish\u00ebm falas p\u00ebr t\u00eb ekzekutuar teste Android paralelisht.<\/p>\n<p>M\u00eb vjen keq t\u00eb flas p\u00ebr an\u00ebt negative t\u00eb k\u00ebtij mjeti, pasi ai m\u00eb p\u00eblqen v\u00ebrtet shum\u00eb. Por megjithat\u00eb, k\u00ebtu jan\u00eb t\u00eb pranishme t\u00eb nj\u00ebjtat disavantazhe q\u00eb i p\u00ebrkasin edhe automatizimit t\u00eb web-it, t\u00eb lidhura me shkall\u00ebzimin. P\u00ebrve\u00e7 k\u00ebsaj, duhet t\u00eb flas p\u00ebr nj\u00eb kufizim tjet\u00ebr, i cili mund t\u00eb b\u00ebhet nj\u00eb surpriz\u00eb, n\u00ebse e konfigurojm\u00eb mjetin p\u00ebr her\u00eb t\u00eb par\u00eb. P\u00ebr t\u00eb ekzekutuar imazhet e Android, na nevojitet nj\u00eb makin\u00eb fizike ose VM me mb\u00ebshtetje p\u00ebr virtualizim t\u00eb ngjitur. N\u00eb udh\u00ebzimin praktik do t\u00eb demonstroj si ta aktivizoj k\u00ebt\u00eb n\u00eb nj\u00eb VM Linux. Megjithat\u00eb, n\u00ebse jeni p\u00ebrdorues i macOS dhe d\u00ebshironi t\u00eb vendosni Selenoid lokal, at\u00ebher\u00eb p\u00ebr t\u00eb ekzekutuar testet Android do t\u00eb jet\u00eb e pamundur. Por gjithmon\u00eb mund t\u00eb lan\u00e7oni nj\u00eb VM Linux lokal me 'nested virtualization' t\u00eb konfiguruar 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, ne 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 un\u00eb gjithashtu do t\u00eb tregoj si t\u00eb p\u00ebrdor Selenoid p\u00ebr t\u00eb ekzekutuar testet web.\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"Mjetet DevOps jo vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testimit nga e para\" 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 kontejneri<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.docker.com\/get-started\">Docker: fillimi<\/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 emulator\u00eb 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>Mjetet e ngjashme<\/h3>\n<p><\/p>\n<ul>\n<li>Ka mjete t\u00eb tjera t\u00eb kontenierizimit, 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 u tha m\u00eb par\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\u00ebrshkrimi 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, ndjej se ekziston nj\u00eb konfuzion n\u00eb terminologji. N\u00eb k\u00ebt\u00eb paragraf, do doja t\u00eb p\u00ebrshkruaja 3 modifikime t\u00eb k\u00ebsaj teknologjie nga pik\u00ebpamja ime. N\u00eb internet, do t\u00eb gjeni shum\u00eb artikuj me interpretime t\u00eb ndryshme, dhe kjo \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\u00ebjtin val\u00eb me koleg\u00ebt tuaj.<\/p>\n<p>K\u00ebshtu, ekzistojn\u00eb 3 terma: CI \u2014 Continuous Integration (Integrim t\u00eb vazhduesh\u00ebm), CD \u2014 Continuous Delivery (Dor\u00ebzim t\u00eb vazhduesh\u00ebm) dhe p\u00ebrs\u00ebri CD \u2014 Continuous Deployment (Zhvillim t\u00eb vazhduesh\u00ebm). (<i>M\u00eb tej, do t\u00eb p\u00ebrdor k\u00ebta terma n\u00eb anglisht<\/i>). \u00c7do modifikim shton disa hapa t\u00eb tjer\u00eb n\u00eb konvejurin tuaj t\u00eb zhvillimit. Por fjala <u>continuous<\/u> (\u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u0430\u044f) \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u044b\u043c \u0433\u043b\u0430\u0432\u043d\u044b\u043c. \u0412 \u044d\u0442\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043c\u044b \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u043c \u0447\u0442\u043e-\u0442\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 \u0438 \u0434\u043e \u043a\u043e\u043d\u0446\u0430, \u0431\u0435\u0437 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0438\u043b\u0438 \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 CI &#038; CD \u0438 CD \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435.<\/p>\n<ul>\n<li><strong>Continuous Integration \u2013<\/strong> \u00ebsht\u00eb hapi fillestar i evolucionit. Pas d\u00ebrgimit t\u00eb kodit t\u00eb ri n\u00eb server, presim t\u00eb marrim nj\u00eb reagim t\u00eb shpejt\u00eb se gjith\u00e7ka \u00ebsht\u00eb n\u00eb rregull me ndryshimet tona. Zakonisht, CI p\u00ebrfshin fillimin e mjeteve t\u00eb analiz\u00ebs s\u00eb kodit n\u00eb m\u00ebnyr\u00eb statike dhe teste module\/sh\u00ebrbime interne API. Kjo na lejon t\u00eb marrim informacion p\u00ebr kodin ton\u00eb vet\u00ebm disa sekonda\/minuta m\u00eb von\u00eb.<\/li>\n<li><strong>D\u00ebrgimi i Vazhdush\u00ebm<\/strong> \u00ebsht\u00eb nj\u00eb hap m\u00eb i avancuar, ku ne fillojm\u00eb t\u00eb ekzekutojm\u00eb teste integrimi\/UI. Megjithat\u00eb, n\u00eb k\u00ebt\u00eb faz\u00eb, nuk marrim rezultatet aq shpejt sa n\u00eb rastin e CI. S\u00eb pari, k\u00ebta lloje testesh k\u00ebrkojn\u00eb m\u00eb shum\u00eb koh\u00eb p\u00ebr t\u00eb kaluar. S\u00eb dyti, p\u00ebrpara se t\u00eb fillojm\u00eb, duhet t\u00eb zbatojm\u00eb ndryshimet tona n\u00eb nj\u00eb ambient testimi\/staging. P\u00ebr m\u00eb tep\u00ebr, n\u00ebse flasim p\u00ebr zhvillimin e aplikacioneve mobile, at\u00ebher\u00eb ndodhet nj\u00eb hap shtes\u00eb p\u00ebr t\u00eb nd\u00ebrtuar versionin e aplikacionit ton\u00eb.<\/li>\n<li><strong>Continuous Deployment<\/strong> supozon se q\u00eb ne automatikisht l\u00ebshojm\u00eb (release) ndryshimet tona n\u00eb production, n\u00ebse t\u00eb gjitha testet pranuese jan\u00eb kaluar n\u00eb hapat e m\u00ebparsh\u00ebm. P\u00ebrve\u00e7 k\u00ebsaj, pas hapit t\u00eb release mund t\u00eb konfigurohen faza t\u00eb ndryshme, si\u00e7 jan\u00eb ekzekutimi i testeve smoke n\u00eb production dhe mbledhja e metrikave t\u00eb interesit. Continuous Deployment \u00ebsht\u00eb e mundur vet\u00ebm me mbulim t\u00eb mir\u00eb nga testet automatike. N\u00ebse k\u00ebrkohen ndihma manuale, p\u00ebrfshir\u00eb testimin, at\u00ebher\u00eb kjo nuk \u00ebsht\u00eb m\u00eb <u>Continuous<\/u> (e vazhdueshme). At\u00ebher\u00eb mund t\u00eb flasim q\u00eb konvejeri yn\u00eb i p\u00ebrmbush vet\u00ebm 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 duhet t\u00eb sqaroj se, kur flasim p\u00ebr testet UI end-to-end, n\u00ebnkuptohet se ne duhet t\u00eb deploym\u00eb ndryshimet tona dhe sh\u00ebrbimet p\u00ebrkat\u00ebse n\u00eb mjediset e testimit. Continuous Integration \u2014 procesi nuk \u00ebsht\u00eb i p\u00ebrshtatsh\u00ebm p\u00ebr k\u00ebt\u00eb detyr\u00eb dhe ne duhet t\u00eb kujdesemi p\u00ebr implementimin e praktikave t\u00eb pakt\u00ebn t\u00eb Continuous Delivery. Continuous Deployment gjithashtu ka kuptim n\u00eb kontekstin e testeve UI, n\u00ebse ne planifikojm\u00eb t'i ekzekutojm\u00eb ato n\u00eb production.<\/p>\n<p>Dhe para se t\u00eb shikojm\u00eb ilustrimin e ndryshimit n\u00eb arkitektur\u00eb, dua t\u00eb them disa fjal\u00eb p\u00ebr GitLab CI. Ndryshe nga mjetet e tjera CI\/CD, GitLab ofron nj\u00eb repo t\u00eb shkarkuesh\u00ebm dhe shum\u00eb funksione t\u00eb tjera shtes\u00eb. K\u00ebshtu, GitLab \u00ebsht\u00eb m\u00eb shum\u00eb se CI. Ai p\u00ebrfshin nga kutia menaxhimin e burimeve t\u00eb kodit, menaxhimin Agile, CI\/CD pipelines, mjete p\u00ebr regjistrim 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 web me nj\u00eb API q\u00eb ruan gjendjen e tij n\u00eb nj\u00eb baz\u00eb t\u00eb dh\u00ebnash, menaxhon projektet\/nd\u00ebrtimet dhe ofron nj\u00eb nd\u00ebrfaqe p\u00ebrdoruesi. GitLab Runner \u00ebsht\u00eb nj\u00eb aplikacion q\u00eb p\u00ebrpunon nd\u00ebrtimet. Ai mund t\u00eb vendoset ve\u00e7mas dhe punon me GitLab CI\/CD p\u00ebrmes nj\u00eb API. P\u00ebr ekzekutimin e testeve ju nevojiten si instance e Gitlab ashtu edhe Runner.<\/p><\/blockquote>\n<p><\/p>\n<h3>Ilustrimi i gjendjes aktuale t\u00eb infrastruktur\u00ebs<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Mjetet DevOps jo vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testimit nga e para\" 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\">Libri i 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=\">Libri i Continuous Delivery<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Mjetet e 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. Platformat n\u00eb re<\/h2>\n<p><\/p>\n<h3>P\u00ebrshkrimi 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, i cili quhet \u2018cloud publik\u2019. Pavar\u00ebsisht p\u00ebrfitimeve t\u00eb m\u00ebdha q\u00eb ofrojn\u00eb teknologjit\u00eb e p\u00ebrshkruara m\u00eb sip\u00ebr, si virtualizimi dhe kontejnerizimi, ne akoma kemi nevoj\u00eb p\u00ebr burime llogarit\u00ebse. Kompanit\u00eb fitojn\u00eb servera t\u00eb shtrenjt\u00eb apo qirajn\u00eb qendrat e t\u00eb dh\u00ebnave, por n\u00eb k\u00ebt\u00eb rast duhet t\u00eb b\u00ebjm\u00eb llogaritje (ndonj\u00ebher\u00eb t\u00eb pamundura) se 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 prodhimin na nevojitet nj\u00eb server q\u00eb funksionon gjat\u00eb gjith\u00eb koh\u00ebs, por a na nevojiten burime t\u00eb ngjashme p\u00ebr testim jasht\u00eb orarit t\u00eb pun\u00ebs? Kjo gjithashtu varet nga lloji i testimit q\u00eb po b\u00ebhet. Nj\u00eb shembull mund t\u00eb jen\u00eb testet e ngarkes\u00ebs\/stresit, q\u00eb planifikojm\u00eb t'i kryejm\u00eb gjat\u00eb or\u00ebve jopune, p\u00ebr t\u00eb marr\u00eb rezultate n\u00eb dit\u00ebn tjet\u00ebr. Por, pa dyshim, disponueshm\u00ebria 24\/7 e server\u00ebve nuk \u00ebsht\u00eb e nevojshme p\u00ebr testet automatike end-to-end dhe ve\u00e7an\u00ebrisht p\u00ebr mjediset e testimit manual. P\u00ebr situata t\u00eb tilla, do t\u00eb ishte mir\u00eb t\u00eb marrim aq burime sa na nevojiten sipas k\u00ebrkes\u00ebs, t'i p\u00ebrdorim dhe t\u00eb ndalojm\u00eb s\u00eb paguari kur ato nuk jan\u00eb m\u00eb t\u00eb nevojshme. P\u00ebr m\u00eb tep\u00ebr, do t\u00eb ishte shk\u00eblqyesh\u00ebm t\u2019i merrnim ato menj\u00ebher\u00eb, duke b\u00ebr\u00eb disa klikime me miun ose duke ekzekutuar disa skripte. K\u00ebt\u00eb q\u00ebllim kan\u00eb cloud-et publike. Le t\u00eb shohim definicionin:<\/p>\n<blockquote><p>\u00abCloud publik \u00ebsht\u00eb p\u00ebrcaktuar si sh\u00ebrbime llogarit\u00ebse t\u00eb ofruara nga ofrues t\u00eb pal\u00ebve t\u00eb treta mbi internetin publik, duke i b\u00ebr\u00eb ato t\u00eb disponueshme p\u00ebr \u00e7do k\u00ebnd q\u00eb d\u00ebshiron t\u2019i p\u00ebrdor\u00eb ose t\u2019i blej\u00eb ato. Ato mund t\u00eb jen\u00eb falas ose t\u00eb shiten sipas k\u00ebrkes\u00ebs, duke lejuar klient\u00ebt t\u00eb paguajn\u00eb vet\u00ebm p\u00ebr p\u00ebrdorimin e cikleve t\u00eb CPU, ruajtjes ose gjer\u00ebsis\u00eb s\u00eb brezit q\u00eb konsumojn\u00eb\u00bb.<\/p><\/blockquote>\n<p>\n Ka nj\u00eb mendim t\u00eb zakonsh\u00ebm se cloud-et publike jan\u00eb t\u00eb shtrenjta. Por ideja e tyre kryesore \u00ebsht\u00eb reduktimi i shpenzimeve t\u00eb kompanis\u00eb. Si\u00e7 u p\u00ebrmend m\u00eb par\u00eb, cloud-et publike lejojn\u00eb q\u00eb t\u00eb marresh burime sipas k\u00ebrkes\u00ebs dhe t\u00eb paguash 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 kemi parasysh se cloud-et publike leht\u00ebsojn\u00eb ndjesh\u00ebm mb\u00ebshtetje infrastrukturore, duke lejuar inxhinier\u00ebt t\u00eb fokusohen 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 specifike na nevojiten p\u00ebr teste UI end-to-end? Kryesisht jan\u00eb makina virtuale ose klaster\u00eb (do t\u00eb flasim p\u00ebr Kubernetes n\u00eb seksionin e ardhsh\u00ebm) p\u00ebr t\u00eb ekzekutuar shfletuesit dhe emulator\u00ebt. Sa m\u00eb shum\u00eb shfletues dhe emulator\u00eb d\u00ebshirojm\u00eb t\u00eb ekzekutojm\u00eb nj\u00ebkoh\u00ebsisht, aq m\u00eb shum\u00eb CPU dhe memorie na duhen dhe aq m\u00eb shum\u00eb para do t\u00eb na duhet t\u00eb paguajm\u00eb p\u00ebr k\u00ebt\u00eb. K\u00ebshtu, cloud-et publike n\u00eb kontekstin e automatizimit t\u00eb testeve na lejojn\u00eb t\u00eb ekzekutojm\u00eb nj\u00eb num\u00ebr t\u00eb madh (100, 200, 1000...) shfletuesish\/emulator\u00ebsh sipas k\u00ebrkes\u00ebs, t\u00eb marrim rezultatet e testimit sa m\u00eb shpejt dhe t\u00eb ndalojm\u00eb s\u00eb paguari p\u00ebr k\u00ebto kapacitete t\u00eb jasht\u00ebzakonshme dhe t\u00eb shtrenjta.\u00a0<\/p>\n<p>Ofertuesit m\u00eb t\u00eb njohur t\u00eb cloud-it jan\u00eb Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP). N\u00eb udh\u00ebzimin praktik jan\u00eb p\u00ebrfshir\u00eb 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 funksionalitet af\u00ebrsisht t\u00eb nj\u00ebjt\u00eb. Zakonisht, p\u00ebr t\u00eb zgjedhur ofertuesin, udh\u00ebzimi fokusohet n\u00eb t\u00eb gjith\u00eb infrastruktur\u00ebn e kompanis\u00eb dhe k\u00ebrkesat biznesore, q\u00eb \u00ebsht\u00eb p\u00ebrtej k\u00ebtij artyku. P\u00ebr inxhinier\u00ebt e automatizimit, do t\u00eb ishte m\u00eb interesante t\u00eb krahasohet p\u00ebrdorimi i ofruesve t\u00eb cloud-it me p\u00ebrdorimin e platformave specifikisht p\u00ebr q\u00ebllimet e testimit, si Sauce Labs, BrowserStack, BitBar dhe t\u00eb tjera. Pra, le t\u00eb b\u00ebjm\u00eb t\u00eb nj\u00ebjt\u00ebn gj\u00eb! Sipas mendimit tim, Sauce Labs \u00ebsht\u00eb ferm\u00eb e njohur p\u00ebr testimin n\u00eb cloud, prandaj e kam marr\u00eb at\u00eb p\u00ebr krahasim.\u00a0<\/p>\n<p><u>GCP p\u00ebrball\u00eb Sauce Labs p\u00ebr q\u00ebllimet e automatizimit:<\/u><\/p>\n<p>Le t\u00eb imagjinojm\u00eb se na nevojiten t\u00eb ekzekutojm\u00eb 8 teste web dhe 8 teste Android nj\u00ebkoh\u00ebsisht. P\u00ebr k\u00ebt\u00eb, do t\u00eb p\u00ebrdorim GCP dhe do t\u00eb ngrisim 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 emulator\u00eb. Le t\u00eb shikojm\u00eb \u00e7mimet:\u00a0\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"Mjetet DevOps jo vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testimit nga e para\" src=\"\/wp-content\/uploads\/2020\/04\/e4688fd2e6e5593d2e1c22fc57f59484.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n P\u00ebr t\u00eb ekzekutuar nj\u00eb kontejner me Chrome, na nevojitet <strong>n1-standard-1 <\/strong>makin\u00eb. N\u00eb rastin e Android 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 fleksibile dhe t\u00eb p\u00ebrballueshme \u00ebsht\u00eb p\u00ebrcaktimi i vlerave t\u00eb caktuara p\u00ebr CPU\/Memorie, por p\u00ebr momentin kjo nuk \u00ebsht\u00eb thelb\u00ebsore p\u00ebr krahasimin me Sauce Labs.<\/p>\n<p>Ja \u00e7mimet p\u00ebr p\u00ebrdorimin e Sauce Labs:<\/p>\n<p><img decoding=\"async\" alt=\"Mjetet DevOps jo vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testimit nga e para\" src=\"\/wp-content\/uploads\/2020\/04\/1367d2b59bbef9603b4b4be166e8d721.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nMendoj se tashm\u00eb e keni v\u00ebn\u00eb re ndryshimin, por gjithsesi do t\u00eb jap 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 * 12 or\u00eb * 0.38 = 104.88$\u00a0<br \/>\n23 dit\u00eb * 12 or\u00eb * 0.08 = 22.08$<\/p>\n<p><strong>Sauce Labs p\u00ebr Ueb<\/strong><br \/>\nTestet paralele Virtual Cloud8<br \/>\n$1.559<br \/>\n\u2014<br \/>\n\u2014<\/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 * 12 or\u00eb * 1.52 = 419.52$\u00a0<br \/>\n23 dit\u00eb * 12 or\u00eb * 0.32 = 88.32$<\/p>\n<p><strong>Sauce Labs p\u00ebr Android<\/strong><br \/>\nTestet paralele Cloud t\u00eb Pajisjeve Reale<br \/>\n$1.999<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>\nSi\u00e7 shihet, diferenca n\u00eb kosto \u00ebsht\u00eb shum\u00eb e madhe, sidomos n\u00ebse ekzekutoni testet vet\u00ebm n\u00eb intervalin normal t\u00eb pun\u00ebs prej 12 or\u00ebsh. Por mund t'i zvog\u00ebloni edhe m\u00eb shum\u00eb shpenzimet duke p\u00ebrdorur makinat preemptible. \u00c7far\u00eb jan\u00eb ato?<\/p>\n<blockquote><p>Nj\u00eb VM preemptible \u00ebsht\u00eb nj\u00eb instanc\u00eb q\u00eb mund ta krijoni dhe ta ekzekutoni me nj\u00eb \u00e7mim shum\u00eb m\u00eb t\u00eb ul\u00ebt se instancat normale. Megjithat\u00eb, Motori i Llogarive mund t'i p\u00ebrfundoj\u00eb k\u00ebto instanca (preempt) n\u00ebse ka nevoj\u00eb p\u00ebr qasje n\u00eb k\u00ebto burime p\u00ebr detyra tjera. Instancat preemptible jan\u00eb kapacitete t\u00eb tep\u00ebrta t\u00eb Motorit t\u00eb Llogarive, k\u00ebshtu q\u00eb disponibiliteti i tyre ndryshon me p\u00ebrdorimin.<\/p>\n<p>N\u00ebse aplikacionet tuaja jan\u00eb t\u00eb tolerante ndaj defekteve dhe mund t\u00eb p\u00ebrballojn\u00eb mund\u00ebsit\u00eb e p\u00ebrfundimit t\u00eb instancave, at\u00ebher\u00eb instancat preemptible mund ta reduktojn\u00eb ndjesh\u00ebm koston tuaj n\u00eb Motorin e Llogarive. P\u00ebr shembull, pun\u00ebt e procesimit t\u00eb grupeve mund t\u00eb ekzekutohen n\u00eb instancat preemptible. N\u00ebse disa nga k\u00ebto instanca p\u00ebrfundojn\u00eb gjat\u00eb procesimit, puna ngadal\u00ebsohet por nuk ndalon krejt\u00ebsisht. Instancat preemptible p\u00ebrfundojn\u00eb detyrat tuaja t\u00eb procesimit t\u00eb grupeve pa i ngarkuar m\u00eb shum\u00eb instancat tuaja ekzistuese dhe pa k\u00ebrkuar q\u00eb t\u00eb paguani \u00e7mim t\u00eb plot\u00eb p\u00ebr instancat normale shtes\u00eb.<\/p><\/blockquote>\n<p>\n Dhe kjo ende nuk \u00ebsht\u00eb fundi! N\u00eb t\u00eb v\u00ebrtet\u00eb, jam i sigurt se askush nuk ekzekuton teste p\u00ebr 12 or\u00eb pa ndalesa. Dhe n\u00ebse \u00ebsht\u00eb k\u00ebshtu, mund t\u00eb lan\u00e7oni dhe ndaloni automatikisht makinat virtuale kur ato nuk kan\u00eb nevoj\u00eb. Koha reale e p\u00ebrdorimit mund t\u00eb ulet deri n\u00eb 6 or\u00eb n\u00eb dit\u00eb. At\u00ebher\u00eb pagesa n\u00eb kontekstin e problemit ton\u00eb do t\u00eb ulet deri n\u00eb 11$ n\u00eb muaj p\u00ebr 8 shfletues. A nuk \u00ebsht\u00eb kjo e shk\u00eblqyer? Por me makinat preemptible duhet t\u00eb jemi t\u00eb kujdessh\u00ebm dhe t\u00eb p\u00ebrgatitur p\u00ebr nd\u00ebrprerje dhe n\u00ebngarkesa t\u00eb paq\u00ebndrueshme, megjithat\u00eb k\u00ebto situata mund t\u00eb parashikohen dhe trajtohen n\u00eb m\u00ebnyr\u00eb programore. Vlen!<\/p>\n<p>Por asnj\u00ebher\u00eb nuk po them \u2018mos e p\u00ebrdorni kurr\u00eb fermat e testeve n\u00eb cloud\u2019. Ato kan\u00eb shum\u00eb avantazhe. Para s\u00eb gjithash, kjo nuk \u00ebsht\u00eb thjesht nj\u00eb makin\u00eb virtuale, por nj\u00eb zgjidhje e plot\u00eb p\u00ebr automatizimin e testeve, me nj\u00eb grup funksionalitetesh nga kuti: qasje e larg\u00ebt, regjistrime, captura ekranesh, regjistrim video, shfletues t\u00eb ndrysh\u00ebm dhe pajisje mobile reale. N\u00eb shum\u00eb situata, kjo mund t\u00eb jet\u00eb nj\u00eb alternativ\u00eb e pahershme. Ve\u00e7an\u00ebrisht platformat e testeve jan\u00eb t\u00eb dobishme p\u00ebr automatizimin e IOS, kur cloud-et publike mund t\u00eb ofrojn\u00eb vet\u00ebm sisteme Linux\/Windos. Por diskutimi p\u00ebr IOS do jet\u00eb n\u00eb artikujt e ardhsh\u00ebm. Rekomandoj gjithmon\u00eb t\u00eb shikoni situat\u00ebn dhe t\u00eb bazohemi n\u00eb detyra: n\u00eb disa raste, \u00ebsht\u00eb m\u00eb e lir\u00eb dhe m\u00eb efikase t\u00eb p\u00ebrdorni cloud-et publike, nd\u00ebrsa n\u00eb disa raste, platformat e testeve patjet\u00ebr meritojn\u00eb parat\u00eb e harxhuara.<\/p>\n<h3>Ilustrimi i gjendjes aktuale t\u00eb infrastruktur\u00ebs<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Mjetet DevOps jo vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testimit nga e para\" 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: VM pricing<\/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\/\">Comparing Cloud Providers<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Mjetet e 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\u00ebrshkrimi i shkurt\u00ebr i teknologjis\u00eb<\/h3>\n<p>\n Kam disa lajme t\u00eb mira \u2013 ne jemi pothuajse n\u00eb fund t\u00eb artikullit! Aktualisht, infrastruktura jon\u00eb e automatizimit p\u00ebrb\u00ebhet nga testet web dhe Android, t\u00eb cilat i ekzekutojm\u00eb p\u00ebrmes GitLab CI n\u00eb parallel, duke p\u00ebrdorur mjete q\u00eb mb\u00ebshtesin Docker: Selenium grid dhe Selenoid. M\u00eb shum\u00eb, 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 zvog\u00ebluar shpenzimet, ne i aktivizojm\u00eb k\u00ebto makina virtuale vet\u00ebm me k\u00ebrkes\u00eb dhe i ndalojm\u00eb kur testimi nuk b\u00ebhet. A ka di\u00e7ka tjet\u00ebr q\u00eb mund t\u00eb p\u00ebrmir\u00ebsoj\u00eb infrastruktur\u00ebn ton\u00eb? P\u00ebrgjigjja \u00ebsht\u00eb \u2013 po! Mir\u00eb se erdh\u00ebt Kubernetes (K8s)!<\/p>\n<p>S\u00eb pari, le t\u00eb shqyrtojm\u00eb se si fjal\u00ebt orkestrim, klaster 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 shp\u00ebrndan dhe menaxhon aplikacionet. P\u00ebr automatizimin e testimit, aplikacionet e kontejnerizuara jan\u00eb Selenium grid dhe Selenoid. Docker dhe K8s plot\u00ebsojn\u00eb nj\u00ebri-tjetrin. I pari p\u00ebrdoret p\u00ebr t\u00eb shp\u00ebrndar\u00eb aplikacione, i dyti \u2013 p\u00ebr orkestrimin. N\u00eb an\u00ebn tjet\u00ebr, K8s \u00ebsht\u00eb nj\u00eb klaster. Detyra e klasterit \u00ebsht\u00eb t\u00eb p\u00ebrdor\u00eb VMs si Nodes, duke lejuar q\u00eb t\u00eb instalohet funksionalitete, programe dhe sh\u00ebrbime brenda nj\u00eb serveri (klasteri). N\u00ebse ndonj\u00eb nga Node bie, at\u00ebher\u00eb ndihmohen Nodes t\u00eb tjera, duke siguruar k\u00ebshtu funksionimin e pand\u00ebrprer\u00eb t\u00eb aplikacionit ton\u00eb. P\u00ebrve\u00e7 k\u00ebsaj, K8s ka nj\u00eb funksionalitet t\u00eb r\u00ebnd\u00ebsish\u00ebm lidhur me shkall\u00ebzimin (scaling), duke na ofruar automatikisht numrin optimal t\u00eb burimeve, bazuar n\u00eb ngarkes\u00ebn dhe kufizimet e vendosura.<\/p>\n<p>N\u00eb t\u00eb v\u00ebrtet\u00eb, shp\u00ebrndarja manuale e Kubernetes nga zero \u00ebsht\u00eb nj\u00eb detyr\u00eb shum\u00eb e komplikuar. Do ta l\u00eb nj\u00eb lidhje p\u00ebr nj\u00eb udh\u00ebzues praktik t\u00eb njohur \"Kubernetes The Hard Way\", dhe n\u00ebse jeni t\u00eb interesuar, mund t\u00eb praktikoni. Por, fatmir\u00ebsisht, ekzistojn\u00eb m\u00ebnyra dhe mjete alternative. M\u00eb e lehta prej tyre \u00ebsht\u00eb p\u00ebrdorimi i Google Kubernetes Engine (GKE) n\u00eb GCP, e cila do t'ju lejoj\u00eb t\u00eb merrni nj\u00eb kluster t\u00eb gatsh\u00ebm pas disa klikimesh. P\u00ebr fillestar\u00ebt, rekomandoj ta p\u00ebrdorni k\u00ebt\u00eb qasje, pasi do t'ju lejoj\u00eb t\u00eb p\u00ebrqendroheni n\u00eb m\u00ebsimin se si t\u00eb p\u00ebrdorni K8s p\u00ebr detyrat tuaja, n\u00eb vend q\u00eb t\u00eb hulumtoni se si komponent\u00ebt e brendsh\u00ebm duhet t\u00eb jen\u00eb t\u00eb integruar me nj\u00ebri-tjetrin.\u00a0<\/p>\n<h3>Vlera p\u00ebr infrastruktur\u00ebn e automatizimit<\/h3>\n<p>\nLe t\u00eb shqyrtojm\u00eb disa ve\u00e7ori t\u00eb r\u00ebnd\u00ebsishme q\u00eb ofron K8s:<\/p>\n<ul>\n<li>shp\u00ebrthimin e aplikacioneve: p\u00ebrdorimi i nj\u00eb klasteri multi-node, n\u00eb vend t\u00eb VM-ve;<\/li>\n<li>shkall\u00ebzimi dinamik: redukton shpenzimet p\u00ebr burimet q\u00eb p\u00ebrdoren vet\u00ebm sipas k\u00ebrkes\u00ebs;<\/li>\n<li>rind\u00ebrtimin e vet\u00eb (Self-healing): rikthimi automatik i pods (duke rikthyer gjithashtu dhe kontejner\u00ebt);<\/li>\n<li>\u00e7akullin e p\u00ebrdit\u00ebsimit dhe rrotullimin e ndryshimeve pa nd\u00ebrprerje: p\u00ebrdit\u00ebsimi i mjeteve, shfletuesve dhe emulator\u00ebve nuk nd\u00ebrpret pun\u00ebn e p\u00ebrdoruesve aktual\u00eb.<\/li>\n<\/ul>\n<p>\n Por K8s ende nuk \u00ebsht\u00eb nj\u00eb plumb argjendi. P\u00ebr t\u00eb kuptuar t\u00eb gjitha 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. Klostri 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 planifikimit. Nodet punuese jan\u00eb ato ku aplikacionet jan\u00eb t\u00eb filluara. Nodet gjithashtu p\u00ebrmbajn\u00eb mjedisin e ekzekutimit t\u00eb kontejner\u00ebve. N\u00eb rastin ton\u00eb, kjo \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 rind\u00ebrtimi nuk iu referohet drejtp\u00ebrdrejt kontejner\u00ebve. Kjo realizohet p\u00ebrmes shtimit\/redukimit t\u00eb numrit t\u00eb pods, t\u00eb cilat nga ana tjet\u00ebr p\u00ebrmbajn\u00eb kontejner\u00eb (zakonisht nj\u00eb kontejner p\u00ebr pod, por n\u00eb var\u00ebsi t\u00eb detyr\u00ebs mund t\u00eb ket\u00eb edhe m\u00eb shum\u00eb). Hierarkia e nivelit t\u00eb lart\u00eb p\u00ebrfaq\u00ebson nodet punuese, brenda t\u00eb cilave ndodhen pods, brenda t\u00eb cilave jan\u00eb ngritur 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 p\u00ebrshtaten si p\u00ebr nodes ashtu edhe p\u00ebr pods. Lloji i par\u00eb \u2013 horizontal \u2013 \u00ebsht\u00eb nj\u00eb shkall\u00ebzim q\u00eb realizohet p\u00ebrmes rritjes s\u00eb numrit t\u00eb nodes\/pods. Ky tip \u00ebsht\u00eb m\u00eb i preferuar. Lloji i dyt\u00eb, p\u00ebrkat\u00ebsisht, \u00ebsht\u00eb vertikal. Shkall\u00ebzimi realizohet p\u00ebrmes rritjes s\u00eb p\u00ebrmasave t\u00eb nodes\/pods, e 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 par\u00eb.<\/p>\n<p><u>Selenium grid<\/u><\/p>\n<p>Si\u00e7 u p\u00ebrmend 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 kontenizuar (containerised). Prandaj, nuk \u00ebsht\u00eb e \u00e7uditshme q\u00eb Selenium grid mund t\u00eb implementohet n\u00eb K8s. Nj\u00eb shembull se si t\u00eb b\u00ebhet kjo mund t\u00eb gjendet n\u00eb depot zyrtare t\u00eb K8s. Si zakonisht, po i bashk\u00ebngjit lidhjet n\u00eb fund t\u00eb seksionit. P\u00ebrve\u00e7 k\u00ebsaj, n\u00eb udh\u00ebzimin praktik tregohet si t\u00eb realizohet kjo p\u00ebrmes Terraform. Po ashtu ekziston nj\u00eb udh\u00ebzues se si t\u00eb shkall\u00ebzohet numri i pods q\u00eb p\u00ebrmbajn\u00eb kontejner\u00ebt me shfletues. Por funksioni i shkall\u00ebzimit automatik n\u00eb kontekstin e K8s mbetet ende nj\u00eb detyr\u00eb e paqart\u00eb. Kur fillova studimin, nuk gjeta asnj\u00eb udh\u00ebzim praktik ose rekomandime. Pas disa hulumtimesh dhe eksperimenti 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 cili ndodhet brenda nj\u00eb worker node. Ky qasje na lejon t\u00eb aplikojm\u00eb strategjin\u00eb e shkall\u00ebzimit horizontal t\u00eb nodes p\u00ebrmes rritjes s\u00eb numrit t\u00eb 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 qasjeve m\u00eb t\u00eb mira dhe zgjidhjeve gati, 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, implementimi i Selenoid n\u00eb K8s \u00ebsht\u00eb zhg\u00ebnjimi m\u00eb i madh. Ata nuk jan\u00eb t\u00eb p\u00ebrshtatsh\u00ebm. Teorikisht mund t\u00eb ngrem\u00eb nj\u00eb kontejner Selenoid brenda nj\u00eb pod, por kur Selenoid fillon t\u00eb ekzekutoj\u00eb kontejner\u00ebt me shfletues, ata do t\u00eb jen\u00eb ende brenda atij pod-i t\u00eb nj\u00ebjt\u00eb. Kjo e b\u00ebn shkall\u00ebzimin t\u00eb pamundur dhe, si rezultat, funksionimi i Selenoid brenda klasterit nuk do t\u00eb ndryshoj\u00eb nga funksionimi brenda nj\u00eb makine virtuale. Fundi i historis\u00eb.<\/p>\n<p><u>Moon<\/u>:<\/p>\n<p>Duke e njohur k\u00ebt\u00eb ngushtic\u00eb kur punon me Selenoid, zhvilluesit lan\u00eb n\u00eb dispozicion nj\u00eb mjet m\u00eb t\u00eb fuqish\u00ebm, t\u00eb quajtur Moon. Ky mjet ishte fillimisht menduar p\u00ebr t\u00eb punuar me Kubernetes dhe, si rezultat, duhej dhe mund t\u00eb p\u00ebrdoret funksioni i autoskalimit. M\u00eb shum\u00eb se kaq, do t\u00eb thoja se tani \u00ebsht\u00eb <u>\u00ebsht\u00eb opsioni i vet\u00ebm<\/u> mjeti m\u00eb i fuqish\u00ebm n\u00eb bot\u00eb p\u00ebr Selenium, i cili ka mb\u00ebshtetje natyrale p\u00ebr klasterin K8s direkt nga kutia (<i>nuk \u00ebsht\u00eb m\u00eb, shih mjetin tjet\u00ebr <\/i>). Karakteristika kryesore e Moon, e cila siguron k\u00ebt\u00eb mb\u00ebshtetje, \u00ebsht\u00eb:\u00a0<\/p>\n<blockquote><p>Plot\u00ebsisht pa shtet. Selenoid ruan n\u00eb memorie informacionin mbi seancat e browser-it q\u00eb jan\u00eb aktualisht duke u ekzekutuar. N\u00ebse p\u00ebr ndonj\u00eb arsye procesi i tij shembet \u2014 at\u00ebher\u00eb t\u00eb gjitha seancat aktive humbasin. N\u00eb t\u00eb kund\u00ebrt, Moon nuk ka asnj\u00eb shtet t\u00eb brendsh\u00ebm dhe mund t\u00eb riprodhohet n\u00ebp\u00ebr t\u00eb gjitha qendrat e t\u00eb dh\u00ebnave. Seancat e browser-it vazhdojn\u00eb t\u00eb jetojn\u00eb, edhe n\u00ebse nj\u00eb ose m\u00eb shum\u00eb replika bien.<\/p><\/blockquote>\n<p>Pra, Moon \u00ebsht\u00eb nj\u00eb zgjidhje fantastike, por me nj\u00eb problem: nuk \u00ebsht\u00eb falas. \u00c7mimi varet nga numri i seancave. Mund t\u00eb nisni falas vet\u00ebm 0-4 seanca, q\u00eb nuk \u00ebsht\u00eb shum\u00eb e dobishme. Por, 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 kompania n\u00eb kompani, por n\u00eb rastin ton\u00eb, p\u00ebrdorimi i Moon \u00ebsht\u00eb e padobishme. Si\u00e7 p\u00ebrshkrova m\u00eb sip\u00ebr, ne mund t\u00eb nisim VMs me Selenium Grid sipas nevoj\u00ebs ose t\u00eb rrisim numrin e Nodes n\u00eb klaster. Rreth nj\u00eb pipeline ne nisim 500 browser-a dhe ndalojm\u00eb t\u00eb gjitha burimet pas p\u00ebrfundimit t\u00eb testeve. N\u00ebse do t\u00eb p\u00ebrdornim Moon, do na duhej t\u00eb paguanim 500 x 5 = 2500 $ n\u00eb muaj, pa marr\u00eb parasysh sa shpesh e nisim testimin. Dhe p\u00ebrs\u00ebri, nuk po them \"mos p\u00ebrdorni Moon\". P\u00ebr detyrat tuaja, mund t\u00eb jet\u00eb nj\u00eb zgjidhje e pa\u00e7muar, p\u00ebr shembull, n\u00ebse keni shum\u00eb projekte\/ekipa n\u00eb organizat\u00ebn tuaj dhe ju nevojitet nj\u00eb klaster i madh i p\u00ebrbashk\u00ebt p\u00ebr t\u00eb gjith\u00eb. Si gjithmon\u00eb, do t\u00eb 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 detyr\u00ebs tuaj.<\/p>\n<p><u>Callisto<\/u>: (<i><strong>Kujdes! Kjo nuk \u00ebsht\u00eb n\u00eb artikullin origjinal dhe ndodhet 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-s\u00eb po zhvillohet shum\u00eb shpejt. Nd\u00ebrsa punoja n\u00eb p\u00ebrkthim, n\u00eb rrjet u shfaq nj\u00eb mjet i ri premtues, Callisto (p\u00ebrsh\u00ebndetje Cypress dhe vras\u00ebsve t\u00eb tjer\u00eb t\u00eb Selenium). Ai punon n\u00eb m\u00ebnyr\u00eb natyrale me K8s dhe lejon ekzekutimin e kontejner\u00ebve Selenoid n\u00eb pods, n\u00eb m\u00ebnyr\u00eb t\u00eb shp\u00ebrndar\u00eb n\u00eb Nodes. Gjith\u00e7ka funksionon menj\u00ebher\u00eb nga kutia, duke p\u00ebrfshir\u00eb automatikisht shkall\u00ebzimin. Fantastic, por duhet testuar. Kam arritur tashm\u00eb t\u00eb zhvilloj k\u00ebt\u00eb mjet dhe t\u00eb vendos disa eksperimente. Por \u00ebsht\u00eb her\u00ebt p\u00ebr t\u00eb b\u00ebr\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. Nd\u00ebrkoh\u00eb, po l\u00eb vet\u00ebm lidhje p\u00ebr hulumtime vetjake.\u00a0\u00a0<\/p>\n<h3>Ilustrimi i gjendjes aktuale t\u00eb infrastruktur\u00ebs<\/p>\n<h3><img decoding=\"async\" alt=\"Mjetet DevOps jo vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testimit nga e para\" 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\">Automatizim 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>Mjetet e 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\u00ebrshkrimi i shkurt\u00ebr i teknologjis\u00eb<\/h3>\n<p>\n Dhe ja, arrit\u00ebm n\u00eb seksionin e fundit. Zakonisht, kjo teknologji dhe detyrat e lidhura me t\u00eb nuk jan\u00eb p\u00ebrgjegj\u00ebsi e inxhinier\u00ebve t\u00eb automatizimit. Dhe ka arsye t\u00eb veta 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 ekipet e zhvillimit nuk shqet\u00ebsohen shum\u00eb p\u00ebr m\u00ebnyr\u00ebn se si funksionon pipeline dhe se si duhet mbajtur gjith\u00e7ka q\u00eb lidhet me t\u00eb. S\u00eb dyti, qofshim t\u00eb sinqert\u00eb, praktika e \"Infrastruktur\u00eb si kod (IaC)\" ende nuk aplikohet n\u00eb shum\u00eb kompani. Por pa dyshim, kjo ka b\u00ebr\u00eb p\u00ebr nj\u00eb trend t\u00eb njohur dhe \u00ebsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb p\u00ebrpiqesh t\u00eb jesh i p\u00ebrfshir\u00eb n\u00eb proceset, qasjet dhe mjetet q\u00eb lidhen me t\u00eb. Ose, s\u00eb paku, t\u00eb jesh n\u00eb dijeni t\u00eb ngjarjeve.<\/p>\n<p>Le t\u00eb fillojm\u00eb me motivimin p\u00ebr t\u00eb p\u00ebrdorur k\u00ebt\u00eb qasje. Ne e kemi diskutuar tashm\u00eb se p\u00ebr t\u00eb nisur testet n\u00eb GitlabCI, na nevojiten s\u00eb paku burime p\u00ebr t\u00eb ekzekutuar Gitlab Runner. Dhe p\u00ebr t\u00eb ekzekutuar kontejner\u00ebt me shfletues\/emulator\u00eb, na nevojitet t\u00eb rezervojm\u00eb nj\u00eb VM ose nj\u00eb klaster. N\u00eb p\u00ebrve\u00e7 burimeve p\u00ebr testim, na nevojitet nj\u00eb num\u00ebr i konsideruesh\u00ebm kapacitetesh p\u00ebr t\u00eb mb\u00ebshtetur mjediset e zhvillimit, staging, 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 \u00ebsht\u00eb n\u00eb p\u00ebrpjekjet e k\u00ebrkuara p\u00ebr t\u00eb mb\u00ebshtetur t\u00eb gjith\u00eb k\u00ebt\u00eb. Ka disa m\u00ebnyra 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 UI-n\u00eb e konsol\u00ebs n\u00eb shfletues dhe t\u00eb kryejm\u00eb t\u00eb gjitha veprimet me klikimin e butonave. Nj\u00eb m\u00ebnyr\u00eb alternative mund t\u00eb jet\u00eb p\u00ebrdorimi i thirrjeve API p\u00ebr t'u angazhuar me entitetet cloud ose aplikimi i utilitetit t\u00eb linj\u00ebs s\u00eb komandave gcloud p\u00ebr t\u00eb kryer manipulimet e nevojshme. Por me nj\u00eb num\u00ebr t\u00eb v\u00ebrtet\u00eb t\u00eb entiteteve dhe elementeve infrastrukturore, b\u00ebhet e v\u00ebshtir\u00eb ose madje edhe 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 pa kontrolluara. Ne nuk mund t'i d\u00ebrgojm\u00eb ato n\u00eb review para se t'i kryejm\u00eb, t\u00eb p\u00ebrdorim nj\u00eb sistem kontrolli versioni dhe t\u00eb rikthejm\u00eb shpejt ndryshimet q\u00eb \u00e7uan n\u00eb incident. P\u00ebr t\u00eb zgjidhur k\u00ebto probleme, inxhinier\u00ebt kan\u00eb krijuar dhe vazhdojn\u00eb t\u00eb 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 shpejt, p\u00ebr t'u kuptuar, p\u00ebr t'u mb\u00ebshtetur dhe p\u00ebr t'u modifikuar n\u00eb stilin procedural.<\/p>\n<p>N\u00eb k\u00ebt\u00eb artikull dhe udh\u00ebzues praktik, un\u00eb po p\u00ebrdor 2 mjetet q\u00eb i p\u00ebrkasin praktik\u00ebs s\u00eb IaC. K\u00ebto jan\u00eb Terraform dhe Ansible. Disa mendojn\u00eb se nuk ka kuptim t\u00eb p\u00ebrdoren ato nj\u00ebkoh\u00ebsisht, pasi funksionet e tyre jan\u00eb t\u00eb ngjashme dhe jan\u00eb t\u00eb nd\u00ebrlidhura. Megjithat\u00eb, e v\u00ebrteta \u00ebsht\u00eb se fillimisht u jepen atyre detyra krejt\u00ebsisht t\u00eb ndryshme. Faktin se k\u00ebto mjete duhet t\u00eb plot\u00ebsojn\u00eb nj\u00ebri-tjetrin e konfirmuan n\u00eb nj\u00eb prezantim t\u00eb p\u00ebrbashk\u00ebt zhvilluesit q\u00eb p\u00ebrfaq\u00ebsonin kompanit\u00eb HashiCorp dhe RedHat. Diferenca konceptuale q\u00ebndron n\u00eb faktin se Terraform \u00ebsht\u00eb nj\u00eb mjet provisioning p\u00ebr menaxhimin e vet\u00eb server\u00ebve. Nd\u00ebrsa Ansible \u00ebsht\u00eb nj\u00eb mjet p\u00ebr menaxhimin e konfigurimeve, detyra e t\u00eb cilit \u00ebsht\u00eb instalimi, konfigurimi dhe menaxhimi i softuerit n\u00eb k\u00ebta server\u00eb.<\/p>\n<p>Nj\u00eb tjet\u00ebr dallim i r\u00ebnd\u00ebsish\u00ebm mes k\u00ebtyre mjeteve \u00ebsht\u00eb stili i shkruarjes s\u00eb kodit. Ndryshe nga bash dhe Ansible, Terraform p\u00ebrdor nj\u00eb stil deklarativ, i bazuar n\u00eb p\u00ebrshkrimin e shtetit p\u00ebrfundimtar t\u00eb d\u00ebshiruar q\u00eb duhet arritur si rezultat i ekzekutimit. P\u00ebr shembull, n\u00ebse ne planifikojm\u00eb t\u00eb krijojm\u00eb 10 VMs dhe t\u00eb aplikojm\u00eb ndryshimet p\u00ebrmes Terraform, at\u00ebher\u00eb do t\u00eb marrim 10 VMs. N\u00ebse aplikojm\u00eb skritpnin p\u00ebrs\u00ebri, asgj\u00eb nuk do t\u00eb ndodh\u00eb, pasi ne tashm\u00eb kemi 10 VMs, dhe Terraform e di k\u00ebt\u00eb, pasi ruan gjendjen aktuale t\u00eb infrastruktur\u00ebs n\u00eb nj\u00eb skedar state. Nd\u00ebrsa Ansible p\u00ebrdor nj\u00eb qasje procedurale dhe, n\u00ebse e k\u00ebrkojm\u00eb t\u00eb krijoj\u00eb 10 VMs, at\u00ebher\u00eb n\u00eb ekzekutimin e par\u00eb do t\u00eb marrim 10 VMs, nj\u00eblloj si me Terraform. Por pas ekzekutimit t\u00eb dyt\u00eb, do t\u00eb kemi tashm\u00eb 20 VMs. Kjo \u00ebsht\u00eb dallimi i r\u00ebnd\u00ebsish\u00ebm. N\u00eb stilin procedural ne nuk ruajm\u00eb gjendjen aktuale dhe thjesht p\u00ebrshkruajm\u00eb sekuenc\u00ebn e hapave q\u00eb duhet t\u00eb kryhen. Sigurisht, ne mund t\u00eb p\u00ebrpunojm\u00eb situata t\u00eb ndryshme, t\u00eb shtojm\u00eb disa kontrolla mbi 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 kontrolluar k\u00ebt\u00eb logjik\u00eb. P\u00ebr m\u00eb tep\u00ebr, kjo rrit riskun p\u00ebr t\u00eb b\u00ebr\u00eb gabime.\u00a0<\/p>\n<p>Duke p\u00ebrmbledhur gjith\u00e7ka t\u00eb th\u00ebn\u00eb m\u00eb lart, mund t\u00eb p\u00ebrfundojm\u00eb se p\u00ebr provisioning e server\u00ebve, mjeti m\u00eb i p\u00ebrshtatsh\u00ebm \u00ebsht\u00eb Terraform dhe notacioni deklarativ. Nd\u00ebrsa pun\u00ebn p\u00ebr menaxhimin e konfigurimeve \u00ebsht\u00eb m\u00eb mir\u00eb ta delegojm\u00eb tek Ansible. Tani q\u00eb e kuptuam k\u00ebt\u00eb, le t\u00eb shikojm\u00eb shembujt e p\u00ebrdorimit 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 t\u00ebr\u00eb t\u00eb infrastruktur\u00ebs s\u00eb kompanis\u00eb. Kjo do t\u00eb thot\u00eb se t\u00eb gjitha praktikat e IaC duhet t\u00eb aplikohen globalisht n\u00eb burimet e gjith\u00eb organizat\u00ebs. Kush \u00ebsht\u00eb p\u00ebrgjegj\u00ebs p\u00ebr k\u00ebt\u00eb varet nga proceset tuaja. Ekipi DevOps \u00ebsht\u00eb m\u00eb i p\u00ebrgatitur n\u00eb k\u00ebto \u00e7\u00ebshtje, ata e shohin t\u00eb gjith\u00eb imazhin e situat\u00ebs. Megjithat\u00eb, inxhinier\u00ebt e QA jan\u00eb m\u00eb shum\u00eb t\u00eb angazhuar n\u00eb procesin e nd\u00ebrtimit t\u00eb automatizimit dhe struktur\u00ebn e pipeline, duke i lejuar ata t\u00eb shohin m\u00eb mir\u00eb t\u00eb gjitha ndryshimet e nevojshme dhe mund\u00ebsit\u00eb p\u00ebr p\u00ebrmir\u00ebsim. Opsioni m\u00eb i mir\u00eb \u00ebsht\u00eb t\u00eb punoni s\u00eb bashku, t\u00eb shk\u00ebmbeni njohuri dhe ide p\u00ebr t\u00eb arritur rezultatet e pritura.\u00a0<\/p>\n<p>Le t\u00eb jap disa shembuj t\u00eb p\u00ebrdorimit t\u00eb Terraform dhe Ansible n\u00eb kontekstin e automatizimit t\u00eb testimit dhe mjeteve q\u00eb kemi diskutuar m\u00eb par\u00eb:<\/p>\n<p>1. T\u00eb p\u00ebrshkruajn\u00eb p\u00ebrmes Terraform karakteristikat dhe parametrat e nevojsh\u00ebm p\u00ebr VMs dhe klaster\u00ebt.<\/p>\n<p>2. T\u00eb instalojn\u00eb me Ansible mjetet e nevojshme p\u00ebr testim: docker, Selenoid, Selenium Grid dhe t\u00eb ngarkojn\u00eb versionet e nevojshme t\u00eb shfletuesve\/emulator\u00ebve.<\/p>\n<p>3. T\u00eb p\u00ebrshkruajn\u00eb p\u00ebrmes Terraform karakteristikat e VM ku do t\u00eb nis\u00eb GitLab Runner.<\/p>\n<p>4. T\u00eb instalojn\u00eb me Ansible GitLab Runner dhe mjetet p\u00ebrkat\u00ebse, t\u00eb vendosin cil\u00ebsimet dhe konfigurimet.<\/p>\n<h3>Ilustrimi i gjendjes aktuale t\u00eb infrastruktur\u00ebs<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Mjetet DevOps jo vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testimit nga e para\" src=\"\/wp-content\/uploads\/2020\/04\/5d793a800a4ef62e181e6cb3a3f0544e.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.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 m\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 gjith\u00ebp\u00ebrfshir\u00ebs 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 p\u00ebrdorim Terraform dhe jo Chef, Puppet, Ansible, SaltStack, ose 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>Mjetet e 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\u00ebrmblidhemi!<\/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 (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 \/>\nKontraktimi<br \/>\nDocker, Selenium grid, Selenoid (Web, Android)<\/p>\n<ul>\n<li>Ekzekutimi paralel i testeve<\/li>\n<li>Mjedise t\u00eb izoluara<\/li>\n<li>P\u00ebrdit\u00ebsim t\u00eb thjesht\u00eb dhe fleksib\u00ebl t\u00eb versioneve<\/li>\n<li>Ndales\u00eb dinamike e burimeve q\u00eb nuk p\u00ebrdoren<\/li>\n<li>E leht\u00eb p\u00ebr t'u konfigurim<\/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 konvejnerit<\/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 \/>\nPlatformat e cloud<br \/>\nGoogle Cloud Platform<\/p>\n<ul>\n<li>Burimet sipas k\u00ebrkes\u00ebs (paguajm\u00eb vet\u00ebm kur jan\u00eb t\u00eb nevojshme)<\/li>\n<li>E leht\u00eb p\u00ebr t'u menaxhuar dhe p\u00ebr t\u00eb p\u00ebrdit\u00ebsuar<\/li>\n<li>Dukshm\u00ebri dhe kontroll mbi t\u00eb gjitha burimet<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>6<\/strong><br \/>\nOrkestrimi<br \/>\nKubernetes<br \/>\nN\u00eb kontekstin e konteiner\u00ebve me shfletues\/emulator\u00eb brenda pods:<\/p>\n<ul>\n<li>Shkall\u00ebzim \/ automatik-shkall\u00ebzim<\/li>\n<li>Vet\u00eb-riparim<\/li>\n<li>P\u00ebrdit\u00ebsime dhe rikthime pa nd\u00ebrprerje<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>7<\/strong><br \/>\nInfrastruktur\u00eb si kod (IaC)<br \/>\nTerraform, Ansible<\/p>\n<ul>\n<li>Avantazhe t\u00eb ngjashme me infrastruktura e zhvillimit<\/li>\n<li>T\u00eb gjitha avantazhet e versionimit t\u00eb kodit<\/li>\n<li>E leht\u00eb p\u00ebr t\u00eb b\u00ebr\u00eb ndryshime dhe p\u00ebr t\u00eb mbajtur<\/li>\n<li>Krejt\u00ebsisht e automatizuar<\/li>\n<\/ul>\n<p><\/p>\n<h2>Diagramat e hart\u00ebs mendore: evolucioni i infrastruktur\u00ebs<\/h2>\n<p>\nhapi1: Lokal<br \/>\n<img decoding=\"async\" alt=\"Mjetet DevOps jo vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testimit nga e para\" 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 DevOps jo vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testimit nga e para\" src=\"\/wp-content\/uploads\/2020\/04\/71c5170293d98375d8ab86d05eb47a33.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>hapi3: Kontejnerizimi\u00a0<br \/>\n<img decoding=\"async\" alt=\"Mjetet DevOps jo vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testimit nga e para\" 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 DevOps jo vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testimit nga e para\" src=\"\/wp-content\/uploads\/2020\/04\/900f18b45124412a1ad00d3901efb40e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>hapi5: Platformat Cloud<br \/>\n<img decoding=\"async\" alt=\"Mjetet DevOps jo vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testimit nga e para\" 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 DevOps jo vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testimit nga e para\" 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 DevOps jo vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs s\u00eb automatizimit t\u00eb testimit nga e para\" 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>\nPra, ky \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 ofronte p\u00ebrfitime praktike dhe t'ju ndihmoj\u00eb t\u00eb aplikoni njohurit\u00eb e fituara 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 p\u00ebr udh\u00ebzimin praktik<\/a><\/noindex>.<\/p>\n<p>Por edhe pas k\u00ebsaj, mos u ndalni, praktikoni, studioni lidhjet p\u00ebrkat\u00ebse dhe librat, merrni vesh se si funksionon n\u00eb kompanin\u00eb tuaj, gjeni vende q\u00eb mund t\u00eb p\u00ebrmir\u00ebsohen dhe merrni pjes\u00eb n\u00eb k\u00ebt\u00eb. Fat t\u00eb mbar\u00eb!<\/p>\n<p><u>Nga ana ime<\/u><\/p>\n<p>Nga titulli duket se ishte vet\u00ebm pjesa e par\u00eb. Megjith\u00ebse ajo doli mjaft e gjat\u00eb, k\u00ebtu ende nuk jan\u00eb trajtuar tema t\u00eb r\u00ebnd\u00ebsishme. N\u00eb pjes\u00ebn e dyt\u00eb planifikoj t\u00eb shqyrtoj infrastrukturen e automatizimit n\u00eb kontekstin e IOS. P\u00ebr shkak t\u00eb kufizimeve t\u00eb Apple n\u00eb lidhje me ekzekutimin e simulator\u00ebve IOS vet\u00ebm n\u00eb sistemet macOS, gam\u00ebn ton\u00eb t\u00eb zgjidhjeve e kemi t\u00eb ngusht\u00eb. P\u00ebr shembull, jemi t\u00eb privuar nga mund\u00ebsia p\u00ebr t\u00eb p\u00ebrdorur Docker p\u00ebr t\u00eb ekzekutuar simulatorin ose re t\u00eb hapura p\u00ebr t\u00eb ekzekutuar makina virtuale. Por kjo nuk do t\u00eb thot\u00eb se nuk ka alternativa t\u00eb tjera. Do p\u00ebrpiqem t'ju mbaj t\u00eb informuar mbi zgjidhjet e avancuara dhe mjetet moderne!<\/p>\n<p>Gjithashtu, nuk p\u00ebrmenda tema mjaft t\u00eb m\u00ebdha q\u00eb lidhen 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 duhen marr\u00eb parasysh.<\/p>\n<p>Dhe p\u00ebrfundimisht. N\u00eb t\u00eb ardhmen planifikoj t\u00eb publikoj nj\u00eb kurs video p\u00ebr nd\u00ebrtimin e infrastruktur\u00ebs p\u00ebr testim dhe mjetet m\u00eb t\u00eb njohura. Aktualisht, n\u00eb internet ka mjaft kurse dhe leksione n\u00eb lidhje me 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 m\u00eb duhet shum\u00eb feedback, a do t\u00eb ishte nj\u00eb kurs i till\u00eb interesant 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 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0427\u0430\u0441\u0442\u044c 1: Web \/ Android \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/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) 5.0.2\" \/>\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\" \/>\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 jo vet\u00ebm p\u00ebr DevOps. Procesi i nd\u00ebrtimit t\u00eb infrastruktur\u00ebs p\u00ebr automatizimin e testimeve nga e para | ProHoster","description":"Pjesa 1: Web \/ Android Sh\u00ebnim: ky artikull \u00ebsht\u00eb p\u00ebrkthyer n\u00eb gjuh\u00ebn ruse nga artikulli origjinal","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","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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"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}]}}