Ang mga gamit sa DevOps dili lang para sa DevOps. Ang proseso sa pagtukod sa usa ka imprastraktura sa pagsulay sa automation gikan sa wala

Bahin 1: Web/Android

Примечание: kini nga artikulo usa ka hubad sa Russian nga orihinal nga artikulo "Ang mga himan sa DevOps dili lamang alang sa DevOps. "Pagtukod sa imprastraktura sa pagsulay sa automation gikan sa wala." Bisan pa, ang tanan nga mga ilustrasyon, mga link, mga kinutlo ug mga termino gipreserba sa orihinal nga sinultian aron malikayan ang pagtuis sa kahulugan kung gihubad sa Russian. Nanghinaut ko nga malipayon ka sa pagtuon!

Ang mga gamit sa DevOps dili lang para sa DevOps. Ang proseso sa pagtukod sa usa ka imprastraktura sa pagsulay sa automation gikan sa wala

Karon, ang espesyalidad sa DevOps usa sa labing gipangayo sa industriya sa IT. Kung nagbukas ka sa mga sikat nga site sa pagpangita sa trabaho ug gisala pinaagi sa suweldo, imong makita nga ang mga trabaho nga may kalabotan sa DevOps naa sa taas sa lista. Bisan pa, hinungdanon nga masabtan nga kini nag-una nga nagtumong sa usa ka posisyon nga 'Senior', nga nagpasabut nga ang kandidato adunay taas nga lebel sa kahanas, kahibalo sa teknolohiya ug mga himan. Nag-abut usab kini sa taas nga lebel sa responsibilidad nga may kalabotan sa walay hunong nga operasyon sa produksiyon. Bisan pa, nagsugod kami sa pagkalimot kung unsa ang DevOps. Sa sinugdan, kini dili usa ka piho nga tawo o departamento. Kung atong pangitaon ang mga kahulugan niini nga termino, makit-an nato ang daghang matahum ug husto nga mga nombre, sama sa metodolohiya, praktis, pilosopiya sa kultura, grupo sa mga konsepto, ug uban pa.

Ang akong pagka-espesyalisasyon kay usa ka test automation engineer (QA automation engineer), apan nagtuo ko nga dili lang kini i-apil sa pagsulat sa mga auto-test o pagpalambo sa arkitektura sa framework sa pagsulay. Sa 2020, ang kahibalo sa imprastraktura sa automation hinungdanon usab. Gitugotan ka niini sa pag-organisar sa proseso sa automation sa imong kaugalingon, gikan sa pagpadagan sa mga pagsulay hangtod sa paghatag mga resulta sa tanan nga mga stakeholder uyon sa imong mga katuyoan. Ingon usa ka sangputanan, ang mga kahanas sa DevOps kinahanglan aron mahuman ang trabaho. Ug kining tanan maayo, apan, sa kasubo, adunay problema (spoiler: kini nga artikulo misulay sa pagpayano niini nga problema). Ang punto mao nga ang DevOps lisud. Ug kini mao ang dayag, tungod kay ang mga kompanya dili mobayad sa usa ka daghan alang sa usa ka butang nga sayon ​​nga buhaton ... Sa DevOps kalibutan, adunay usa ka dako nga gidaghanon sa mga himan, termino, ug mga buhat nga kinahanglan nga mastered. Kini labi ka lisud sa pagsugod sa usa ka karera ug nagdepende sa natipon nga teknikal nga kasinatian.

Ang mga gamit sa DevOps dili lang para sa DevOps. Ang proseso sa pagtukod sa usa ka imprastraktura sa pagsulay sa automation gikan sa wala
Source: http://maximelanciauxbi.blogspot.com/2017/04/devops-tools.html

Dinhi mahimo natong tapuson ang pasiuna nga bahin ug ipunting ang katuyoan niini nga artikulo. 

Mahitungod sa unsa kini nga artikulo?

Sa kini nga artikulo, akong ipaambit ang akong kasinatian sa pagtukod sa usa ka imprastraktura sa pagsulay sa automation. Adunay daghang mga tinubdan sa impormasyon sa Internet mahitungod sa lain-laing mga himan ug sa unsa nga paagi sa paggamit niini, apan gusto ko nga tan-awon sila sa lunsay nga konteksto sa automation. Nagtuo ako nga daghang mga inhenyero sa automation ang pamilyar sa kahimtang kung wala’y usa gawas kanimo ang nagpadagan sa mga naugmad nga mga pagsulay o nagpakabana sa pagpadayon niini. Ingon usa ka sangputanan, ang mga pagsulay nahimong karaan na ug kinahanglan nimo nga mogahin og panahon sa pag-update niini. Pag-usab, sa sinugdanan sa usa ka karera, kini mahimong usa ka lisud nga buluhaton: maalamon nga pagdesisyon kung unsang mga himan ang makatabang sa pagwagtang sa usa ka gihatag nga problema, kung giunsa pagpili, pag-configure ug pagpadayon niini. Ang ubang mga tester midangop sa DevOps (mga tawo) alang sa tabang ug, matinud-anon, kini nga pamaagi molihok. Sa daghang mga kaso mahimo’g kini ra ang kapilian tungod kay wala kami makita sa tanan nga mga dependency. Apan sama sa nahibal-an namon, ang mga DevOps busy kaayo nga mga lalaki, tungod kay kinahanglan nilang hunahunaon ang tibuuk nga imprastraktura sa kompanya, pag-deploy, pag-monitor, microservice ug uban pang parehas nga mga buluhaton depende sa organisasyon / team. Sama sa kasagaran nga kaso, ang automation dili usa ka prayoridad. Sa ingon nga kahimtang, kinahanglan natong sulayan nga buhaton ang tanan nga posible sa atong bahin gikan sa sinugdanan hangtod sa katapusan. Kini makapakunhod sa mga pagsalig, makapadali sa dagan sa trabaho, makapauswag sa atong mga kahanas ug makatugot kanato sa pagtan-aw sa mas dako nga hulagway sa unsay nanghitabo.

Gipresentar sa artikulo ang labing inila ug tanyag nga mga himan ug gipakita kung giunsa kini gamiton aron magtukod usa ka imprastraktura sa automation nga lakang sa lakang. Ang matag grupo girepresentahan sa mga himan nga gisulayan pinaagi sa personal nga kasinatian. Apan wala kana magpasabut nga kinahanglan nimong gamiton ang parehas nga butang. Ang mga himan mismo dili importante, kini makita ug nahimong karaan. Ang among tahas sa inhenyero mao ang pagsabut sa sukaranan nga mga prinsipyo: kung ngano nga kinahanglan namon kini nga grupo sa mga himan ug kung unsang mga problema sa trabaho ang among masulbad sa ilang tabang. Mao nga sa katapusan sa matag seksyon magbilin ako mga link sa parehas nga mga himan nga mahimong magamit sa imong organisasyon.

Unsa ang wala niini nga artikulo

Gisubli nako pag-usab nga ang artikulo dili bahin sa piho nga mga himan, mao nga wala’y pagsal-ot sa code gikan sa dokumentasyon ug paghubit sa piho nga mga mando. Apan sa katapusan sa matag seksyon magbilin ko og mga link para sa detalyadong pagtuon.

Gihimo kini tungod kay: 

  • kini nga materyal sayon ​​​​kaayo nga makit-an sa lainlaing mga gigikanan (dokumentasyon, libro, mga kurso sa video);
  • kon kita magsugod sa pag-adto sa mas lawom, kita kinahanglan nga magsulat 10, 20, 30 ka bahin niini nga artikulo (samtang ang mga plano mao ang 2-3);
  • Dili ko gusto nga mag-usik sa imong oras tungod kay mahimo nimong gamiton ang ubang mga himan aron makab-ot ang parehas nga mga katuyoan.

Pagpraktis

Gusto gyud nako nga kini nga materyal mapuslanon sa matag magbabasa, ug dili lang basahon ug kalimtan. Sa bisan unsang pagtuon, ang pagpraktis usa ka hinungdanon nga sangkap. Alang niini akong giandam GitHub repository nga adunay sunod-sunod nga mga instruksyon kung unsaon pagbuhat ang tanan gikan sa wala. Anaa usab ang homework nga naghulat kanimo aron masiguro nga dili nimo makopya ang mga linya sa mga mando nga imong gipatuman.

Pagplano

Lakang
Technology
mga himan

1
Lokal nga pagdagan (pag-andam sa web / android nga mga pagsulay sa demo ug pagdagan kini sa lokal) 
Node.js, Selenium, Appium

2
Mga sistema sa pagpugong sa bersyon 
Git

3
Containerization
Docker, Selenium grid, Selenoid (Web, Android)

4
CI/CD
Gitlab CI

5
Mga plataporma sa panganod
Google Cloud Platform

6
Pagsagop
Kubernetes

7
Imprastraktura isip kodigo (IaC)
Terraform, Ansible

Istruktura sa matag seksyon

Aron mapabilin nga tin-aw ang asoy, ang matag seksyon gihulagway sumala sa mosunod nga outline:

  • mubo nga paghulagway sa teknolohiya,
  • bili alang sa imprastraktura sa automation,
  • ilustrasyon sa kasamtangan nga kahimtang sa imprastraktura,
  • mga link sa pagtuon,
  • susama nga mga himan.

1. Pagdalag mga pagsulay sa lokal

Mubo nga paghulagway sa teknolohiya

Kini usa lamang ka lakang sa pag-andam aron mapadagan ang mga pagsulay sa demo sa lokal ug pamatud-an nga sila nakapasar. Sa praktikal nga bahin, gigamit ang Node.js, apan ang programming language ug platform dili usab hinungdanon ug mahimo nimong gamiton ang mga gigamit sa imong kompanya. 

Bisan pa, ingon nga mga himan sa automation, girekomenda nako ang paggamit sa Selenium WebDriver alang sa mga platform sa web ug Appium alang sa platform sa Android, sa tinuud, tungod kay sa sunod nga mga lakang gamiton namon ang mga imahe sa Docker nga gipahaum sa pagtrabaho nga piho sa kini nga mga himan. Dugang pa, nga nagtumong sa mga kinahanglanon sa trabaho, kini nga mga himan mao ang labing gipangayo sa merkado.

Sama sa imong namatikdan, gikonsiderar lang namon ang mga pagsulay sa web ug Android. Ikasubo, ang iOS usa ka hingpit nga lahi nga istorya (salamat Apple). Nagplano ko nga ipakita ang mga solusyon ug praktis nga may kalabotan sa IOS sa umaabot nga mga bahin.

Ang bili alang sa imprastraktura sa automation

Gikan sa panan-aw sa imprastraktura, ang pagdagan sa lokal wala maghatag bisan unsang kantidad. Imong susihon nga ang mga pagsulay modagan sa lokal nga makina sa lokal nga mga browser ug mga simulator. Apan sa bisan unsang kaso, kini usa ka kinahanglanon nga punto sa pagsugod.

Ilustrasyon sa kasamtangang kahimtang sa imprastraktura

Ang mga gamit sa DevOps dili lang para sa DevOps. Ang proseso sa pagtukod sa usa ka imprastraktura sa pagsulay sa automation gikan sa wala

Mga link aron ma-explore

Susama nga mga himan

  • bisan unsang programming language nga gusto nimo inubanan sa Selenium/Appium nga mga pagsulay;
  • bisan unsang mga pagsulay;
  • bisan unsang test runner.

2. Mga sistema sa pagkontrol sa bersyon (Git)

Mubo nga paghulagway sa teknolohiya

Dili kini usa ka dako nga pagpadayag sa bisan kinsa kung ako moingon nga ang pagkontrol sa bersyon usa ka labi ka hinungdanon nga bahin sa pag-uswag, sa usa ka team ug indibidwal. Pinasukad sa lainlaing mga gigikanan, luwas nga isulti nga ang Git ang labing inila nga representante. Ang usa ka sistema sa pagkontrol sa bersyon naghatag daghang mga benepisyo, sama sa pagpaambit sa code, pagtipig sa mga bersyon, pagpasig-uli sa nangaging mga sanga, pag-monitor sa kasaysayan sa proyekto, ug pag-backup. Dili namo hisgutan ang matag punto sa detalye, tungod kay sigurado ako nga pamilyar ka niini ug gigamit kini sa imong adlaw-adlaw nga trabaho. Apan kung kalit nga dili, nan girekomenda ko nga ihunong ang pagbasa niini nga artikulo ug pun-on kini nga gintang sa labing madali.

Ang bili alang sa imprastraktura sa automation

Ug dinhi mahimo nimong ipangutana ang usa ka makatarunganon nga pangutana: "Nganong gisultihan niya kami bahin sa Git? Nahibal-an kini sa tanan ug gigamit kini alang sa code sa pag-uswag ug alang sa auto-test code. Hingpit ka nga husto, apan sa kini nga artikulo naghisgot kami bahin sa imprastraktura ug kini nga seksyon naglihok ingon usa ka preview alang sa seksyon 7: "Infrastructure as Code (IaC)". Alang kanamo, kini nagpasabut nga ang tibuuk nga imprastraktura, lakip ang pagsulay, gihulagway sa porma sa code, aron mahimo usab namon nga magamit ang mga sistema sa pag-bersyon niini ug makakuha parehas nga mga benepisyo sama sa code sa pag-uswag ug automation.

Atong tan-awon ang IaC sa mas detalyado sa Lakang 7, apan bisan karon mahimo ka magsugod sa paggamit sa Git sa lokal pinaagi sa paghimo og lokal nga repositoryo. Ang dako nga hulagway mapalapad kon kita makadugang sa usa ka hilit nga repository sa imprastraktura.

Ilustrasyon sa kasamtangang kahimtang sa imprastraktura

Ang mga gamit sa DevOps dili lang para sa DevOps. Ang proseso sa pagtukod sa usa ka imprastraktura sa pagsulay sa automation gikan sa wala

Mga link aron ma-explore

Susama nga mga himan

3. Containerization (Docker)

Mubo nga paghulagway sa teknolohiya

Aron ipakita kung giunsa pagbag-o sa containerization ang mga lagda sa dula, balikan nato ang panahon sa pipila ka mga dekada. Niadtong panahona, ang mga tawo mipalit ug migamit sa mga makina sa server sa pagpadagan sa mga aplikasyon. Apan sa kadaghanan nga mga kaso, ang gikinahanglan nga mga kapanguhaan sa pagsugod wala mahibal-an daan. Ingon usa ka sangputanan, ang mga kompanya naggasto sa salapi sa pagpalit sa mahal, kusgan nga mga server, apan ang pipila niini nga kapasidad wala magamit sa hingpit.

Ang sunod nga yugto sa ebolusyon mao ang mga virtual machine (VMs), nga nakasulbad sa problema sa pag-usik sa salapi sa wala magamit nga mga kapanguhaan. Kini nga teknolohiya nagpaposible sa pagpadagan sa mga aplikasyon nga independente sa usag usa sulod sa samang server, nga naggahin sa hingpit nga nahimulag nga luna. Apan, ikasubo, ang bisan unsang teknolohiya adunay mga kakulangan. Ang pagpadagan sa usa ka VM nanginahanglan usa ka bug-os nga operating system, nga naggamit sa CPU, RAM, pagtipig ug, depende sa OS, ang mga gasto sa lisensya kinahanglan nga tagdon. Kini nga mga hinungdan nakaapekto sa katulin sa pagkarga ug nagpalisud sa pagdala.

Ug karon moabut kami sa containerization. Sa makausa pa, kini nga teknolohiya nagsulbad sa miaging problema, tungod kay ang mga sudlanan wala mogamit sa usa ka bug-os nga OS, nga nagpalingkawas sa usa ka dako nga kantidad sa mga kapanguhaan ug naghatag og usa ka paspas ug flexible nga solusyon alang sa pagdala.

Siyempre, ang teknolohiya sa containerization dili bag-o ug una nga gipaila sa ulahing bahin sa 70s. Niadtong mga adlawa, daghang panukiduki, kalamboan, ug pagsulay ang gihimo. Apan si Docker ang nagpahiangay sa kini nga teknolohiya ug gihimo kini nga dali nga ma-access sa masa. Karong panahona, kung maghisgot kami bahin sa mga sudlanan, sa kadaghanan nga mga kaso gipasabut namon ang Docker. Kung maghisgot kami bahin sa mga sudlanan sa Docker, gipasabut namon ang mga sulud sa Linux. Mahimo natong gamiton ang mga sistema sa Windows ug macOS sa pagpadagan sa mga sudlanan, apan importante nga masabtan nga sa kini nga kaso adunay dugang nga layer nga makita. Pananglitan, ang Docker sa Mac hilom nga nagpadagan sa mga sudlanan sulod sa gaan nga Linux VM. Mobalik kami sa kini nga hilisgutan kung hisgutan namon ang pagpadagan sa mga emulator sa Android sa sulod sa mga sulud, busa dinhi adunay usa ka hinungdanon nga nuance nga kinahanglan nga hisgutan sa mas detalyado.

Ang bili alang sa imprastraktura sa automation

Nahibal-an namon nga ang containerization ug Docker cool. Atong tan-awon kini sa konteksto sa automation, tungod kay ang matag himan o teknolohiya kinahanglan nga masulbad ang usa ka problema. Atong i-outline ang klaro nga mga problema sa pag-automate sa pagsulay sa konteksto sa mga pagsulay sa UI:

  • usa ka dako nga gidaghanon sa mga dependency sa diha nga ang pag-instalar sa Selenium ug ilabi na ang Appium;
  • mga problema sa pagkaangay tali sa mga bersyon sa mga browser, simulator ug mga drayber;
  • kakulang sa nahilit nga luna alang sa mga browser/simulator, nga ilabinang kritikal alang sa parallel running;
  • lisud ang pagdumala ug pagmentinar kung kinahanglan nimo nga modagan ang 10, 50, 100 o bisan 1000 nga mga browser sa parehas nga oras.

Apan tungod kay ang Selenium mao ang labing inila nga himan sa automation ug ang Docker mao ang labing inila nga himan sa containerization, kinahanglan nga dili ikatingala nga adunay usa nga misulay sa paghiusa kanila aron makahimo usa ka kusgan nga himan aron masulbad ang nahisgutan nga mga problema. Atong tagdon ang maong mga solusyon sa mas detalyado. 

Selenium grid sa pantalan

Kini nga himan mao ang labing popular sa kalibutan sa Selenium alang sa pagpadagan sa daghang mga browser sa daghang mga makina ug pagdumala niini gikan sa usa ka sentro nga hub. Sa pagsugod, kinahanglan nimo nga magparehistro labing menos 2 ka bahin: Hub ug (mga) Node. Ang Hub usa ka sentro nga node nga nakadawat sa tanan nga mga hangyo gikan sa mga pagsulay ug nag-apod-apod niini sa angay nga mga Node. Alang sa matag Node mahimo natong i-configure ang usa ka piho nga pag-configure, pananglitan, pinaagi sa pagtino sa gusto nga browser ug ang bersyon niini. Bisan pa, kinahanglan pa namon nga atimanon ang mga katugbang nga mga driver sa browser sa among kaugalingon ug i-install kini sa gusto nga mga Node. Tungod niini nga hinungdan, ang Selenium grid wala gigamit sa lunsay nga porma niini, gawas kung kinahanglan namon nga magtrabaho sa mga browser nga dili ma-install sa Linux OS. Alang sa tanan nga uban pang mga kaso, usa ka labi ka dali ug husto nga solusyon mao ang paggamit sa mga imahe sa Docker aron mapadagan ang Selenium grid Hub ug Nodes. Kini nga pamaagi labi nga nagpasimple sa pagdumala sa node, tungod kay mahimo naton mapili ang imahe nga kinahanglan namon nga adunay mga katugbang nga bersyon sa mga browser ug mga drayber nga na-install na.

Bisan pa sa negatibo nga mga pagsusi bahin sa kalig-on, labi na kung nagdagan ang daghang gidaghanon sa mga Node nga managsama, ang Selenium grid mao gihapon ang labing popular nga himan alang sa pagpadagan sa mga pagsulay sa Selenium nga managsama. Mahinungdanon nga hinumdoman nga ang lainlaing mga pag-uswag ug pagbag-o sa kini nga himan kanunay nga nagpakita sa bukas nga gigikanan, nga nakigbatok sa lainlaing mga bottleneck.

Selenoid alang sa Web

Kini nga himan usa ka kalampusan sa kalibutan sa Selenium tungod kay kini nagtrabaho sa gawas sa kahon ug gipadali ang kinabuhi sa daghang mga inhenyero sa automation. Una sa tanan, dili kini laing kausaban sa Selenium grid. Hinuon, ang mga nag-develop nagmugna usa ka hingpit nga bag-ong bersyon sa Selenium Hub sa Golang, nga, inubanan sa gaan nga mga imahe sa Docker alang sa lainlaing mga browser, naghatag kadasig sa pag-uswag sa automation sa pagsulay. Dugang pa, sa kaso sa Selenium Grid, kinahanglan naton mahibal-an ang tanan nga gikinahanglan nga mga browser ug ang ilang mga bersyon nga abante, nga dili usa ka problema kung nagtrabaho sa usa lamang ka browser. Apan kung bahin sa daghang gisuportahan nga mga browser, ang Selenoid ang numero unong solusyon salamat sa bahin nga 'browser on demand'. Ang tanan nga gikinahanglan kanamo mao ang pag-download sa gikinahanglan nga mga imahe gamit ang mga browser nga abante ug i-update ang configuration file diin ang Selenoid nakig-uban. Human makadawat ang Selenoid og usa ka hangyo gikan sa mga pagsulay, awtomatiko kini nga ilunsad ang gitinguha nga sudlanan nga adunay gusto nga browser. Kung makompleto na ang pagsulay, iretiro ni Selenoid ang sudlanan, sa ingon nagpagawas sa mga kapanguhaan alang sa umaabot nga mga hangyo. Kini nga pamaagi hingpit nga nagwagtang sa iladong problema sa 'node degradation' nga kanunay natong masugatan sa Selenium grid.

Apan, alaot, ang Selenoid dili gihapon usa ka pilak nga bala. Nakuha namo ang feature nga 'browser on demand', pero ang feature nga 'resources on demand' wala gihapon magamit. Aron magamit ang Selenoid, kinahanglan naton nga i-deploy kini sa pisikal nga hardware o sa usa ka VM, nga nagpasabut nga kinahanglan naton mahibal-an daan kung pila ka mga kapanguhaan ang kinahanglan igahin. Sa akong hunahuna dili kini problema sa gagmay nga mga proyekto nga nagpadagan sa 10, 20 o bisan 30 nga mga browser nga managsama. Apan komosta kon kinahanglan nato ang 100, 500, 1000 ug daghan pa? Dili makatarunganon ang pagpadayon ug pagbayad alang sa daghang mga kahinguhaan sa tanang panahon. Sa mga seksyon 5 ug 6 niini nga artikulo, atong hisgutan ang mga solusyon nga makapahimo kanimo sa pag-scale, sa ingon makunhuran ang gasto sa kompanya.

Selenoid alang sa Android

Pagkahuman sa kalampusan sa Selenoid ingon usa ka himan sa pag-automate sa web, gusto sa mga tawo ang usa ka butang nga parehas alang sa Android. Ug kini nahitabo - Selenoid gipagawas uban ang suporta sa Android. Gikan sa taas nga lebel nga punto sa pagtan-aw sa tiggamit, ang prinsipyo sa operasyon parehas sa automation sa web. Ang bugtong kalainan mao nga imbis nga mga sulud sa browser, ang Selenoid nagpadagan sa mga sulud sa emulator sa Android. Sa akong opinyon, kini karon ang labing kusgan nga libre nga himan alang sa pagpadagan sa mga pagsulay sa Android nga managsama.

Dili gyud ko gusto nga maghisgot bahin sa mga negatibo nga aspeto sa kini nga himan, tungod kay ganahan kaayo ko niini. Bisan pa, adunay parehas nga mga disbentaha nga magamit sa automation sa web ug adunay kalabotan sa pag-scale. Dugang pa niini, kinahanglan natong hisgutan ang usa pa ka limitasyon nga mahimong usa ka sorpresa kung atong i-set up ang himan sa unang higayon. Aron makadagan ang mga imahe sa Android, kinahanglan namon ang usa ka pisikal nga makina o VM nga adunay suporta sa nested virtualization. Sa giya kung giunsa, gipakita nako kung giunsa kini mahimo sa usa ka Linux VM. Bisan pa, kung ikaw usa ka macOS user ug gusto nga i-deploy ang Selenoid sa lokal, nan dili kini posible nga magpadagan sa mga pagsulay sa Android. Apan mahimo ka kanunay nga magpadagan sa usa ka Linux VM sa lokal nga adunay 'nested virtualization' nga gi-configure ug i-deploy ang Selenoid sa sulod.

Ilustrasyon sa kasamtangang kahimtang sa imprastraktura

Sa konteksto niini nga artikulo, magdugang kami og 2 nga mga himan aron ihulagway ang imprastraktura. Kini ang Selenium grid alang sa mga pagsulay sa web ug Selenoid alang sa mga pagsulay sa Android. Sa tutorial sa GitHub, ipakita ko usab kanimo kung giunsa ang paggamit sa Selenoid sa pagpadagan sa mga pagsulay sa web. 

Ang mga gamit sa DevOps dili lang para sa DevOps. Ang proseso sa pagtukod sa usa ka imprastraktura sa pagsulay sa automation gikan sa wala

Mga link aron ma-explore

Susama nga mga himan

  • Adunay uban pang mga gamit sa containerization, apan ang Docker ang labing inila. Kung gusto nimong sulayan ang usa pa, hinumdomi nga ang mga himan nga among nasakup para sa pagpadagan sa mga pagsulay sa Selenium nga managsama dili molihok sa gawas sa kahon.  
  • Sama sa giingon na, adunay daghang mga pagbag-o sa Selenium grid, pananglitan, Zalenium.

4.CI/CD

Mubo nga paghulagway sa teknolohiya

Ang pagpraktis sa padayon nga panagsama popular kaayo sa pag-uswag ug parehas sa mga sistema sa pagkontrol sa bersyon. Bisan pa niini, gibati nako nga adunay kalibog sa terminolohiya. Niini nga parapo gusto nakong ihulagway ang 3 nga mga pagbag-o niini nga teknolohiya gikan sa akong panglantaw. Sa internet makit-an nimo ang daghang mga artikulo nga adunay lainlaing mga interpretasyon, ug kini hingpit nga normal kung ang imong opinyon lahi. Ang labing hinungdanon nga butang mao nga naa ka sa parehas nga panid sa imong mga kauban.

Mao nga, adunay 3 ka termino: CI - Padayon nga Paghiusa, CD - Padayon nga Paghatud ug usab CD - Padayon nga Pag-deploy. (Sa ubos akong gamiton kini nga mga termino sa English). Ang matag pagbag-o nagdugang daghang dugang nga mga lakang sa imong pipeline sa pag-uswag. Apan ang pulong Padayon (padayon) mao ang labing importante nga butang. Niini nga konteksto, gipasabot namo ang usa ka butang nga mahitabo gikan sa sinugdanan hangtud sa katapusan, nga walay paghunong o pagpangilabot sa manwal. Atong tan-awon ang CI & CD ug CD niini nga konteksto.

  • Padayon nga Paghiusa mao kini ang unang lakang sa ebolusyon. Pagkahuman sa pagsumite sa bag-ong code sa server, gilauman namon nga makadawat dayon nga feedback nga ok ra ang among mga pagbag-o. Kasagaran, ang CI naglakip sa pagpadagan sa static code analysis tools ug unit/internal API tests. Kini nagtugot kanamo nga makakuha og impormasyon bahin sa among code sulod sa pipila ka segundos/minuto.
  • Padayon nga Paghatud mao ang usa ka mas abante nga lakang diin kita modagan integration/UI mga pagsulay. Bisan pa, sa kini nga yugto dili kami makakuha mga resulta sa kadali sama sa CI. Una, kini nga mga matang sa mga pagsulay mas dugay aron makompleto. Ikaduha, sa dili pa ilunsad, kinahanglan natong i-deploy ang atong mga pagbag-o sa palibot sa pagsulay/pagpahigayon. Dugang pa, kung naghisgot kami bahin sa pag-uswag sa mobile, unya usa ka dugang nga lakang ang makita aron makahimo usa ka pagtukod sa among aplikasyon.
  • Padayon nga Pagpahimutang Nagtuo nga awtomatiko namon nga gipagawas ang among mga pagbag-o sa produksiyon kung ang tanan nga mga pagsulay sa pagdawat napasa na sa miaging mga yugto. Dugang pa niini, pagkahuman sa yugto sa pagpagawas, mahimo nimong i-configure ang lainlaing mga yugto, sama sa pagpadagan sa mga pagsulay sa aso sa produksiyon ug pagkolekta sa mga sukatan sa interes. Ang Padayon nga Pag-deploy posible lamang sa maayo nga coverage pinaagi sa mga automated nga pagsulay. Kung gikinahanglan ang bisan unsang mga manual nga interbensyon, lakip ang pagsulay, nan dili na kini Padayon (nagpadayon). Dayon makaingon kita nga ang atong pipeline nagsunod lamang sa praktis sa Padayon nga Paghatud.

Ang bili alang sa imprastraktura sa automation

Niini nga seksyon, kinahanglan nakong iklaro nga kung maghisgot kita bahin sa end-to-end nga mga pagsulay sa UI, kini nagpasabut nga kinahanglan naton i-deploy ang atong mga pagbag-o ug kaubang mga serbisyo aron masulayan ang mga palibot. Padayon nga Paghiusa - ang proseso dili magamit alang niini nga buluhaton ug kinahanglan naton nga atimanon ang pagpatuman sa labing menos nga mga gawi sa Padayon nga Paghatud. Ang padayon nga Deployment makahuluganon usab sa konteksto sa mga pagsulay sa UI kung atong ipadagan kini sa produksiyon.

Ug sa dili pa nato tan-awon ang ilustrasyon sa kausaban sa arkitektura, gusto nakong isulti ang pipila ka mga pulong mahitungod sa GitLab CI. Dili sama sa ubang mga gamit sa CI / CD, ang GitLab naghatag usa ka hilit nga repositoryo ug daghang uban pang mga dugang nga bahin. Busa, ang GitLab labaw pa sa CI. Kini naglakip sa source code management, Agile management, CI/CD pipelines, logging tools ug metrics collection out of the box. Ang arkitektura sa GitLab naglangkob sa Gitlab CI/CD ug GitLab Runner. Ania ang usa ka mubo nga paghulagway gikan sa opisyal nga website:

Ang Gitlab CI/CD usa ka web application nga adunay API nga nagtipig sa estado niini sa database, nagdumala sa mga proyekto/nagtukod ug naghatag ug user interface. Ang GitLab Runner usa ka aplikasyon nga nagproseso sa pagtukod. Mahimo kining i-deploy nga gilain ug magamit sa GitLab CI/CD pinaagi sa API. Alang sa mga pagsulay nga nagdagan kinahanglan nimo ang parehas nga pananglitan sa Gitlab ug Runner.

Ilustrasyon sa kasamtangang kahimtang sa imprastraktura

Ang mga gamit sa DevOps dili lang para sa DevOps. Ang proseso sa pagtukod sa usa ka imprastraktura sa pagsulay sa automation gikan sa wala

Mga link aron ma-explore

Susama nga mga himan

5. Mga plataporma sa panganod

Mubo nga paghulagway sa teknolohiya

Niini nga seksyon maghisgot kita mahitungod sa usa ka popular nga uso nga gitawag og 'public clouds'. Bisan pa sa daghang mga benepisyo nga gihatag sa virtualization ug containerization nga mga teknolohiya nga gihulagway sa ibabaw, kinahanglan gihapon namon ang mga kapanguhaan sa pag-compute. Ang mga kompanya nagpalit ug mahal nga mga server o nag-abang sa mga sentro sa datos, apan sa kini nga kaso kinahanglan nga maghimo mga kalkulasyon (usahay dili realistiko) kung pila ang mga kapanguhaan nga kinahanglan naton, kung gamiton ba naton kini 24/7 ug alang sa unsang mga katuyoan. Pananglitan, ang produksiyon nanginahanglan usa ka server nga nagdagan XNUMX/XNUMX, apan kinahanglan ba naton ang parehas nga mga kapanguhaan alang sa pagsulay sa gawas sa oras sa pagtrabaho? Nagdepende usab kini sa matang sa pagsulay nga gihimo. Usa ka pananglitan mao ang mga pagsulay sa pag-load/stress nga among giplano nga himuon sa mga oras nga wala’y trabaho aron makakuha mga resulta sa sunod nga adlaw. Apan siguradong ang XNUMX/XNUMX nga pagkaanaa sa server dili kinahanglan alang sa katapusan-sa-katapusan nga awtomatiko nga mga pagsulay ug labi na dili alang sa manual nga mga palibot sa pagsulay. Alang sa ingon nga mga sitwasyon, maayo nga makakuha og daghang mga kapanguhaan kung gikinahanglan kung kinahanglan, gamiton kini, ug hunongon ang pagbayad kung wala na kini kinahanglan. Dugang pa, maayo nga madawat kini dayon pinaagi sa paghimo og pipila ka mga pag-klik sa mouse o pagpadagan sa usa ka magtiayon nga mga script. Mao kini ang gigamit sa publiko nga panganod. Atong tan-awon ang kahulugan:

"Ang publiko nga panganod gihubit ingon mga serbisyo sa kompyuter nga gitanyag sa mga third-party nga provider sa publiko nga Internet, nga magamit kini sa bisan kinsa nga gusto mogamit o mopalit niini. Mahimong libre sila o gibaligya kung gipangayo, nga gitugotan ang mga kostumer nga magbayad lamang matag paggamit alang sa mga siklo sa CPU, pagtipig, o bandwidth nga ilang gigamit.

Adunay usa ka opinyon nga ang publiko nga panganod mahal. Apan ang ilang hinungdanon nga ideya mao ang pagpakunhod sa gasto sa kompanya. Sama sa nahisgutan sa sayo pa, ang publiko nga mga panganod nagtugot kanimo nga makakuha mga kapanguhaan kung gipangayo ug magbayad lamang sa oras nga imong gigamit kini. Usab, usahay makalimot kita nga ang mga empleyado makadawat og sweldo, ug ang mga espesyalista usa usab ka mahal nga kapanguhaan. Kinahanglang tagdon nga ang publiko nga mga panganod naghimo sa suporta sa imprastraktura nga labi ka dali, nga nagtugot sa mga inhenyero nga mag-focus sa labi ka hinungdanon nga mga buluhaton. 

Ang bili alang sa imprastraktura sa automation

Unsa nga piho nga mga kapanguhaan ang kinahanglan namon alang sa katapusan nga mga pagsulay sa UI? Kasagaran kini mga virtual machine o clusters (atong hisgutan ang mga Kubernetes sa sunod nga seksyon) para sa pagpadagan sa mga browser ug emulator. Ang daghang mga browser ug mga emulator nga gusto natong dungan nga padagan, mas daghang CPU ug memorya ang gikinahanglan ug mas daghang salapi ang atong ibayad niini. Busa, ang publiko nga mga panganod sa konteksto sa pagsulay automation nagtugot kanato sa pagpadagan sa usa ka dako nga gidaghanon (100, 200, 1000...) sa mga browsers/emulators sa panginahanglan, pagkuha sa mga resulta sa pagsulay sa labing madali ug mohunong sa pagbayad alang sa maong insanely resource-intensive. gahum. 

Ang labing inila nga cloud providers mao ang Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP). Ang giya kung giunsa ang paghatag ug mga pananglitan kung giunsa paggamit ang GCP, apan sa kinatibuk-an dili igsapayan kung unsa ang imong gigamit alang sa mga buluhaton sa automation. Tanan sila naghatag ug halos parehas nga gamit. Kasagaran, aron makapili usa ka tighatag, ang pagdumala nagpunting sa tibuuk nga imprastraktura ug mga kinahanglanon sa negosyo sa kompanya, nga lapas sa sulud sa kini nga artikulo. Alang sa mga inhenyero sa automation, mas makaiikag ang pagtandi sa paggamit sa mga cloud provider sa paggamit sa mga cloud platform ilabi na alang sa mga katuyoan sa pagsulay, sama sa Sauce Labs, BrowserStack, BitBar, ug uban pa. Busa ato usab kining buhaton! Sa akong opinyon, ang Sauce Labs mao ang labing inila nga cloud testing farm, mao nga gigamit nako kini alang sa pagtandi. 

GCP vs Sauce Labs para sa mga katuyoan sa automation:

Atong huna-hunaon nga kinahanglan natong dungan nga magpadagan og 8 ka web test ug 8 Android tests. Alang niini atong gamiton ang GCP ug ipadagan ang 2 virtual machine nga adunay Selenoid. Sa una magpataas kami og 8 nga mga sudlanan nga adunay mga browser. Sa ikaduha adunay 8 nga mga sudlanan nga adunay mga emulator. Atong tan-awon ang mga presyo:  

Ang mga gamit sa DevOps dili lang para sa DevOps. Ang proseso sa pagtukod sa usa ka imprastraktura sa pagsulay sa automation gikan sa wala
Aron makadagan ang usa ka sudlanan nga adunay Chrome, kinahanglan namon n1-standard-1 sakyanan. Sa kaso sa Android kini mahimong n1-standard-4 alang sa usa ka emulator. Sa tinuud, ang usa ka labi ka dali ug mas barato nga paagi mao ang pagtakda sa piho nga mga kantidad sa gumagamit alang sa CPU / Memorya, apan sa pagkakaron dili kini hinungdanon kung itandi sa Sauce Labs.

Ug ania ang mga taripa sa paggamit sa Sauce Labs:

Ang mga gamit sa DevOps dili lang para sa DevOps. Ang proseso sa pagtukod sa usa ka imprastraktura sa pagsulay sa automation gikan sa wala
Nagtuo ko nga namatikdan na nimo ang kalainan, apan maghatag gihapon ako usa ka lamesa nga adunay mga kalkulasyon alang sa among buluhaton:

Gikinahanglan nga mga kapanguhaan
Montly
Mga oras sa pagtrabaho(8 am - 8 pm)
Mga oras sa pagtrabaho+ Mahimong preemptible

GCP para sa Web
n1-standard-1 x 8 = n1-standard-8
$194.18
23 ka adlaw * 12h * 0.38 = $104.88 
23 ka adlaw * 12h * 0.08 = $22.08

Sauce Labs para sa Web
Virtual Cloud8 parallel nga mga pagsulay
$1.559
-
-

GCP alang sa Android
n1-standard-4 x 8: n1-standard-16
$776.72
23 ka adlaw * 12h * 1.52 = $419.52 
23 ka adlaw * 12h * 0.32 = $88.32

Sauce Labs alang sa Android
Tinuod nga Device Cloud 8 parallel nga mga pagsulay
$1.999
-
-

Sama sa imong nakita, ang kalainan sa gasto dako kaayo, labi na kung nagpadagan ka sa mga pagsulay sulod lamang sa dose ka oras nga panahon sa pagtrabaho. Apan mahimo nimong makunhuran ang mga gasto kung mogamit ka mga preemptible nga makina. Unsa ni?

Ang usa ka preemptible nga VM usa ka instance nga mahimo nimong buhaton ug dagan sa mas taas nga presyo kaysa sa normal nga mga higayon. Bisan pa, ang Compute Engine mahimo’g tapuson (preempt) kini nga mga higayon kung kini nanginahanglan pag-access sa mga kapanguhaan alang sa ubang mga buluhaton. Ang mga preemptible nga mga higayon mao ang sobra nga kapasidad sa Compute Engine, mao nga ang ilang pagkaanaa magkalainlain sa paggamit.

Kung ang imong mga app kay fault-tolerant ug makasugakod sa posibleng mga preemption sa instance, nan ang mga preemptible nga mga instance makapakunhod pag-ayo sa imong gasto sa Compute Engine. Pananglitan, ang mga trabaho sa pagproseso sa batch mahimong modagan sa mga preemptible nga mga higayon. Kung ang pipila sa mga higayon nga matapos sa panahon sa pagproseso, ang trabaho mohinay apan dili hingpit nga mohunong. Ang mga preemptible nga mga instance makompleto ang imong mga buluhaton sa pagproseso sa batch nga wala magbutang og dugang nga workload sa imong kasamtangan nga mga instance ug wala magkinahanglan kanimo sa pagbayad sa tibuok nga presyo alang sa dugang nga normal nga mga higayon.

Ug wala pa kini matapos! Sa tinuud, sigurado ako nga wala’y nagpadagan sa mga pagsulay sulod sa 12 ka oras nga wala’y pahulay. Ug kung mao, mahimo nimong awtomatiko nga magsugod ug hunongon ang mga virtual machine kung wala kini kinahanglan. Ang aktwal nga oras sa paggamit mahimong mub-an ngadto sa 6 ka oras kada adlaw. Unya ang pagbayad sa konteksto sa among buluhaton mokunhod ngadto sa $11 matag bulan alang sa 8 nga mga browser. Dili ba kini talagsaon? Apan sa mga preemptible nga makina kinahanglan kitang mag-amping ug mag-andam alang sa mga pagkabalda ug pagkawalay kalig-on, bisan kung kini nga mga sitwasyon mahimong ihatag ug madumala sa software. Takus kini!

Apan dili gyud ko moingon nga 'ayaw paggamit sa cloud test farms'. Daghan silag mga bentaha. Una sa tanan, dili lang kini usa ka virtual nga makina, apan usa ka bug-os nga solusyon sa pag-automate sa pagsulay nga adunay usa ka set sa pag-andar sa gawas sa kahon: hilit nga pag-access, mga troso, mga screenshot, pagrekord sa video, lainlaing mga browser ug pisikal nga mga mobile device. Sa daghang mga sitwasyon, mahimo kini nga usa ka hinungdanon nga kapilian nga chic. Ang mga plataporma sa pagsulay labi ka mapuslanon alang sa automation sa IOS, kung ang mga publiko nga panganod mahimo ra magtanyag mga sistema sa Linux / Windows. Apan maghisgot kami bahin sa iOS sa sunod nga mga artikulo. Girekomenda ko nga kanunay nga tan-awon ang sitwasyon ug magsugod gikan sa mga buluhaton: sa pipila ka mga kaso mas barato ug mas episyente ang paggamit sa publiko nga mga panganod, ug sa uban ang mga plataporma sa pagsulay siguradong takus sa salapi nga gigasto.

Ilustrasyon sa kasamtangang kahimtang sa imprastraktura

Ang mga gamit sa DevOps dili lang para sa DevOps. Ang proseso sa pagtukod sa usa ka imprastraktura sa pagsulay sa automation gikan sa wala

Mga link aron ma-explore

Susama nga mga himan:

6. Orkestra

Mubo nga paghulagway sa teknolohiya

Duna koy maayong balita – hapit na kita sa katapusan sa artikulo! Sa pagkakaron, ang among imprastraktura sa automation naglangkob sa mga pagsulay sa web ug Android, nga among gipadagan pinaagi sa GitLab CI nga managsama, gamit ang mga himan nga gipagana sa Docker: Selenium grid ug Selenoid. Dugang pa, naggamit kami og mga virtual nga makina nga gihimo pinaagi sa GCP aron mag-host sa mga sudlanan nga adunay mga browser ug emulator. Aron makunhuran ang gasto, gisugdan namon kini nga mga virtual nga makina kung gipangayo lang ug hunongon kini kung wala gihimo ang pagsulay. Aduna pa bay lain nga makapauswag sa atong imprastraktura? Ang tubag kay oo! Himamata ang Kubernetes (K8s)!

Una, atong tan-awon kon sa unsang paagi ang mga pulong orchestration, cluster, ug Kubernetes may kalabutan sa usag usa. Sa taas nga lebel, ang orkestra mao ang sistema nga nag-deploy ug nagdumala sa mga aplikasyon. Para sa testing automation, ang maong containerized nga mga aplikasyon mao ang Selenium grid ug Selenoid. Ang Docker ug K8s nagtinabangay sa usag usa. Ang una gigamit alang sa pag-deploy sa aplikasyon, ang ikaduha alang sa orkestra. Sa baylo, ang K8s usa ka cluster. Ang tahas sa cluster mao ang paggamit sa mga VM isip Nodes, nga nagtugot kanimo sa pag-instalar sa lain-laing mga gamit, mga programa ug mga serbisyo sulod sa usa ka server (cluster). Kung ang bisan kinsa sa mga Node mapakyas, ang ubang mga Node mokuha, nga nagsiguro sa walay hunong nga operasyon sa among aplikasyon. Dugang pa niini, ang K8s adunay importante nga pag-andar nga may kalabutan sa scaling, salamat nga awtomatiko namon nga makuha ang labing kaayo nga kantidad sa mga kahinguhaan base sa pagkarga ug gitakda nga mga limitasyon.

Sa tinuud, ang mano-mano nga pag-deploy sa Kubernetes gikan sa wala dili usa ka gamay nga buluhaton. Magbilin ko og link sa sikat nga how-to guide nga "Kubernetes The Hard Way" ug kung interesado ka, pwede nimo kini ipraktis. Apan, maayo na lang, adunay mga alternatibong pamaagi ug mga himan. Ang labing kadali nga paagi mao ang paggamit sa Google Kubernetes Engine (GKE) sa GCP, nga magtugot kanimo nga makakuha usa ka andam nga pundok sa pipila ka mga pag-klik. Girekomendar nako ang paggamit niini nga pamaagi aron magsugod sa pagkat-on, tungod kay kini magtugot kanimo sa pag-focus sa pagkat-on kung unsaon paggamit ang K8s alang sa imong mga buluhaton imbis nga makat-on kung giunsa ang internal nga mga sangkap kinahanglan nga i-integrate sa usag usa. 

Ang bili alang sa imprastraktura sa automation

Atong tan-awon ang pipila ka mahinungdanong bahin nga gihatag sa K8s:

  • pag-deploy sa aplikasyon: gamit ang multi-nodes cluster imbes nga mga VM;
  • dinamikong scaling: gipakunhod ang gasto sa mga kahinguhaan nga gigamit lamang sa panginahanglan;
  • pag-ayo sa kaugalingon: awtomatik nga pagbawi sa mga pods (ingon usa ka sangputanan diin ang mga sudlanan gipahiuli usab);
  • rollout sa mga updates ug rollbacks sa mga kausaban nga walay downtime: pag-update sa mga himan, browsers ug emulators dili makabalda sa buhat sa kasamtangan nga tiggamit

Apan ang K8 dili gihapon usa ka pilak nga bala. Aron masabtan ang tanan nga mga bentaha ug mga limitasyon sa konteksto sa mga himan nga atong gikonsiderar (Selenium grid, Selenoid), atong hisgotan sa makadiyot ang istruktura sa K8s. Ang Cluster adunay duha ka klase sa Nodes: Master Nodes ug Workers Nodes. Ang mga Master Nodes ang responsable sa pagdumala, pag-deploy ug mga desisyon sa pag-iskedyul. Ang mga node sa mga trabahante diin ang mga aplikasyon gipadagan. Ang mga node usab adunay sulud nga runtime nga palibot. Sa among kaso, kini ang Docker, nga responsable sa mga operasyon nga may kalabotan sa sulud. Apan adunay usab mga alternatibong solusyon, pananglitan sudlanan. Importante nga masabtan nga ang scaling o pag-ayo sa kaugalingon dili direkta nga magamit sa mga sudlanan. Gipatuman kini pinaagi sa pagdugang/pagkunhod sa gidaghanon sa mga pod, nga sa baylo adunay sulod nga mga sudlanan (kasagaran usa ka sudlanan matag pod, apan depende sa buluhaton mahimong daghan pa). Ang taas nga lebel nga hierarchy naglangkob sa mga worker node, sa sulod niini adunay mga pod, sa sulod diin ang mga sudlanan gipataas.

Ang scaling feature kay yawe ug mahimong magamit sa duha ka node sulod sa cluster node-pool ug pod sulod sa node. Adunay 2 ka matang sa scaling nga magamit sa mga node ug pods. Ang una nga tipo kay pinahigda - ang scaling mahitabo pinaagi sa pagdugang sa gidaghanon sa mga node/pods. Kini nga matang mas gipalabi. Ang ikaduha nga tipo mao, sumala niana, bertikal. Ang scaling gihimo pinaagi sa pagdugang sa gidak-on sa mga node/pod, ug dili sa ilang gidaghanon.

Karon atong tan-awon ang atong mga himan sa konteksto sa mga termino sa ibabaw.

Selenium grid

Sama sa gihisgutan sa sayo pa, ang Selenium grid usa ka popular kaayo nga himan, ug dili ikatingala nga kini gisudlan. Busa, dili ikatingala nga ang Selenium grid mahimong ma-deploy sa K8s. Ang usa ka pananglitan kung unsaon pagbuhat niini makita sa opisyal nga K8s repository. Sama sa naandan, gilakip nako ang mga link sa katapusan sa seksyon. Dugang pa, gipakita sa giya kung giunsa kini buhaton sa Terraform. Adunay usab mga panudlo kung giunsa ang pagsukod sa gidaghanon sa mga pod nga adunay sulud nga sulud sa browser. Apan ang awtomatikong scaling function sa konteksto sa K8s dili gihapon usa ka hingpit nga klaro nga buluhaton. Sa dihang nagsugod ko sa pagtuon, wala koy nakitang praktikal nga giya o rekomendasyon. Pagkahuman sa daghang mga pagtuon ug mga eksperimento uban ang suporta sa DevOps team, gipili namon ang pamaagi sa pagpataas sa mga sudlanan nga adunay kinahanglan nga mga browser sa sulod sa usa ka pod, nga nahimutang sa sulod sa usa ka worker node. Kini nga pamaagi nagtugot kanato sa paggamit sa estratehiya sa horizontal scaling sa mga node pinaagi sa pagdugang sa ilang gidaghanon. Nanghinaut ko nga kini mausab sa umaabot ug makakita kita og dugang ug mas daghang mga paghulagway sa mas maayo nga mga pamaagi ug andam nga mga solusyon, ilabi na human sa pagpagawas sa Selenium grid 4 nga adunay nausab nga internal nga arkitektura.

Selenoid:

Ang pag-deploy sa Selenoid sa K8s mao karon ang pinakadako nga kasagmuyo. Dili sila compatible. Sa teorya, mahimo natong ipataas ang usa ka Selenoid nga sudlanan sa sulod sa usa ka pod, apan kung ang Selenoid magsugod sa paglansad sa mga sudlanan nga adunay mga browser, sila anaa gihapon sa sulod sa samang pod. Gihimo niini nga imposible ang pag-scale ug, isip resulta, ang trabaho sa Selenoid sulod sa usa ka cluster dili magkalahi sa trabaho sulod sa usa ka virtual machine. Katapusan sa istorya.

bulan:

Nahibal-an kini nga bottleneck kung nagtrabaho kauban ang Selenoid, gipagawas sa mga developer ang usa ka labi ka kusgan nga himan nga gitawag Moon. Kini nga himan orihinal nga gidisenyo aron magtrabaho uban sa Kubernetes ug, isip resulta, ang autoscaling nga bahin mahimo ug kinahanglan nga gamiton. Dugang pa, isulti ko nga sa pagkakaron ang bugtong usa ka himan sa Selenium nga kalibutan, nga adunay lumad nga K8s cluster nga suporta gikan sa kahon (dili na magamit, tan-awa ang sunod nga himan ). Ang nag-unang bahin sa Moon nga naghatag niini nga suporta mao ang: 

Hingpit nga walay estado. Ang Selenoid nagtipig sa impormasyon sa panumduman mahitungod sa kasamtangan nga pagpadagan sa mga sesyon sa browser. Kung tungod sa usa ka hinungdan ang proseso niini nahagsa - nan ang tanan nga mga sesyon sa pagpadagan nawala. Ang bulan sa sukwahi walay internal nga estado ug mahimong kopyahon sa mga sentro sa datos. Ang mga sesyon sa browser nagpabilin nga buhi bisan kung ang usa o daghan pa nga mga replika mawala.

Busa, ang Moon usa ka maayong solusyon, apan adunay usa ka problema: dili kini libre. Ang presyo nagdepende sa gidaghanon sa mga sesyon. Mahimo ka lamang magpadagan sa 0-4 nga mga sesyon nga libre, nga dili labi ka mapuslanon. Apan, sugod sa ikalimang sesyon, kinahanglang mobayad ka og $5 para sa matag usa. Mahimong magkalainlain ang kahimtang sa matag kompanya, apan sa among kaso, wala’y kapuslanan ang paggamit sa Moon. Sama sa akong gihulagway sa ibabaw, mahimo natong padaganon ang mga VM nga adunay Selenium Grid kung gikinahanglan o madugangan ang gidaghanon sa mga Node sa cluster. Alang sa gibana-bana nga usa ka pipeline, naglunsad kami og 500 ka mga browser ug gipahunong ang tanan nga mga kapanguhaan pagkahuman sa mga pagsulay. Kung gigamit namo ang Moon, kinahanglan namong magbayad og dugang nga 500 x 5 = $2500 kada bulan, bisan unsa pa kasubsob ang among pagpadagan sa mga pagsulay. Sa makausa pa, wala ko nag-ingon nga ayaw gamita ang Moon. Alang sa imong mga buluhaton, kini mahimo nga usa ka kinahanglanon nga solusyon, pananglitan, kung ikaw adunay daghang mga proyekto / mga koponan sa imong organisasyon ug kinahanglan nimo ang usa ka dako nga sagad nga kumpol alang sa tanan. Sama sa kanunay, nagbilin ako usa ka link sa katapusan ug girekomenda nga buhaton ang tanan nga kinahanglan nga mga kalkulasyon sa konteksto sa imong buluhaton.

Callisto: (Atensyon! Kini wala sa orihinal nga artikulo ug anaa lamang sa Russian nga hubad)

Sama sa akong giingon, ang Selenium usa ka sikat kaayo nga himan, ug ang natad sa IT dali nga nag-uswag. Samtang nagtrabaho ko sa paghubad, usa ka bag-ong promising tool nga gitawag Callisto ang nagpakita sa web (hello Cypress ug uban pang mga Selenium killers). Naglihok kini nga lumad sa mga K8 ug gitugotan ka nga magpadagan sa mga sulud sa Selenoid sa mga pod, nga giapod-apod sa mga Nodes. Ang tanan nagtrabaho sa gawas sa kahon, lakip ang autoscaling. Talagsaon, apan kinahanglan nga sulayan. Nakahimo na ako sa pagdeploy niini nga himan ug pagpadagan sa daghang mga eksperimento. Apan sayo pa kaayo aron makahimog mga konklusyon, pagkahuman makadawat mga resulta sa layo nga distansya, tingali maghimo ako usa ka pagrepaso sa umaabot nga mga artikulo. Sa pagkakaron nagbilin lang ko og mga link para sa independent research.  

Ilustrasyon sa kasamtangang kahimtang sa imprastraktura

Ang mga gamit sa DevOps dili lang para sa DevOps. Ang proseso sa pagtukod sa usa ka imprastraktura sa pagsulay sa automation gikan sa wala

Mga link aron ma-explore

Susama nga mga himan

7. Imprastraktura isip Code (IaC)

Mubo nga paghulagway sa teknolohiya

Ug karon miabut na kami sa katapusang seksyon. Kasagaran, kini nga teknolohiya ug may kalabutan nga mga buluhaton dili responsibilidad sa mga inhenyero sa automation. Ug adunay mga hinungdan niini. Una, sa daghang mga organisasyon, ang mga isyu sa imprastraktura naa sa kontrol sa departamento sa DevOps ug ang mga tim sa pagpauswag wala gyud magtagad kung unsa ang naghimo sa pipeline nga molihok ug kung giunsa ang tanan nga konektado niini kinahanglan suportahan. Ikaduha, matinud-anon ta, ang praktis sa Infrastructure as Code (IaC) wala gihapon gisagop sa daghang mga kompanya. Apan kini siguradong nahimong popular nga uso ug importante nga sulayan nga maapil sa mga proseso, mga pamaagi ug mga himan nga nalangkit niini. O labing menos magpabilin hangtod karon.

Magsugod kita sa panukmod sa paggamit niini nga pamaagi. Nahisgotan na namo nga aron makadagan ang mga pagsulay sa GitlabCI, kinahanglan namon sa labing gamay nga mga kapanguhaan aron makadagan ang Gitlab Runner. Ug aron makadagan ang mga sudlanan nga adunay mga browser/emulator, kinahanglan nga magreserba kami usa ka VM o cluster. Gawas pa sa mga kapanguhaan sa pagsulay, kinahanglan namon ang usa ka hinungdanon nga kantidad sa kapasidad aron suportahan ang pag-uswag, dula, mga palibot sa produksiyon, nga naglakip usab sa mga database, awtomatikong iskedyul, mga pag-configure sa network, mga balanse sa pagkarga, mga katungod sa tiggamit, ug uban pa. Ang importante nga isyu mao ang paningkamot nga gikinahanglan sa pagsuporta niining tanan. Adunay ubay-ubay nga mga paagi nga makahimo kami mga pagbag-o ug paglansad sa mga update. Pananglitan, sa konteksto sa GCP, mahimo natong gamiton ang UI console sa browser ug mahimo ang tanang aksyon pinaagi sa pag-klik sa mga buton. Ang usa ka alternatibo mao ang paggamit sa mga tawag sa API aron makig-uban sa mga cloud entity, o paggamit sa gcloud command line utility aron mahimo ang gusto nga mga manipulasyon. Apan sa usa ka dako nga gidaghanon sa lain-laing mga entidad ug mga elemento sa imprastraktura, kini mahimong lisud o bisan imposible sa pagbuhat sa tanan nga mga operasyon sa mano-mano. Dugang pa, kining tanan nga mga manual nga aksyon dili makontrol. Dili namo kini isumiter alang sa pagrepaso sa dili pa ipatuman, mogamit ug version control system, ug dali nga ibalik ang mga kausaban nga mitultol sa insidente. Aron masulbad ang ingon nga mga problema, ang mga inhenyero naghimo ug naghimo ug awtomatik nga mga script sa bash/shell, nga dili labi ka maayo kaysa kaniadto nga mga pamaagi, tungod kay dili kini kadali nga dali nga basahon, masabtan, mapadayon ug usbon sa istilo sa pamaagi.

Sa kini nga artikulo ug kung giunsa ang paggiya, gigamit nako ang 2 nga mga himan nga may kalabotan sa praktis sa IaC. Kini ang Terraform ug Ansible. Ang uban nga mga tawo nagtuo nga dili makatarunganon nga gamiton kini sa parehas nga oras, tungod kay parehas ang ilang pag-andar ug kini mabaylo. Apan ang tinuod mao nga sa sinugdan sila gihatagan sa hingpit nga lainlaing mga buluhaton. Ug ang kamatuoran nga kini nga mga himan kinahanglan nga magtinabangay sa usag usa gipamatud-an sa usa ka hiniusa nga presentasyon sa mga developer nga nagrepresentar sa HashiCorp ug RedHat. Ang kalainan sa konsepto mao nga ang Terraform usa ka himan sa paghatag alang sa pagdumala sa mga server mismo. Samtang ang Ansible usa ka himan sa pagdumala sa configuration kansang tahas mao ang pag-instalar, pag-configure ug pagdumala sa software niini nga mga server.

Ang laing yawe nga nagpalahi nga bahin niini nga mga himan mao ang estilo sa coding. Dili sama sa bash ug Ansible, ang Terraform naggamit sa usa ka deklaratibo nga estilo nga gibase sa usa ka paghulagway sa gitinguha nga katapusan nga estado nga makab-ot isip resulta sa pagpatay. Pananglitan, kung maghimo kita ug 10 ka VM ug ipadapat ang mga pagbag-o pinaagi sa Terraform, nan makakuha kita ug 10 ka VM. Kung gipadagan naton pag-usab ang script, wala’y mahitabo tungod kay aduna na kitay 10 ka VM, ug nahibal-an kini sa Terraform tungod kay kini nagtipig sa karon nga kahimtang sa imprastraktura sa usa ka file sa estado. Apan ang Ansible naggamit sa usa ka pamaagi nga pamaagi ug, kung hangyoon nimo kini nga maghimo og 10 ka VM, unya sa unang paglansad makakuha kami og 10 ka VM, susama sa Terraform. Apan pagkahuman sa pag-restart aduna na kitay 20 ka VM. Kini ang hinungdanon nga kalainan. Sa estilo sa pamaagi, dili namo tipigan ang kasamtangan nga kahimtang ug ihulagway lang ang han-ay sa mga lakang nga kinahanglang buhaton. Siyempre, mahimo naton madumala ang lainlaing mga sitwasyon, makadugang daghang mga tseke alang sa pagkaanaa sa mga kahinguhaan ug sa karon nga kahimtang, apan wala’y hinungdan nga mag-usik sa atong oras ug maningkamot sa pagpugong niini nga lohika. Dugang pa, kini nagdugang sa risgo sa paghimo og mga sayop. 

Sa pag-summarize sa tanan sa ibabaw, makahinapos kita nga ang Terraform ug declarative notation kay mas haom nga himan para sa provisioning servers. Apan mas maayo nga itugyan ang buluhaton sa pagdumala sa pag-configure sa Ansible. Kung wala kana, tan-awon naton ang mga kaso sa paggamit sa konteksto sa automation.

Ang bili alang sa imprastraktura sa automation

Ang bugtong hinungdanon nga butang nga masabtan dinhi mao nga ang imprastraktura sa pagsulay sa automation kinahanglan nga isipon nga bahin sa tibuuk nga imprastraktura sa kompanya. Kini nagpasabut nga ang tanan nga mga buhat sa IaC kinahanglan nga magamit sa tibuuk kalibutan sa mga kapanguhaan sa tibuuk nga organisasyon. Kinsa ang responsable niini nagdepende sa imong mga proseso. Ang koponan sa DevOps mas eksperyensiyado sa kini nga mga isyu, nakita nila ang tibuuk nga litrato kung unsa ang nanghitabo. Bisan pa, ang mga inhenyero sa QA labi nga nalambigit sa proseso sa pagtukod sa automation ug ang istruktura sa pipeline, nga nagtugot kanila nga mas makita ang tanan nga gikinahanglan nga mga pagbag-o ug mga oportunidad alang sa pag-uswag. Ang pinakamaayo nga kapilian mao ang pagtinabangay, pagbayloay og kahibalo ug mga ideya aron makab-ot ang gipaabot nga resulta. 

Ania ang pipila ka mga pananglitan sa paggamit sa Terraform ug Ansible sa konteksto sa pagsulay sa automation ug ang mga himan nga among gihisgutan kaniadto:

1. Ihulagway ang gikinahanglan nga mga kinaiya ug mga parameter sa mga VM ug mga cluster gamit ang Terraform.

2. Gamit ang Ansible, i-install ang mga himan nga gikinahanglan alang sa pagsulay: docker, Selenoid, Selenium Grid ug i-download ang gikinahanglan nga mga bersyon sa mga browser/emulator.

3. Gamit ang Terraform, ihulagway ang mga kinaiya sa VM diin ang GitLab Runner ilusad.

4. I-install ang GitLab Runner ug ang gikinahanglan nga kaubang mga himan gamit ang Ansible, set setting ug configurations.

Ilustrasyon sa kasamtangang kahimtang sa imprastraktura

Ang mga gamit sa DevOps dili lang para sa DevOps. Ang proseso sa pagtukod sa usa ka imprastraktura sa pagsulay sa automation gikan sa wala

Mga link aron ma-explore:

Susama nga mga himan

Isumaryo nato!

Lakang
Technology
mga himan
Ang bili alang sa imprastraktura sa automation

1
Lokal nga pagdagan
Node.js, Selenium, Appium

  • Ang labing inila nga mga himan alang sa web ug mobile
  • Nagsuporta sa daghang mga pinulongan ug mga plataporma (lakip ang Node.js)

2
Mga sistema sa pagpugong sa bersyon 
Git

  • Susama nga mga benepisyo sa code sa pag-uswag

3
Containerization
Docker, Selenium grid, Selenoid (Web, Android)

  • Pagpadagan sa mga pagsulay nga managsama
  • Nalain nga mga palibot
  • Yano, flexible nga pag-upgrade sa bersyon
  • Dinamikong paghunong sa wala magamit nga mga kapanguhaan
  • Sayon ibutang

4
CI/CD
Gitlab CI

  • Gisulayan ang bahin sa pipeline
  • Dali nga Feedback
  • Visibility alang sa tibuok nga kompanya/team

5
Mga plataporma sa panganod
Google Cloud Platform

  • Mga kapanguhaan nga gipangayo (nagbayad ra kami kung gikinahanglan)
  • Sayon sa pagdumala ug pag-update
  • Pagtan-aw ug pagkontrol sa tanan nga mga kapanguhaan

6
Pagsagop
Kubernetes
Sa konteksto sa mga sudlanan nga adunay mga browser/emulator sa sulod sa mga pod:

  • Pag-scale/auto scaling
  • Pag-ayo sa kaugalingon
  • Pag-update ug pag-rollback nga wala’y hunong

7
Imprastraktura isip kodigo (IaC)
Terraform, Ansible

  • Susama nga mga benepisyo sa imprastraktura sa pag-uswag
  • Ang tanan nga mga benepisyo sa code versioning
  • Sayon sa paghimo sa mga pagbag-o ug pagmentinar
  • Bug-os nga awtomatiko

Mga diagram sa mapa sa hunahuna: ebolusyon sa imprastraktura

lakang 1: Lokal
Ang mga gamit sa DevOps dili lang para sa DevOps. Ang proseso sa pagtukod sa usa ka imprastraktura sa pagsulay sa automation gikan sa wala

lakang 2: VCS
Ang mga gamit sa DevOps dili lang para sa DevOps. Ang proseso sa pagtukod sa usa ka imprastraktura sa pagsulay sa automation gikan sa wala

lakang 3: Containerization 
Ang mga gamit sa DevOps dili lang para sa DevOps. Ang proseso sa pagtukod sa usa ka imprastraktura sa pagsulay sa automation gikan sa wala

lakang 4: CI/CD 
Ang mga gamit sa DevOps dili lang para sa DevOps. Ang proseso sa pagtukod sa usa ka imprastraktura sa pagsulay sa automation gikan sa wala

lakang5: Cloud Platforms
Ang mga gamit sa DevOps dili lang para sa DevOps. Ang proseso sa pagtukod sa usa ka imprastraktura sa pagsulay sa automation gikan sa wala

lakang 6: Orkestrasyon
Ang mga gamit sa DevOps dili lang para sa DevOps. Ang proseso sa pagtukod sa usa ka imprastraktura sa pagsulay sa automation gikan sa wala

lakang 7: IaC
Ang mga gamit sa DevOps dili lang para sa DevOps. Ang proseso sa pagtukod sa usa ka imprastraktura sa pagsulay sa automation gikan sa wala

Unsay sunod?

Busa, kini ang katapusan sa artikulo. Apan sa konklusyon, gusto kong maghimo ug pipila ka mga kasabotan uban kanimo.

Gikan sa imong kilid
Sama sa akong giingon sa sinugdanan, gusto nako nga ang artikulo mahimong praktikal nga gamit ug makatabang kanimo nga magamit ang kahibalo nga nakuha sa tinuud nga trabaho. Gidugang ko pag-usab link sa praktikal nga giya.

Apan bisan pa niana, ayaw paghunong, pagpraktis, pagtuon sa mga may kalabutan nga mga link ug mga libro, hibal-i kung giunsa kini molihok sa imong kompanya, pangitaa ang mga lugar nga mahimo’g mapaayo ug pag-apil niini. Good luck!

Gikan sa akong kilid

Gikan sa titulo imong makita nga kini mao lamang ang unang bahin. Bisan pa sa kamatuoran nga kini nahimo nga dako kaayo, ang importante nga mga hilisgutan wala gihapon gitabonan dinhi. Sa ikaduhang bahin, nagplano ko nga tan-awon ang imprastraktura sa automation sa konteksto sa IOS. Tungod sa mga pagdili sa Apple sa pagpadagan sa mga iOS simulator lamang sa mga sistema sa macOS, ang among han-ay sa mga solusyon gipakunhod. Pananglitan, dili namo magamit ang Docker sa pagpadagan sa simulator o sa publikong mga panganod aron sa pagpadagan sa mga virtual machine. Apan wala kini magpasabot nga wala nay laing alternatibo. Paningkamutan nako nga ipadayon ka nga updated sa mga advanced nga solusyon ug modernong mga himan!

Usab, wala ko maghisgot ug dagkong mga hilisgutan nga may kalabutan sa pagmonitor. Sa Bahin 3, akong tan-awon ang labing inila nga mga himan sa pag-monitor sa imprastraktura ug kung unsang mga datos ug sukatan ang ikonsiderar.

Ug sa katapusan. Sa umaabot, nagplano ako nga magpagawas ug kurso sa video bahin sa pagtukod sa imprastraktura sa pagsulay ug mga sikat nga himan. Sa pagkakaron, adunay pipila ka mga kurso ug mga lektyur sa DevOps sa Internet, apan ang tanan nga mga materyales gipresentar sa konteksto sa kalamboan, dili pagsulay sa automation. Sa kini nga isyu, kinahanglan gyud nako ang feedback kung ang ingon nga kurso mahimong makapaikag ug bililhon alang sa komunidad sa mga tester ug mga inhenyero sa automation. Salamat daan!

Source: www.habr.com

Idugang sa usa ka comment