Воситаҳои DevOps на танҳо барои DevOps мебошанд. Раванди сохтани инфрасохтори автоматикунонии санҷиш аз сифр

Қисми 1: Веб/Android

эрод гирифтан: ин мақола тарҷумаи мақолаи аслӣ ба забони русӣ аст "Асбобҳои DevOps на танҳо барои DevOps мебошанд. "Сохтани инфрасохтори автоматикунонии санҷиш аз сифр." Бо вуҷуди ин, ҳама тасвирҳо, истинодҳо, иқтибосҳо ва истилоҳот дар забони аслӣ нигоҳ дошта мешаванд, то ҳангоми тарҷума ба русӣ таҳриф нашаванд. Ба шумо дар таҳсили хушбахтона орзумандам!

Воситаҳои DevOps на танҳо барои DevOps мебошанд. Раванди сохтани инфрасохтори автоматикунонии санҷиш аз сифр

Дар айни замон, ихтисоси DevOps яке аз талабот дар соҳаи IT мебошад. Агар шумо сайтҳои маъмули ҷустуҷӯии корро кушоед ва аз рӯи маош филтр кунед, шумо хоҳед дид, ки ҷойҳои кори марбут ба DevOps дар болои рӯйхат қарор доранд. Аммо, фаҳмидан муҳим аст, ки ин асосан ба вазифаи "боло" дахл дорад, ки ин маънои онро дорад, ки номзад дорои сатҳи баланди малака, дониши технология ва асбобҳо мебошад. Ин хам масъулияти баландеро, ки бо кори бефосилаи истехсолот алокаманд аст, ба миён мегузорад. Бо вуҷуди ин, мо фаромӯш кардем, ки DevOps чист. Дар аввал ин ягон шахс ё шӯъбаи мушаххас набуд. Агар таърифи ин истилоњро љустуљў кунем, бисёр исмњои зебо ва дуруст, аз ќабили методология, амалия, фалсафаи фарњангї, гурўњи мафњумњо ва амсоли инњоро пайдо мекунем.

Ихтисоси ман як муҳандиси автоматикунонии санҷиш (муҳандиси автоматизатсияи QA) мебошад, аммо ман боварӣ дорам, ки он набояд танҳо бо навиштани санҷишҳои автоматӣ ё таҳияи меъмории чаҳорчӯбаи санҷиш алоқаманд бошад. Дар соли 2020 дониш дар бораи инфрасохтори автоматикунонӣ низ муҳим аст. Ин ба шумо имкон медиҳад, ки раванди автоматикунониро аз гузаронидани санҷишҳо то пешниҳоди натиҷаҳо ба ҳама ҷонибҳои манфиатдор мувофиқи ҳадафҳои худ ташкил кунед. Дар натиҷа, малакаҳои DevOps барои анҷом додани кор ҳатмист. Ва ин ҳама хуб аст, аммо, мутаассифона, мушкилот вуҷуд дорад (spoiler: ин мақола кӯшиш мекунад, ки ин мушкилотро содда кунад). Гап дар он аст, ки DevOps душвор аст. Ва ин аён аст, зеро ширкатҳо барои коре, ки иҷро кардан осон аст, маблағи зиёд пардохт намекунанд... Дар ҷаҳони DevOps миқдори зиёди абзорҳо, истилоҳот ва амалияҳо мавҷуданд, ки бояд азхуд карда шаванд. Ин махсусан дар ибтидои касб душвор аст ва аз таҷрибаи техникии ҷамъшуда вобаста аст.

Воситаҳои DevOps на танҳо барои DevOps мебошанд. Раванди сохтани инфрасохтори автоматикунонии санҷиш аз сифр
Манбаъ: http://maximelanciauxbi.blogspot.com/2017/04/devops-tools.html

Дар ин ҷо мо эҳтимол бо қисми муқаддимавӣ ба итмом мерасем ва ба ҳадафи ин мақола таваҷҷӯҳ мекунем. 

Ин мақола дар бораи чӣ аст?

Дар ин мақола, ман мехоҳам таҷрибаи худро дар бораи сохтани инфрасохтори автоматикунонии санҷиш мубодила кунам. Дар Интернет дар бораи асбобҳои гуногун ва тарзи истифодабарии онҳо сарчашмаҳои зиёди маълумот мавҷуданд, аммо ман мехостам онҳоро танҳо дар заминаи автоматикунонӣ баррасӣ кунам. Ман боварӣ дорам, ки бисёре аз муҳандисони автоматика бо вазъият шиносанд, ки ба ҷуз шумо касе озмоишҳои таҳияшударо иҷро намекунад ё дар бораи нигоҳдории онҳо ғамхорӣ намекунад. Дар натиҷа, санҷишҳо кӯҳна мешаванд ва шумо бояд барои навсозии онҳо вақт сарф кунед. Боз ҳам, дар оғози касб, ин метавонад як кори хеле душвор бошад: оқилона муайян кардани кадом асбобҳо барои бартараф кардани мушкилоти додашуда, чӣ гуна интихоб, танзим ва нигоҳдории онҳо. Баъзе озмоишгарон барои кӯмак ба DevOps (одамҳо) муроҷиат мекунанд ва, ростқавлона, ин равиш кор мекунад. Дар бисёр мавридҳо ин метавонад ягона вариант бошад, зеро мо ба ҳама вобастагӣ надорем. Аммо тавре ки мо медонем, DevOps бачаҳои хеле банд ҳастанд, зеро онҳо бояд дар бораи тамоми инфрасохтори ширкат, ҷобаҷогузорӣ, мониторинг, хидматрасонии хурд ва дигар вазифаҳои шабеҳ вобаста ба созмон / даста фикр кунанд. Тавре ки маъмул аст, автоматизатсия афзалият надорад. Дар чунин маврид мо бояд кушиш кунем, ки аз аввал то ба охир тамоми кори аз тарафи худ имконпазирро ба чо оварем. Ин вобастагиҳоро коҳиш медиҳад, ҷараёни корро суръат мебахшад, малакаҳои моро такмил медиҳад ва ба мо имкон медиҳад, ки тасвири бештари рӯйдодҳоро бубинем.

Мақола асбобҳои маъмултарин ва маъмултаринро пешниҳод мекунад ва нишон медиҳад, ки чӣ тавр истифода бурдани онҳо барои сохтани инфрасохтори автоматикунонӣ зина ба зина. Ҳар як гурӯҳ бо асбобҳое муаррифӣ мешавад, ки тавассути таҷрибаи шахсӣ санҷида шудаанд. Аммо ин маънои онро надорад, ки шумо бояд ҳамон чизеро истифода баред. Асбобҳо худашон муҳим нестанд, онҳо пайдо мешаванд ва кӯҳна мешаванд. Вазифаи инженерии мо аз он иборат аст, ки принципхои асосиро фахмем: чаро ба мо ин гурухи асбобхо лозим аст ва бо ёрии онхо кадом проблемахои корро хал карда метавонем. Аз ин рӯ, ман дар охири ҳар як бахш истинод ба абзорҳои шабеҳе мегузорам, ки метавонанд дар ташкилоти шумо истифода шаванд.

Чӣ дар ин мақола нест

Бори дигар такрор мекунам, ки мақола дар бораи асбобҳои мушаххас нест, бинобар ин аз ҳуҷҷатҳо ва тавсифи фармонҳои мушаххас ҳеҷ гуна воридкунии кодҳо нахоҳад буд. Аммо дар охири ҳар як бахш ман истинодҳоро барои омӯзиши муфассал мегузорам.

Ин барои он анҷом дода мешавад: 

  • ин маводро дар сарчашмаҳои гуногун пайдо кардан хеле осон аст (ҳуҷҷатҳо, китобҳо, курсҳои видеоӣ);
  • агар амиктар ба рох монем, бояд 10, 20, 30 кисмхои ин маколаро нависем (дар холе ки накшахо 2—3 аст);
  • Ман танҳо намехоҳам вақти шуморо беҳуда сарф кунам, зеро шумо метавонед барои ноил шудан ба ҳадафҳои якхела асбобҳои дигарро истифода баред.

Таҷҳизот

Ман бисёр мехостам, ки ин мавод барои ҳар як хонанда муфид бошад, на танҳо хонда ва фаромӯш карда шавад. Дар ҳама гуна омӯзиш, амалия ҷузъи хеле муҳим аст. Барои ин ман тайёр кардам Анбори GitHub бо дастурҳои зина ба зина дар бораи чӣ гуна ҳама чизро аз сифр иҷро кардан. Инчунин вазифаи хонагӣ шуморо интизор аст, то боварӣ ҳосил кунед, ки шумо сатрҳои фармонҳои иҷрошавандаро беэҳтиётона нусхабардорӣ накунед.

Нақша

қадами
технология
Tools

1
Давраи маҳаллӣ (таҳия кардани санҷишҳои намоишии веб / андроид ва ба таври маҳаллӣ иҷро кардани он) 
Node.js, Selenium, Appium

2
Системаҳои идоракунии версия 
Рафтааст

3
Контейнеризатсия
Docker, шабакаи Selenium, Selenoid (Веб, Android)

4
CI/CD
Gitlab CI

5
Платформаҳои абрӣ
Платформаи Cloud Google

6
Оркестр
Кубернитель

7
Инфрасохтор ҳамчун код (IaC)
Terraform, Ansible

Сохтори ҳар як бахш

Барои равшан нигоҳ доштани ҳикоя, ҳар як бахш мувофиқи нақшаи зерин тавсиф карда мешавад:

  • тавсифи мухтасари технология,
  • арзиши инфрасохтори автоматикунонӣ,
  • тасвири ҳолати кунунии инфрасохтор,
  • пайвандҳо барои таҳсил,
  • воситаҳои монанд.

1. Санҷишҳоро ба таври маҳаллӣ иҷро кунед

Тавсифи мухтасари технология

Ин танҳо як қадами омодагӣ барои гузаронидани санҷишҳои намоишӣ дар маҳаллӣ ва тасдиқи гузаштани онҳо мебошад. Дар қисми амалӣ Node.js истифода мешавад, аммо забони барномасозӣ ва платформа низ муҳим нест ва шумо метавонед аз онҳое, ки дар ширкати шумо истифода мешаванд, истифода баред. 

Аммо, ҳамчун абзорҳои автоматикунонӣ, ман тавсия медиҳам, ки Selenium WebDriver барои платформаҳои веб ва Appium барои платформаи Android мутаносибан истифода баранд, зеро дар қадамҳои оянда мо тасвирҳои Docker-ро истифода мебарем, ки барои кор бо ин асбобҳо мутобиқ карда шудаанд. Ғайр аз он, бо назардошти талаботи кор, ин асбобҳо дар бозор бештар талабот доранд.

Тавре ки шумо пайхас кардаед, мо танҳо санҷишҳои веб ва Android-ро баррасӣ мекунем. Мутаассифона, iOS як ҳикояи тамоман дигар аст (ташаккур Apple). Ман нақша дорам, ки дар қисматҳои оянда қарорҳо ва амалияҳои марбут ба IOS-ро намоиш диҳам.

Арзиши инфрасохтори автоматикунонӣ

Аз нуқтаи назари инфрасохтор, кор дар маҳал ҳеҷ арзише намедиҳад. Шумо танҳо тафтиш мекунед, ки санҷишҳо дар мошини маҳаллӣ дар браузерҳо ва симуляторҳои маҳаллӣ иҷро мешаванд. Аммо дар ҳар сурат, ин як нуқтаи зарурӣ аст.

Тасвири вазъи кунунии инфрасохтор

Воситаҳои DevOps на танҳо барои DevOps мебошанд. Раванди сохтани инфрасохтори автоматикунонии санҷиш аз сифр

Истинодҳо барои омӯхтан

Воситаҳои шабеҳ

  • ҳама гуна забони барномасозӣ, ки ба шумо дар якҷоягӣ бо санҷишҳои Selenium/Appium маъқул аст;
  • ҳама гуна санҷишҳо;
  • ягон давандаи санҷишӣ.

2. Системаҳои идоракунии версияҳо (Git)

Тавсифи мухтасари технология

Агар ман гӯям, ки назорати версия як қисми хеле муҳими рушд ҳам дар гурӯҳ ва ҳам дар алоҳидагӣ аст, ин барои касе ваҳйи бузург нахоҳад буд. Дар асоси сарчашмаҳои гуногун метавон гуфт, ки Гит намояндаи маъмултарин аст. Системаи идоракунии версия бартариҳои зиёдеро фароҳам меорад, аз қабили мубодилаи код, нигоҳдории версияҳо, барқарорсозӣ ба шохаҳои қаблӣ, мониторинги таърихи лоиҳа ва нусхабардорӣ. Мо хар як нуктаро муфассал мухокима намекунем, зеро боварй дорам, ки шумо бо он хеле ошноед ва дар кори харрузаи худ истифода мебаред. Аммо агар ногаҳон не, пас ман тавсия медиҳам, ки хондани ин мақоларо таваққуф кунед ва ин холигоҳро ҳарчи зудтар пур кунед.

Арзиши инфрасохтори автоматикунонӣ

Ва дар ин ҷо шумо метавонед як саволи оқилона диҳед: "Чаро ӯ дар бораи Гит ба мо нақл мекунад? Ҳама инро медонанд ва онро ҳам барои коди таҳия ва ҳам барои коди санҷиши автоматӣ истифода мебаранд.” Шумо комилан дуруст хоҳед буд, аммо дар ин мақола мо дар бораи инфрасохтор гап мезанем ва ин бахш ҳамчун пешнамоиши бахши 7 амал мекунад: "Инфраструктура ҳамчун Кодекс (IaC)". Барои мо ин маънои онро дорад, ки тамоми инфрасохтор, аз ҷумла санҷиш, дар шакли код тавсиф карда шудааст, аз ин рӯ мо метавонем системаҳои версияро ба он татбиқ кунем ва бартариҳои шабеҳеро, ки барои таҳия ва автоматикунонии код истифода барем, ба даст орем.

Мо дар Қадами 7 ба IaC муфассалтар назар хоҳем кард, аммо ҳатто ҳоло шумо метавонед бо эҷоди анбори маҳаллӣ ба истифодаи Git ба таври маҳаллӣ шурӯъ кунед. Вақте ки мо ба инфрасохтор як анбори дурдаст илова мекунем, тасвири калон васеъ мешавад.

Тасвири вазъи кунунии инфрасохтор

Воситаҳои DevOps на танҳо барои DevOps мебошанд. Раванди сохтани инфрасохтори автоматикунонии санҷиш аз сифр

Истинодҳо барои омӯхтан

Воситаҳои шабеҳ

3. Контейнеризатсия (Docker)

Тавсифи мухтасари технология

Барои нишон додани он, ки контейнеризатсия қоидаҳои бозӣ чӣ гуна тағир ёфтааст, биёед ба чанд даҳсола баргардем. Он вақт одамон мошинҳои сервериро барои иҷро кардани барномаҳо мехариданд ва истифода мебурданд. Аммо дар аксари ҳолатҳо, захираҳои зарурии оғозёбӣ пешакӣ маълум набуданд. Дар натиҷа, ширкатҳо барои харидани серверҳои гаронбаҳои пурқувват маблағ сарф карданд, аммо як қисми ин иқтидорҳо пурра истифода нашуданд.

Марҳилаи навбатии эволютсия мошинҳои виртуалӣ (VM) буд, ки мушкилоти сарфи пулро барои захираҳои истифоданашуда ҳал мекард. Ин технология имкон дод, ки замимаҳо новобаста аз ҳамдигар дар дохили як сервер иҷро карда шаванд ва фазои комилан ҷудошуда ҷудо карда шаванд. Аммо, мутаассифона, ҳама гуна технология нуқсонҳои худро дорад. Иҷрои VM системаи мукаммали амалиётиро талаб мекунад, ки CPU, хотираи оперативӣ, анборро истеъмол мекунад ва вобаста ба ОС, хароҷоти иҷозатномаро ба назар гирифтан лозим аст. Ин омилҳо ба суръати боркунӣ таъсир мерасонанд ва интиқолро душвор мегардонанд.

Ва ҳоло мо ба контейнеризатсия меоем. Бори дигар, ин технология мушкилоти қаблиро ҳал мекунад, зеро контейнерҳо ОС-и пурраро истифода намебаранд, ки миқдори зиёди захираҳоро озод мекунад ва ҳалли зуд ва фасеҳро барои интиқол таъмин мекунад.

Албатта, технологияи контейнерсозӣ чизи нав нест ва бори аввал дар охири солҳои 70-ум ҷорӣ карда шуд. Дар он рӯзҳо бисёр тадқиқотҳо, коркардҳо ва кӯшишҳо гузаронида шуданд. Аммо маҳз Докер ин технологияро мутобиқ кард ва онро барои омма ба осонӣ дастрас кард. Дар айни замон, вақте ки мо дар бораи контейнерҳо гап мезанем, дар аксари ҳолатҳо мо Docker-ро дар назар дорем. Вақте ки мо дар бораи контейнерҳои Docker гап мезанем, мо контейнерҳои Linuxро дар назар дорем. Мо метавонем системаҳои Windows ва macOS-ро барои идора кардани контейнерҳо истифода барем, аммо фаҳмидан муҳим аст, ки дар ин ҳолат қабати иловагӣ пайдо мешавад. Масалан, Docker дар Mac контейнерҳоро дар дохили VM-и сабуки Linux иҷро мекунад. Вақте ки мо кор кардани эмуляторҳои Android дар дохили контейнерҳоро муҳокима мекунем, мо ба ин мавзӯъ бармегардем, аз ин рӯ дар ин ҷо як нозуки хеле муҳиме ҳаст, ки бояд ба таври муфассал муҳокима карда шавад.

Арзиши инфрасохтори автоматикунонӣ

Мо фаҳмидем, ки контейнерсозӣ ва Docker сарданд. Биёед инро дар заминаи автоматизатсия дида бароем, зеро ҳар як асбоб ё технология барои ҳалли мушкилот ниёз дорад. Биёед мушкилоти равшани автоматикунонии санҷишро дар заминаи санҷишҳои UI шарҳ диҳем:

  • шумораи зиёди вобастагӣ ҳангоми насб кардани Selenium ва махсусан Appium;
  • мушкилоти мутобиқат байни версияҳои браузерҳо, симуляторҳо ва драйверҳо;
  • набудани фазои ҷудогона барои браузерҳо/симуляторҳо, ки махсусан барои кори мувозӣ муҳим аст;
  • идора ва нигоҳдорӣ душвор аст, агар ба шумо лозим ояд, ки дар як вақт 10, 50, 100 ё ҳатто 1000 браузерро иҷро кунед.

Аммо азбаски Selenium маъмултарин воситаи автоматизатсия ва Docker маъмултарин воситаи контейнерсозӣ аст, набояд тааҷҷубовар бошад, ки касе кӯшиш кардааст, ки онҳоро муттаҳид кунад, то як воситаи пурқуввате барои ҳалли мушкилоти дар боло зикршуда эҷод кунад. Биёед чунин ҳаллиҳоро муфассалтар дида бароем. 

Шабакаи селениум дар докер

Ин асбоб маъмултарин дар ҷаҳони Selenium барои идора кардани браузерҳои сершумор дар мошинҳои гуногун ва идоракунии онҳо аз маркази марказӣ мебошад. Барои оғоз кардан, шумо бояд ҳадди аққал 2 қисмро сабти ном кунед: Hub ва гиреҳ(ҳо). Hub як гиреҳи марказӣ мебошад, ки ҳама дархостҳоро аз санҷишҳо қабул мекунад ва онҳоро ба гиреҳҳои мувофиқ тақсим мекунад. Барои ҳар як гиреҳ мо метавонем конфигуратсияи мушаххасро танзим кунем, масалан, тавассути муайян кардани браузери дилхоҳ ва версияи он. Бо вуҷуди ин, мо бояд ба ҳар ҳол худамон драйверҳои браузери мувофиқро нигоҳубин кунем ва онҳоро дар гиреҳҳои дилхоҳ насб кунем. Аз ин сабаб, шабакаи Selenium дар шакли холис истифода намешавад, ба истиснои ҳолатҳое, ки мо бояд бо браузерҳое кор кунем, ки дар Linux OS насб карда намешаванд. Барои ҳама ҳолатҳои дигар, ҳалли хеле чандир ва дуруст ин истифодаи тасвирҳои Docker барои идора кардани Selenium grid Hub ва Nodes мебошад. Ин равиш идоракунии гиреҳҳоро хеле осон мекунад, зеро мо метавонем тасвири лозимаро бо версияҳои мувофиқи браузерҳо ва драйверҳои аллакай насбшуда интихоб кунем.

Сарфи назар аз баррасиҳои манфӣ дар бораи субот, махсусан ҳангоми кор кардани шумораи зиёди гиреҳҳо, шабакаи Selenium ҳоло ҳам маъмултарин воситаи гузаронидани санҷишҳои Selenium мебошад. Бояд қайд кард, ки такмилҳо ва тағиротҳои гуногуни ин асбоб пайваста дар манбаи кушода пайдо мешаванд, ки бо монеаҳои гуногун мубориза мебаранд.

Selenoid барои веб

Ин асбоб як пешрафт дар ҷаҳони Selenium аст, зеро он аз қуттӣ кор мекунад ва ҳаёти бисёр муҳандисони автоматикаро хеле осон кардааст. Пеш аз ҳама, ин дигар тағйироти шабакаи Selenium нест. Ба ҷои ин, таҳиягарон версияи комилан нави Selenium Hub-ро дар Голанг сохтанд, ки дар якҷоягӣ бо тасвирҳои сабуки Docker барои браузерҳои гуногун ба рушди автоматизатсияи санҷиш такони бахшид. Гузашта аз ин, дар мавриди Selenium Grid, мо бояд ҳама браузерҳои зарурӣ ва версияҳои онҳоро пешакӣ муайян кунем, ки ҳангоми кор бо як браузер мушкиле нест. Аммо вақте ки сухан дар бораи браузерҳои сершумори дастгирӣ меравад, Selenoid ба шарофати хусусияти "браузери мувофиқи талабот" ҳалли рақами як аст. Ҳама чизе, ки аз мо талаб карда мешавад, зеркашӣ кардани тасвирҳои зарурӣ бо браузерҳо ва навсозии файли конфигуратсияе, ки бо он Selenoid ҳамкорӣ мекунад, мебошад. Пас аз он ки Selenoid дархостро аз санҷишҳо қабул кунад, он ба таври худкор контейнери дилхоҳро бо браузери дилхоҳ оғоз мекунад. Вақте ки санҷиш ба итмом мерасад, Selenoid контейнерро ба нафақа мебарорад ва ба ин васила захираҳоро барои дархостҳои оянда озод мекунад. Ин равиш мушкили маъруфи "таназзули гиреҳҳо"-ро, ки мо аксар вақт дар шабакаи Selenium дучор мешавем, комилан бартараф мекунад.

Вале афсус, ки Селеноид хануз тири нукра нест. Мо хусусияти "браузери мувофиқи талабот" -ро гирифтем, аммо хусусияти "манбаъҳо аз рӯи талабот" ҳанӯз дастрас нест. Барои истифодаи Selenoid, мо бояд онро дар сахтафзори ҷисмонӣ ё дар VM ҷойгир кунем, яъне мо бояд пешакӣ донем, ки чӣ қадар захираҳо бояд ҷудо карда шаванд. Ман фикр мекунам, ки ин барои лоиҳаҳои хурде, ки 10, 20 ё ҳатто 30 браузерро дар баробари кор мекунанд, мушкил нест. Аммо чӣ мешавад, агар ба мо 100, 500, 1000 ва бештар лозим бошад? Ҳамеша нигоҳ доштан ва пардохт кардани ин қадар захираҳо маъно надорад. Дар бахшҳои 5 ва 6-и ин мақола мо қарорҳоеро баррасӣ хоҳем кард, ки ба шумо имкон медиҳанд, ки миқёсро васеъ кунед ва ба ин васила хароҷоти ширкатро ба таври назаррас коҳиш диҳед.

Selenoid барои Android

Пас аз муваффақияти Selenoid ҳамчун воситаи автоматикунонии веб, одамон мехостанд, ки барои Android чизе монанд бошанд. Ва ин рӯй дод - Selenoid бо дастгирии Android бароварда шуд. Аз нуқтаи назари корбарони сатҳи баланд, принсипи кор ба автоматикунонии веб шабоҳат дорад. Ягона фарқият дар он аст, ки ба ҷои контейнерҳои браузер, Selenoid контейнерҳои эмулятори Android-ро идора мекунад. Ба андешаи ман, ин дар айни замон пуриқтидортарин воситаи ройгон барои гузаронидани санҷишҳои Android дар баробари аст.

Ман аслан намехоҳам дар бораи ҷанбаҳои манфии ин асбоб сӯҳбат кунам, зеро он ба ман хеле маъқул аст. Аммо ба ҳар ҳол, ҳамон нуқсонҳое мавҷуданд, ки ба автоматикунонии веб дахл доранд ва бо миқёс алоқаманданд. Илова бар ин, мо бояд дар бораи як маҳдудияти дигар сӯҳбат кунем, ки агар мо асбобро бори аввал насб кунем, ҳайратовар аст. Барои иҷро кардани тасвирҳои Android ба мо мошини ҷисмонӣ ё VM бо дастгирии виртуализатсияи лона лозим аст. Дар дастури тарзи кор, ман нишон медиҳам, ки чӣ гуна онро дар Linux VM фаъол кардан мумкин аст. Аммо, агар шумо корбари macOS бошед ва хоҳед, ки Selenoid-ро ба таври маҳаллӣ ҷойгир кунед, пас ин имконнопазир аст, ки санҷишҳои Android-ро иҷро кунед. Аммо шумо ҳамеша метавонед Linux VM-ро ба таври маҳаллӣ бо конфигуратсияи "виртуализатсияи лона" идора кунед ва дар дохили Selenoid ҷойгир кунед.

Тасвири вазъи кунунии инфрасохтор

Дар заминаи ин мақола, мо 2 асбобро барои тасвири инфрасохтор илова хоҳем кард. Инҳо шабакаи Selenium барои санҷишҳои веб ва Selenoid барои санҷишҳои Android мебошанд. Дар дарси GitHub, ман инчунин ба шумо нишон медиҳам, ки чӣ гуна истифода бурдани Selenoid барои гузаронидани санҷишҳои веб. 

Воситаҳои DevOps на танҳо барои DevOps мебошанд. Раванди сохтани инфрасохтори автоматикунонии санҷиш аз сифр

Истинодҳо барои омӯхтан

Воситаҳои шабеҳ

  • Дигар асбобҳои контейнерсозӣ мавҷуданд, аммо Docker маъмултарин аст. Агар шумо хоҳед, ки чизи дигареро санҷед, дар хотир доред, ки асбобҳое, ки мо дар баробари санҷишҳои Selenium фаро гирифтаем, аз қуттӣ кор намекунанд.  
  • Тавре ки аллакай гуфта шуд, бисёр тағйироти шабакаи Selenium вуҷуд дорад, масалан, Залениум.

4.CI/CD

Тавсифи мухтасари технология

Таҷрибаи ҳамгироии муттасил дар таҳия хеле маъмул аст ва дар баробари системаҳои идоракунии версия мебошад. Бо вуҷуди ин, ман ҳис мекунам, ки дар истилоҳот нофаҳмиҳо вуҷуд доранд. Дар ин параграф ман мехоҳам 3 тағйироти ин технологияро аз нуқтаи назари худ тавсиф кунам. Дар интернет шумо мақолаҳои зиёдеро бо тафсирҳои гуногун хоҳед ёфт ва агар фикри шумо фарқ кунад, ин комилан муқаррарӣ аст. Муҳимтар аз ҳама он аст, ки шумо бо ҳамкорони худ дар як саф ҳастед.

Ҳамин тавр, 3 истилоҳ вуҷуд дорад: CI - Интегратсияи пайваста, CD - таҳвили доимӣ ва боз CD - густариши доимӣ. (Дар зер ман ин истилоҳҳоро ба забони англисӣ истифода хоҳам кард). Ҳар як тағирот ба лӯлаи рушди шумо якчанд қадамҳои иловагӣ илова мекунад. Аммо калима доимо (давом) чизи аз ҳама муҳим аст. Дар ин замина мо чизеро дар назар дорем, ки аз аввал то ба охир, бидуни таваққуф ё дахолати дастӣ рух медиҳад. Биёед ба CI & CD ва CD дар ин замина назар кунем.

  • Интегратсияи доимӣ ин қадами ибтидоии эволютсия аст. Пас аз пешниҳоди коди нав ба сервер, мо интизорем, ки фикру мулоҳизаҳои фаврӣ дар бораи он ки тағиротҳои мо хубанд. Одатан, CI иҷрои асбобҳои таҳлили коди статикӣ ва санҷишҳои воҳид/дохилии API-ро дар бар мегирад.Ин ба мо имкон медиҳад, ки дар давоми чанд сония/дақиқа маълумотро дар бораи коди худ ба даст орем.
  • Таҳвили доимӣ як қадами пешрафтаест, ки дар он мо санҷишҳои ҳамгироӣ/UI мегузаронем. Аммо, дар ин марҳила мо на он қадар зуд ба даст меорем, ки бо CI. Аввалан, барои анҷом додани ин намуди санҷишҳо вақти зиёдтар лозим аст. Дуюм, пеш аз оғози кор, мо бояд тағиротҳои худро дар муҳити озмоиш/сценария ҷорӣ кунем. Ғайр аз он, агар мо дар бораи рушди мобилӣ сухан ронем, пас як қадами иловагӣ барои эҷоди сохтани замимаи мо пайдо мешавад.
  • Ҷойгиркунии доимӣ Фарз мекунад, ки мо тағиротҳои худро ба таври худкор ба истеҳсолот мебарорем, агар ҳама санҷишҳои қабул дар марҳилаҳои қаблӣ гузашта бошанд. Илова бар ин, пас аз марҳилаи раҳоӣ, шумо метавонед марҳилаҳои гуногунро танзим кунед, ба монанди гузаронидани санҷишҳои дуд дар истеҳсолот ва ҷамъоварии ченакҳои таваҷҷӯҳ. Ҷойгиркунии доимӣ танҳо бо фарогирии хуб тавассути санҷишҳои автоматӣ имконпазир аст. Агар ягон дахолати дастӣ, аз ҷумла санҷиш талаб карда шавад, пас ин дигар нест Идома ... (давом). Пас мо метавонем бигӯем, ки лӯлаи мо танҳо ба амалияи интиқоли муттасил мувофиқат мекунад.

Арзиши инфрасохтори автоматикунонӣ

Дар ин бахш, ман бояд фаҳмонам, ки вақте ки мо дар бораи санҷишҳои UI-и ниҳоӣ гап мезанем, ин маънои онро дорад, ки мо бояд тағирот ва хидматҳои алоқаманди худро барои муҳитҳои озмоишӣ ҷойгир кунем. Интегратсияи муттасил - ин раванд барои ин вазифа мувофиқ нест ва мо бояд дар бораи татбиқи ҳадди аққал таҷрибаҳои Continuous Deliver ғамхорӣ кунем. Ҷойгиркунии доимӣ инчунин дар заминаи санҷишҳои UI маъно дорад, агар мо онҳоро дар истеҳсолот иҷро карданием.

Ва пеш аз он ки мо ба тасвири тағироти меъморӣ назар кунем, ман мехоҳам дар бораи GitLab CI чанд сухан бигӯям. Баръакси дигар абзорҳои CI/CD, GitLab анбори дурдаст ва бисёр дигар хусусиятҳои иловагиро таъмин мекунад. Ҳамин тариқ, GitLab бештар аз CI аст. Он идоракунии рамзи сарчашма, идоракунии Agile, лӯлаҳои CI/CD, асбобҳои сабти ном ва ҷамъоварии ченакҳоро дар бар мегирад. Меъмории GitLab аз Gitlab CI/CD ва GitLab Runner иборат аст. Ин аст тавсифи мухтасари вебсайти расмӣ:

Gitlab CI/CD як барномаи веб бо API мебошад, ки ҳолати худро дар пойгоҳи додаҳо нигоҳ медорад, лоиҳаҳо/сохтаҳоро идора мекунад ва интерфейси корбарро таъмин мекунад. GitLab Runner замимаест, ки коркарди сохтмонро коркард мекунад. Он метавонад алоҳида ҷойгир карда шавад ва бо GitLab CI/CD тавассути API кор мекунад. Барои санҷишҳои иҷрошаванда ба шумо ҳам намунаи Gitlab ва ҳам Runner лозим аст.

Тасвири вазъи кунунии инфрасохтор

Воситаҳои DevOps на танҳо барои DevOps мебошанд. Раванди сохтани инфрасохтори автоматикунонии санҷиш аз сифр

Истинодҳо барои омӯхтан

Воситаҳои шабеҳ

5. Платформаҳои абрӣ

Тавсифи мухтасари технология

Дар ин бахш мо дар бораи як тамоюли маъмул бо номи "абрҳои ҷамъиятӣ" сӯҳбат хоҳем кард. Сарфи назар аз бартариҳои бузурге, ки технологияҳои виртуализатсия ва контейнеризатсияи дар боло тавсифшуда пешкаш мекунанд, мо то ҳол ба захираҳои компютерӣ ниёз дорем. Ширкатҳо серверҳои гаронарзиш мехаранд ё марказҳои маълумотро иҷора мегиранд, аммо дар ин ҳолат ҳисоб кардан лозим аст (баъзан ғайривоқеӣ), ки ба мо чӣ қадар захираҳо лозиманд, оё мо онҳоро 24/7 ва бо кадом мақсадҳо истифода мебарем. Масалан, истеҳсол сервереро талаб мекунад, ки XNUMX/XNUMX кор мекунад, аммо оё мо барои санҷиш берун аз соатҳои корӣ ба захираҳои шабеҳ ниёз дорем? Он инчунин аз намуди санҷише, ки гузаронида мешавад, вобаста аст. Намунаи озмоишҳои сарборӣ/стрессҳо мебошад, ки мо нақша дорем, ки дар соатҳои ғайрикорӣ иҷро кунем, то рӯзи дигар натиҷаҳоро ба даст орем. Аммо бешубҳа дастрасии XNUMX/XNUMX сервер барои санҷишҳои автоматикунонидашуда талаб карда намешавад ва махсусан на барои муҳити санҷиши дастӣ. Барои чунин ҳолатҳо, хуб мебуд, ки ба қадри имкон захираҳои зарурӣ мувофиқи талабот ба даст оварда шаванд, онҳо истифода шаванд ва вақте ки онҳо дигар лозим набошанд, пардохт карданро бас кунанд. Гузашта аз ин, хуб мебуд, ки онҳоро фавран тавассути якчанд клики муш ё иҷро кардани якчанд скрипт қабул кунед. Барои ин абрҳои ҷамъиятӣ истифода мешаванд. Биёед ба таъриф назар андозем:

«Абри оммавӣ ҳамчун хидматҳои ҳисоббарорӣ муайян карда мешавад, ки аз ҷониби провайдерҳои тарафи сеюм тавассути Интернети ҷамъиятӣ пешниҳод карда мешаванд ва онҳоро барои ҳар касе, ки мехоҳад истифода ё харад, дастрас мекунад. Онҳо метавонанд ройгон ё тибқи дархост фурӯхта шаванд, ки ба муштариён имкон медиҳад, ки танҳо барои истифода барои давраҳои CPU, нигоҳдорӣ ё фарохмаҷрои онҳо пардохт кунанд."

Чунин ақида вуҷуд дорад, ки абрҳои ҷамъиятӣ қимат доранд. Аммо идеяи асосии онҳо кам кардани хароҷоти ширкат аст. Тавре ки дар боло зикр гардид, абрҳои ҷамъиятӣ ба шумо имкон медиҳанд, ки захираҳоро мувофиқи талабот ба даст оред ва танҳо барои вақти истифодаи онҳо пардохт кунед. Инчунин, баъзан фаромӯш мекунем, ки кормандон маош мегиранд ва мутахассисон низ захираи гаронбаҳо мебошанд. Бояд ба назар гирифт, ки абрҳои ҷамъиятӣ дастгирии инфрасохторро хеле осон мекунанд, ки ин ба муҳандисон имкон медиҳад, ки ба вазифаҳои муҳимтар тамаркуз кунанд. 

Арзиши инфрасохтори автоматикунонӣ

Кадом захираҳои мушаххас барои санҷишҳои UI ба мо лозиманд? Асосан инҳо мошинҳои виртуалӣ ё кластерҳо мебошанд (мо дар бораи Kubernetes дар боби оянда сӯҳбат хоҳем кард) барои иҷро кардани браузерҳо ва эмуляторҳо. Чӣ қадаре ки мо мехоҳем ҳамзамон бештар браузерҳо ва эмуляторҳо кор кунем, ҳамон қадар CPU ва хотираи бештар талаб карда мешавад ва мо барои он ҳамон қадар пули бештар бояд пардохт кунем. Ҳамин тариқ, абрҳои ҷамъиятӣ дар заминаи автоматикунонии санҷиш ба мо имкон медиҳанд, ки шумораи зиёди (100, 200, 1000...) браузерҳо/эмуляторҳоро мувофиқи талабот иҷро кунем, ҳарчи зудтар натиҷаҳои санҷиш ба даст орем ва пардохтро барои чунин захираҳои бениҳоят пуршиддат бас кунем. кувва. 

Маъмултарин провайдерҳои абрӣ Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP) мебошанд. Дастур оид ба тарзи истифодабарии GCP мисолҳоро пешниҳод мекунад, аммо дар маҷмӯъ муҳим нест, ки шумо барои вазифаҳои автоматизатсия чӣ истифода мекунед. Ҳамаи онҳо тақрибан як функсияро таъмин мекунанд. Одатан, барои интихоби провайдер, менеҷмент ба инфрасохтори умумӣ ва талаботи тиҷорати ширкат тамаркуз мекунад, ки аз доираи ин мақола берун аст. Барои муҳандисони автоматизатсия муқоиса кардани истифодаи провайдерҳои абрӣ бо истифодаи платформаҳои абрӣ махсусан барои мақсадҳои санҷишӣ, ба монанди Sauce Labs, BrowserStack, BitBar ва ғайра ҷолибтар хоҳад буд. Пас биёед низ ин корро кунем! Ба андешаи ман, Sauce Labs машҳуртарин хоҷагии озмоишии абрист, аз ин рӯ ман онро барои муқоиса истифода кардам. 

GCP против Labs Sauce барои мақсадҳои автоматизатсия:

Биёед тасаввур кунем, ки мо бояд ҳамзамон 8 санҷиши веб ва 8 санҷиши Android гузаронем. Барои ин мо GCP-ро истифода мебарем ва 2 мошини виртуалиро бо Selenoid идора мекунем. Дар аввал мо 8 контейнерро бо браузерҳо мебардорем. Дар дуюм 8 контейнер бо эмуляторҳо мавҷуданд. Биёед ба нархҳо назар андозем:  

Воситаҳои DevOps на танҳо барои DevOps мебошанд. Раванди сохтани инфрасохтори автоматикунонии санҷиш аз сифр
Барои кор кардани як контейнер бо Chrome, ба мо лозим аст n1-стандарт-1 мошин. Дар мавриди Android он хоҳад буд n1-стандарт-4 барои як эмулятор. Дар асл, роҳи фасењтар ва арзонтар муқаррар кардани арзишҳои мушаххаси корбар барои CPU/Хотира аст, аммо дар айни замон ин барои муқоиса бо Sauce Labs муҳим нест.

Ва инҳоянд тарофаҳо барои истифодаи Labs Sauce:

Воситаҳои DevOps на танҳо барои DevOps мебошанд. Раванди сохтани инфрасохтори автоматикунонии санҷиш аз сифр
Ман боварӣ дорам, ки шумо аллакай фарқиятро пай бурдед, аммо ман то ҳол ҷадвалро бо ҳисобҳо барои вазифаи мо пешниҳод мекунам:

Захираҳои зарурӣ
Ҳар моҳ
Вақтҳои корӣ(соати 8-8)
Вақтҳои корӣ+ Имтиёзнок

GCP барои веб
n1-стандарт-1 х 8 = n1-стандарт-8
$194.18
23 рӯз * 12h * 0.38 = $104.88 
23 рӯз * 12h * 0.08 = $22.08

Labs Sauce for Web
Санҷишҳои мувозии виртуалии Cloud8
$1.559
-
-

GCP барои Android
n1-стандарт-4 х 8: n1-стандарт-16
$776.72
23 рӯз * 12h * 1.52 = $419.52 
23 рӯз * 12h * 0.32 = $88.32

Labs Sauce барои Android
Real Device Cloud 8 санҷишҳои мувозӣ
$1.999
-
-

Тавре ки шумо мебинед, фарқияти арзиш хеле калон аст, хусусан агар шумо санҷишҳоро танҳо дар давоми дувоздаҳ соатаи корӣ иҷро кунед. Аммо шумо метавонед хароҷотро боз ҳам кам кунед, агар шумо мошинҳои афзалиятнокро истифода баред. Ин чист?

VM-и афзалиятнок ин мисолест, ки шумо метавонед бо нархи хеле арзонтар аз намунаҳои муқаррарӣ эҷод ва кор кунед. Аммо, Compute Engine метавонад ин мисолҳоро қатъ кунад (пешгири кунад), агар он дастрасӣ ба ин захираҳоро барои дигар вазифаҳо талаб кунад. Намунаҳои афзалиятнок иқтидори зиёдатии Compute Engine мебошанд, бинобар ин дастрасии онҳо вобаста ба истифода фарқ мекунад.

Агар барномаҳои шумо ба хатогиҳо таҳаммулпазир бошанд ва ба пешгириҳои имконпазири мисолҳо тоб оварда тавонанд, пас намунаҳои афзалиятнок метавонанд хароҷоти Compute Engine-ро ба таври назаррас коҳиш диҳанд. Масалан, корҳои коркарди гурӯҳӣ метавонанд дар ҳолатҳои афзалиятнок иҷро шаванд. Агар баъзе аз ин ҳолатҳо ҳангоми коркард қатъ шаванд, кор суст мешавад, аммо пурра қатъ намешавад. Намунаҳои афзалиятнок вазифаҳои коркарди партияи шуморо бидуни гузоштани сарбории иловагӣ ба мисолҳои мавҷудаи шумо ва бидуни талаб кардани пардохти пурраи ҳолатҳои муқаррарии иловагӣ анҷом медиҳанд.

Ва ҳоло ҳам тамом нашудааст! Дар асл, ман боварӣ дорам, ки ҳеҷ кас дар тӯли 12 соат бидуни танаффус санҷиш намегузаронад. Ва агар ин тавр бошад, шумо метавонед мошинҳои виртуалиро ҳангоми зарурат ба таври худкор оғоз ва қатъ кунед. Вақти воқеии истифода метавонад то 6 соат дар як рӯз кам карда шавад. Он гоҳ пардохт дар заминаи вазифаи мо барои 11 браузер то $8 дар як моҳ коҳиш меёбад. Оё ин аҷиб нест? Аммо бо мошинҳои афзалиятнок, мо бояд эҳтиёткор бошем ва ба халалдоршавӣ ва ноустуворӣ омода бошем, гарчанде ки ин ҳолатҳоро дар нармафзор таъмин кардан ва ҳал кардан мумкин аст. Меарзад!

Аммо ба ҳеҷ ваҷҳ ман намегӯям, ки "ҳеҷ гоҳ хоҷагиҳои санҷишии абрро истифода набаред". Онҳо як қатор афзалиятҳо доранд. Пеш аз ҳама, ин на танҳо як мошини маҷозӣ, балки як ҳалли мукаммали автоматизатсияи санҷишӣ бо маҷмӯи функсияҳои берун аз қуттӣ: дастрасии дурдаст, гузоришҳо, скриншотҳо, сабти видео, браузерҳои гуногун ва дастгоҳҳои мобилии ҷисмонӣ. Дар бисёр ҳолатҳо, ин метавонад як алтернативаи муҳими зебо бошад. Платформаҳои санҷишӣ махсусан барои автоматизатсияи IOS муфиданд, вақте абрҳои ҷамъиятӣ танҳо системаҳои Linux/Windows-ро пешниҳод карда метавонанд. Аммо мо дар бораи iOS дар мақолаҳои зерин сӯҳбат хоҳем кард. Ман тавсия медиҳам, ки ҳамеша ба вазъ назар андозед ва аз вазифаҳо оғоз кунед: дар баъзе мавридҳо истифодаи абрҳои ҷамъиятӣ арзонтар ва самараноктар аст, ва дар баъзе ҳолатҳо платформаҳои санҷишӣ бешубҳа ба маблағи сарфшуда меарзанд.

Тасвири вазъи кунунии инфрасохтор

Воситаҳои DevOps на танҳо барои DevOps мебошанд. Раванди сохтани инфрасохтори автоматикунонии санҷиш аз сифр

Истинодҳо барои омӯхтан

Воситаҳои шабеҳ:

6. Оркестр

Тавсифи мухтасари технология

Ман як хабари хуш дорам - мо қариб дар охири мақола ҳастем! Дар айни замон, инфрасохтори автоматикунонии мо аз санҷишҳои веб ва Android иборат аст, ки мо онҳоро дар баробари GitLab CI бо истифода аз абзорҳои аз ҷониби Docker фаъол иҷро мекунем: Grid Selenium ва Selenoid. Ғайр аз он, мо мошинҳои виртуалии тавассути GCP сохташударо барои ҷойгир кардани контейнерҳо бо браузерҳо ва эмуляторҳо истифода мебарем. Барои кам кардани хароҷот, мо ин мошинҳои виртуалиро танҳо мувофиқи талабот оғоз мекунем ва ҳангоми гузаронида нашудани санҷиш онҳоро қатъ мекунем. Оё чизи дигаре ҳаст, ки инфрасохтори моро беҳтар карда метавонад? Ҷавоб ҳа аст! Бо Кубернетес (K8s) вохӯред!

Аввалан, биёед бубинем, ки чӣ гуна калимаҳои оркестрсозӣ, кластер ва Кубернетес бо ҳам алоқаманданд. Дар сатҳи баланд, оркестрсозӣ системаест, ки барномаҳоро ҷойгир ва идора мекунад. Барои автоматизатсияи санҷиш, чунин барномаҳои контейнерӣ шабакаи Selenium ва Selenoid мебошанд. Docker ва K8s якдигарро пурра мекунанд. Якум барои ҷойгиркунии барнома истифода мешавад, дуюм барои оркестрсозӣ. Дар навбати худ, K8s як кластер аст. Вазифаи кластер аз истифодаи VM-ҳо ҳамчун гиреҳ иборат аст, ки ба шумо имкон медиҳад функсияҳо, барномаҳо ва хидматҳои гуногунро дар як сервер (кластер) насб кунед. Агар ягон гиреҳ ноком шавад, дигар гиреҳҳо ба кор медароянд, ки ин кори бефосилаи замимаи моро таъмин мекунад. Илова бар ин, K8s дорои функсияҳои муҳими марбут ба миқёс аст, ки ба шарофати он мо ба таври худкор миқдори оптималии захираҳоро дар асоси сарборӣ ба даст меорем ва маҳдудиятҳоро муқаррар мекунем.

Дар ҳақиқат, ба таври дастӣ ҷойгир кардани Kubernetes аз сифр кори оддӣ нест. Ман истинод ба дастури машҳури "Кубернетес The Hard Way" мегузорам ва агар шумо таваҷҷӯҳ дошта бошед, шумо метавонед онро амалӣ кунед. Аммо, хушбахтона, усулҳо ва воситаҳои алтернативӣ мавҷуданд. Роҳи осонтарин ин истифодаи Google Kubernetes Engine (GKE) дар GCP мебошад, ки ба шумо имкон медиҳад кластери тайёрро бо чанд клик ба даст оред. Ман тавсия медиҳам, ки ин равишро барои оғоз кардани омӯзиш истифода баред, зеро он ба шумо имкон медиҳад, ки ба омӯхтани тарзи истифодаи K8s барои вазифаҳои худ диққат диҳед, ба ҷои он ки чӣ гуна ҷузъҳои дохилӣ бояд бо ҳамдигар ҳамгиро шаванд. 

Арзиши инфрасохтори автоматикунонӣ

Биёед якчанд хусусиятҳои муҳимеро, ки K8s таъмин мекунанд, дида бароем:

  • ҷобаҷогузории барномаҳо: истифодаи кластери бисёр гиреҳ ба ҷои VM;
  • миқёси динамикӣ: арзиши захираҳоеро, ки танҳо тибқи талабот истифода мешаванд, кам мекунад;
  • худтабобаткунї: барќароркунии автоматии ќўдакњо (дар натиљаи он зарфњо низ барќарор мешаванд);
  • паҳнкунии навсозиҳо ва баргардонидани тағирот бе таъхир: навсозии асбобҳо, браузерҳо ва эмуляторҳо кори корбарони кунуниро халалдор намекунад

Аммо K8s ҳанӯз тири нуқра нест. Барои фаҳмидани ҳама бартариятҳо ва маҳдудиятҳо дар заминаи абзорҳое, ки мо баррасӣ мекунем (Selenium grid, Selenoid), мо сохтори K8-ро мухтасар баррасӣ хоҳем кард. Кластер ду намуди гиреҳҳоро дар бар мегирад: гиреҳҳои асосӣ ва гиреҳҳои коргарон. Гиреҳҳои Мастер барои идоракунӣ, ҷойгиркунӣ ва банақшагирии қарорҳо масъуланд. Гиреҳҳои коргарон дар он ҷое, ки барномаҳо оғоз мешаванд. Гиреҳҳо инчунин муҳити кори контейнерро дар бар мегиранд. Дар ҳолати мо, ин Docker аст, ки барои амалиёти марбут ба контейнер масъул аст. Аммо ҳалли алтернативӣ низ вуҷуд дорад, масалан контейнер. Фаҳмидани он муҳим аст, ки миқёс ё худшифокунӣ мустақиман ба контейнерҳо дахл надорад. Ин бо роҳи илова кардан/кам кардани шумораи қубурҳо амалӣ карда мешавад, ки дар навбати худ контейнерҳоро дар бар мегиранд (одатан як контейнер барои як қуттӣ, вале вобаста ба вазифа метавонад бештар бошад). Иерархияи сатҳи баланд аз гиреҳҳои коргарӣ иборат аст, ки дар дохили онҳо қубурҳо мавҷуданд, ки дар дохили онҳо контейнерҳо бардошта мешаванд.

Хусусияти миқёс калид аст ва онро метавон ба ҳарду гиреҳ дар дохили ҳавзи гиреҳи кластерӣ ва подкҳо дар дохили гиреҳ татбиқ кард. 2 намуди миқёс вуҷуд дорад, ки ҳам ба гиреҳҳо ва ҳам ба қисмҳо дахл доранд. Навъи якум уфуқӣ аст - миқёскунӣ тавассути зиёд кардани шумораи гиреҳҳо/подҳо ба амал меояд. Ин навъ бештар афзалтар аст. Навъи дуюм, мутаносибан, амудӣ аст. Миқёскунӣ бо зиёд кардани андозаи гиреҳҳо/подҳо, на шумораи онҳо анҷом дода мешавад.

Акнун биёед асбобҳои худро дар заминаи истилоҳҳои дар боло зикршуда дида бароем.

Шабакаи селенӣ

Тавре ки қаблан зикр гардид, шабакаи Selenium як асбоби хеле маъмул аст ва тааҷҷубовар нест, ки он контейнер карда шудааст. Аз ин рӯ, тааҷҷубовар нест, ки шабакаи Selenium метавонад дар K8s ҷойгир карда шавад. Намунаи чӣ гуна ин корро кардан мумкин аст дар анбори расмии K8s ёфт. Чун маъмулӣ, ман истинодҳоро дар охири бахш замима мекунам. Илова бар ин, дастур оид ба тарзи кор нишон медиҳад, ки чӣ тавр ин корро дар Terraform иҷро кардан мумкин аст. Инчунин дастурҳо дар бораи чӣ гуна миқёси миқдоре, ки дорои контейнерҳои браузер мебошанд, мавҷуданд. Аммо функсияи миқёси автоматӣ дар заминаи K8s то ҳол вазифаи комилан возеҳ нест. Вакте ки ман ба тахсил шуруъ кардам, ягон дастуру тавсияи амалй наёфтам. Пас аз якчанд таҳқиқот ва таҷрибаҳо бо дастгирии дастаи DevOps, мо равиши баланд бардоштани контейнерҳоро бо браузерҳои зарурӣ дар дохили як подк, ки дар дохили як гиреҳи коргар ҷойгир аст, интихоб кардем. Ин усул ба мо имкон медиҳад, ки стратегияи миқёси уфуқии гиреҳҳоро тавассути зиёд кардани шумораи онҳо татбиқ кунем. Ман умедворам, ки ин дар оянда тағир хоҳад ёфт ва мо тавсифи бештари равишҳо ва ҳалли омодаро мебинем, алахусус пас аз нашри Grid Selenium 4 бо меъмории тағирёфтаи дохилӣ.

Селеноид:

Ҷойгиркунии селеноид дар K8s айни замон бузургтарин ноумедӣ аст. Онҳо мувофиқ нестанд. Аз рӯи назария, мо метавонем як контейнери Селеноидро дар дохили як қаҳваранг бардорем, аммо вақте ки Selenoid контейнерҳоро бо браузерҳо оғоз мекунад, онҳо то ҳол дар дохили ҳамон як подкӯҳ хоҳанд буд. Ин миқёсро ғайриимкон месозад ва дар натиҷа кори Selenoid дар дохили кластер аз кори дохили мошини виртуалӣ фарқ намекунад. Охири ҳикоя.

моҳ:

Донистани ин монеа ҳангоми кор бо Selenoid, таҳиягарон як асбоби пурқувватеро бо номи Мун бароварданд. Ин асбоб дар ибтидо барои кор бо Kubernetes тарҳрезӣ шуда буд ва дар натиҷа, хусусияти автоматӣ метавонад истифода шавад ва бояд истифода шавад. Гузашта аз ин, ман гуфта метавонам, ки дар айни замон ягона асбобе дар ҷаҳони Selenium, ки аз қуттӣ дастгирии кластерии K8s дорад (дигар дастрас нест, ба абзори навбатӣ нигаред ). Хусусиятҳои асосии Моҳ, ки ин дастгирӣро таъмин мекунанд, инҳоянд: 

Комилан бидуни шаҳрвандӣ. Selenoid дар хотира маълумотро дар бораи сеансҳои браузери ҷорӣ нигоҳ медорад. Агар бо ягон сабаб раванди он вайрон шавад, пас ҳамаи сессияҳои иҷрошаванда гум мешаванд. Баръакс, Моҳ ҳолати дохилӣ надорад ва онро дар марказҳои додаҳо такрор кардан мумкин аст. Сеансҳои браузер ҳатто агар як ё якчанд реплика нобуд шаванд, зинда боқӣ мемонанд.

Хамин тавр, Мох як халли олиест, аммо як масъалае хаст: он озод нест. Нарх аз шумораи сессияҳо вобаста аст. Шумо метавонед танҳо 0-4 сессияро ройгон иҷро кунед, ки ин махсусан муфид нест. Аммо, аз сеанси панҷум, шумо бояд барои ҳар як 5 доллар пардохт кунед. Вазъият метавонад аз ширкат ба ширкат фарқ кунад, аммо дар ҳолати мо, истифодаи Моҳ бефоида аст. Тавре ки ман дар боло тавсиф кардам, мо метавонем VM-ро бо Selenium Grid мувофиқи талабот кор кунем ё шумораи гиреҳҳоро дар кластер зиёд кунем. Тақрибан барои як қубур мо 500 браузерро оғоз мекунем ва пас аз анҷоми санҷишҳо тамоми захираҳоро қатъ мекунем. Агар мо Моҳро истифода барем, новобаста аз он ки мо чӣ қадар зуд-зуд санҷиш мегузаронем, мо бояд дар як моҳ 500 x 5 = $ 2500 пардохт кунем. Боз, ман намегӯям, ки Мунро истифода набаред. Барои вазифаҳои шумо, ин метавонад як ҳалли ҳатмӣ бошад, масалан, агар шумо дар ташкилоти худ лоиҳаҳо/гурӯҳҳои зиёде дошта бошед ва ба шумо кластери бузурги умумӣ барои ҳама лозим аст. Чун ҳамеша, ман дар охири истиноди худ мегузорам ва тавсия медиҳам, ки ҳама ҳисобҳои заруриро дар заминаи вазифаи худ анҷом диҳем.

Callisto(Диққат! Ин дар мақолаи аслӣ нест ва танҳо дар тарҷумаи русӣ мавҷуд аст)

Тавре ки ман гуфтам, Selenium як воситаи хеле маъмул аст ва соҳаи IT хеле зуд рушд мекунад. Ҳангоме ки ман дар болои тарҷума кор мекардам, дар интернет воситаи нави умедбахш бо номи Каллисто пайдо шуд (салом Cypress ва дигар қотилони Selenium). Он ба таври аслӣ бо K8s кор мекунад ва ба шумо имкон медиҳад, ки контейнерҳои Selenoid-ро дар қуттиҳо, ки дар саросари гиреҳҳо тақсим карда шудаанд, идора кунед. Ҳама чиз аз қуттӣ кор мекунад, аз ҷумла автоматизатсия. Фантастика, аммо бояд санҷида шавад. Ман аллакай тавонистам ин асбобро ҷойгир кунам ва якчанд таҷрибаҳоро иҷро кунам. Аммо хулоса баровардан барвақт аст, пас аз гирифтани натиҷаҳо дар масофаи дур, шояд ман дар мақолаҳои оянда баррасӣ хоҳам кард. Ҳоло ман танҳо истинодҳоро барои таҳқиқоти мустақил мегузорам.  

Тасвири вазъи кунунии инфрасохтор

Воситаҳои DevOps на танҳо барои DevOps мебошанд. Раванди сохтани инфрасохтори автоматикунонии санҷиш аз сифр

Истинодҳо барои омӯхтан

Воситаҳои шабеҳ

7. Инфрасохтор ҳамчун Кодекс (IaC)

Тавсифи мухтасари технология

Ва ҳоло мо ба қисми охирин меоем. Одатан, ин технология ва вазифаҳои марбут ба муҳандисони автоматика масъул нестанд. Ва сабабҳои ин вуҷуд доранд. Аввалан, дар бисёр ташкилотҳо, масъалаҳои инфрасохтор таҳти назорати шӯъбаи DevOps қарор доранд ва гурӯҳҳои таҳиякунанда воқеан парво надоранд, ки лӯларо чӣ кор мекунад ва чӣ гуна ҳама чизеро, ки бо он алоқаманд аст, дастгирӣ кардан лозим аст. Сониян, ростқавлона гӯем, дар бисёр ширкатҳо таҷрибаи инфрасохтор ҳамчун Кодекс (IaC) ҳанӯз қабул нашудааст. Аммо он бешубҳа ба як тамоюли маъмул табдил ёфтааст ва муҳим аст, ки кӯшиш кунед, ки дар равандҳо, равишҳо ва воситаҳои марбут ба он иштирок кунед. Ё ҳадди аққал аз нав бохабар бошед.

Биёед бо ҳавасмандии истифодаи ин равиш оғоз кунем. Мо аллакай муҳокима кардем, ки барои гузаронидани санҷишҳо дар GitlabCI, ба мо ҳадди аққал захираҳое лозиманд, ки Gitlab Runner кор кунанд. Ва барои кор кардани контейнерҳо бо браузерҳо/эмуляторҳо, мо бояд VM ё кластерро захира кунем. Илова ба санҷиши захираҳо, мо ба миқдори назарраси қобилият барои дастгирии таҳия, саҳнасозӣ, муҳити истеҳсолӣ ниёз дорем, ки он инчунин пойгоҳи додаҳо, ҷадвалҳои автоматӣ, конфигуратсияҳои шабака, мувозинатҳои сарборӣ, ҳуқуқҳои корбар ва ғайраро дар бар мегирад. Масъалаи асосӣ ин кӯшишест, ки барои дастгирии ҳама чиз зарур аст. Якчанд роҳҳо вуҷуд доранд, ки мо метавонем тағирот ворид кунем ва навсозиро паҳн кунем. Масалан, дар контексти GCP, мо метавонем консоли UI-ро дар браузер истифода барем ва ҳама амалҳоро бо пахш кардани тугмаҳо иҷро кунем. Як алтернатива ин аст, ки зангҳои API барои муошират бо объектҳои абрӣ ё истифодаи утилитаи сатри фармони gcloud барои иҷрои амалҳои дилхоҳ. Аммо бо шумораи воқеии зиёди субъектҳо ва унсурҳои инфрасохторӣ, иҷро кардани ҳама амалиётҳо ба таври дастӣ душвор ва ҳатто ғайриимкон мегардад. Гузашта аз ин, ҳамаи ин амалҳои дастӣ идоранашавандаанд. Мо наметавонем онҳоро барои баррасӣ пеш аз иҷроиш пешниҳод кунем, системаи идоракунии версияро истифода барем ва тағиротеро, ки ба ин ҳодиса овардаанд, зуд баргардонем. Барои ҳалли ин гуна мушкилот, муҳандисон скриптҳои автоматии bash/shell-ро эҷод ва эҷод карданд, ки аз усулҳои қаблӣ чандон беҳтар нестанд, зеро хондан, фаҳмидан, нигоҳдорӣ ва тағир додани онҳо дар услуби мурофиавӣ он қадар осон нест.

Дар ин мақола ва чӣ гуна роҳнамо, ман 2 асбоби марбут ба амалияи IaC -ро истифода мебарам. Инҳо Terraform ва Ansible мебошанд. Баъзе одамон боварӣ доранд, ки истифодаи онҳо дар як вақт маъно надорад, зеро функсияҳои онҳо якхелаанд ва онҳо ивазшавандаанд. Аммо гап дар он аст, ки дар аввал ба онҳо вазифаҳои тамоман дигар дода мешаванд. Ва далели он, ки ин асбобҳо бояд ҳамдигарро пурра кунанд, дар муаррифии муштарак аз ҷониби таҳиягарони намояндагии HashiCorp ва RedHat тасдиқ карда шуданд. Тафовути консептуалӣ дар он аст, ки Terraform як воситаи таъминкунанда барои идоракунии худи серверҳо мебошад. Дар ҳоле ки Ansible як воситаи идоракунии конфигуратсия аст, ки вазифаи он насб, танзим ва идоракунии нармафзор дар ин серверҳо мебошад.

Хусусияти дигари фарқкунандаи ин асбобҳо услуби рамзгузорӣ мебошад. Баръакси bash ва Ansible, Terraform услуби декларативиро дар асоси тавсифи ҳолати ниҳоии дилхоҳ, ки дар натиҷаи иҷро ба даст меояд, истифода мебарад. Масалан, агар мо 10 VM эҷод кунем ва тағиротро тавассути Terraform татбиқ кунем, мо 10 VM мегирем. Агар мо скриптро дубора иҷро кунем, ҳеҷ чиз рӯй нахоҳад дод, зеро мо аллакай 10 VM дорем ва Terraform дар ин бора медонад, зеро он ҳолати кунунии инфрасохторро дар файли давлатӣ нигоҳ медорад. Аммо Ansible равиши мурофиавиро истифода мебарад ва агар шумо аз он хоҳиш кунед, ки 10 VM эҷод кунад, пас дар оғози аввал мо 10 VM-и шабеҳ ба Terraform мегирем. Аммо пас аз бозоғозӣ мо аллакай 20 VM хоҳем дошт. Ин фарқияти муҳим аст. Дар услуби мурофиавӣ, мо ҳолати кунуниро нигоҳ намедорем ва танҳо як пайдарпаии қадамҳоро тавсиф мекунем, ки бояд иҷро шаванд. Албатта, мо метавонем вазъиятҳои гуногунро ҳал кунем, барои мавҷудияти захираҳо ва ҳолати кунунӣ якчанд санҷиш илова кунем, аммо вақти худро беҳуда сарф кардан ва барои назорат кардани ин мантиқ кӯшиш кардан фоида надорад. Илова бар ин, ин хатари хатогиҳоро зиёд мекунад. 

Ҳамаи гуфтаҳои дар боло зикршударо ҷамъбаст намуда, мо метавонем ба хулосае ояд, ки Terraform ва қайди декларативӣ воситаи мувофиқтар барои таъмини серверҳо мебошанд. Аммо беҳтар аст, ки кори идоракунии конфигуратсияро ба Ansible вогузор кунед. Бо ин роҳ, биёед ба ҳолатҳои истифода дар заминаи автоматизатсия назар андозем.

Арзиши инфрасохтори автоматикунонӣ

Ягона чизи муҳиме, ки дар ин ҷо бояд фаҳмем, ин аст, ки инфрасохтори автоматикунонии санҷиш бояд ҳамчун як қисми тамоми инфрасохтори ширкат баррасӣ карда шавад. Ин маънои онро дорад, ки тамоми таҷрибаҳои IaC бояд дар саросари ҷаҳон ба захираҳои тамоми созмон татбиқ карда шаванд. Кӣ барои ин масъул аст, аз равандҳои шумо вобаста аст. Дастаи DevOps дар ин масъалаҳо ботаҷрибатар аст ва онҳо манзараи тамоми ҳодисаро мебинанд. Бо вуҷуди ин, муҳандисони QA бештар дар раванди автоматикунонии сохтмон ва сохтори қубур ҷалб карда мешаванд, ки ба онҳо имкон медиҳад, ки тамоми тағйироти зарурӣ ва имкониятҳои такмилро беҳтар бубинанд. Беҳтарин вариант ин якҷоя кор кардан, мубодилаи дониш ва ғояҳо барои ноил шудан ба натиҷаи интизоршуда мебошад. 

Инҳоянд чанд мисоли истифодаи Terraform ва Ansible дар заминаи автоматизатсияи санҷиш ва абзорҳое, ки мо қаблан муҳокима кардем:

1. Хусусиятҳо ва параметрҳои зарурии VM ва кластерҳоро бо истифода аз Terraform тавсиф кунед.

2. Бо истифода аз Ansible, асбобҳои заруриро барои санҷиш насб кунед: docker, Selenoid, Selenium Grid ва зеркашӣ кардани версияҳои лозимии браузерҳо/эмуляторҳо.

3. Бо истифода аз Terraform, хусусиятҳои VM-ро, ки дар он GitLab Runner оғоз мешавад, тавсиф кунед.

4. GitLab Runner ва абзорҳои зарурии ҳамроҳро бо истифода аз Ansible насб кунед, танзимот ва конфигуратсияҳоро муқаррар кунед.

Тасвири вазъи кунунии инфрасохтор

Воситаҳои DevOps на танҳо барои DevOps мебошанд. Раванди сохтани инфрасохтори автоматикунонии санҷиш аз сифр

Истинодҳо барои омӯхтан:

Воситаҳои шабеҳ

Биёед онро ҷамъбаст кунем!

қадами
технология
Tools
Арзиши инфрасохтори автоматикунонӣ

1
Давраи маҳаллӣ
Node.js, Selenium, Appium

  • Воситаҳои маъмултарин барои веб ва мобилӣ
  • Бисёр забонҳо ва платформаҳоро дастгирӣ мекунад (аз ҷумла Node.js)

2
Системаҳои идоракунии версия 
Рафтааст

  • Манфиатҳои шабеҳ бо рамзи рушд

3
Контейнеризатсия
Docker, шабакаи Selenium, Selenoid (Веб, Android)

  • Гузаронидани санҷишҳо дар баробари
  • Муҳити ҷудошуда
  • Навсозии версияи оддӣ ва чандир
  • Ба таври динамикӣ қатъ кардани захираҳои истифоданашуда
  • Насб кардан осон аст

4
CI/CD
Gitlab CI

  • Қисми қубурро месанҷад
  • Алоқаи зуд
  • Намоиш барои тамоми ширкат / даста

5
Платформаҳои абрӣ
Платформаи Cloud Google

  • Манбаъҳо аз рӯи талабот (мо танҳо ҳангоми зарурат пардохт мекунем)
  • Идоракунӣ ва навсозӣ осон
  • Намоиш ва назорати тамоми захираҳо

6
Оркестр
Кубернитель
Дар контексти контейнерҳо бо браузерҳо/эмуляторҳо дар дохили pods:

  • Миқёссозӣ/миқёси худкор
  • Худтабобаткунӣ
  • Навсозиҳо ва бозгаштҳо бе таваққуф

7
Инфрасохтор ҳамчун код (IaC)
Terraform, Ansible

  • Манфиатҳои шабеҳ бо инфрасохтори рушд
  • Ҳама бартариҳои версияи код
  • Тағирот ва нигоҳдорӣ осон аст
  • Комилан автоматӣ

Диаграммаҳои харитаи ақл: эволютсияи инфрасохтор

қадами 1: маҳаллӣ
Воситаҳои DevOps на танҳо барои DevOps мебошанд. Раванди сохтани инфрасохтори автоматикунонии санҷиш аз сифр

қадами 2: VCS
Воситаҳои DevOps на танҳо барои DevOps мебошанд. Раванди сохтани инфрасохтори автоматикунонии санҷиш аз сифр

Қадами 3: Контейнеризатсия 
Воситаҳои DevOps на танҳо барои DevOps мебошанд. Раванди сохтани инфрасохтори автоматикунонии санҷиш аз сифр

қадами 4: CI/CD 
Воситаҳои DevOps на танҳо барои DevOps мебошанд. Раванди сохтани инфрасохтори автоматикунонии санҷиш аз сифр

қадами 5: Платформаҳои абрӣ
Воситаҳои DevOps на танҳо барои DevOps мебошанд. Раванди сохтани инфрасохтори автоматикунонии санҷиш аз сифр

Қадами 6: Оркестратсия
Воситаҳои DevOps на танҳо барои DevOps мебошанд. Раванди сохтани инфрасохтори автоматикунонии санҷиш аз сифр

қадами 7: IaC
Воситаҳои DevOps на танҳо барои DevOps мебошанд. Раванди сохтани инфрасохтори автоматикунонии санҷиш аз сифр

Чӣ оянда аст?

Инак, ин охири мақола аст. Аммо дар хотима мехостам бо шумо баъзе созишно-махо бастанд.

Аз тарафи шумо
Тавре ки дар аввал гуфта шуд, ман мехостам, ки мақола муфид бошад ва ба шумо донишҳои гирифтаро дар кори воқеӣ татбиқ кунад. боз илова мекунам пайванд ба дастури амалӣ.

Аммо ҳатто баъд аз он, бас накунед, машқ накунед, истинодҳо ва китобҳои мувофиқро омӯзед, бифаҳмед, ки он дар ширкати шумо чӣ гуна кор мекунад, ҷойҳоеро пайдо кунед, ки беҳтар карда шаванд ва дар он иштирок кунед. Барори кор!

Аз тарафи ман

Аз сарлавҳа мебинед, ки ин танҳо қисми аввал буд. Сарфи назар аз он, ки он хеле калон буд, дар ин ҷо мавзӯъҳои муҳим то ҳол фаро гирифта нашудаанд. Дар қисми дуюм, ман нақша дорам, ки инфрасохтори автоматикунониро дар заминаи IOS бубинам. Аз сабаби маҳдудиятҳои Apple дар иҷрои симуляторҳои iOS танҳо дар системаҳои macOS, доираи ҳалли мо танг шудааст. Масалан, мо наметавонем Docker-ро барои иҷро кардани симулятор ё абрҳои ҷамъиятӣ барои идора кардани мошинҳои виртуалӣ истифода барем. Аммо ин маънои онро надорад, ки алтернативаҳои дигар вуҷуд надоранд. Ман кӯшиш мекунам, ки шуморо бо қарорҳои пешрафта ва асбобҳои муосир огоҳ созам!

Инчунин, ман мавзӯъҳои хеле калони марбут ба мониторингро зикр накардаам. Дар қисми 3, ман ба воситаҳои маъмултарини мониторинги инфрасохтор ва кадом маълумот ва ченакҳоро баррасӣ мекунам.

Ва ниҳоят. Дар оянда ман нақша дорам, ки курси видеоиро оид ба сохтани инфрасохтори санҷишӣ ва асбобҳои маъмул нашр кунам. Дар айни замон, дар Интернет як қатор курсҳо ва лексияҳо оид ба DevOps мавҷуданд, аммо ҳама маводҳо дар заминаи таҳия пешниҳод карда мешаванд, на автоматикунонии санҷиш. Дар ин масъала, ман воқеан ба фикру мулоҳизаҳо ниёз дорам, ки оё чунин курс барои ҷомеаи озмоишгарон ва муҳандисони автоматика ҷолиб ва арзишманд хоҳад буд. Пешакӣ ташаккур!

Манбаъ: will.com

Илова Эзоҳ