{"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\/az\/blog\/administrirovanie\/devops-instrumenty-ne-tolko-dlya-devops-proczess-postroeniya-infrastruktury-avtomatizaczii-testirovaniya-s-nulya","title":{"rendered":"DevOps al\u0259tl\u0259ri yaln\u0131z DevOps \u00fc\u00e7\u00fcn deyil. S\u0131f\u0131rdan test avtomatla\u015fd\u0131rmas\u0131 infrastrukturu qurma prosesi","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Hiss\u0259 1: Web \/ Android<\/h1>\n<p>\n <u>Qeyd<\/u>: <i>bu m\u0259qal\u0259 orijinal m\u0259qal\u0259nin rus dilin\u0259 t\u0259rc\u00fcm\u0259sidir\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>\u00abDevOps al\u0259tl\u0259ri yaln\u0131z DevOps \u00fc\u00e7\u00fcn deyil. Test avtomatla\u015fd\u0131rma infrastrukturunu s\u0131f\u0131rdan qurmaq\u00bb.<\/i><\/a><\/noindex><i> Ancaq b\u00fct\u00fcn ill\u00fcstrasiyalar, ba\u011flant\u0131lar, citatlar v\u0259 anlay\u0131\u015flar orijinal dild\u0259 saxlan\u0131r ki, rus dilin\u0259 t\u0259rc\u00fcm\u0259d\u0259 m\u0259nan\u0131n pozulmas\u0131n\u0131n qar\u015f\u0131s\u0131 al\u0131ns\u0131n. Siz\u0259 m\u00fcsb\u0259t \u00f6yr\u0259nm\u0259 arzulay\u0131ram!<\/i><\/p>\n<p><img decoding=\"async\" alt=\"DevOps al\u0259tl\u0259ri yaln\u0131z DevOps \u00fc\u00e7\u00fcn deyil. S\u0131f\u0131rdan test avtomatla\u015fd\u0131rmas\u0131 infrastrukturu qurma prosesi\" 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 Haz\u0131rda DevOps pe\u015f\u0259si IT s\u0259nayesind\u0259 \u0259n \u00e7ox t\u0259l\u0259b olunanlardan biridir. \u018fg\u0259r m\u0259\u015fhur i\u015f axtar\u0131\u015f saytlar\u0131n\u0131 a\u00e7san\u0131z v\u0259 maa\u015flar \u00fczr\u0259 filtr t\u0259tbiq ets\u0259niz, DevOps il\u0259 \u0259laq\u0259li i\u015f elanlar\u0131n\u0131n siyah\u0131n\u0131n \u0259vv\u0259lind\u0259 oldu\u011funu g\u00f6r\u0259rsiniz. Ancaq bu, \u0259sas\u0259n, 'Senior' v\u0259zif\u0259l\u0259rin\u0259 aiddir ki, bu da namiz\u0259din y\u00fcks\u0259k bacar\u0131q s\u0259viyy\u0259sin\u0259, texnologiyalara v\u0259 al\u0259tl\u0259r\u0259 dair bilikl\u0259r\u0259 sahib oldu\u011funu g\u00f6st\u0259rir. Bununla da, istehsal i\u015finin dayan\u0131ql\u0131\u011f\u0131 il\u0259 ba\u011fl\u0131 y\u00fcks\u0259k d\u0259r\u0259c\u0259d\u0259 m\u0259suliyy\u0259t g\u0259lir. Ancaq DevOps-un n\u0259 oldu\u011funu unuduruq. Ba\u015flang\u0131cda, bu, spesifik bir \u015f\u0259xs v\u0259 ya departament deyildi. Bu termin\u0259 baxd\u0131qda, metodologiya, praktika, m\u0259d\u0259niyy\u0259t f\u0259ls\u0259f\u0259si, konseptl\u0259r qrupu v\u0259 s. kimi bir \u00e7ox g\u00f6z\u0259l v\u0259 d\u00fczg\u00fcn isiml\u0259r tapaca\u011f\u0131q.<\/p>\n<p>M\u0259nim ixtisas\u0131m \u2013 test avtomatla\u015fd\u0131rma m\u00fch\u0259ndisi (QA automation engineer), amma hesab edir\u0259m ki, bu yaln\u0131z avtomatik testl\u0259rin yaz\u0131lmas\u0131 v\u0259 test framework-in arxitekturaya yarad\u0131lmas\u0131 il\u0259 ba\u011fl\u0131 olmamal\u0131d\u0131r. 2020-ci ild\u0259 avtomatla\u015fd\u0131rma infrastrukturunu bilm\u0259k d\u0259 vacibdir. Bu, testl\u0259rin icras\u0131ndan ba\u015flayaraq, n\u0259tic\u0259l\u0259rin b\u00fct\u00fcn maraql\u0131 t\u0259r\u0259fl\u0259r\u0259 t\u0259qdim olunmas\u0131 kimi avtomatla\u015fd\u0131rma prosesini \u00f6zba\u015f\u0131na t\u0259\u015fkil etm\u0259y\u0259 imkan verir. N\u0259tic\u0259d\u0259, DevOps bacar\u0131qlar\u0131 bu i\u015fin yerin\u0259 yetirilm\u0259si \u00fc\u00e7\u00fcn m\u00fch\u00fcm amildir. V\u0259 b\u00fct\u00fcn bunlar yax\u015f\u0131d\u0131r, amma t\u0259\u0259ss\u00fcf ki, bir problem var (<i>spoiler: bu m\u0259qal\u0259 bu problemi sad\u0259l\u0259\u015fdirm\u0259y\u0259 c\u0259hd edir<\/i>). Problem ondad\u0131r ki, DevOps \u00e7\u0259tindir. V\u0259 bu ayd\u0131nd\u0131r, \u00e7\u00fcnki \u015firk\u0259tl\u0259r asanl\u0131qla edil\u0259 bil\u0259n \u015feyl\u0259r \u00fc\u00e7\u00fcn \u00e7ox pul \u00f6d\u0259m\u0259y\u0259c\u0259k... DevOps d\u00fcnyas\u0131nda \u00f6yr\u0259nilm\u0259li olan \u00e7ox sayda al\u0259t, termin v\u0259 praktika var. X\u00fcsusil\u0259 bu, kariyeran\u0131n ba\u015flan\u011f\u0131c\u0131nda \u00e7\u0259tin olur v\u0259 toplanm\u0131\u015f texniki t\u0259cr\u00fcb\u0259d\u0259n as\u0131l\u0131d\u0131r.<\/p>\n<p><img decoding=\"async\" alt=\"DevOps al\u0259tl\u0259ri yaln\u0131z DevOps \u00fc\u00e7\u00fcn deyil. S\u0131f\u0131rdan test avtomatla\u015fd\u0131rmas\u0131 infrastrukturu qurma prosesi\" src=\"\/wp-content\/uploads\/2020\/04\/20712bd4acf881d5346b87f5a2b359d2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nM\u0259nb\u0259: <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>Burada giri\u015f hiss\u0259si il\u0259 tamamlay\u0131r\u0131q v\u0259 bu m\u0259qal\u0259nin m\u0259qs\u0259din\u0259 diqq\u0259t yetiririk.\u00a0<\/p>\n<h3>Bu m\u0259qal\u0259 n\u0259d\u0259n b\u0259hs edir<\/h3>\n<p>\nBu m\u0259qal\u0259d\u0259 m\u0259n test avtomatla\u015fd\u0131rma infrastrukturunu qurma t\u0259cr\u00fcb\u0259mi b\u00f6l\u00fc\u015fm\u0259k ist\u0259yir\u0259m. \u0130nternetd\u0259 m\u00fcxt\u0259lif al\u0259tl\u0259r v\u0259 onlar\u0131n nec\u0259 istifad\u0259 olunaca\u011f\u0131 bar\u0259d\u0259 \u00e7ox sayda m\u0259lumat m\u0259nb\u0259yi tapa bil\u0259rik, lakin m\u0259n onlar\u0131 yaln\u0131z avtomatla\u015fd\u0131rma kontekstind\u0259 n\u0259z\u0259r\u0259 almaq ist\u0259yir\u0259m. D\u00fc\u015f\u00fcn\u00fcr\u0259m ki, avtomatla\u015fd\u0131rma m\u00fch\u0259ndisl\u0259rinin \u0259ks\u0259riyy\u0259ti, haz\u0131rland\u0131\u011f\u0131 testl\u0259rin he\u00e7 kimin, sad\u0259c\u0259 \u00f6zl\u0259ri istisna olmaqla, i\u015f\u0259 salmad\u0131\u011f\u0131 v\u0259 onlar\u0131n d\u0259st\u0259kl\u0259nm\u0259siyl\u0259 maraqlanmad\u0131\u011f\u0131 situasiyaya a\u015fina olublar. N\u0259tic\u0259d\u0259, testl\u0259r k\u00f6hn\u0259lir v\u0259 onlar\u0131 aktual v\u0259ziyy\u0259t\u0259 g\u0259tirm\u0259k \u00fc\u00e7\u00fcn vaxt s\u0259rf etm\u0259li oluruq. Yen\u0259 d\u0259, karyeran\u0131n \u0259vv\u0259lind\u0259 bu, d\u00fczg\u00fcn al\u0259tl\u0259rin se\u00e7ilm\u0259si, konfiqurasiya edilm\u0259si v\u0259 saxlan\u0131lmas\u0131 il\u0259 ba\u011fl\u0131 \u00e7\u0259tin bir v\u0259zif\u0259 ola bil\u0259r. B\u0259zi test\u00e7il\u0259r DevOps (insanlar) t\u0259r\u0259find\u0259n k\u00f6m\u0259k alma\u011f\u0131 se\u00e7irl\u0259r v\u0259 d\u00fcr\u00fcst olaq, bu yana\u015fma \u00e7ox vaxt i\u015fl\u0259yir. Bir \u00e7ox halda bu, yegan\u0259 variant\u0131m\u0131zd\u0131r, \u00e7\u00fcnki b\u00fct\u00fcn as\u0131l\u0131l\u0131qlar\u0131 g\u00f6r\u0259 bilmirik. Lakin bildiyimiz kimi, DevOps \u00e7ox m\u0259\u015f\u011fuldur. Onlar \u015firk\u0259tin tam infrastrukturunu, yerl\u0259\u015fdirm\u0259ni, monitorinqi, mikroservisl\u0259ri v\u0259 t\u0259\u015fkilat\/qrupun dig\u0259r ox\u015far tap\u015f\u0131r\u0131qlar\u0131n\u0131 d\u00fc\u015f\u00fcnm\u0259lidirl\u0259r. Ad\u0259t\u0259n, avtomatla\u015fd\u0131rma prioritet deyil. Bel\u0259likl\u0259, m\u00fcmk\u00fcn olan h\u0259r \u015feyi bir ba\u015fdan sona q\u0259d\u0259r etm\u0259y\u0259 \u00e7al\u0131\u015fmal\u0131y\u0131q. Bu, as\u0131l\u0131l\u0131qlar\u0131 azaldacaq, i\u015f ax\u0131n\u0131 s\u00fcr\u0259tl\u0259ndir\u0259c\u0259k, bacar\u0131qlar\u0131m\u0131z\u0131 inki\u015faf etdir\u0259c\u0259k v\u0259 ba\u015f ver\u0259nl\u0259rin daha geni\u015f m\u0259nz\u0259r\u0259sini g\u00f6rm\u0259 imkan\u0131 ver\u0259c\u0259k.<\/p>\n<p>M\u0259qal\u0259d\u0259 \u0259n t\u0259l\u0259batl\u0131 v\u0259 m\u0259\u015fhur al\u0259tl\u0259r t\u0259qdim olunur v\u0259 onlar\u0131n add\u0131m-add\u0131m avtomatla\u015fd\u0131rma infrastrukturunun qurulmas\u0131nda nec\u0259 istifad\u0259 oluna bil\u0259c\u0259yi g\u00f6st\u0259rilir. H\u0259r qrup, \u015f\u0259xsi t\u0259cr\u00fcb\u0259md\u0259n t\u0259sdiql\u0259nmi\u015f al\u0259tl\u0259rl\u0259 t\u0259qdim olunur. Lakin bu, eyni al\u0259tl\u0259ri istifad\u0259 etm\u0259li oldu\u011funuz dem\u0259k deyil. Al\u0259tl\u0259rin \u00f6zl\u0259ri \u0259h\u0259miyy\u0259t da\u015f\u0131m\u0131y\u0131r, onlar meydana g\u0259lir v\u0259 k\u00f6hn\u0259lir. Bizim m\u00fch\u0259ndislik v\u0259zif\u0259miz, bu al\u0259tl\u0259rin qrupuna niy\u0259 ehtiyac duydu\u011fumuzu v\u0259 onlarla hans\u0131 i\u015f tap\u015f\u0131r\u0131qlar\u0131n\u0131 h\u0259ll ed\u0259 bil\u0259c\u0259yimizi ba\u015fa d\u00fc\u015fm\u0259kdir. Buna g\u00f6r\u0259 d\u0259, h\u0259r bir b\u00f6lm\u0259nin sonunda, b\u0259lk\u0259 t\u0259\u015fkilat\u0131n\u0131zda istifad\u0259 olunan ox\u015far al\u0259tl\u0259r\u0259 linkl\u0259r qoyuram.<\/p>\n<h3>Bu m\u0259qal\u0259d\u0259 olmayan \u015feyl\u0259r<\/h3>\n<p>\nYenid\u0259n vur\u011fulay\u0131ram ki, m\u0259qal\u0259 spesifik al\u0259tl\u0259r haqq\u0131nda deyil, buna g\u00f6r\u0259 d\u0259 burada s\u0259n\u0259dl\u0259rd\u0259n kod par\u00e7alar\u0131 v\u0259 konkret komandalar\u0131n t\u0259sviri olmayacaq. Lakin, h\u0259r bir b\u00f6lm\u0259nin sonunda daha \u0259trafl\u0131 \u00f6yr\u0259nm\u0259k \u00fc\u00e7\u00fcn linkl\u0259r qoyuram.<\/p>\n<p>Bu, a\u015fa\u011f\u0131dak\u0131 s\u0259b\u0259bl\u0259r\u0259 g\u00f6r\u0259 edilir:\u00a0<\/p>\n<ul>\n<li>bu material m\u00fcxt\u0259lif m\u0259nb\u0259l\u0259rd\u0259 (s\u0259n\u0259dl\u0259r, kitablar, video kurslar) \u00e7ox asanl\u0131qla tap\u0131la bil\u0259r;<\/li>\n<li>\u0259g\u0259r biz d\u0259rin\u0259 gets\u0259k, bu m\u0259qal\u0259nin 10, 20, 30 hiss\u0259sini yazmal\u0131y\u0131q (halbuki bizim planlar\u0131m\u0131zda 2-3 var);<\/li>\n<li>Sad\u0259c\u0259 sizin vaxt\u0131n\u0131z\u0131 itirm\u0259k ist\u0259mir\u0259m, \u00e7\u00fcnki ehtimal ki, eyni m\u0259qs\u0259dl\u0259r\u0259 \u00e7atmaq \u00fc\u00e7\u00fcn ba\u015fqa al\u0259tl\u0259rd\u0259n istifad\u0259 etm\u0259k ist\u0259yirsiniz.<\/li>\n<\/ul>\n<p><\/p>\n<h3>T\u0259cr\u00fcb\u0259<\/h3>\n<p>\nBu material\u0131n h\u0259r bir oxucu \u00fc\u00e7\u00fcn faydal\u0131 olmas\u0131n\u0131, sad\u0259c\u0259 oxunub unudulmas\u0131n\u0131 \u00e7ox ist\u0259rdim. H\u0259r bir \u00f6yr\u0259nm\u0259d\u0259 praktika \u00e7ox \u00f6n\u0259mli bir komponentdir. Bunun \u00fc\u00e7\u00fcn m\u0259n haz\u0131rlad\u0131m<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/AlexeyAltunin\/devops-tools-for-qa-automation-infrastructure\"> step-by-step guide on how to do everything from scratch on a GitHub repository.<\/a><\/noindex>. H\u0259m\u00e7inin, sizl\u0259ri icra olunan \u0259mrl\u0259rin x\u0259tas\u0131z kopyalanmad\u0131\u011f\u0131n\u0131 t\u0259min etm\u0259k \u00fc\u00e7\u00fcn ev tap\u015f\u0131r\u0131\u011f\u0131 g\u00f6zl\u0259yir. <\/p>\n<h3>Plan<\/h3>\n<p><\/p>\n<p><strong>Add\u0131m<\/strong><br \/>\n<strong>Texnologiya<\/strong><br \/>\n<strong>Alatlar<\/strong><\/p>\n<p><strong>1<\/strong><br \/>\nYerli i\u015fl\u0259m\u0259 (v\u0435\u0431 \/ android demo testl\u0259rini haz\u0131rlay\u0131b yerli i\u015fl\u0259din)\u00a0<br \/>\nNode.js, Selenium, Appium<\/p>\n<p><strong>2<\/strong><br \/>\nVersiya n\u0259zar\u0259t sisteml\u0259ri\u00a0<br \/>\nGit<\/p>\n<p><strong>3<\/strong><br \/>\nKonteynerl\u0259\u015fdirm\u0259<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 \/>\nBulud platformalar\u0131<br \/>\nGoogle Cloud Platform<\/p>\n<p><strong>6<\/strong><br \/>\nOrkestrasiya<br \/>\nKubernetes<\/p>\n<p><strong>7<\/strong><br \/>\nInfrastruktur \u015fifr\u0259 olaraq (IaC)<br \/>\nTerraform, Ansible<\/p>\n<p><\/p>\n<h3>H\u0259r bir b\u00f6lm\u0259nin strukturu<\/h3>\n<p>\nNaratvaziyy\u0259ti vizual saxlamaq \u00fc\u00e7\u00fcn, h\u0259r bir b\u00f6lm\u0259 a\u015fa\u011f\u0131dak\u0131 plana \u0259sas\u0259n t\u0259svir edil\u0259c\u0259k:<\/p>\n<ul>\n<li>texnologiyan\u0131n q\u0131sa t\u0259sviri,<\/li>\n<li>avtomatla\u015fd\u0131rma infrastrukturu \u00fc\u00e7\u00fcn d\u0259y\u0259ri,<\/li>\n<li>infrastrukturun cari v\u0259ziyy\u0259tinin t\u0259sviri,<\/li>\n<li>\u00f6yr\u0259nm\u0259y\u0259 dair linkl\u0259r,<\/li>\n<li>ox\u015far al\u0259tl\u0259r.<\/li>\n<\/ul>\n<p><\/p>\n<h2>1. Testl\u0259rin yerli ba\u015flan\u011f\u0131c\u0131<\/h2>\n<p><\/p>\n<h3>Texnologiyan\u0131n q\u0131sa t\u0259sviri<\/h3>\n<p>\nBu, sad\u0259c\u0259 yerli i\u015fl\u0259dil\u0259n demo testl\u0259ri ba\u015flamaq v\u0259 onlar\u0131n u\u011furla ke\u00e7diyini yoxlamaq \u00fc\u00e7\u00fcn haz\u0131rl\u0131q add\u0131m\u0131d\u0131r. Praktiki hiss\u0259d\u0259 Node.js istifad\u0259 olunur, lakin proqramla\u015fd\u0131rma dili v\u0259 platforma da \u00f6n\u0259mli deyil, \u015firk\u0259tinizd\u0259 istifad\u0259 olunanlar\u0131 se\u00e7\u0259 bil\u0259rsiniz.\u00a0<\/p>\n<p>Ancaq avtomatla\u015fd\u0131rma al\u0259tl\u0259ri olaraq web platformalar\u0131 \u00fc\u00e7\u00fcn Selenium WebDriver v\u0259 Android platformas\u0131 \u00fc\u00e7\u00fcn Appium istifad\u0259 etm\u0259yi t\u00f6vsiy\u0259 edir\u0259m, \u00e7\u00fcnki n\u00f6vb\u0259ti add\u0131mlarda konkret olaraq bu al\u0259tl\u0259rl\u0259 i\u015fl\u0259m\u0259y\u0259 uy\u011fun Docker g\u00f6r\u00fcnt\u00fcl\u0259rini istifad\u0259 ed\u0259c\u0259yik. Bundan \u0259lav\u0259, i\u015f elanlar\u0131nda t\u0259l\u0259bl\u0259r\u0259 baxd\u0131\u011f\u0131n\u0131z zaman, bu al\u0259tl\u0259r bazarda \u0259n \u00e7ox t\u0259l\u0259b olunanlard\u0131r.<\/p>\n<p>Qeyd etdiyiniz kimi, yaln\u0131z web v\u0259 Android testl\u0259rini n\u0259z\u0259rd\u0259n ke\u00e7iririk. T\u0259\u0259ss\u00fcf ki, IOS - tamamil\u0259 f\u0259rqli bir hekay\u0259dir (Apple'a t\u0259\u015f\u0259kk\u00fcrl\u0259r). IOS il\u0259 ba\u011fl\u0131 h\u0259ll\u0259ri v\u0259 praktikalar\u0131 n\u00f6vb\u0259ti b\u00f6lm\u0259l\u0259rd\u0259 n\u00fcmayi\u015f etdirm\u0259yi planlay\u0131ram.<\/p>\n<h3>Avtomatla\u015fd\u0131rma infrastrukturu \u00fc\u00e7\u00fcn d\u0259y\u0259ri<\/h3>\n<p>\n\u0130nfrastruktur n\u00f6qteyi-n\u0259z\u0259rd\u0259n, yerli i\u015f\u0259 ba\u015flama\u011f\u0131n he\u00e7 bir d\u0259y\u0259ri yoxdur. Siz yaln\u0131z testl\u0259rin yerli ma\u015f\u0131nda yerli brauzerl\u0259rd\u0259 v\u0259 simulatorlarda i\u015fl\u0259diyini yoxlay\u0131rs\u0131n\u0131z. Amma bu, m\u00fctl\u0259q z\u0259ruri bir ba\u015flan\u011f\u0131\u00e7 n\u00f6qt\u0259sidir.<\/p>\n<h3>\u0130nfrastrukturun cari v\u0259ziyy\u0259tinin t\u0259sviri<\/h3>\n<p>\n<img decoding=\"async\" alt=\"DevOps al\u0259tl\u0259ri yaln\u0131z DevOps \u00fc\u00e7\u00fcn deyil. S\u0131f\u0131rdan test avtomatla\u015fd\u0131rmas\u0131 infrastrukturu qurma prosesi\" src=\"\/wp-content\/uploads\/2020\/04\/504f28744e29938f66be41c32d9a7dc6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>\u00d6yr\u0259nm\u0259y\u0259 dair linkl\u0259r<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/selenium.dev\/\">Selenium<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/appium.io\/docs\/en\/about-appium\/getting-started\/\">Appium<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developer.android.com\/studio\/run\/emulator\">Android Emulator<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/SeleniumHQ\/selenium\/tree\/master\/javascript\/node\/selenium-webdriver\/example\">Selenium JS GitHub n\u00fcmun\u0259l\u0259ri<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/appium\/appium\/tree\/master\/sample-code\/javascript-wd\">Appium JS GitHub n\u00fcmun\u0259l\u0259ri<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Ox\u015far al\u0259tl\u0259r<\/h3>\n<p><\/p>\n<ul>\n<li>ist\u0259diyiniz h\u0259r hans\u0131 bir proqramla\u015fd\u0131rma dili, Selenium\/Appium testl\u0259ri il\u0259 birlikd\u0259;<\/li>\n<li>h\u0259r hans\u0131 test;<\/li>\n<li>h\u0259r hans\u0131 test-i\u015f\u00e7i.<\/li>\n<\/ul>\n<p><\/p>\n<h2>2. Versiya n\u0259zar\u0259t sisteml\u0259ri (Git)<\/h2>\n<p><\/p>\n<h3>Texnologiyan\u0131n q\u0131sa t\u0259sviri<\/h3>\n<p>\n Bir \u00e7oxlar\u0131 \u00fc\u00e7\u00fcn, versiya idar\u0259etm\u0259 sisteminin komanda il\u0259 v\u0259 f\u0259rdi i\u015fl\u0259m\u0259 prosesind\u0259 olduqca vacib oldu\u011funu dem\u0259k b\u00f6y\u00fck bir k\u0259\u015ff olmayacaq. M\u00fcxt\u0259lif m\u0259nb\u0259l\u0259r\u0259 istinad ed\u0259r\u0259k, \u0259minlikl\u0259 dem\u0259k m\u00fcmk\u00fcnd\u00fcr ki, Git \u0259n populyar n\u00fcmay\u0259nd\u0259dir. Versiya idar\u0259etm\u0259 sistemi kod m\u00fcbadil\u0259si, versiyalar\u0131n saxlanmas\u0131, \u0259vv\u0259lki budaqlara b\u0259rpa, layih\u0259 tarixi izl\u0259mi v\u0259 ehtiyat n\u00fcsx\u0259l\u0259ri kimi bir \u00e7ox \u00fcst\u00fcnl\u00fckl\u0259r t\u0259qdim edir. H\u0259r bir n\u00f6qt\u0259ni detall\u0131 \u015f\u0259kild\u0259 m\u00fczakir\u0259 etm\u0259y\u0259c\u0259yik, \u00e7\u00fcnki bununla yax\u015f\u0131 tan\u0131\u015f oldu\u011funuzu v\u0259 g\u00fcnd\u0259lik i\u015finizd\u0259 istifad\u0259 etdiyinizi \u0259minlikl\u0259 dey\u0259 bil\u0259r\u0259m. Ancaq \u0259g\u0259r h\u0259l\u0259 tan\u0131\u015f deyilsinizs\u0259, bu m\u0259qal\u0259ni oxuma\u011f\u0131 dayand\u0131rma\u011f\u0131 v\u0259 m\u00fcmk\u00fcn q\u0259d\u0259r tez bu bo\u015flu\u011fu doldurma\u011f\u0131 t\u00f6vsiy\u0259 edir\u0259m.<\/p>\n<h3>Avtomatla\u015fd\u0131rma infrastrukturu \u00fc\u00e7\u00fcn d\u0259y\u0259ri<\/h3>\n<p>\n Burada siz rasional bir sual ver\u0259 bil\u0259rsiniz: \"Niy\u0259 o, biz\u0259 Git-d\u0259n dan\u0131\u015f\u0131r? Bunu h\u0259r k\u0259s bilir v\u0259 h\u0259m kod yazma, h\u0259m d\u0259 avtomatla\u015fd\u0131rma testl\u0259ri \u00fc\u00e7\u00fcn istifad\u0259 edir.\" Tamamil\u0259 haql\u0131s\u0131n\u0131z, amma bu m\u0259qal\u0259d\u0259 biz infrastrukturdan dan\u0131\u015f\u0131landa bu b\u00f6lm\u0259 7-ci b\u00f6l\u00fcm olan \"\u0130nfrastruktur kodu kimi (IaC)\" \u00fc\u00e7\u00fcn bir \u00f6nizl\u0259m\u0259 rolunu oynay\u0131r. Bizim \u00fc\u00e7\u00fcn bu, b\u00fct\u00fcn infrastrukturun, o c\u00fcml\u0259d\u0259n test infrastrukturunun, kod \u015f\u0259klind\u0259 t\u0259svir edilm\u0259si dem\u0259kdir, buna g\u00f6r\u0259 d\u0259 biz versiya idar\u0259etm\u0259 sisteml\u0259rini ona t\u0259tbiq ed\u0259 bil\u0259rik v\u0259 kod yazma v\u0259 avtomatla\u015fd\u0131rma il\u0259 ox\u015far faydalar \u0259ld\u0259 ed\u0259 bil\u0259rik.<\/p>\n<p>IaC-ni daha \u0259trafl\u0131 7-ci m\u0259rh\u0259l\u0259d\u0259 m\u00fczakir\u0259 ed\u0259c\u0259yik, amma indid\u0259n Git-i lokal olaraq istifad\u0259 etm\u0259y\u0259 ba\u015flamaq m\u00fcmk\u00fcnd\u00fcr, bir lokal depo yaratmaqla. \u00dcmumi m\u0259nz\u0259r\u0259, infrastrukturumuz \u00fc\u00e7\u00fcn uzaq bir depo \u0259lav\u0259 etdikd\u0259 geni\u015fl\u0259n\u0259c\u0259k.<\/p>\n<h3>\u0130nfrastrukturun cari v\u0259ziyy\u0259tinin t\u0259sviri<\/h3>\n<p>\n<img decoding=\"async\" alt=\"DevOps al\u0259tl\u0259ri yaln\u0131z DevOps \u00fc\u00e7\u00fcn deyil. S\u0131f\u0131rdan test avtomatla\u015fd\u0131rmas\u0131 infrastrukturu qurma prosesi\" src=\"\/wp-content\/uploads\/2020\/04\/f17c1d2b2f18aa814c44f7c443e49416.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>\u00d6yr\u0259nm\u0259y\u0259 dair linkl\u0259r<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.atlassian.com\/git\/tutorials\/what-is-version-control\">Versiya idar\u0259etm\u0259si n\u0259dir<\/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\">Ba\u015flay\u0131r\u0131q \u2014 Versiya idar\u0259etm\u0259si haqq\u0131nda<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Ox\u015far al\u0259tl\u0259r<\/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 (indi Azure DevOps Services-in bir hiss\u0259sidir)<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h2>3. Konteynerl\u0259\u015fdirm\u0259 (Docker)<\/h2>\n<p><\/p>\n<h3>Texnologiyan\u0131n q\u0131sa t\u0259sviri<\/h3>\n<p>\n Konteynerl\u0259\u015fdirm\u0259nin nec\u0259 oyun d\u0259yi\u015fdirdiyini g\u00f6st\u0259rm\u0259k \u00fc\u00e7\u00fcn g\u0259lin bir ne\u00e7\u0259 onillik \u0259vv\u0259l\u0259 s\u0259yah\u0259t ed\u0259k. O d\u00f6vrl\u0259rd\u0259 insanlar t\u0259tbiql\u0259ri i\u015f\u0259 salmaq \u00fc\u00e7\u00fcn server ma\u015f\u0131nlar\u0131 al\u0131rd\u0131lar. Lakin \u0259ks\u0259r hallarda, i\u015f\u0259 salmaq \u00fc\u00e7\u00fcn laz\u0131m olan resurslar \u0259vv\u0259lc\u0259d\u0259n m\u0259lum deyildi. N\u0259tic\u0259d\u0259, \u015firk\u0259tl\u0259r bahal\u0131 g\u00fccl\u00fc serverl\u0259rin al\u0131nmas\u0131na pul x\u0259rcl\u0259yirdil\u0259r, lakin bu g\u00fcc\u00fcn bir hiss\u0259si tamamil\u0259 istifad\u0259 olunmad\u0131.<\/p>\n<p>T\u0259kmill\u0259\u015fm\u0259nin n\u00f6vb\u0259ti m\u0259rh\u0259l\u0259si virtual ma\u015f\u0131nlar (VM) oldu ki, bu da istifad\u0259 edilm\u0259y\u0259n resurslara x\u0259rcl\u0259n\u0259n v\u0259saiti aradan qald\u0131rd\u0131. Bu texnologiya t\u0259tbiql\u0259rin bir server daxilind\u0259 bir-birind\u0259n m\u00fcst\u0259qil i\u015f\u0259 sal\u0131nmas\u0131na imkan verdi, tamamil\u0259 izolyasiya olunmu\u015f bir m\u00fchit ay\u0131raraq. Lakin, t\u0259\u0259ss\u00fcf ki, h\u0259r bir texnologiyan\u0131n \u00f6z \u00e7at\u0131\u015fmazl\u0131qlar\u0131 var. VM-l\u0259rin i\u015f\u0259 sal\u0131nmas\u0131 tam \u0259m\u0259liyyat sistemi t\u0259l\u0259b edir ki, bu da CPU, RAM, saxlama istifad\u0259 edir v\u0259, \u0259m\u0259liyyat sistemind\u0259n as\u0131l\u0131 olaraq, lisenziya x\u0259rcl\u0259rini n\u0259z\u0259r\u0259 almaq laz\u0131md\u0131r. Bu amill\u0259r y\u00fckl\u0259m\u0259 s\u00fcr\u0259tin\u0259 t\u0259sir edir v\u0259 portativliyi \u00e7\u0259tinl\u0259\u015fdirir.<\/p>\n<p>V\u0259 bel\u0259likl\u0259, konteynerl\u0259\u015fm\u0259y\u0259 g\u0259lib \u00e7atd\u0131q. Bu texnologiya \u0259vv\u0259lki problemi yenid\u0259n h\u0259ll etdi, \u00e7\u00fcnki konteynerl\u0259r tam OS istifad\u0259 etmir, bu da bir \u00e7ox resursu s\u0259rb\u0259st burax\u0131r v\u0259 da\u015f\u0131nma \u00fc\u00e7\u00fcn s\u00fcr\u0259tli v\u0259 \u00e7evik bir h\u0259ll t\u0259qdim edir.<\/p>\n<p>\u018flb\u0259tt\u0259, konteynerl\u0259\u015fm\u0259 texnologiyas\u0131 yeni bir \u015fey deyil v\u0259 ilk d\u0259f\u0259 70-ci ill\u0259rin sonunda t\u0259qdim edilib. O d\u00f6vrd\u0259 \u00e7oxlu t\u0259dqiqatlar, i\u015fl\u0259r v\u0259 c\u0259hdl\u0259r apar\u0131l\u0131rd\u0131. Lakin m\u0259hz Docker bu texnologiyan\u0131 uy\u011funla\u015fd\u0131rd\u0131 v\u0259 onu k\u00fctl\u0259 \u00fc\u00e7\u00fcn \u0259l\u00e7atan etdi. Bu g\u00fcn konteynerl\u0259rd\u0259n dan\u0131\u015fark\u0259n, \u0259ks\u0259r hallarda Docker\u0131 n\u0259z\u0259rd\u0259 tuturuq. Docker konteynerl\u0259rind\u0259n dan\u0131\u015fd\u0131qda, Linux konteynerl\u0259rini n\u0259z\u0259rd\u0259 tuturuq. Konteynerl\u0259ri i\u015fl\u0259tm\u0259k \u00fc\u00e7\u00fcn Windows v\u0259 macOS sisteml\u0259rind\u0259n istifad\u0259 ed\u0259 bil\u0259rik, lakin bu halda \u0259lav\u0259 bir qat\u0131n meydana \u00e7\u0131xaca\u011f\u0131n\u0131 ba\u015fa d\u00fc\u015fm\u0259k vacibdir. M\u0259s\u0259l\u0259n, Docker Mac-d\u0259 konteynerl\u0259ri m\u0259lum olmayan bir yolla y\u00fcng\u00fcl bir Linux VM i\u00e7ind\u0259 i\u015f\u0259 sal\u0131r. Bu m\u00f6vzuya qay\u0131daca\u011f\u0131q, \u00e7\u00fcnki konteynerl\u0259r i\u00e7\u0259risind\u0259 Android emulatorlar\u0131n\u0131 \u00e7al\u0131\u015fd\u0131rark\u0259n \u00e7ox vacib bir inc\u0259lik meydana \u00e7\u0131x\u0131r ki, onu daha \u0259trafl\u0131 m\u00fczakir\u0259 etm\u0259k laz\u0131md\u0131r.<\/p>\n<h3>Avtomatla\u015fd\u0131rma infrastrukturu \u00fc\u00e7\u00fcn d\u0259y\u0259ri<\/h3>\n<p>\n Konteynerl\u0259\u015fm\u0259nin v\u0259 Docker\u0131n m\u00f6ht\u0259\u015f\u0259m oldu\u011funu anlad\u0131q. G\u0259lin bunu avtomatla\u015fd\u0131rma kontekstind\u0259 n\u0259z\u0259rd\u0259n ke\u00e7ir\u0259k, \u00e7\u00fcnki h\u0259r bir al\u0259t v\u0259 ya texnologiya hans\u0131sa bir problemi h\u0259ll etm\u0259lidir. UI testl\u0259ri kontekstind\u0259 avtomatla\u015fd\u0131rma testl\u0259rinin a\u00e7\u0131q-a\u015fkar probleml\u0259rini m\u00fc\u0259yy\u0259nl\u0259\u015fdir\u0259k:<\/p>\n<ul>\n<li>Seleniumun v\u0259 x\u00fcsusil\u0259 Appiumun qura\u015fd\u0131r\u0131lmas\u0131nda \u00e7oxlu as\u0131l\u0131l\u0131qlar;<\/li>\n<li>Brauzer versiyalar\u0131, simulatorlar v\u0259 s\u00fcr\u00fcc\u00fcl\u0259r aras\u0131nda uy\u011funluq probleml\u0259ri;<\/li>\n<li>Brauzerl\u0259r\/simulatorlar \u00fc\u00e7\u00fcn izolyasiya olunmu\u015f bir m\u0259kan\u0131n olmamas\u0131, bu da paralel i\u015fl\u0259yi\u015fi \u00fc\u00e7\u00fcn x\u00fcsusil\u0259 kritikdir;<\/li>\n<li>Eyni anda 10, 50, 100 v\u0259 ya h\u0259tta 1000 brauzeri i\u015f\u0259 salmaq laz\u0131m olduqda idar\u0259 etm\u0259k v\u0259 d\u0259st\u0259kl\u0259m\u0259k \u00e7\u0259tindir.<\/li>\n<\/ul>\n<p>\nAmma Selenium \u0259n populyar avtomatla\u015fd\u0131rma al\u0259ti oldu\u011fu \u00fc\u00e7\u00fcn v\u0259 Docker \u0259n populyar konteynerl\u0259\u015fm\u0259 al\u0259ti oldu\u011funa g\u00f6r\u0259, kims\u0259 onlar\u0131n birl\u0259\u015fm\u0259sini c\u0259hd etm\u0259y\u0259c\u0259k? \u018fvv\u0259lc\u0259 qeyd edil\u0259n probleml\u0259ri h\u0259ll etm\u0259k \u00fc\u00e7\u00fcn g\u00fccl\u00fc bir al\u0259t \u0259ld\u0259 etm\u0259k m\u0259qs\u0259dil\u0259. Bel\u0259 h\u0259ll\u0259ri daha \u0259trafl\u0131 n\u0259z\u0259rd\u0259n ke\u00e7ir\u0259k.\u00a0<\/p>\n<p><u>Docker-da Selenium grid<\/u><\/p>\n<p>Bu al\u0259t, bir m\u0259rk\u0259zi d\u00fcy\u00fcnd\u0259n \u00e7oxlu brauzerl\u0259ri bir ne\u00e7\u0259 ma\u015f\u0131nda i\u015f\u0259 salmaq v\u0259 onlara n\u0259zar\u0259t etm\u0259k \u00fc\u00e7\u00fcn d\u00fcnyan\u0131n \u0259n populyar Selenium al\u0259tidir. \u0130\u015f\u0259 salmaq \u00fc\u00e7\u00fcn \u0259n az\u0131 2 hiss\u0259nin qeydiyyatdan ke\u00e7irilm\u0259si t\u0259l\u0259b olunur: Hub v\u0259 Node(s). Hub, testl\u0259rd\u0259n al\u0131nan b\u00fct\u00fcn sor\u011fular\u0131 alaraq m\u00fcvafiq Nodes-a paylayan m\u0259rk\u0259zi d\u00fcy\u00fcnd\u00fcr. H\u0259r bir Node \u00fc\u00e7\u00fcn konkret konfiqurasiya qura bilirik, m\u0259s\u0259l\u0259n, laz\u0131m olan brauzeri v\u0259 onun versiyas\u0131n\u0131 g\u00f6st\u0259r\u0259r\u0259k. Lakin, biz h\u0259m\u00e7inin b\u0259zi uy\u011fun brauzer s\u00fcr\u00fcc\u00fcl\u0259ri il\u0259 \u00f6z\u00fcm\u00fcz t\u0259min etm\u0259liyik v\u0259 onlar\u0131 m\u00fcvafiq Nodes-a qura\u015fd\u0131rmal\u0131y\u0131q. Buna g\u00f6r\u0259 Selenium grid, yaln\u0131z Linux OS-da qura\u015fd\u0131rmaq m\u00fcmk\u00fcn olmayan brauzerl\u0259rl\u0259 i\u015fl\u0259m\u0259li olduqda, saf formada istifad\u0259 edilmir. Qalan b\u00fct\u00fcn hallarda, Selenium grid Hub v\u0259 Nodes-u i\u015f\u0259 salmaq \u00fc\u00e7\u00fcn Docker imicl\u0259rinin istifad\u0259si daha \u00e7evik v\u0259 d\u00fczg\u00fcn bir h\u0259ll olacaq. Bu yana\u015fma d\u00fcy\u00fcnl\u0259rin idar\u0259 olunmas\u0131n\u0131 xeyli asanla\u015fd\u0131r\u0131r, \u00e7\u00fcnki biz art\u0131q qura\u015fd\u0131r\u0131lm\u0131\u015f uy\u011fun brauzer v\u0259 s\u00fcr\u00fcc\u00fc versiyalar\u0131 olan laz\u0131m olan imici se\u00e7\u0259 bil\u0259rik.<\/p>\n<p>B\u00f6y\u00fck sayda Nodes-un paralel i\u015f\u0259 sal\u0131nmas\u0131 zaman\u0131, x\u00fcsusil\u0259 sabitlikl\u0259 ba\u011fl\u0131 m\u0259nfi r\u0259y olsa da, Selenium grid h\u0259l\u0259 d\u0259 Selenium testl\u0259rinin paralel i\u015f\u0259 sal\u0131nmas\u0131 \u00fc\u00e7\u00fcn \u0259n populyar al\u0259t olaraq qal\u0131r. Qeyd etm\u0259k vacibdir ki, open-source-da bu al\u0259tin m\u00fcxt\u0259lif dar bo\u011fazlarla m\u00fcbariz\u0259 aparan bir \u00e7ox d\u00fcz\u0259li\u015fl\u0259r v\u0259 modifikasiyalar davaml\u0131 olaraq yaran\u0131r.<\/p>\n<p><u>Web \u00fc\u00e7\u00fcn Selenoid<\/u><\/p>\n<p>Bu al\u0259t, Selenium d\u00fcnyas\u0131nda inqilabd\u0131r, \u00e7\u00fcnki o, birba\u015fa paketi i\u00e7ind\u0259 i\u015fl\u0259yir v\u0259 bir \u00e7ox avtomatla\u015fd\u0131rma m\u00fch\u0259ndisinin h\u0259yat\u0131n\u0131 \u0259h\u0259miyy\u0259tli d\u0259r\u0259c\u0259d\u0259 asanla\u015fd\u0131r\u0131b. H\u0259r \u015feyd\u0259n \u0259vv\u0259l, bu Selenium grid-in ba\u015fqa bir modifikasiyas\u0131 deyil. Bunun \u0259v\u0259zin\u0259, inki\u015faf etdiricil\u0259r Golang dilind\u0259 Selenium Hub-un tamamil\u0259 yeni versiyas\u0131n\u0131 yaratd\u0131lar ki, bu da y\u00fcng\u00fcl Docker imicl\u0259ri il\u0259 birg\u0259 m\u00fcxt\u0259lif brauzerl\u0259r \u00fc\u00e7\u00fcn avtomatik test etm\u0259 inki\u015faf\u0131na t\u0259kan verdi. Daha da \u00f6n\u0259mlisi, Selenium Grid-d\u0259 biz b\u00fct\u00fcn t\u0259l\u0259b olunan brauzerl\u0259ri v\u0259 onlar\u0131n versiyalar\u0131n\u0131 \u0259vv\u0259ld\u0259n m\u00fc\u0259yy\u0259nl\u0259\u015fdirm\u0259liyik ki, bu da t\u0259k bir brauzer il\u0259 i\u015fl\u0259y\u0259rk\u0259n problem deyil. Lakin bir ne\u00e7\u0259 d\u0259st\u0259kl\u0259n\u0259n brauzer bar\u0259d\u0259 dan\u0131\u015fark\u0259n, Selenoid 't\u0259l\u0259b\u0259 uy\u011fun brauzer' x\u00fcsusiyy\u0259ti say\u0259sind\u0259 bir n\u00f6mr\u0259li h\u0259ldir. Bizd\u0259n t\u0259l\u0259b olunan t\u0259k \u015fey, laz\u0131m olan imicl\u0259ri \u0259vv\u0259lc\u0259d\u0259n y\u00fckl\u0259m\u0259k v\u0259 Selenoid-in qar\u015f\u0131l\u0131ql\u0131 t\u0259sir etdiyi konfiqurasiya fayl\u0131n\u0131 g\u00fcnc\u0259ll\u0259m\u0259kdir. Selenoid testl\u0259rd\u0259n sor\u011funu ald\u0131qdan sonra, m\u00fcvafiq brauzer il\u0259 konteyneri avtomatik olaraq i\u015f\u0259 salacaq. Test ba\u015fa \u00e7atd\u0131qdan sonra, Selenoid konteyneri b\u0131rak\u0131b, n\u00f6vb\u0259ti sor\u011fular \u00fc\u00e7\u00fcn resurslar\u0131 azad ed\u0259c\u0259k. Bu yana\u015fma 'd\u00fcy\u00fcnl\u0259rin deqradasiyas\u0131' adl\u0131 tan\u0131nm\u0131\u015f problemi tamamil\u0259 aradan qald\u0131r\u0131r ki, biz bunu tez-tez Selenium grid-d\u0259 rastlay\u0131r\u0131q.<\/p>\n<p>Amma, t\u0259\u0259ss\u00fcf ki, Selenoid h\u0259l\u0259 d\u0259 m\u00f6c\u00fcz\u0259vi bir h\u0259ll deyil. Biz \"ist\u0259y\u0259 \u0259saslanan brauzer\" funksiyas\u0131n\u0131 \u0259ld\u0259 etdik, lakin \"ist\u0259y\u0259 \u0259saslanan resurslar\" funksiyas\u0131 h\u0259l\u0259 d\u0259 m\u00f6vcud deyil. Selenoidi istifad\u0259 etm\u0259k \u00fc\u00e7\u00fcn onu fiziki avadanl\u0131qda v\u0259 ya VM-d\u0259 yerl\u0259\u015fdirm\u0259liyik, bu da bizd\u0259n laz\u0131m olan resurslar\u0131 \u0259vv\u0259lc\u0259d\u0259n bilm\u0259yimizi t\u0259l\u0259b edir. M\u0259nc\u0259, bu ki\u00e7ik layih\u0259l\u0259r \u00fc\u00e7\u00fcn problem deyil ki, 10, 20 v\u0259 ya h\u0259tta 30 brauzeri eyni anda i\u015f\u0259 sal\u0131r. Amma ya 100, 500, 1000 v\u0259 ya daha \u00e7oxuna ehtiyac\u0131m\u0131z olarsa? Bel\u0259 bir resursu daimi olaraq d\u0259st\u0259kl\u0259m\u0259k v\u0259 \u00f6d\u0259ni\u015f etm\u0259k m\u0259nas\u0131zd\u0131r. Bu m\u0259qal\u0259nin 5 v\u0259 6-c\u0131 b\u00f6lm\u0259sind\u0259 biz \u015firk\u0259tl\u0259rin x\u0259rcl\u0259rini \u0259h\u0259miyy\u0259tli d\u0259r\u0259c\u0259d\u0259 azaldaraq \u00f6l\u00e7\u00fclm\u0259y\u0259 imkan ver\u0259n h\u0259ll\u0259ri m\u00fczakir\u0259 ed\u0259c\u0259yik.<\/p>\n<p><u>Selenoid Android \u00fc\u00e7\u00fcn<\/u><\/p>\n<p>Web avtomatla\u015fd\u0131rma al\u0259ti kimi Selenoidin u\u011furundan sonra, insanlar Android \u00fc\u00e7\u00fcn ox\u015far bir \u015fey \u0259ld\u0259 etm\u0259k ist\u0259yirdil\u0259r. V\u0259 bu ba\u015f verdi - Selenoid Android d\u0259st\u0259yi il\u0259 burax\u0131ld\u0131. Y\u00fcks\u0259k s\u0259viyy\u0259li istifad\u0259\u00e7i n\u00f6qt\u0259sind\u0259n yana\u015fd\u0131qda, i\u015f prinsipi web avtomatla\u015fd\u0131rmas\u0131 il\u0259 eynidir. T\u0259k f\u0259rq odur ki, Selenoid brauzer konteynerl\u0259ri \u0259v\u0259zin\u0259 Android emulyatorlar\u0131ndan ibar\u0259t konteynerl\u0259r i\u015f\u0259 sal\u0131r. M\u0259nim fikrimc\u0259, bu g\u00fcn\u0259 q\u0259d\u0259r Android testl\u0259rini paralel olaraq h\u0259yata ke\u00e7irm\u0259k \u00fc\u00e7\u00fcn \u0259n g\u00fccl\u00fc pulsuz al\u0259tdir.<\/p>\n<p>M\u0259n bu al\u0259tin neqativ t\u0259r\u0259fl\u0259rini m\u00fczakir\u0259 etm\u0259k ist\u0259mir\u0259m, \u00e7\u00fcnki bu m\u0259nim \u00fc\u00e7\u00fcn \u00e7ox yax\u015f\u0131d\u0131r. Lakin burada eyni zamanda web avtomatla\u015fd\u0131rmas\u0131 il\u0259 ba\u011fl\u0131 olan v\u0259 \u00f6l\u00e7\u00fclm\u0259 il\u0259 \u0259laq\u0259li eyni \u00e7at\u0131\u015fmazl\u0131qlar var. Bununla yana\u015f\u0131, al\u0259ti ilk d\u0259f\u0259 konfiqurasiya ed\u0259nd\u0259 g\u00f6zl\u0259nilm\u0259z ola bil\u0259c\u0259k bir m\u0259hdudiyy\u0259td\u0259n d\u0259 b\u0259hs etm\u0259liyik. Android g\u00f6r\u00fcnt\u00fcl\u0259rini i\u015f\u0259 salmaq \u00fc\u00e7\u00fcn bizim fiziki bir ma\u015f\u0131n v\u0259 ya nested virtualizasiya d\u0259st\u0259yi olan bir VM laz\u0131md\u0131r. Praktik r\u0259hb\u0259rlikd\u0259 Linux VM-d\u0259 bunu nec\u0259 aktivl\u0259\u015fdir\u0259c\u0259yimi n\u00fcmayi\u015f etdirir\u0259m. Ancaq siz macOS istifad\u0259\u00e7isisinizs\u0259 v\u0259 Selenoidi yerli olaraq qurmaq ist\u0259yirsinizs\u0259, Android testl\u0259rini i\u015f\u0259 salmaq m\u00fcmk\u00fcn olmayacaq. Lakin h\u0259r zaman nested virtualizasiya il\u0259 konfiqurasiya olunmu\u015f bir Linux VM-i yerli olaraq i\u015f\u0259 sala v\u0259 Selenoidi i\u00e7ind\u0259 qura bil\u0259rsiniz.<\/p>\n<h3>\u0130nfrastrukturun cari v\u0259ziyy\u0259tinin t\u0259sviri<\/h3>\n<p>\n Bu m\u0259qal\u0259nin kontekstind\u0259 infrastrukturun izah\u0131 \u00fc\u00e7\u00fcn 2 al\u0259t \u0259lav\u0259 ed\u0259c\u0259yik. Bu, web testl\u0259ri \u00fc\u00e7\u00fcn Selenium grid v\u0259 Android testl\u0259ri \u00fc\u00e7\u00fcn Selenoiddir. GitHub-da Selenoidi web testl\u0259rini i\u015f\u0259 salmaq \u00fc\u00e7\u00fcn nec\u0259 istifad\u0259 ed\u0259c\u0259yimi d\u0259 g\u00f6st\u0259r\u0259c\u0259y\u0259m.\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"DevOps al\u0259tl\u0259ri yaln\u0131z DevOps \u00fc\u00e7\u00fcn deyil. S\u0131f\u0131rdan test avtomatla\u015fd\u0131rmas\u0131 infrastrukturu qurma prosesi\" src=\"\/wp-content\/uploads\/2020\/04\/1202ae79eba9cffc965f3a5b2648c755.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>\u00d6yr\u0259nm\u0259y\u0259 dair linkl\u0259r<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.docker.com\/resources\/what-container\">Docker: hans\u0131 konteynerdir<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.docker.com\/get-started\">Docker: ba\u015flay\u0131n<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/containerjournal.com\/topics\/container-ecosystems\/5-container-alternatives-to-docker\/\">Docker \u00fc\u00e7\u00fcn 5 konteyner alternativi<\/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\">Android emulyatorlar\u0131 \u00fc\u00e7\u00fcn KVM konfiqurasiyas\u0131<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/Docker-Deep-Dive-Nigel-Poulton-ebook\/dp\/B01LXWQUFF\/ref=pd_sim_351_1\/147-1129855-1615632?_encoding=UTF8&amp;pd_rd_i=B01LXWQUFF&amp;pd_rd_r=f8dcd666-e707-4f85-99c6-24ecec56ea74&amp;pd_rd_w=rMnHL&amp;pd_rd_wg=u17vC&amp;pf_rd_p=bab57536-7c8f-4781-a8ed-3e270b9cd303&amp;pf_rd_r=KN6EXNGBWJ6B9QNJE4M2&amp;psc=1&amp;refRID=KN6EXNGBWJ6B9QNJE4M2\">Docker Deep Dive kitab\u0131<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Ox\u015far al\u0259tl\u0259r<\/h3>\n<p><\/p>\n<ul>\n<li>Ba\u015fqa konteyner al\u0259tl\u0259ri d\u0259 m\u00f6vcuddur, lakin Docker - \u0259n populyar. \u018fg\u0259r ba\u015fqa bir \u015fey s\u0131namaq ist\u0259yirsinizs\u0259, unutmay\u0131n ki, paralel Selenium testl\u0259rini i\u015f\u0259 salmaq \u00fc\u00e7\u00fcn m\u00fczakir\u0259 etdiyimiz al\u0259tl\u0259r qutudan \u00e7\u0131xar\u0131lmadan i\u015fl\u0259mir.\u00a0\u00a0<\/li>\n<li>Art\u0131q qeyd edildiyi kimi, Selenium grid-in bir \u00e7ox modifikasiyas\u0131 var, m\u0259s\u0259l\u0259n,<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>Texnologiyan\u0131n q\u0131sa t\u0259sviri<\/h3>\n<p>\n Davaml\u0131 inteqrasiya praktikas\u0131 proqram inki\u015faf\u0131nda olduqca populyard\u0131r v\u0259 versiya idar\u0259etm\u0259 sisteml\u0259ri il\u0259 eyni s\u0131radad\u0131r. Buna baxmayaraq, terminologiyada qar\u0131\u015f\u0131ql\u0131q oldu\u011funu hiss edir\u0259m. Bu paraqrafda, bu texnologiyan\u0131n 3 modifikasiyas\u0131n\u0131 \u00f6z n\u00f6qteyi-n\u0259z\u0259rimd\u0259n izah etm\u0259k ist\u0259yir\u0259m. \u0130nternetd\u0259 m\u00fcxt\u0259lif \u015f\u0259rhl\u0259r olan \u00e7oxsayl\u0131 m\u0259qal\u0259l\u0259r tapacaqs\u0131n\u0131z v\u0259 \u0259g\u0259r sizin fikiriniz f\u0259rqlidirs\u0259, bu tamamil\u0259 normald\u0131r. \u018fsas odur ki, siz h\u0259mkarlar\u0131n\u0131zla eyni dal\u011fada olas\u0131n\u0131z.<\/p>\n<p>Bel\u0259likl\u0259, 3 termin var: CI \u2014 Davaml\u0131 \u0130ntegrasiya (Continuous Integration), CD \u2014 Davaml\u0131 T\u0259slimat (Continuous Delivery) v\u0259 yenid\u0259n CD \u2014 Davaml\u0131 \u0130cra (Continuous Deployment). (<i>Daha sonra bu terminl\u0259ri ingilis dilind\u0259 istifad\u0259 ed\u0259c\u0259y\u0259m<\/i>). H\u0259r bir modifikasiya inki\u015faf\u0131n\u0131z\u0131n konveyerin\u0259 bir ne\u00e7\u0259 \u0259lav\u0259 m\u0259rh\u0259l\u0259 \u0259lav\u0259 edir. Lakin <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>Davaml\u0131 \u0130ntegrasiya -<\/strong> inki\u015faf\u0131n ba\u015flan\u011f\u0131c add\u0131m\u0131d\u0131r. Yeni kod server\u0259 g\u00f6nd\u0259rildikd\u0259n sonra, d\u0259yi\u015fiklikl\u0259rimizin d\u00fczg\u00fcnl\u00fcy\u00fc il\u0259 ba\u011fl\u0131 s\u00fcr\u0259tli bir geri d\u00f6n\u00fc\u015f alaca\u011f\u0131m\u0131z\u0131 g\u00f6zl\u0259yirik. Ad\u0259t\u0259n CI, kodun statik analiz al\u0259tl\u0259rinin v\u0259 modulyar \/ daxili API testl\u0259rinin i\u015f\u0259 sal\u0131nmas\u0131n\u0131 \u0259hat\u0259 edir. Bu, kodumuz bar\u0259d\u0259 m\u0259lumatlar\u0131 bir ne\u00e7\u0259 saniy\u0259 \/ d\u0259qiq\u0259 i\u00e7ind\u0259 \u0259ld\u0259 etm\u0259y\u0259 imkan verir.<\/li>\n<li><strong>Continuous Delivery<\/strong> daha inki\u015faf etmi\u015f bir add\u0131md\u0131r, burada inteqrasiya \/ UI testl\u0259rini i\u015f\u0259 sal\u0131r\u0131q. Amma bu m\u0259rh\u0259l\u0259d\u0259, CI il\u0259 oldu\u011fu kimi, n\u0259tic\u0259l\u0259ri eyni s\u00fcr\u0259tl\u0259 alm\u0131r\u0131q. Birincisi, bu tip testl\u0259r daha uzun m\u00fcdd\u0259t t\u0259l\u0259b edir. \u0130kincisi, biz d\u0259yi\u015fiklikl\u0259rimizi test \/ staging m\u00fchitind\u0259 yerl\u0259\u015fdirm\u0259d\u0259n \u0259vv\u0259l i\u015f\u0259 salmal\u0131y\u0131q. Bundan \u0259lav\u0259, mobil inki\u015fafdan dan\u0131\u015fd\u0131qda, t\u0259tbiqimizin bir versiyas\u0131n\u0131 haz\u0131rlamaq \u00fc\u00e7\u00fcn \u0259lav\u0259 bir m\u0259rh\u0259l\u0259 yaran\u0131r.<\/li>\n<li><strong>Davaml\u0131 \u0130cra<\/strong> bizim d\u0259yi\u015fiklikl\u0259rimizi production-a avtomatik olaraq buraxma\u011f\u0131 ehtiva edir, \u0259g\u0259r \u0259vv\u0259lki m\u0259rh\u0259l\u0259l\u0259rd\u0259 b\u00fct\u00fcn q\u0259bul testl\u0259ri ke\u00e7ilibs\u0259. Bu m\u0259rh\u0259l\u0259d\u0259n sonra, production-da smoke testl\u0259rini i\u015f\u0259 salmaq v\u0259 maraql\u0131 metrikl\u0259ri toplamaq kimi m\u00fcxt\u0259lif m\u0259rh\u0259l\u0259l\u0259r d\u0259 t\u0259yin edil\u0259 bil\u0259r. Davaml\u0131 \u0130cra yaln\u0131z yax\u015f\u0131 avtomatla\u015fd\u0131r\u0131lm\u0131\u015f testl\u0259rl\u0259 m\u00fcmk\u00fcn olur. \u018fg\u0259r h\u0259r hans\u0131 bir \u0259l m\u00fcdaxil\u0259si, o c\u00fcml\u0259d\u0259n testl\u0259r t\u0259l\u0259b olunursa, bu art\u0131q <u>Davaml\u0131<\/u> (davaml\u0131) deyil. Onda, bizim konveyerimizin yaln\u0131z Davaml\u0131 T\u0259slimat t\u0259cr\u00fcb\u0259sin\u0259 uy\u011fun oldu\u011funu dem\u0259k m\u00fcmk\u00fcnd\u00fcr.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Avtomatla\u015fd\u0131rma infrastrukturu \u00fc\u00e7\u00fcn d\u0259y\u0259ri<\/h3>\n<p>\n Bu b\u00f6lm\u0259d\u0259 end-to-end UI testl\u0259rind\u0259n dan\u0131\u015fark\u0259n, d\u0259yi\u015fiklikl\u0259rimizi v\u0259 \u0259laq\u0259li xidm\u0259tl\u0259ri test m\u00fchitl\u0259rind\u0259 yay\u0131mlamal\u0131 oldu\u011fumuzu ayd\u0131nla\u015fd\u0131rmaq ist\u0259yir\u0259m. Continuous Integration bu i\u015f \u00fc\u00e7\u00fcn uy\u011fun deyil v\u0259 biz \u0259n az\u0131ndan Continuous Delivery praktikas\u0131n\u0131n t\u0259tbiqin\u0259 diqq\u0259t yetirm\u0259liyik. H\u0259m\u00e7inin, UI testl\u0259ri \u00fc\u00e7\u00fcn Continuous Deployment m\u0259nal\u0131d\u0131r, \u0259g\u0259r onlar\u0131 istehsal m\u00fchitind\u0259 i\u015f\u0259 salma\u011f\u0131 planla\u015fd\u0131r\u0131r\u0131q.<\/p>\n<p>Arxitektura d\u0259yi\u015fiklikl\u0259rini n\u0259z\u0259rd\u0259n ke\u00e7irm\u0259d\u0259n \u0259vv\u0259l, GitLab CI haqq\u0131nda bir ne\u00e7\u0259 s\u00f6z dem\u0259k ist\u0259yir\u0259m. Dig\u0259r CI\/CD al\u0259tl\u0259rind\u0259n f\u0259rqli olaraq, GitLab uzaq depozit t\u0259qdim edir v\u0259 bir \u00e7ox \u0259lav\u0259 funksiyaya malikdir. Bel\u0259likl\u0259, GitLab CI-d\u0259n daha \u00e7oxdur. O, qutu i\u00e7\u0259risind\u0259 m\u0259nb\u0259 kodunun idar\u0259 edilm\u0259si, Agile idar\u0259etm\u0259si, CI\/CD pipeline-lar\u0131, loglama al\u0259tl\u0259ri v\u0259 metrikan\u0131n toplanmas\u0131 \u00fc\u00e7\u00fcn imkanlar\u0131 t\u0259qdim edir. GitLab-\u0131n arxitekturas\u0131 GitLab CI\/CD v\u0259 GitLab Runner-d\u0259n ibar\u0259tdir. R\u0259smi saytdan q\u0131sa t\u0259svir t\u0259qdim edir\u0259m:<\/p>\n<blockquote><p>GitLab CI\/CD, v\u0259ziyy\u0259tini veril\u0259nl\u0259r bazas\u0131nda saxlayan, layih\u0259l\u0259ri\/istifad\u0259l\u0259ri idar\u0259 ed\u0259n v\u0259 istifad\u0259\u00e7i interfeysi t\u0259qdim ed\u0259n bir veb t\u0259tbiqidir. GitLab Runner is\u0259 build-l\u0259ri i\u015fl\u0259y\u0259n bir t\u0259tbiqdir. O, ayr\u0131ca olaraq yerl\u0259\u015fdiril\u0259 bil\u0259r v\u0259 GitLab CI\/CD il\u0259 API vasit\u0259sil\u0259 i\u015fl\u0259yir. Testl\u0259ri h\u0259yata ke\u00e7irm\u0259k \u00fc\u00e7\u00fcn h\u0259m GitLab n\u00fcmun\u0259sin\u0259, h\u0259m d\u0259 Runner-a ehtiyac\u0131n\u0131z var.<\/p><\/blockquote>\n<p><\/p>\n<h3>\u0130nfrastrukturun cari v\u0259ziyy\u0259tinin t\u0259sviri<\/h3>\n<p>\n<img decoding=\"async\" alt=\"DevOps al\u0259tl\u0259ri yaln\u0131z DevOps \u00fc\u00e7\u00fcn deyil. S\u0131f\u0131rdan test avtomatla\u015fd\u0131rmas\u0131 infrastrukturu qurma prosesi\" src=\"\/wp-content\/uploads\/2020\/04\/a05ece39b6c6a9aaec4177d4b5242722.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>\u00d6yr\u0259nm\u0259y\u0259 dair linkl\u0259r<\/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\">Continuous Integration kitab\u0131<\/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=\">Continuous Delivery kitab\u0131<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Ox\u015far al\u0259tl\u0259r<\/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>V\u0259 daha \u00e7ox<\/li>\n<\/ul>\n<p><\/p>\n<h2>5. Bulud platformalar\u0131<\/h2>\n<p><\/p>\n<h3>Texnologiyan\u0131n q\u0131sa t\u0259sviri<\/h3>\n<p>\n Bu b\u00f6lm\u0259d\u0259 'ictimai buludlar' adlanan m\u0259\u015fhur bir trend haqq\u0131nda dan\u0131\u015faca\u011f\u0131q. Yuxar\u0131da t\u0259svir edil\u0259n virtualizasiya v\u0259 konteynerl\u0259\u015fdirm\u0259 texnologiyalar\u0131n\u0131n qazand\u0131rd\u0131\u011f\u0131 b\u00f6y\u00fck faydalara baxmayaraq, biz\u0259 h\u0259l\u0259 d\u0259 hesablama resurslar\u0131 laz\u0131md\u0131r. \u015eirk\u0259tl\u0259r bahal\u0131 serverl\u0259r al\u0131r v\u0259 ya data m\u0259rk\u0259zl\u0259ri kiray\u0259l\u0259yir, lakin bu halda n\u0259 q\u0259d\u0259r resursa ehtiyac\u0131m\u0131z olaca\u011f\u0131n\u0131 qiym\u0259tl\u0259ndirm\u0259k (b\u0259z\u0259n reall\u0131qdan uzaq) z\u0259ruridir, onlar\u0131 24\/7 istifad\u0259 ed\u0259c\u0259yikmi v\u0259 hans\u0131 m\u0259qs\u0259dl\u0259rl\u0259 istifad\u0259 ed\u0259c\u0259yik. M\u0259s\u0259l\u0259n, istehsal \u00fc\u00e7\u00fcn 24 saat i\u015fl\u0259y\u0259n bir server\u0259 ehtiyac var, lakin eyni resurslara qeyri-i\u015f vaxt\u0131nda test aparmaq \u00fc\u00e7\u00fcn ehtiyac\u0131m\u0131z varm\u0131? Bu, icra edil\u0259n testin n\u00f6v\u00fcnd\u0259n d\u0259 as\u0131l\u0131d\u0131r. M\u0259s\u0259l\u0259n, biz, n\u0259tic\u0259l\u0259ri n\u00f6vb\u0259ti g\u00fcn \u0259ld\u0259 etm\u0259k \u00fc\u00e7\u00fcn qeyri-i\u015f saatlar\u0131nda yerin\u0259 yetir\u0259c\u0259yimiz y\u00fck\/testl\u0259ri planla\u015fd\u0131r\u0131r\u0131q. Ancaq, \u015f\u00fcbh\u0259siz, end-to-end avtomatik testl\u0259r v\u0259 x\u00fcsusil\u0259 \u0259l test m\u00fchitl\u0259ri \u00fc\u00e7\u00fcn serverl\u0259rin 24 saat m\u00f6vcudlu\u011fu z\u0259ruri deyil. Bel\u0259 hallarda, ehtiyac duydu\u011fumuz q\u0259d\u0259r resurslar\u0131 t\u0259l\u0259b etm\u0259kl\u0259 \u0259ld\u0259 etm\u0259yi, bunlar\u0131 istifad\u0259 etm\u0259yi v\u0259 art\u0131q laz\u0131m olmad\u0131qda \u00f6d\u0259ni\u015fi dayand\u0131rma\u011f\u0131 ist\u0259y\u0259rik. \u00dcst\u0259lik, bunlar\u0131 bir ne\u00e7\u0259 t\u0131klama v\u0259 ya bir ne\u00e7\u0259 skript \u00e7al\u0131\u015ft\u0131rmaqla d\u0259rhal \u0259ld\u0259 etm\u0259yimiz g\u00f6z\u0259l olard\u0131. B\u00fct\u00fcn bunlar \u00fc\u00e7\u00fcn ictimai buludlardan istifad\u0259 olunur. G\u0259lin, t\u0259rifin\u0259 n\u0259z\u0259r salaq:<\/p>\n<blockquote><p>\u00ab\u0130ctimai bulud, \u00fc\u00e7\u00fcnc\u00fc t\u0259r\u0259f t\u0259minat\u00e7\u0131lar\u0131 t\u0259r\u0259find\u0259n t\u0259qdim olunan hesablama xidm\u0259tl\u0259ri olaraq t\u0259yin olunur v\u0259 bunlar h\u0259r k\u0259sin istifad\u0259 etm\u0259si v\u0259 ya almas\u0131 \u00fc\u00e7\u00fcn ictimai \u0130nternet \u00fcz\u0259rind\u0259n m\u00f6vcud olur. Onlar pulsuz ola bil\u0259r v\u0259 ya t\u0259l\u0259b \u0259sasl\u0131 sat\u0131la bil\u0259r, m\u00fc\u015ft\u0259ril\u0259rin istehlak etdikl\u0259ri CPU d\u00f6vr\u0259l\u0259ri, saxlama v\u0259 ya bant geni\u015fliyi \u00fc\u00e7\u00fcn yaln\u0131z istifad\u0259 haqq\u0131 \u00f6d\u0259m\u0259y\u0259 imkan tan\u0131y\u0131r.\u00bb<\/p><\/blockquote>\n<p>\n B\u00fct\u00fcn bu fikrin arxas\u0131nda, ictimai buludlar\u0131n bahal\u0131 oldu\u011fu d\u00fc\u015f\u00fcnc\u0259si var. Lakin onlar\u0131n \u0259sas ideyas\u0131 \u015firk\u0259tin x\u0259rcl\u0259rini azaltmaqd\u0131r. \u018fvv\u0259lc\u0259 qeyd edildiyi kimi, ictimai buludlar t\u0259l\u0259b\u0259 uy\u011fun olaraq resurslar \u0259ld\u0259 etm\u0259y\u0259 v\u0259 yaln\u0131z istifad\u0259y\u0259 g\u00f6r\u0259 \u00f6d\u0259m\u0259y\u0259 imkan tan\u0131y\u0131r. B\u0259z\u0259n unuduruq ki, i\u015f\u00e7il\u0259rin \u0259m\u0259k haqq\u0131 var, v\u0259 m\u00fct\u0259x\u0259ssisl\u0259r d\u0259 bahal\u0131 bir resursdur. Eyni zamanda, ictimai buludlar infrastrukturun d\u0259st\u0259yini \u0259h\u0259miyy\u0259tli d\u0259r\u0259c\u0259d\u0259 asanla\u015fd\u0131rd\u0131\u011f\u0131 \u00fc\u00e7\u00fcn m\u00fch\u0259ndisl\u0259rin daha vacib i\u015fl\u0259r\u0259 fokuslanmas\u0131na imkan verir.\u00a0<\/p>\n<h3>Avtomatla\u015fd\u0131rma infrastrukturu \u00fc\u00e7\u00fcn d\u0259y\u0259ri<\/h3>\n<p>\n End-to-end UI testl\u0259ri \u00fc\u00e7\u00fcn konkret olaraq hans\u0131 resurslara ehtiyac\u0131m\u0131z var? \u018fsas\u0259n, brauzerl\u0259ri v\u0259 emulatorlar\u0131 i\u015f\u0259 salmaq \u00fc\u00e7\u00fcn virtual ma\u015f\u0131nlar v\u0259 ya klasterl\u0259r (n\u00f6vb\u0259ti b\u00f6lm\u0259d\u0259 Kubernetes haqq\u0131nda dan\u0131\u015faca\u011f\u0131q) laz\u0131md\u0131r. Eynit zamanda, biz ne\u00e7\u0259 brauzer v\u0259 emulatoru bird\u0259n i\u015f\u0259 salmaq ist\u0259yiriks\u0259, o q\u0259d\u0259r CPU v\u0259 yadda\u015f t\u0259l\u0259b olunur, v\u0259 buna g\u00f6r\u0259 d\u0259 daha \u00e7ox pul \u00f6d\u0259m\u0259li olaca\u011f\u0131q. Bel\u0259likl\u0259, ictimai buludlar testin avtomatla\u015fd\u0131r\u0131lmas\u0131 kontekstind\u0259 biz\u0259 t\u0259l\u0259bl\u0259r\u0259 uy\u011fun olaraq \u00e7ox sayda (100, 200, 1000 \u2026) brauzer\/emulatoru i\u015f\u0259 salma\u011fa, test n\u0259tic\u0259l\u0259rini m\u00fcmk\u00fcn q\u0259d\u0259r tez \u0259ld\u0259 etm\u0259y\u0259 v\u0259 bu c\u00fcr s\u0259rf\u0259li resurslar\u0131 art\u0131q \u00f6d\u0259m\u0259m\u0259y\u0259 imkan verir.\u00a0<\/p>\n<p>\u018fn populyar bulud provayderl\u0259ri Amazon Web Services (AWS), Microsoft Azure v\u0259 Google Cloud Platform (GCP)dir. Praktik b\u0259l\u0259d\u00e7id\u0259 GCP-nin istifad\u0259sin\u0259 dair n\u00fcmun\u0259l\u0259r t\u0259qdim edilir, lakin siz hans\u0131dan istifad\u0259 ed\u0259c\u0259yiniz \u00fcmumiyy\u0259tl\u0259 \u0259h\u0259miyy\u0259tli deyil. Onlar\u0131n ham\u0131s\u0131 t\u0259xmin\u0259n eyni funksional\u0131 t\u0259qdim edir. Ad\u0259t\u0259n, provayder se\u00e7ilm\u0259si \u00fc\u00e7\u00fcn b\u0259l\u0259d\u00e7i \u015firk\u0259tin infrastrukturuna v\u0259 i\u015f t\u0259l\u0259bl\u0259rin\u0259 fokuslan\u0131r ki, bu da bu m\u0259qal\u0259nin xaricind\u0259dir. Avtomatizasiya m\u00fch\u0259ndisl\u0259ri bulud provayderl\u0259rinin istifad\u0259sini x\u00fcsusi olaraq test m\u0259qs\u0259dl\u0259ri \u00fc\u00e7\u00fcn bulud platformalar\u0131n\u0131n istifad\u0259si il\u0259 m\u00fcqayis\u0259 etm\u0259y\u0259 maraql\u0131 olacaqlar, m\u0259s\u0259l\u0259n, Sauce Labs, BrowserStack, BitBar v\u0259 s. Bel\u0259likl\u0259, g\u0259lin bunu ed\u0259k! M\u0259nim fikrimc\u0259, Sauce Labs \u0259n tan\u0131nm\u0131\u015f bulud test fermas\u0131d\u0131r, buna g\u00f6r\u0259 onu m\u00fcqayis\u0259 \u00fc\u00e7\u00fcn se\u00e7dim.\u00a0<\/p>\n<p><u>GCP il\u0259 Sauce Labs aras\u0131nda avtomatizasiya m\u0259qs\u0259dl\u0259ri \u00fc\u00e7\u00fcn m\u00fcqayis\u0259:<\/u><\/p>\n<p>Tutaq ki, eyni anda 8 veb testi v\u0259 8 Android testi ke\u00e7irm\u0259liyik. Bunun \u00fc\u00e7\u00fcn GCP-d\u0259n istifad\u0259 ed\u0259c\u0259yik v\u0259 Selenoid il\u0259 2 virtual ma\u015f\u0131n i\u015f\u0259 salaca\u011f\u0131q. Birincisind\u0259 8 brauzer konteyneri qald\u0131raca\u011f\u0131q. \u0130kincisind\u0259 is\u0259 8 emulator konteyneri qald\u0131raca\u011f\u0131q. G\u0259lin qiym\u0259tl\u0259r\u0259 n\u0259z\u0259r salaq:\u00a0\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"DevOps al\u0259tl\u0259ri yaln\u0131z DevOps \u00fc\u00e7\u00fcn deyil. S\u0131f\u0131rdan test avtomatla\u015fd\u0131rmas\u0131 infrastrukturu qurma prosesi\" src=\"\/wp-content\/uploads\/2020\/04\/e4688fd2e6e5593d2e1c22fc57f59484.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n Bir Chrome konteynerini i\u015f\u0259 salmaq \u00fc\u00e7\u00fcn biz\u0259 laz\u0131m olacaq <strong>n1-standard-1 <\/strong>ma\u015f\u0131n. Android \u00fc\u00e7\u00fcn bu olacaq <strong>n1-standard-4 <\/strong>bir emulator \u00fc\u00e7\u00fcn. \u018fslind\u0259 daha \u00e7evik v\u0259 ucuz yol \u2013 CPU\/Yadda\u015f \u00fc\u00e7\u00fcn konkret istifad\u0259\u00e7i d\u0259y\u0259rl\u0259ri verm\u0259kdir, lakin haz\u0131rda Sauce Labs il\u0259 m\u00fcqayis\u0259 \u00fc\u00e7\u00fcn bu, \u0259sas m\u0259s\u0259l\u0259 deyil.<\/p>\n<p>Sauce Labs-\u0131n istifad\u0259 tarifl\u0259ri:<\/p>\n<p><img decoding=\"async\" alt=\"DevOps al\u0259tl\u0259ri yaln\u0131z DevOps \u00fc\u00e7\u00fcn deyil. S\u0131f\u0131rdan test avtomatla\u015fd\u0131rmas\u0131 infrastrukturu qurma prosesi\" src=\"\/wp-content\/uploads\/2020\/04\/1367d2b59bbef9603b4b4be166e8d721.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nArt\u0131q f\u0259rqi g\u00f6rd\u00fcy\u00fcn\u00fcz\u00fc d\u00fc\u015f\u00fcn\u00fcr\u0259m, lakin yen\u0259 d\u0259 v\u0259zif\u0259miz \u00fc\u00e7\u00fcn hesablamalar c\u0259dv\u0259lini t\u0259qdim edim:<\/p>\n<p><strong>T\u0259l\u0259b olunan resurslar<\/strong><br \/>\n<strong>Ayl\u0131q<\/strong><br \/>\n<strong>\u0130\u015f saatlar\u0131<\/strong><strong>(s\u0259h\u0259r 8-d\u0259n ax\u015fam 8-\u0259 q\u0259d\u0259r)<\/strong><br \/>\n<strong>\u0130\u015f saatlar\u0131<\/strong><strong>+ \u00d6ncelikli<\/strong><\/p>\n<p><strong>GCP \u00fc\u00e7\u00fcn Veb<\/strong><br \/>\nn1-standard-1 x 8 = n1-standard-8<br \/>\n$194.18<br \/>\n23 g\u00fcn * 12saat * 0.38 = 104.88$\u00a0<br \/>\n23 g\u00fcn * 12saat * 0.08 = 22.08$<\/p>\n<p><strong>Sauce Labs \u00fc\u00e7\u00fcn Veb<\/strong><br \/>\nVirtual Cloud8 paralel testl\u0259r<br \/>\n$1.559<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p><strong>GCP \u00fc\u00e7\u00fcn Android<\/strong><br \/>\nn1-standard-4 x 8: n1-standard-16<br \/>\n$776.72<br \/>\n23 g\u00fcn * 12saat * 1.52 = 419.52$\u00a0<br \/>\n23 g\u00fcn * 12saat * 0.32 = 88.32$<\/p>\n<p><strong>Sauce Labs \u00fc\u00e7\u00fcn Android<\/strong><br \/>\nReal Device Cloud 8 paralel testl\u0259r<br \/>\n$1.999<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>\nG\u00f6r\u00fcnd\u00fcy\u00fc kimi, qiym\u0259t f\u0259rqi olduqca b\u00f6y\u00fckd\u00fcr, x\u00fcsus\u0259n d\u0259 testl\u0259ri yaln\u0131z i\u015f saatlar\u0131nda icra ed\u0259rk\u0259n. Amma x\u0259rcl\u0259ri daha da azaltmaq m\u00fcmk\u00fcnd\u00fcr ki, bunun \u00fc\u00e7\u00fcn \u00f6ncelikli ma\u015f\u0131nlardan istifad\u0259 ed\u0259siniz. B\u0259s bu n\u0259dir?<\/p>\n<blockquote><p>\u00d6ncelikli VM, normal instansiyalardan daha a\u015fa\u011f\u0131 qiym\u0259t\u0259 yarada v\u0259 i\u015fl\u0259d\u0259 bil\u0259c\u0259yiniz bir instansiyad\u0131r. Lakin, Compute Engine bu instansiyalar\u0131 dig\u0259r tap\u015f\u0131r\u0131qlar \u00fc\u00e7\u00fcn ehtiyac duyarsa dayand\u0131ra (\u00f6nc\u0259likl\u0259) bil\u0259r. \u00d6ncelikli instansiyalar, Compute Engine-in art\u0131q tutumudur, buna g\u00f6r\u0259 d\u0259 onlar\u0131n m\u00f6vcudlu\u011fu istifad\u0259y\u0259 g\u00f6r\u0259 d\u0259yi\u015fir.<\/p>\n<p>\u018fg\u0259r t\u0259tbiql\u0259riniz x\u0259ta d\u00f6z\u00fcml\u00fcd\u00fcrs\u0259 v\u0259 m\u00fcmk\u00fcn instansiya dayand\u0131rmalar\u0131na d\u00f6z\u0259 bilirs\u0259, o zaman \u00f6ncelikli instansiyalar Compute Engine x\u0259rcl\u0259rinizi \u0259h\u0259miyy\u0259tli d\u0259r\u0259c\u0259d\u0259 azalda bil\u0259r. M\u0259s\u0259l\u0259n, toplu emal i\u015fl\u0259ri \u00f6ncelikli instansiyalarda icra oluna bil\u0259r. \u018fg\u0259r o instansiyalardan b\u0259zil\u0259ri emal zaman\u0131 durursa, i\u015f yava\u015flay\u0131r, lakin tamamil\u0259 dayanmaz. \u00d6ncelikli instansiyalar toplu emal tap\u015f\u0131r\u0131qlar\u0131n\u0131z\u0131 tamamlay\u0131r, \u0259lav\u0259 i\u015f y\u00fck\u00fc yaratmadan v\u0259 \u0259lav\u0259 normal instansiyalar \u00fc\u00e7\u00fcn tam qiym\u0259t \u00f6d\u0259m\u0259d\u0259n.<\/p><\/blockquote>\n<p>\n V\u0259 bu h\u0259l\u0259 d\u0259 son deyil! H\u0259qiq\u0259t\u0259n d\u0259 m\u0259n \u0259min\u0259m ki, he\u00e7 kim 12 saat fasil\u0259siz testl\u0259r icra etmir. \u018fg\u0259r bel\u0259dirs\u0259, dem\u0259li siz virtual ma\u015f\u0131nlar\u0131 istifad\u0259 etm\u0259dikd\u0259 avtomatik olaraq i\u015f\u0259 sal\u0131b dayand\u0131ra bil\u0259rsiniz. Ger\u00e7\u0259k istifad\u0259 vaxt\u0131 g\u00fcnd\u0259 6 saata q\u0259d\u0259r azala bil\u0259r. O zaman, bizim m\u0259s\u0259l\u0259mizd\u0259 \u00f6d\u0259ni\u015f 8 brauzer \u00fc\u00e7\u00fcn ayl\u0131q 11$-a q\u0259d\u0259r d\u00fc\u015f\u0259c\u0259k. Bu, g\u00f6z\u0259l deyilmi? Amma \u00f6ncelikli ma\u015f\u0131nlarla ehtiyatl\u0131 olmal\u0131y\u0131q v\u0259 dayand\u0131rmalara v\u0259 qeyri-stabil i\u015f\u0259 haz\u0131r olmal\u0131y\u0131q, baxmayaraq ki, bu v\u0259ziyy\u0259tl\u0259ri proqnozla\u015fd\u0131rmaq v\u0259 proqramla idar\u0259 etm\u0259k m\u00fcmk\u00fcnd\u00fcr. Buna d\u0259y\u0259r!<\/p>\n<p>Amma he\u00e7 bir halda \u2018he\u00e7 vaxt bulud test fermerl\u0259rini istifad\u0259 etm\u0259yin\u2019 demir\u0259m. Onlar\u0131n bir \u00e7ox \u00fcst\u00fcnl\u00fckl\u0259ri var. \u018fn ba\u015fl\u0131cas\u0131, bu yaln\u0131z bir virtual ma\u015f\u0131n deyil, eyni zamanda bir avtomatla\u015fd\u0131rma test \u00e7\u00f6z\u00fcm\u00fcd\u00fcr ki, i\u00e7ind\u0259 bir \u00e7ox funksionall\u0131q var: uzaqdan giri\u015f, loqolar, ekran g\u00f6r\u00fcnt\u00fcl\u0259ri, video qeyd, m\u00fcxt\u0259lif brauzerl\u0259r v\u0259 fiziki mobil cihazlar. Bir \u00e7ox v\u0259ziyy\u0259td\u0259 bu \u0259v\u0259zolunmaz bir alternativ ola bil\u0259r. X\u00fcsusil\u0259 test platformalar\u0131 IOS avtomatizasiyas\u0131nda faydal\u0131d\u0131r, \u00e7\u00fcnki publik buludlar yaln\u0131z Linux\/Windows sisteml\u0259rini t\u0259klif ed\u0259 bil\u0259r. Amma IOS bar\u0259d\u0259 dan\u0131\u015fma\u011f\u0131 g\u0259l\u0259c\u0259k m\u0259qal\u0259l\u0259rd\u0259 ed\u0259c\u0259yik. M\u0259n h\u0259r zaman v\u0259ziyy\u0259ti analiz etm\u0259yi v\u0259 tap\u015f\u0131r\u0131klara g\u00f6r\u0259 q\u0259rar verm\u0259yi t\u00f6vsiy\u0259 edir\u0259m: b\u0259zi hallarda publik buludlardan istifad\u0259 daha ucuz v\u0259 s\u0259m\u0259r\u0259lidir, b\u0259zil\u0259rind\u0259 is\u0259 test platformalar\u0131 m\u00fctl\u0259q s\u0259rf\u0259li olacaq.<\/p>\n<h3>\u0130nfrastrukturun cari v\u0259ziyy\u0259tinin t\u0259sviri<\/h3>\n<p>\n<img decoding=\"async\" alt=\"DevOps al\u0259tl\u0259ri yaln\u0131z DevOps \u00fc\u00e7\u00fcn deyil. S\u0131f\u0131rdan test avtomatla\u015fd\u0131rmas\u0131 infrastrukturu qurma prosesi\" src=\"\/wp-content\/uploads\/2020\/04\/f68770c9e27677b9d762af574726c90e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>\u00d6yr\u0259nm\u0259y\u0259 dair linkl\u0259r<\/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: \u00d6ncelikli<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/compute\/vm-instance-pricing\">GCP: VM qiym\u0259tl\u0259ri<\/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\/\">Bulud Provayderl\u0259ri il\u0259 M\u00fcqayis\u0259<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Analoji al\u0259tl\u0259r:<\/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. Orkestrasiya<\/h2>\n<p><\/p>\n<h3>Texnologiyan\u0131n q\u0131sa t\u0259sviri<\/h3>\n<p>\n M\u0259nim yax\u015f\u0131 x\u0259b\u0259rim var \u2013 biz m\u0259qal\u0259nin sonuna dem\u0259k olar ki, \u00e7atd\u0131q! Hal-haz\u0131rda bizim avtomatla\u015fd\u0131rma infrastrukturumuz GitLab CI vasit\u0259sil\u0259 paralel olaraq i\u015f\u0259 sald\u0131\u011f\u0131m\u0131z web v\u0259 Android testl\u0259rind\u0259n ibar\u0259tdir; biz Docker d\u0259st\u0259kl\u0259y\u0259n al\u0259tl\u0259rd\u0259n istifad\u0259 edirik: Selenium grid v\u0259 Selenoid. Bundan \u0259lav\u0259, biz GCP vasit\u0259sil\u0259 yarad\u0131lan virtual ma\u015f\u0131nlardan istifad\u0259 ed\u0259r\u0259k i\u00e7ind\u0259 brauzerl\u0259r v\u0259 emulatorlar olan konteynerl\u0259ri i\u015f\u0259 sal\u0131r\u0131q. X\u0259rcl\u0259ri azaltmaq \u00fc\u00e7\u00fcn bu virtual ma\u015f\u0131nlar\u0131 yaln\u0131z t\u0259l\u0259b olunduqda i\u015f\u0259 sal\u0131r\u0131q v\u0259 testl\u0259r apar\u0131lmad\u0131qda dayand\u0131r\u0131r\u0131q. Bizim infrastrukturu daha da yax\u015f\u0131la\u015fd\u0131rmaq \u00fc\u00e7\u00fcn ba\u015fqa bir \u015fey var? Cavab \u2013 b\u0259li! Kubernetes (K8s) il\u0259 tan\u0131\u015f olun!<\/p>\n<p>\u00d6nc\u0259likl\u0259, orkestrasiyan\u0131n, klasterin v\u0259 Kubernetesin bir-birin\u0259 nec\u0259 ba\u011fl\u0131 oldu\u011funa n\u0259z\u0259r salaq. Y\u00fcks\u0259k s\u0259viyy\u0259d\u0259 orkestrasiyan\u0131n m\u0259qs\u0259di t\u0259tbiql\u0259ri yerl\u0259\u015fdirm\u0259k v\u0259 idar\u0259 etm\u0259kdir. Test avtomatla\u015fd\u0131rmas\u0131 \u00fc\u00e7\u00fcn konteynerl\u0259\u015fdirilmi\u015f (containerised) t\u0259tbiql\u0259r Selenium grid v\u0259 Selenoid-dir. Docker v\u0259 K8s bir-birini tamamlay\u0131r. Birincisi t\u0259tbiql\u0259rin yerl\u0259\u015fdirilm\u0259si \u00fc\u00e7\u00fcn, ikincisi is\u0259 orkestrasiyad\u0131r. \u00d6z n\u00f6vb\u0259sind\u0259, K8s klasterdir. Klasterin v\u0259zif\u0259si VMs-ni Nodes kimi istifad\u0259 ed\u0259r\u0259k bir server (klaster) daxilind\u0259 m\u00fcxt\u0259lif funksionall\u0131qlar\u0131, proqramlar\u0131 v\u0259 xidm\u0259tl\u0259ri qura\u015fd\u0131rmaqd\u0131r. H\u0259r hans\u0131 bir Node \u00e7\u00f6ks\u0259, dig\u0259r Nodes-lar i\u015fl\u0259m\u0259y\u0259 davam edir, bu da t\u0259tbiqimizin LED-l\u0259nm\u0259sini t\u0259min edir. \u018flav\u0259 olaraq, K8s-in miqyaslanma (scaling) il\u0259 ba\u011fl\u0131 vacib funksionall\u0131\u011f\u0131 var ki, bu da y\u00fckl\u0259nm\u0259y\u0259 v\u0259 qura\u015fd\u0131r\u0131lm\u0131\u015f m\u0259hdudiyy\u0259tl\u0259r\u0259 \u0259saslanaraq avtomatik \u015f\u0259kild\u0259 optimal resurs say\u0131n\u0131 \u0259ld\u0259 etm\u0259y\u0259 imkan tan\u0131y\u0131r.<\/p>\n<p>D\u00fcz\u00fcn\u00fc des\u0259k, Kubernetes-i s\u0131f\u0131rdan \u0259l il\u0259 yerl\u0259\u015fdirm\u0259k tam iddial\u0131 bir tap\u015f\u0131r\u0131qd\u0131r. M\u0259n \"Kubernetes The Hard Way\" adl\u0131 tan\u0131nm\u0131\u015f praktiki d\u0259rsliy\u0259 bir ba\u011flant\u0131 buraxaca\u011fam v\u0259 \u0259g\u0259r siz maraqlan\u0131rs\u0131n\u0131zsa, onu t\u0259cr\u00fcb\u0259 ed\u0259 bil\u0259rsiniz. Lakin, \u015f\u00fck\u00fcrl\u0259r olsun ki, alternativ yollar v\u0259 al\u0259tl\u0259r m\u00f6vcuddur. Bunlardan \u0259n asan\u0131, Google Kubernetes Engine (GKE) istifad\u0259 etm\u0259kdir ki, bu da bir ne\u00e7\u0259 klikd\u0259n sonra haz\u0131r bir klaster \u0259ld\u0259 etm\u0259y\u0259 imkan verir. Ba\u015flan\u011f\u0131c \u00f6yr\u0259nm\u0259 \u00fc\u00e7\u00fcn, m\u0259hz bu yana\u015fman\u0131 t\u00f6vsiy\u0259 edir\u0259m, \u00e7\u00fcnki bu siz\u0259 K8s-i \u00f6z tap\u015f\u0131r\u0131qlar\u0131n\u0131za nec\u0259 t\u0259tbiq etm\u0259y\u0259 fokuslanma\u011fa imkan tan\u0131yacaq, daxili komponentl\u0259rin bir-birin\u0259 nec\u0259 inteqrasiya olunmal\u0131 oldu\u011funu \u00f6yr\u0259nm\u0259y\u0259 deyil.\u00a0<\/p>\n<h3>Avtomatla\u015fd\u0131rma infrastrukturu \u00fc\u00e7\u00fcn d\u0259y\u0259ri<\/h3>\n<p>\nK8s-in t\u0259qdim etdiyi bir ne\u00e7\u0259 vacib x\u00fcsusiyy\u0259t\u0259 n\u0259z\u0259r salaq:<\/p>\n<ul>\n<li>t\u0259tbiqin yerl\u0259\u015fdirilm\u0259si: multi-nodes klasterd\u0259n istifad\u0259, VMs \u0259v\u0259zin\u0259;<\/li>\n<li>dinamika miqyasland\u0131rma: yaln\u0131z t\u0259l\u0259b olunduqda istifad\u0259 olunan resurslar\u0131n x\u0259rcl\u0259rini azald\u0131r;<\/li>\n<li>\u00f6z\u00fcn\u00fc b\u0259rpa etm\u0259 (Self-healing): pods-u avtomatik b\u0259rpa edir (n\u0259tic\u0259d\u0259 konteynerl\u0259r d\u0259 b\u0259rpa olunur);<\/li>\n<li>yenil\u0259m\u0259 v\u0259 geri d\u00f6n\u00fc\u015f d\u0259yi\u015fiklikl\u0259rinin dayanmadan h\u0259yata ke\u00e7irilm\u0259si: al\u0259tl\u0259r, brauzerl\u0259r v\u0259 emulyatorlar\u0131n yenil\u0259nm\u0259si cari istifad\u0259\u00e7il\u0259rin i\u015fini dayand\u0131rm\u0131r<\/li>\n<\/ul>\n<p>\n Amma K8s h\u0259l\u0259 d\u0259 q\u0131z\u0131l g\u00fcll\u0259 deyil. Bizim m\u00fczakir\u0259 etdiyimiz al\u0259tl\u0259r (Selenium grid, Selenoid) kontekstind\u0259 b\u00fct\u00fcn \u00fcst\u00fcnl\u00fckl\u0259ri v\u0259 m\u0259hdudiyy\u0259tl\u0259ri anlamaq \u00fc\u00e7\u00fcn K8s-in qurulu\u015funu q\u0131sa \u015f\u0259kild\u0259 m\u00fczakir\u0259 ed\u0259c\u0259yik. Cluster iki n\u00f6v Node-dan ibar\u0259tdir: Master Nodes v\u0259 Workers Nodes. Master Nodes idar\u0259etm\u0259, yay\u0131lma v\u0259 scheduling decisions \u00fc\u00e7\u00fcn m\u0259suliyy\u0259t da\u015f\u0131y\u0131r. Workers Nodes is\u0259 t\u0259tbiql\u0259rin i\u015f\u0259 sal\u0131nd\u0131\u011f\u0131 yerl\u0259rdir. Nodes h\u0259m\u00e7inin konteynerl\u0259rin i\u015f m\u00fchitini ehtiva edir. Bizim hal\u0131m\u0131zda bu, konteynerl\u0259rl\u0259 ba\u011fl\u0131 \u0259m\u0259liyyatlar\u0131 h\u0259yata ke\u00e7ir\u0259n Docker-dir. Amma alternativ h\u0259ll\u0259r d\u0259 m\u00f6vcuddur, m\u0259s\u0259l\u0259n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/containerd\/containerd\"> containerd<\/a><\/noindex>. Vacibdir ki, geni\u015fl\u0259ndirm\u0259 v\u0259 ya \u00f6z-\u00f6z\u00fcn\u0259 b\u0259rpa konteynerl\u0259r\u0259 birba\u015fa aid deyil. Bu, pods say\u0131n\u0131n art\u0131r\u0131lmas\u0131\/azald\u0131lmas\u0131 yolu il\u0259 h\u0259yata ke\u00e7irilir, bunlar is\u0259 \u00f6z n\u00f6vb\u0259sind\u0259 konteynerl\u0259ri ehtiva edir (ad\u0259t\u0259n bir pod-da bir konteyner, amma tap\u015f\u0131r\u0131qdan as\u0131l\u0131 olaraq daha \u00e7ox da ola bil\u0259r). Y\u00fcks\u0259k s\u0259viyy\u0259li iyerarxiya, worker nodes-dan ibar\u0259tdir, hans\u0131lar ki, pods-lar\u0131, pods-lar is\u0259 konteynerl\u0259ri ehtiva edir.<\/p>\n<p>Geni\u015fl\u0259ndirm\u0259 funksiyas\u0131 \u0259sasd\u0131r v\u0259 cluster node-pool i\u00e7\u0259risind\u0259ki nodes-lara v\u0259 node i\u00e7ind\u0259ki pods-lara t\u0259tbiq oluna bil\u0259r. Nodes v\u0259 pods-lara aid iki n\u00f6v geni\u015fl\u0259ndirm\u0259 var. Birinci n\u00f6v - horizontal - geni\u015fl\u0259ndirm\u0259 nodes\/pods say\u0131n\u0131n art\u0131r\u0131lmas\u0131 il\u0259 ba\u015f verir. Bu n\u00f6v daha \u00fcst\u00fcnl\u00fck t\u0259\u015fkil edir. \u0130kinci n\u00f6v is\u0259, uy\u011fun olaraq, vertical. Geni\u015fl\u0259ndirm\u0259 nodes\/pods-un \u00f6l\u00e7\u00fcl\u0259rinin art\u0131r\u0131lmas\u0131 yolu il\u0259, onlar\u0131n say\u0131n\u0131n art\u0131m\u0131 olmadan h\u0259yata ke\u00e7irilir.<\/p>\n<p>\u0130ndi al\u0259tl\u0259rimizi yuxar\u0131da qeyd olunan terminl\u0259r kontekstind\u0259 n\u0259z\u0259rd\u0259n ke\u00e7ir\u0259k.<\/p>\n<p><u>Selenium grid<\/u><\/p>\n<p>Daha \u0259vv\u0259l qeyd edildiyi kimi, Selenium grid \u2013 \u00e7ox populyar bir al\u0259tdir v\u0259 onun konteynerl\u0259\u015fdirilm\u0259si (containerised) t\u0259\u0259cc\u00fcbl\u00fc deyil. Buna g\u00f6r\u0259 d\u0259, Selenium grid-in K8s-d\u0259 yerl\u0259\u015fdirilm\u0259si g\u00f6zl\u0259nil\u0259ndir. Bunu nec\u0259 ed\u0259c\u0259yiniz\u0259 dair n\u00fcmun\u0259ni r\u0259smi K8s depolar\u0131nda tapa bil\u0259rsiniz. Ad\u0259t\u0259n, bu b\u00f6lm\u0259nin sonunda ba\u011flant\u0131lar\u0131 \u0259lav\u0259 edir\u0259m. Bundan \u0259lav\u0259, praktiki b\u0259l\u0259d\u00e7id\u0259 Terraform-la bunu nec\u0259 etm\u0259k laz\u0131m oldu\u011fu g\u00f6st\u0259rilir. H\u0259m\u00e7inin, brauzerl\u0259ri ehtiva ed\u0259n konteynerl\u0259rl\u0259 pod-lar\u0131n say\u0131n\u0131 nec\u0259 geni\u015fl\u0259ndirm\u0259k bar\u0259d\u0259 t\u0259limat var. Lakin, K8s kontekstind\u0259 avtomatik geni\u015fl\u0259ndirm\u0259 funksiyas\u0131 h\u0259l\u0259 d\u0259 ayd\u0131n olmayan bir m\u0259s\u0259l\u0259dir. M\u0259n \u00f6yr\u0259nm\u0259y\u0259 ba\u015flayanda he\u00e7 bir praktiki b\u0259l\u0259d\u00e7i v\u0259 ya t\u00f6vsiy\u0259 tapmad\u0131m. Bir ne\u00e7\u0259 t\u0259dqiqat v\u0259 t\u0259cr\u00fcb\u0259l\u0259rd\u0259n sonra, DevOps komandas\u0131n\u0131n d\u0259st\u0259yi il\u0259, biz laz\u0131m olan brauzerl\u0259ri ehtiva ed\u0259n konteynerl\u0259ri bir pod-da yer\u0259 g\u00f6t\u00fcrm\u0259 yana\u015fmas\u0131n\u0131 se\u00e7dik ki, bu da bir i\u015f\u00e7i nod i\u00e7ind\u0259 yerl\u0259\u015fir. Bu yana\u015fma, nodlar\u0131n say\u0131n\u0131 art\u0131rmaqla \u00fcf\u00fcqi geni\u015fl\u0259ndirm\u0259 strategiyas\u0131n\u0131 t\u0259tbiq etm\u0259y\u0259 imkan tan\u0131y\u0131r. \u00dcmid edir\u0259m ki, g\u0259l\u0259c\u0259kd\u0259 v\u0259ziyy\u0259t d\u0259yi\u015f\u0259c\u0259k v\u0259 daha \u00e7ox yax\u015f\u0131 yana\u015fmalar\u0131n v\u0259 haz\u0131r h\u0259ll\u0259rin t\u0259svirl\u0259rini g\u00f6r\u0259c\u0259yik, x\u00fcsusil\u0259 d\u0259 Selenium grid 4-\u00fcn d\u0259yi\u015fdirilmi\u015f daxili mimarisi burax\u0131ld\u0131qdan sonra.<\/p>\n<p><u>Selenoid<\/u>:<\/p>\n<p>Haz\u0131rda K8s-d\u0259 Selenoid yerl\u0259\u015fdirm\u0259k \u0259n b\u00f6y\u00fck m\u0259yusiyy\u0259tdir. Onlar uy\u011fun g\u0259lmir. Teorik c\u0259h\u0259td\u0259n Selenoid konteynerini bir pod i\u00e7ind\u0259 i\u015f\u0259 sala bil\u0259rik, amma Selenoid brauzerl\u0259 konteynerl\u0259ri i\u015f\u0259 salma\u011fa ba\u015flayanda, onlar h\u0259l\u0259 d\u0259 h\u0259min pod i\u00e7ind\u0259 olacaq. Bu, geni\u015fl\u0259ndirm\u0259ni m\u00fcmk\u00fcn etm\u0259z v\u0259 n\u0259tic\u0259d\u0259 Selenoid-in klasterd\u0259ki i\u015fi virtual ma\u015f\u0131n i\u00e7ind\u0259kind\u0259n f\u0259rqli olmayacaq. Hekay\u0259nin sonu.<\/p>\n<p><u>Moon<\/u>:<\/p>\n<p>Bu Selenoid il\u0259 i\u015fl\u0259y\u0259rk\u0259n bu dar bo\u011faz\u0131 bildikd\u0259n sonra, t\u0259rtibat\u00e7\u0131lar Moon adlanan daha g\u00fccl\u00fc bir al\u0259t buraxd\u0131lar. Bu al\u0259t, Kubernetes il\u0259 i\u015fl\u0259m\u0259k \u00fc\u00e7\u00fcn n\u0259z\u0259rd\u0259 tutulmu\u015fdur v\u0259 n\u0259tic\u0259d\u0259 avtomatik geni\u015fl\u0259ndirm\u0259 funksiyas\u0131n\u0131 istifad\u0259 etm\u0259k m\u00fcmk\u00fcnd\u00fcr. Bununla yana\u015f\u0131, indiki d\u00f6vrd\u0259 bu, <u>t\u0259k<\/u> Selenium d\u00fcnyas\u0131nda native K8s klaster d\u0259st\u0259yi olan birba\u015fa bir al\u0259tdir (<i>art\u0131q yoxdur, n\u00f6vb\u0259ti al\u0259t\u0259 bax\u0131n <\/i>). Moon-un bu d\u0259st\u0259yi t\u0259min ed\u0259n \u0259sas x\u00fcsusiyy\u0259ti:\u00a0<\/p>\n<blockquote><p>Tamamil\u0259 v\u0259ziyy\u0259tsizdir. Selenoid hal-haz\u0131rda i\u015fl\u0259y\u0259n brauzer sessiyalar\u0131 haqq\u0131nda m\u0259lumat\u0131 yadda\u015fda saxlay\u0131r. \u018fg\u0259r hans\u0131sa bir s\u0259b\u0259bd\u0259n prosesi \u00e7\u00f6k\u0259rs\u0259, b\u00fct\u00fcn i\u015fl\u0259y\u0259n sessiyalar itirilir. Moon, \u0259ksin\u0259, daxili bir v\u0259ziyy\u0259t\u0259 malik deyil v\u0259 m\u0259lumat m\u0259rk\u0259zl\u0259ri aras\u0131nda replika edil\u0259 bil\u0259r. Brauzer sessiyalar\u0131 bir v\u0259 ya daha \u00e7ox replika \u00e7\u00f6ks\u0259 bel\u0259, ya\u015fama\u011fa davam edir.<\/p><\/blockquote>\n<p>Bel\u0259likl\u0259, Moon m\u00fck\u0259mm\u0259l bir h\u0259ll olsa da, bir problemi var, o da pulsuz olmamas\u0131d\u0131r. Qiym\u0259t seanslar\u0131n say\u0131ndan as\u0131l\u0131d\u0131r. Pulsuz yaln\u0131z 0-4 seans\u0131 ba\u015flatmaq m\u00fcmk\u00fcnd\u00fcr, bu is\u0259 o q\u0259d\u0259r d\u0259 faydal\u0131 deyil. Lakin, art\u0131q be\u015finci seansdan ba\u015flayaraq, h\u0259r biri \u00fc\u00e7\u00fcn 5 $ \u00f6d\u0259m\u0259li olacaqs\u0131n\u0131z. \u015eirk\u0259t\u0259 g\u00f6r\u0259 v\u0259ziyy\u0259t f\u0259rqli ola bil\u0259r, amma bizim v\u0259ziyy\u0259timizd\u0259 Moon-dan istifad\u0259 m\u0259nas\u0131zd\u0131r. Yuxar\u0131da da qeyd etdiyim kimi, t\u0259l\u0259b \u0259sas\u0131nda Selenium Grid il\u0259 VM-l\u0259ri ba\u015flada bil\u0259rik, ya da klasterd\u0259ki Nodes say\u0131n\u0131 art\u0131ra bil\u0259rik. Bir pipeline \u00fc\u00e7\u00fcn t\u0259xmin\u0259n 500 brauzer i\u015f\u0259 sal\u0131r\u0131q v\u0259 testl\u0259r bitdikd\u0259n sonra b\u00fct\u00fcn resurslar\u0131 dayand\u0131r\u0131r\u0131q. \u018fg\u0259r Moon-dan istifad\u0259 ets\u0259ydik, \u0259lav\u0259 500 x 5 = 2500 $ ayda \u00f6d\u0259m\u0259li olacaqd\u0131q v\u0259 testl\u0259ri n\u0259 q\u0259d\u0259r tez-tez i\u015f\u0259 salsaq da f\u0259rq etm\u0259z. Yen\u0259 d\u0259, \"Moon-dan istifad\u0259 etm\u0259yin\" demir\u0259m. Sizin tap\u015f\u0131r\u0131qlar\u0131n\u0131z \u00fc\u00e7\u00fcn bu, \u0259v\u0259zsiz bir h\u0259ll ola bil\u0259r, m\u0259s\u0259l\u0259n, t\u0259\u015fkilat\u0131n\u0131zda \u00e7oxlu layih\u0259l\u0259r\/qruplar varsa v\u0259 ham\u0131s\u0131 \u00fc\u00e7\u00fcn b\u00f6y\u00fck bir ortaq klaster\u0259 ehtiyac\u0131n\u0131z varsa. H\u0259r zamank\u0131 kimi, sonunda bir link qoyuram v\u0259 \u00f6z tap\u015f\u0131r\u0131\u011f\u0131n\u0131z kontekstind\u0259 b\u00fct\u00fcn laz\u0131m olan hesablamalar\u0131 etm\u0259y\u0259 d\u0259v\u0259t edir\u0259m.<\/p>\n<p><u>Callisto<\/u>: (<i><strong>Diqq\u0259t! Bu, orijinal m\u0259qal\u0259d\u0259 yoxdur v\u0259 yaln\u0131z rus dilind\u0259ki t\u0259rc\u00fcm\u0259d\u0259 var.<\/strong><\/i>)<\/p>\n<p>Dediyim kimi, Selenium \u2013 \u00e7ox populyar bir al\u0259tdir, IT sah\u0259si is\u0259 \u00e7ox s\u00fcr\u0259tl\u0259 inki\u015faf edir. T\u0259rc\u00fcm\u0259 il\u0259 m\u0259\u015f\u011ful oldu\u011fum zaman, \u015f\u0259b\u0259k\u0259d\u0259 yeni \u00fcmidverici al\u0259t Callisto (Cypress v\u0259 dig\u0259r Selenium \"qatil\"l\u0259rin\u0259 salam) ortaya \u00e7\u0131xd\u0131. O, K8s il\u0259 yerli i\u015fl\u0259yir v\u0259 Selenoid konteynerl\u0259rini pods-da, Nodes-da paylanm\u0131\u015f \u015f\u0259kild\u0259 i\u015f\u0259 salma\u011fa imkan verir. H\u0259r \u015fey sand\u0131qdan \u00e7\u0131xan kimi i\u015fl\u0259yir, avtomatik \u00f6l\u00e7\u00fc art\u0131rma da daxil. Fantastikdir, amma test edilm\u0259lidir. Art\u0131q bu al\u0259ti i\u015f\u0259 salma\u011f\u0131 bacard\u0131m v\u0259 bir ne\u00e7\u0259 eksperiment aparm\u0131\u015fam. Amma n\u0259tic\u0259l\u0259ri uzun m\u00fcdd\u0259t \u0259rzind\u0259 \u0259ld\u0259 etdikd\u0259n sonra n\u0259tic\u0259 \u00e7\u0131xarmaq h\u0259l\u0259 tezdir; b\u0259lk\u0259 d\u0259 bunu g\u0259l\u0259c\u0259k m\u0259qal\u0259l\u0259rd\u0259 n\u0259z\u0259rd\u0259n ke\u00e7ir\u0259r\u0259m. Hal-haz\u0131rda sad\u0259c\u0259 m\u00fcst\u0259qil ara\u015fd\u0131rmalar \u00fc\u00e7\u00fcn linkl\u0259r qoyuram.\u00a0\u00a0<\/p>\n<h3>\u0130nfrastrukturun cari v\u0259ziyy\u0259tinin t\u0259sviri<\/p>\n<h3><img decoding=\"async\" alt=\"DevOps al\u0259tl\u0259ri yaln\u0131z DevOps \u00fc\u00e7\u00fcn deyil. S\u0131f\u0131rdan test avtomatla\u015fd\u0131rmas\u0131 infrastrukturu qurma prosesi\" src=\"\/wp-content\/uploads\/2020\/04\/c9c2ffd21df2a261947df809dcec7108.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>\u00d6yr\u0259nm\u0259y\u0259 dair linkl\u0259r<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/setup\/\">Kubernetes: qurma<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kelseyhightower\/kubernetes-the-hard-way\">Kubernetes: \u00e7\u0259tin yol<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/examples\/tree\/master\/staging\/selenium\">Kubernetes: Selenium<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/kubernetes-engine\">GCP: Kubernetes m\u00fch\u0259rriki<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/aerokube.com\/moon\/latest\/\">Moon<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/Kubernetes-Book-Version-November-2018-ebook\/dp\/B072TS9ZQZ\/ref=pd_sim_351_1\/147-1129855-1615632?_encoding=UTF8&amp;pd_rd_i=B072TS9ZQZ&amp;pd_rd_r=489f0d27-dd2c-4e33-b23c-a420affcba5d&amp;pd_rd_w=HLjs5&amp;pd_rd_wg=eGbU7&amp;pf_rd_p=bab57536-7c8f-4781-a8ed-3e270b9cd303&amp;pf_rd_r=G71DN3V8127KHPXQ6JFN&amp;psc=1&amp;refRID=G71DN3V8127KHPXQ6JFN\">Kubernetes Kitab\u0131<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=MmdGyqNqs9w\">Kubernetes istifad\u0259 ed\u0259r\u0259k Paylanm\u0131\u015f Avtomatla\u015fd\u0131rma<\/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>Ox\u015far al\u0259tl\u0259r<\/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. \u0130nfrastruktur kod olaraq (IaC)<\/h2>\n<p><\/p>\n<h3>Texnologiyan\u0131n q\u0131sa t\u0259sviri<\/h3>\n<p>\n V\u0259 burada son b\u00f6lm\u0259y\u0259 yax\u0131nla\u015f\u0131r\u0131q. Ad\u0259t\u0259n, bu texnologiya v\u0259 ona ba\u011fl\u0131 olan m\u0259s\u0259l\u0259l\u0259r avtomatla\u015fd\u0131rma m\u00fch\u0259ndisl\u0259rinin m\u0259suliyy\u0259tin\u0259 daxil olmur. Bunun \u00f6z s\u0259b\u0259bl\u0259ri var. Birincisi, bir \u00e7ox t\u0259\u015fkilatlarda infrastruktur m\u0259s\u0259l\u0259l\u0259ri DevOps \u015f\u00f6b\u0259sinin n\u0259zar\u0259ti alt\u0131ndad\u0131r v\u0259 inki\u015faf komandalar\u0131 pipeline-in nec\u0259 i\u015fl\u0259diyi v\u0259 bununla ba\u011fl\u0131 h\u0259r \u015feyin nec\u0259 saxlan\u0131laca\u011f\u0131 il\u0259 \u00e7ox ilgil\u0259nmir. \u0130kincisi, etiraf ed\u0259k ki, \"\u0130nfrastruktur kod olaraq (IaC)\" praktikas\u0131 h\u0259l\u0259 d\u0259 bir \u00e7ox \u015firk\u0259tl\u0259rd\u0259 t\u0259tbiq olunmur. Lakin, m\u00fctl\u0259q populyar bir trend hal\u0131na g\u0259ldi v\u0259 buna ba\u011fl\u0131 olan prosesl\u0259r\u0259, yana\u015fmalara v\u0259 al\u0259tl\u0259r\u0259 c\u0259lb olunma\u011fa \u00e7al\u0131\u015fmaq vacibdir. Yaxud, \u0259n az\u0131ndan x\u0259b\u0259rl\u0259rd\u0259 olmaq.<\/p>\n<p>Ba\u015flamaq \u00fc\u00e7\u00fcn bu yana\u015fman\u0131n istifad\u0259si motivasiyas\u0131ndan dan\u0131\u015faq. Art\u0131q GitlabCI-da testl\u0259ri icra etm\u0259k \u00fc\u00e7\u00fcn minimumda Gitlab Runner-i i\u015f\u0259 salmaq \u00fc\u00e7\u00fcn resurslara ehtiyac\u0131m\u0131z oldu\u011funu m\u00fczakir\u0259 etmi\u015fik. Brauzerl\u0259ri\/emulyatorlar\u0131 i\u015f\u0259 salmaq \u00fc\u00e7\u00fcn VM v\u0259 ya klaster ay\u0131rmal\u0131y\u0131q. Test resurslar\u0131ndan ba\u015fqa, inki\u015faf m\u00fchitl\u0259rinin, staging, production-un d\u0259st\u0259kl\u0259nm\u0259si \u00fc\u00e7\u00fcn \u0259h\u0259miyy\u0259tli sayda g\u00fcc\u0259 d\u0259 ehtiyac\u0131m\u0131z var, bunlar aras\u0131nda veril\u0259nl\u0259r bazalar\u0131, avtomatla\u015fd\u0131r\u0131lm\u0131\u015f c\u0259dv\u0259ll\u0259r, \u015f\u0259b\u0259k\u0259 konfiqurasiyalar\u0131, y\u00fckl\u0259nm\u0259 balansla\u015fd\u0131r\u0131c\u0131lar\u0131, istifad\u0259\u00e7i h\u00fcquqlar\u0131 v\u0259 s. var. \u018fsas problem, bunlar\u0131n ham\u0131s\u0131n\u0131 d\u0259st\u0259kl\u0259m\u0259k \u00fc\u00e7\u00fcn t\u0259l\u0259b olunan s\u0259yl\u0259rd\u0259dir. D\u0259yi\u015fiklikl\u0259r etm\u0259y\u0259 v\u0259 yenil\u0259m\u0259l\u0259ri yayma\u011fa bir ne\u00e7\u0259 yol var. M\u0259s\u0259l\u0259n, GCP kontekstind\u0259 brauzerd\u0259 UI konsolunu istifad\u0259 ed\u0259r\u0259k b\u00fct\u00fcn \u0259m\u0259liyyatlar\u0131 d\u00fcym\u0259l\u0259ri klikl\u0259y\u0259r\u0259k icra ed\u0259 bil\u0259rik. Alternativ bir metod, bulud varl\u0131qlar\u0131 il\u0259 qar\u015f\u0131l\u0131ql\u0131 \u0259laq\u0259 \u00fc\u00e7\u00fcn API \u00e7a\u011f\u0131r\u0131\u015flar\u0131n\u0131n istifad\u0259si v\u0259 ya gcloud komanda al\u0259tinin m\u00fcvafiq manipulyasiyalar\u0131n yerin\u0259 yetirilm\u0259si \u00fc\u00e7\u00fcn istifad\u0259sidir. Lakin h\u0259qiq\u0259t\u0259n m\u00fcxt\u0259lif varl\u0131qlar\u0131n v\u0259 infrastruktur elementl\u0259rinin say\u0131 \u00e7ox olduqda, b\u00fct\u00fcn \u0259m\u0259liyyatlar\u0131 \u0259l il\u0259 h\u0259yata ke\u00e7irm\u0259k \u00e7\u0259tin v\u0259 ya h\u0259tta m\u00fcmk\u00fcns\u00fcz olur. Daha \u00e7ox, b\u00fct\u00fcn bu \u0259l \u0259m\u0259liyyatlar\u0131 n\u0259zar\u0259tsizdir. Onlar\u0131 icra etm\u0259zd\u0259n \u0259vv\u0259l review-a g\u00f6nd\u0259rm\u0259k, versiya n\u0259zar\u0259ti sistemini istifad\u0259 etm\u0259k v\u0259 hadis\u0259y\u0259 s\u0259b\u0259b olan d\u00fcz\u0259li\u015fl\u0259ri tez bir zamanda geri qaytarmaq m\u00fcmk\u00fcn deyil. Bel\u0259 probleml\u0259ri h\u0259ll etm\u0259k \u00fc\u00e7\u00fcn m\u00fch\u0259ndisl\u0259r avtomatik bash\/shell skriptl\u0259ri yaratm\u0131\u015f v\u0259 yarad\u0131r, lakin bunlar \u0259vv\u0259lki metodlardan \u00e7ox da f\u0259rql\u0259nmir, \u00e7\u00fcnki onlar\u0131 s\u00fcr\u0259tl\u0259 oxumaq, ba\u015fa d\u00fc\u015fm\u0259k, prosedura t\u0259rzind\u0259 d\u0259st\u0259kl\u0259m\u0259k v\u0259 modifikasiya etm\u0259k asan deyil.<\/p>\n<p>Bu m\u0259qal\u0259d\u0259 v\u0259 praktiki b\u0259l\u0259d\u00e7id\u0259 m\u0259n IaC t\u0259tbiqin\u0259 aid olan 2 al\u0259td\u0259n istifad\u0259 edir\u0259m. Bunlar Terraform v\u0259 Ansible-d\u0131r. B\u0259zil\u0259ri eyni vaxtda istifad\u0259 etm\u0259yin m\u0259nas\u0131z oldu\u011funu d\u00fc\u015f\u00fcn\u00fcr, \u00e7\u00fcnki onlar\u0131n funksionall\u0131\u011f\u0131 ox\u015fard\u0131r v\u0259 bir-birini \u0259v\u0259z edir. Lakin m\u0259s\u0259l\u0259 bundad\u0131r ki, onlar\u0131n qar\u015f\u0131s\u0131nda qoyulan tap\u015f\u0131r\u0131qlar tamamil\u0259 f\u0259rqlidir. H\u0259tta bu al\u0259tl\u0259rin bir-birini tamamlamal\u0131 oldu\u011fu fakt\u0131, HashiCorp v\u0259 RedHat \u015firk\u0259tl\u0259rini t\u0259msil ed\u0259n inki\u015faf etdiricil\u0259r t\u0259r\u0259find\u0259n ortaq t\u0259qdimatla t\u0259sdiql\u0259nmi\u015fdir. Konseptual f\u0259rq ondad\u0131r ki, Terraform \u2013 serverl\u0259rin \u00f6zl\u0259rini idar\u0259 etm\u0259k \u00fc\u00e7\u00fcn provisioning al\u0259tidir. Eyni zamanda Ansible, bu serverl\u0259rd\u0259 proqram t\u0259minat\u0131n\u0131n qura\u015fd\u0131r\u0131lmas\u0131, konfiqurasiyas\u0131 v\u0259 idar\u0259 edilm\u0259si il\u0259 m\u0259\u015f\u011fuldur.<\/p>\n<p>Bu al\u0259tl\u0259rin bir dig\u0259r \u0259sas f\u0259rql\u0259ndirici c\u0259h\u0259ti kod yazma \u00fcslubudur. Bash v\u0259 Ansible-dan f\u0259rqli olaraq, Terraform deklarativ \u00fcslubdan istifad\u0259 edir ki, bu da yerin\u0259 yetirilm\u0259li olan arzu olunan son v\u0259ziyy\u0259tin t\u0259svirin\u0259 \u0259saslan\u0131r. M\u0259s\u0259l\u0259n, \u0259g\u0259r 10 VM yaradaca\u011f\u0131qsa v\u0259 d\u0259yi\u015fiklikl\u0259ri Terraform vasit\u0259sil\u0259 t\u0259tbiq ed\u0259c\u0259yiks\u0259, onda 10 VM \u0259ld\u0259 ed\u0259c\u0259yik. Skripti bir daha t\u0259tbiq ets\u0259k, he\u00e7 n\u0259 olmayacaq, \u00e7\u00fcnki art\u0131q 10 VM-limiz var v\u0259 Terraform bununla ba\u011fl\u0131 m\u0259lumatl\u0131d\u0131r, \u00e7\u00fcnki o, infrastrukturun cari v\u0259ziyy\u0259tini state fayl\u0131nda saxlay\u0131r. Ancaq Ansible prosedur yana\u015fmas\u0131ndan istifad\u0259 edir v\u0259 \u0259g\u0259r ondan 10 VM yaratma\u011f\u0131 ist\u0259s\u0259k, birinci i\u015f\u0259 sal\u0131nd\u0131qda 10 VM \u0259ld\u0259 ed\u0259c\u0259yik, bu, Terraform il\u0259 eynidir. Amma bir daha i\u015f\u0259 sald\u0131qda, art\u0131q 20 VM olacaq. Burada \u0259sas f\u0259rq d\u0259 budur. Prosedur \u00fcslubunda cari v\u0259ziyy\u0259ti saxlam\u0131r\u0131q v\u0259 sad\u0259c\u0259 yerin\u0259 yetirilm\u0259si laz\u0131m olan add\u0131mlar\u0131n ard\u0131c\u0131ll\u0131\u011f\u0131n\u0131 t\u0259svir edirik. T\u0259bii ki, m\u00fcxt\u0259lif v\u0259ziyy\u0259tl\u0259ri emal ed\u0259 bil\u0259rik, resurslar\u0131n v\u0259 cari v\u0259ziyy\u0259tin varl\u0131l\u0131\u011f\u0131 \u00fc\u00e7\u00fcn bir ne\u00e7\u0259 yoxlama \u0259lav\u0259 ed\u0259 bil\u0259rik, amma bu logikan\u0131 kontrol etm\u0259y\u0259 vaxt v\u0259 enerjimizi s\u0259rf etm\u0259yin m\u0259nas\u0131 yoxdur. \u00dcst\u0259lik, bu, s\u0259hv etm\u0259 riskini art\u0131r\u0131r.\u00a0<\/p>\n<p>Yuxar\u0131da qeyd olunanlar\u0131 \u00fcmumil\u0259\u015fdirs\u0259k, serverl\u0259rin provisioninqi \u00fc\u00e7\u00fcn daha uy\u011fun al\u0259tin Terraform v\u0259 deklarativ notasiya oldu\u011funu n\u0259tic\u0259 \u00e7\u0131xarmaq olar. Konfiqurasiyalar\u0131n idar\u0259 olunmas\u0131 i\u015fini is\u0259 Ansible-\u0259 h\u0259val\u0259 etm\u0259k daha yax\u015f\u0131d\u0131r. Bununla ba\u011fl\u0131 ayd\u0131nla\u015fd\u0131qdan sonra, avtomatla\u015fd\u0131rma kontekstind\u0259 istifad\u0259 n\u00fcmun\u0259l\u0259rin\u0259 n\u0259z\u0259r salaq.<\/p>\n<h3>Avtomatla\u015fd\u0131rma infrastrukturu \u00fc\u00e7\u00fcn d\u0259y\u0259ri<\/h3>\n<p>\n Burada yaln\u0131z onu anlamaq vacibdir ki, test avtomatla\u015fd\u0131rmas\u0131n\u0131n infrastrukturu \u015firk\u0259t\u0131n b\u00fct\u00fcn infrastrukturu il\u0259 bir hiss\u0259 kimi n\u0259z\u0259r\u0259 al\u0131nmal\u0131d\u0131r. Bu is\u0259 dem\u0259kdir ki, b\u00fct\u00fcn IaC t\u0259cr\u00fcb\u0259l\u0259ri t\u0259\u015fkilat\u0131n resurslar\u0131na qlobal \u015f\u0259kild\u0259 t\u0259tbiq edilm\u0259lidir. Bunun \u00fc\u00e7\u00fcn kim m\u0259suliyy\u0259t da\u015f\u0131y\u0131r, sizin prosesl\u0259rinizd\u0259n as\u0131l\u0131d\u0131r. DevOps komandas\u0131 bu m\u0259s\u0259l\u0259l\u0259rd\u0259 daha t\u0259cr\u00fcb\u0259lidir, onlar ba\u015f ver\u0259n hadis\u0259l\u0259rin tam m\u0259nz\u0259r\u0259sini g\u00f6r\u00fcrl\u0259r. Lakin QA m\u00fch\u0259ndisl\u0259ri avtomatla\u015fd\u0131rma prosesinin qurulmas\u0131nda v\u0259 pipeline strukturunda daha \u00e7ox i\u015ftirak etdikl\u0259ri \u00fc\u00e7\u00fcn laz\u0131m olan b\u00fct\u00fcn d\u0259yi\u015fiklikl\u0259ri v\u0259 inki\u015faf imkanlar\u0131n\u0131 daha yax\u015f\u0131 g\u00f6r\u0259 bilirl\u0259r. \u018fn yax\u015f\u0131 variant birg\u0259 i\u015fl\u0259m\u0259k, bilik v\u0259 ideyalar\u0131 m\u00fcbadil\u0259 etm\u0259kdir ki, g\u00f6zl\u0259nil\u0259n n\u0259tic\u0259y\u0259 nail olunsun.\u00a0<\/p>\n<p>Terraform v\u0259 Ansible-in test avtomatla\u015fd\u0131rmas\u0131 v\u0259 \u0259vv\u0259ll\u0259r m\u00fczakir\u0259 etdiyimiz al\u0259tl\u0259r kontekstind\u0259 istifad\u0259sin\u0259 dair bir ne\u00e7\u0259 n\u00fcmun\u0259ni t\u0259qdim edim:<\/p>\n<p>1. Terraform vasit\u0259sil\u0259 VM-l\u0259rin v\u0259 klasterl\u0259rin t\u0259l\u0259b olunan x\u00fcsusiyy\u0259tl\u0259rini v\u0259 parametrl\u0259rini t\u0259svir etm\u0259k.<\/p>\n<p>2. Ansible vasit\u0259sil\u0259 test \u00fc\u00e7\u00fcn laz\u0131m olan al\u0259tl\u0259ri qura\u015fd\u0131rmaq: docker, Selenoid, Selenium Grid v\u0259 t\u0259l\u0259b olunan brauzer\/emulator versiyalar\u0131n\u0131 y\u00fckl\u0259m\u0259k.<\/p>\n<p>3. Terraform vasit\u0259sil\u0259 GitLab Runner-in i\u015f\u0259 sal\u0131naca\u011f\u0131 VM-in x\u00fcsusiyy\u0259tl\u0259rini t\u0259svir etm\u0259k.<\/p>\n<p>4. GitLab Runner v\u0259 z\u0259ruri \u0259lav\u0259 alqlar\u0131 Ansible il\u0259 qura\u015fd\u0131r\u0131n, parametrl\u0259ri v\u0259 konfiqurasiyalar\u0131 m\u00fc\u0259yy\u0259n edin.<\/p>\n<h3>\u0130nfrastrukturun cari v\u0259ziyy\u0259tinin t\u0259sviri<\/h3>\n<p>\n<img decoding=\"async\" alt=\"DevOps al\u0259tl\u0259ri yaln\u0131z DevOps \u00fc\u00e7\u00fcn deyil. S\u0131f\u0131rdan test avtomatla\u015fd\u0131rmas\u0131 infrastrukturu qurma prosesi\" src=\"\/wp-content\/uploads\/2020\/04\/5d793a800a4ef62e181e6cb3a3f0544e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>\u00d6yr\u0259nm\u0259k \u00fc\u00e7\u00fcn ba\u011flant\u0131lar:<\/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 v\u0259 Terraform daha yax\u015f\u0131d\u0131r<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/blog.gruntwork.io\/a-comprehensive-guide-to-terraform-b3d32832baca\">Terraform \u00fc\u00e7\u00fcn \u018ftrafl\u0131 B\u0259l\u0259d\u00e7i<\/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\">Niy\u0259 Terraform-dan, Chef, Puppet, Ansible, SaltStack v\u0259 ya CloudFormation-dan istifad\u0259 edirik<\/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>Ox\u015far al\u0259tl\u0259r<\/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>N\u0259tic\u0259l\u0259ri yekunla\u015fd\u0131raq!<\/h2>\n<p><\/p>\n<p><strong>Add\u0131m<\/strong><br \/>\n<strong>Texnologiya<\/strong><br \/>\n<strong>Alatlar<\/strong><br \/>\n<strong>Avtomatla\u015fd\u0131rma infrastrukturu \u00fc\u00e7\u00fcn d\u0259y\u0259ri<\/strong><\/p>\n<p><strong>1<\/strong><br \/>\nYerli icra<br \/>\nNode.js, Selenium, Appium<\/p>\n<ul>\n<li>Web v\u0259 mobil \u00fc\u00e7\u00fcn \u0259n populyar al\u0259tl\u0259r<\/li>\n<li>Bir \u00e7ox dil v\u0259 platforma d\u0259st\u0259yi (Node.js daxil olmaqla)<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>2<\/strong><br \/>\nVersiya n\u0259zar\u0259t sisteml\u0259ri\u00a0<br \/>\nGit<\/p>\n<ul>\n<li>Kodu inki\u015faf etdirm\u0259 il\u0259 eyni \u00fcst\u00fcnl\u00fckl\u0259r<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>3<\/strong><br \/>\nKonteynerl\u0259\u015fdirm\u0259<br \/>\nDocker, Selenium grid, Selenoid (Web, Android)<\/p>\n<ul>\n<li>Testl\u0259rin paralel icras\u0131<\/li>\n<li>\u0130zolyasiya olunmu\u015f m\u00fchitl\u0259r<\/li>\n<li>Sad\u0259, \u00e7evik versiya g\u00fcnc\u0259ll\u0259m\u0259si<\/li>\n<li>\u0130stifad\u0259 olunmayan resurslar\u0131n dinamik dayand\u0131r\u0131lmas\u0131<\/li>\n<li>Asan konfiqurasiya<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>4<\/strong><br \/>\nCI \/ CD<br \/>\nGitlab CI<\/p>\n<ul>\n<li>Testl\u0259r boru k\u0259m\u0259rinin bir hiss\u0259sidir<\/li>\n<li>Tez geri bildirim<\/li>\n<li>B\u00fct\u00fcn \u015firk\u0259t \/ komanda \u00fc\u00e7\u00fcn g\u00f6r\u00fcn\u00fcrl\u00fck<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>5<\/strong><br \/>\nBulud platformalar\u0131<br \/>\nGoogle Cloud Platform<\/p>\n<ul>\n<li>T\u0259l\u0259b olunan resurslar (yaln\u0131z laz\u0131m olduqda \u00f6d\u0259yirik)<\/li>\n<li>Asan idar\u0259 etm\u0259k v\u0259 g\u00fcnc\u0259ll\u0259m\u0259k<\/li>\n<li>B\u00fct\u00fcn resurslar\u0131n g\u00f6r\u00fcn\u00fcrl\u00fc\u011f\u00fc v\u0259 n\u0259zar\u0259ti<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>6<\/strong><br \/>\nOrkestrasiya<br \/>\nKubernetes<br \/>\nKonteynerl\u0259rd\u0259 brauzer\/emulatorlarla birlikd\u0259 pods kontekstind\u0259:<\/p>\n<ul>\n<li>\u015ekalala\u015fd\u0131rma \/ avtomatik \u015fkalala\u015fd\u0131rma<\/li>\n<li>\u00d6z\u00fcn\u00fc b\u0259rpa etm\u0259<\/li>\n<li>G\u00fcnc\u0259ll\u0259m\u0259l\u0259r v\u0259 t\u0259hqir etm\u0259l\u0259r k\u0259silm\u0259d\u0259n<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>7<\/strong><br \/>\nInfrastruktur \u015fifr\u0259 olaraq (IaC)<br \/>\nTerraform, Ansible<\/p>\n<ul>\n<li>\u0130nki\u015faf infrastrukturunda eyni \u00fcst\u00fcnl\u00fckl\u0259r<\/li>\n<li>Kodu versiyala\u015fd\u0131rman\u0131n b\u00fct\u00fcn \u00fcst\u00fcnl\u00fckl\u0259ri<\/li>\n<li>D\u0259yi\u015fiklikl\u0259ri etm\u0259k v\u0259 saxlamaq asand\u0131r<\/li>\n<li>Tamamil\u0259 avtomatla\u015fd\u0131r\u0131lm\u0131\u015fd\u0131r<\/li>\n<\/ul>\n<p><\/p>\n<h2>Fikir x\u0259rit\u0259si diaqramlar\u0131: infrastrukturun t\u0259kam\u00fcl\u00fc<\/h2>\n<p>\nadd\u0131m 1: Yerli<br \/>\n<img decoding=\"async\" alt=\"DevOps al\u0259tl\u0259ri yaln\u0131z DevOps \u00fc\u00e7\u00fcn deyil. S\u0131f\u0131rdan test avtomatla\u015fd\u0131rmas\u0131 infrastrukturu qurma prosesi\" src=\"\/wp-content\/uploads\/2020\/04\/507908ba097a603adc3b301ab2f94a8d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>add\u0131m 2: VCS<br \/>\n<img decoding=\"async\" alt=\"DevOps al\u0259tl\u0259ri yaln\u0131z DevOps \u00fc\u00e7\u00fcn deyil. S\u0131f\u0131rdan test avtomatla\u015fd\u0131rmas\u0131 infrastrukturu qurma prosesi\" src=\"\/wp-content\/uploads\/2020\/04\/71c5170293d98375d8ab86d05eb47a33.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>add\u0131m 3: Konteynerl\u0259\u015fdirm\u0259\u00a0<br \/>\n<img decoding=\"async\" alt=\"DevOps al\u0259tl\u0259ri yaln\u0131z DevOps \u00fc\u00e7\u00fcn deyil. S\u0131f\u0131rdan test avtomatla\u015fd\u0131rmas\u0131 infrastrukturu qurma prosesi\" src=\"\/wp-content\/uploads\/2020\/04\/da33442a592851e07c3f5800c3ee9ead.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>add\u0131m 4: CI\/CD\u00a0<br \/>\n<img decoding=\"async\" alt=\"DevOps al\u0259tl\u0259ri yaln\u0131z DevOps \u00fc\u00e7\u00fcn deyil. S\u0131f\u0131rdan test avtomatla\u015fd\u0131rmas\u0131 infrastrukturu qurma prosesi\" src=\"\/wp-content\/uploads\/2020\/04\/900f18b45124412a1ad00d3901efb40e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>add\u0131m 5: Bulud Platformalar\u0131<br \/>\n<img decoding=\"async\" alt=\"DevOps al\u0259tl\u0259ri yaln\u0131z DevOps \u00fc\u00e7\u00fcn deyil. S\u0131f\u0131rdan test avtomatla\u015fd\u0131rmas\u0131 infrastrukturu qurma prosesi\" src=\"\/wp-content\/uploads\/2020\/04\/840e5063141ac8787612e2fc46b5d690.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>add\u0131m 6: Orkestrasiya<br \/>\n<img decoding=\"async\" alt=\"DevOps al\u0259tl\u0259ri yaln\u0131z DevOps \u00fc\u00e7\u00fcn deyil. S\u0131f\u0131rdan test avtomatla\u015fd\u0131rmas\u0131 infrastrukturu qurma prosesi\" src=\"\/wp-content\/uploads\/2020\/04\/4651b552efdc893695cbf359c6992e9e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>add\u0131m 7: IaC<br \/>\n<img decoding=\"async\" alt=\"DevOps al\u0259tl\u0259ri yaln\u0131z DevOps \u00fc\u00e7\u00fcn deyil. S\u0131f\u0131rdan test avtomatla\u015fd\u0131rmas\u0131 infrastrukturu qurma prosesi\" src=\"\/wp-content\/uploads\/2020\/04\/e784130f570260fc6c3aa263916e3db5.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Sonra ne olacak?<\/h2>\n<p>\nBel\u0259likl\u0259, bu m\u0259qal\u0259nin sonudur. Amma yekunda sizinl\u0259 b\u0259zi raz\u0131l\u0131qlar qurmaq ist\u0259rdim.<\/p>\n<p><u>Sizin t\u0259r\u0259finizd\u0259n<\/u><br \/>\n Ba\u015flan\u011f\u0131cda dediyim kimi, m\u0259qal\u0259nin praktiki fayda g\u0259tirm\u0259sini v\u0259 \u00f6yr\u0259ndiyiniz bilikl\u0259ri real i\u015fd\u0259 t\u0259tbiq etm\u0259y\u0259 k\u00f6m\u0259k etm\u0259sini ist\u0259rdim. Yenid\u0259n \u0259lav\u0259 edir\u0259m<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/AlexeyAltunin\/devops-tools-for-qa-automation-infrastructure\"> praktik b\u0259l\u0259d\u00e7i \u00fc\u00e7\u00fcn ba\u011flant\u0131<\/a><\/noindex>.<\/p>\n<p>Amma b\u00fct\u00fcn bunlardan sonra bel\u0259, dayanmay\u0131n, t\u0259cr\u00fcb\u0259 edin, m\u00fcvafiq ba\u011flant\u0131lar\u0131 v\u0259 kitablar\u0131 \u00f6yr\u0259nin, sizin \u015firk\u0259tinizd\u0259 bunun nec\u0259 i\u015fl\u0259diyini \u00f6yr\u0259nin, t\u0259kmill\u0259\u015fdiril\u0259c\u0259k yerl\u0259ri tap\u0131n v\u0259 buna qat\u0131l\u0131n. U\u011furlar!<\/p>\n<p><u>M\u0259nim t\u0259r\u0259fimd\u0259n<\/u><\/p>\n<p>Ba\u015fl\u0131qdan g\u00f6r\u00fcnd\u00fcy\u00fc kimi, bu yaln\u0131z birinci hiss\u0259 idi. Bu q\u0259d\u0259r b\u00f6y\u00fck olmas\u0131na baxmayaraq, burada h\u0259l\u0259 d\u0259 vacib m\u00f6vzular a\u00e7\u0131lmam\u0131\u015fd\u0131r. \u0130kinci hiss\u0259d\u0259 IOS kontekstind\u0259 avtomatla\u015fd\u0131rma infrastrukturunu n\u0259z\u0259rd\u0259n ke\u00e7irm\u0259yi planla\u015fd\u0131r\u0131ram. Apple-\u0131n IOS simulatorlar\u0131n\u0131 yaln\u0131z macOS sisteml\u0259rind\u0259 i\u015f\u0259 salma\u011fa dair m\u0259hdudiyy\u0259tl\u0259rin\u0259 g\u00f6r\u0259, h\u0259ll\u0259r paketimiz daralm\u0131\u015fd\u0131r. M\u0259s\u0259l\u0259n, simulatoru i\u015f\u0259 salmaq \u00fc\u00e7\u00fcn Docker-dan v\u0259 ya virtual ma\u015f\u0131nlar \u00fc\u00e7\u00fcn ictimai buludlardan istifad\u0259 etm\u0259k imkan\u0131m\u0131z yoxdur. Amma bu, alternativl\u0259rin olmamas\u0131 dem\u0259k deyil. M\u0259n sizi qabaqc\u0131l h\u0259ll\u0259r v\u0259 m\u00fcasir al\u0259tl\u0259rl\u0259 ba\u011fl\u0131 m\u0259lumatland\u0131rma\u011fa \u00e7al\u0131\u015facam!<\/p>\n<p>Bundan \u0259lav\u0259, monitoring il\u0259 ba\u011fl\u0131 olduqca b\u00f6y\u00fck m\u00f6vzular\u0131 da qa\u00e7\u0131rd\u0131m. 3-c\u00fc hiss\u0259d\u0259, infrastrukturun izl\u0259nm\u0259si \u00fc\u00e7\u00fcn \u0259n populyar al\u0259tl\u0259ri v\u0259 hans\u0131 m\u0259lumatlar\u0131 v\u0259 metrikalar\u0131 n\u0259z\u0259r\u0259 almaq laz\u0131m oldu\u011funu m\u00fczakir\u0259 etm\u0259yi planla\u015fd\u0131r\u0131ram.<\/p>\n<p>\u018fn sonda, g\u0259l\u0259c\u0259kd\u0259 m\u0259n test infrastrukturu qurmaq v\u0259 tan\u0131nm\u0131\u015f al\u0259tl\u0259r haqq\u0131nda video kursu buraxma\u011f\u0131 planla\u015fd\u0131r\u0131ram. Haz\u0131rda internetd\u0259 DevOps \u00fczr\u0259 \u00e7ox sayda kurs v\u0259 m\u00fchazir\u0259 var, amma b\u00fct\u00fcn materiallar inki\u015faf kontekstind\u0259 t\u0259qdim edilir, avtomatla\u015fd\u0131r\u0131lm\u0131\u015f testl\u0259\u015fdirm\u0259 kontekstind\u0259 deyil. Bu m\u0259s\u0259l\u0259d\u0259 m\u0259nim \u00fc\u00e7\u00fcn geri bildirim \u00e7ox \u00f6n\u0259mlidir; bel\u0259 bir kursun test\u00e7il\u0259r v\u0259 avtomatla\u015fd\u0131r\u0131c\u0131lar c\u0259miyy\u0259ti \u00fc\u00e7\u00fcn maraql\u0131 v\u0259 d\u0259y\u0259rli olub-olmayaca\u011f\u0131 bar\u0259d\u0259 fikrinizi bilm\u0259k ist\u0259rdim. \u018fvv\u0259lc\u0259d\u0259n t\u0259\u015f\u0259kk\u00fcr edir\u0259m!<\/h3>\n<\/h3>\n<p>M\u0259nb\u0259: <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.0.1 - 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\/az\/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.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"az_AZ\" \/>\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\/az\/blog\/administrirovanie\/devops-instrumenty-ne-tolko-dlya-devops-proczess-postroeniya-infrastruktury-avtomatizaczii-testirovaniya-s-nulya\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-04-21T05:42:22+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-04-21T05:42:22+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47DevOps al\u0259tl\u0259ri yaln\u0131z DevOps \u00fc\u00e7\u00fcn deyil. Test avtomatla\u015fd\u0131rma infrastrukturunu s\u0131f\u0131rdan qurma prosesi | ProHoster","description":"H hiss\u0259 1: Veb \/ Android Qeyd: bu m\u0259qal\u0259 orijinal m\u0259qal\u0259nin rus dilin\u0259 t\u0259rc\u00fcm\u0259sidir.","canonical_url":"https:\/\/prohoster.info\/az\/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":"az_AZ","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\/az\/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\/az\/wp-json\/wp\/v2\/posts\/78676","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/comments?post=78676"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/posts\/78676\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/media\/78677"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/media?parent=78676"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/categories?post=78676"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/tags?post=78676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}