Дастури Dummies: Сохтани занҷирҳои DevOps бо асбобҳои кушодаасос

Дастури Dummies: Сохтани занҷирҳои DevOps бо асбобҳои кушодаасос
Сохтани аввалин занҷири DevOps дар панҷ қадам барои шурӯъкунандагон.

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

Муқаддимаи ман ба DevOps

Ман қаблан дар Citi Group бо абрҳо кор мекардам ва веб-барномаи IaaS-ро барои идоракунии инфрасохтори абрии Citi таҳия мекардам, аммо ман ҳамеша ба он шавқ доштам, ки чӣ гуна занҷири рушдро оптимизатсия ва фарҳангро дар байни таҳиягарон беҳтар созам. Грег Лавендер, CTO мо оид ба меъморӣ ва инфрасохтори абрӣ, ин китобро ба ман тавсия дод. Лоиҳаи "Феникс". Он принсипҳои DevOps-ро зебо мефаҳмонад ва мисли роман мехонад.

Ҷадвали қафо нишон медиҳад, ки ширкатҳо версияҳои навро чанд вақт мебароранд:

Дастури Dummies: Сохтани занҷирҳои DevOps бо асбобҳои кушодаасос

Чӣ тавр Amazon, Google ва Netflix тавонистанд ин қадар зиёдро паҳн кунанд? Ва ин оддӣ аст: онҳо фаҳмиданд, ки чӣ гуна як занҷири қариб комили DevOps эҷод кардан мумкин аст.

То он даме, ки мо ба DevOps гузаштем, дар Citi корҳо барои мо хеле фарқ мекарданд. Пас аз он дастаи ман муҳитҳои гуногун дошт, аммо мо интиқолро ба сервери таҳия дастӣ анҷом додем. Ҳама таҳиягарон танҳо ба як сервери таҳия дар асоси нашри Community Server Application Server IBM WebSphere дастрасӣ доштанд. Бо кӯшиши ҳамзамон расонидани хидмат, сервер "афтид" ва ҳар дафъа мо маҷбур шудем, ки байни худ "дарднок" гуфтушунид кунем. Мо инчунин фарогирии коди нокифоя бо санҷишҳо, раванди интиқоли дастӣ ва вақти пайгирии интиқоли код бо ёрии ягон вазифа ё талаботи муштарӣ надоштем.

Маълум буд, ки кори таъҷилӣ бояд анҷом дода шавад ва ман ҳамкори ҳамфикр пайдо кардам. Мо тасмим гирифтем, ки аввалин занҷири DevOps-ро якҷоя созем - ӯ як мошини виртуалӣ ва сервери замимаи Tomcat таъсис дод ва ман дар бораи Ҷенкинс, ҳамгироӣ бо Atlassian Jira ва BitBucket, инчунин фарогирии кодҳо бо санҷишҳо ғамхорӣ кардам. Лоиҳа бомуваффақият буд: мо занҷири таҳияро пурра автоматӣ кардем, тақрибан 100% вақти кор дар сервери таҳияро ба даст овардем, тавонистем фарогирии кодҳоро бо санҷишҳо назорат ва такмил диҳем ва филиали Git метавонад ба таҳвил ва баровардани Jira пайваст карда шавад. Ва тақрибан ҳамаи асбобҳое, ки мо барои сохтани занҷири DevOps истифода мебурдем, манбаи кушода буданд.

Дар асл, занҷир содда карда шуд, зеро мо ҳатто конфигуратсияҳои пешрафтаро бо истифода аз Ҷенкинс ё Ansible татбиқ накардаем. Вале мо муяссар шудем. Шояд ин окибати принцип бошад Парето (қоидаи 80/20).

Тавсифи мухтасари занҷири DevOps ва CI/CD

DevOps таърифҳои гуногун дорад. DevOps, ба монанди Agile, фанҳои гуногунро дар бар мегирад. Аммо аксарият бо таърифи зерин розӣ хоҳанд шуд: DevOps як усул ё давраи ҳаётии таҳияи нармафзор аст, ки принсипи асосии он эҷоди фарҳангест, ки дар он таҳиягарон ва дигар кормандон “дар як мавҷ ҳастанд”, меҳнати дастӣ автоматӣ карда мешавад, хар кас кори аз дасташ меомадагиро мекунад, суръати махсулотсупорй зиёд мешавад, хосилнокии мехнат баланд мешавад, му-носибат зиёд мешавад.

Гарчанде ки асбобҳо барои эҷоди муҳити DevOps кофӣ нестанд, онҳо ҳатмӣ мебошанд. Муҳимтарини онҳо интегратсияи пайваста ва интиқоли муттасил (CI/CD) мебошад. Дар занҷир барои ҳар як муҳит марҳилаҳои гуногун мавҷуданд (масалан, DEV (таҳия), INT (ҳамгироӣ), TST (озмоиш), QA (кафолати сифат), UAT (озмоиши қабули корбар), STG (тайёрӣ), PROD (истифода)) , вазифаҳои дастӣ автоматӣ шудаанд, таҳиягарон метавонанд рамзи сифатро истеҳсол кунанд, онро расонанд ва ба осонӣ аз нав барқарор кунанд.

Ин ёддошт тавсиф мекунад, ки чӣ гуна сохтани занҷири DevOps дар панҷ қадам, тавре ки дар расми зер нишон дода шудааст, бо истифода аз абзорҳои кушодаасос.

Дастури Dummies: Сохтани занҷирҳои DevOps бо асбобҳои кушодаасос

Биёед, ба тиҷорат равем.

Қадами 1: Платформаи CI/CD

Пеш аз ҳама, ба шумо асбоби CI/CD лозим аст. Ҷенкинс як абзори литсензияи MIT ва сарчашмаи кушодаи CI/CD мебошад, ки дар Java навишта шудааст, ки ҳаракати DevOps-ро маъмул кардааст ва стандарти воқеии CICD шудааст.

Ҷенкинс чист? Тасаввур кунед, ки шумо панели идоракунии ҷодугарӣ барои хидматҳо ва асбобҳои гуногун доред. Худ аз худ, як абзори CI/CD ба монанди Ҷенкинс бефоида аст, аммо бо асбобҳо ва хидматҳои гуногун он пурқувват мешавад.

Илова ба Ҷенкинс, бисёр асбобҳои дигари кушодаасос вуҷуд доранд, ҳамаашро интихоб кунед.

Дастури Dummies: Сохтани занҷирҳои DevOps бо асбобҳои кушодаасос

Ин аст, ки раванди DevOps бо асбоби CI/CD чӣ гуна аст

Дастури Dummies: Сохтани занҷирҳои DevOps бо асбобҳои кушодаасос

Шумо дар localhost асбоби CI / CD доред, аммо ҳоло кори зиёде нест. Биёед ба қадами оянда гузарем.

Қадами 2: Versioning

Беҳтарин (ва эҳтимолан осонтарин) роҳи санҷиши ҷодугарии асбоби CI/CD ин ҳамгироии он бо абзори идоракунии идоракунии манбаъ (SCM) мебошад. Чаро ба шумо назорати версия лозим аст? Фарз мекунем, ки шумо ариза медиҳед. Шумо онро дар Java, Python, C++, Go, Ruby, JavaScript ё ягон забони дигар менависед, ки вагон ва аробаи хурд аст. Он чизе ки шумо менависед, рамзи манбаъ номида мешавад. Дар аввал, хусусан агар шумо танҳо кор кунед, шумо метавонед ҳама чизро дар феҳристи маҳаллӣ захира кунед. Аммо вақте ки лоиҳа афзоиш меёбад ва шумораи бештари одамон ба шумо ҳамроҳ мешаванд, ба шумо роҳи мубодилаи тағироти код лозим аст, аммо ҳангоми якҷоя кардани тағирот аз ихтилофот канорагирӣ кунед. Ва шумо инчунин бояд версияҳои қаблиро бидуни истифодаи нусхабардорӣ ва бо истифода аз усули нусхабардорӣ-часбонӣ барои файлҳои рамзӣ барқарор кунед.

Ва дар ин ҷо бе SCM дар ҳама ҷо. SCM кодро дар анборҳо нигоҳ медорад, версияҳои онро идора мекунад ва онро дар байни таҳиягарон ҳамоҳанг мекунад.

Воситаҳои зиёди SCM вуҷуд доранд, аммо Git сазовори стандарти воқеъӣ шудааст. Ман ба шумо маслиҳат медиҳам, ки онро истифода баред, аммо имконоти дигар вуҷуд дорад.

Дастури Dummies: Сохтани занҷирҳои DevOps бо асбобҳои кушодаасос

Ин аст, ки лӯлаи DevOps пас аз илова кардани SCM чӣ гуна аст.

Дастури Dummies: Сохтани занҷирҳои DevOps бо асбобҳои кушодаасос

Воситаи CI/CD метавонад боргузорӣ ва зеркашии коди сарчашма ва ҳамкории дастаро автоматӣ кунад. Бад не? Аммо ҳоло чӣ гуна як барномаи корӣ аз ин, ки миллиардҳо корбарон дӯст медоранд, сохтан мумкин аст?

Қадами 3: Сохтани асбоби автоматикунонӣ

Ҳама чиз тавре ки бояд бошад, пеш меравад. Шумо метавонед кодро бор кунед ва ба назорати манбаъ тағйирот ворид кунед ва дӯстонро барои кор бо шумо даъват кунед. Аммо шумо то ҳол барнома надоред. Барои он ки ин як барномаи веб бошад, он бояд барои паҳнкунӣ тартиб дода ва баста карда шавад ё ҳамчун файли иҷрошаванда иҷро карда шавад. (Забони барномасозии тафсиршуда ба монанди JavaScript ё PHP ба тартиб додан лозим нест.)

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

Дастури Dummies: Сохтани занҷирҳои DevOps бо асбобҳои кушодаасос

Комил! Акнун биёед файлҳои конфигуратсияи асбоби автоматикунонии сохтанро ба идоракунии манбаъ ворид кунем, то асбоби CI/CD онҳоро созад.

Дастури Dummies: Сохтани занҷирҳои DevOps бо асбобҳои кушодаасос

Ин хуб ҳис мекунад. Аммо ин ҳама ҳоло дар куҷост?

Қадами 4: Веб-сервер

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

Барномаи веб метавонад дар сервери барномаҳои веб ҷойгир карда шавад. Сервери барнома муҳитеро фароҳам меорад, ки дар он шумо метавонед мантиқи бастабандишударо иҷро кунед, интерфейсҳоро пешниҳод кунед ва хидматҳои вебро тавассути розетка фош кунед. Барои насб кардани сервери барнома ба шумо сервери HTTP ва чанд муҳитҳои дигар (масалан, мошини виртуалӣ) лозим аст. Ҳоло, биёед вонамуд кунем, ки шумо ҳангоми рафтан бо ҳамаи инҳо сарукор доред (гарчанде ки ман дар бораи контейнерҳо дар зер гап мезанам).

Якчанд серверҳои веб-барномаҳои кушода мавҷуданд.

Дастури Dummies: Сохтани занҷирҳои DevOps бо асбобҳои кушодаасос

Мо аллакай як занҷири қариб коркунандаи DevOps дорем. кори бузург!

Дастури Dummies: Сохтани занҷирҳои DevOps бо асбобҳои кушодаасос

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

Қадами 5: Фарогирии санҷиш

Санҷиш вақт ва кӯшиши зиёдро талаб мекунад, аммо беҳтар аст, ки хатогиҳоро фавран пайдо кунед ва кодро такмил диҳед, то ба корбарони ниҳоӣ писанд ояд. Бо ин мақсад, воситаҳои зиёде мавҷуданд, ки на танҳо кодро месанҷанд, балки инчунин оид ба беҳтар кардани он маслиҳат медиҳанд. Аксари асбобҳои CI/CD метавонанд ба ин асбобҳо пайваст шаванд ва равандро автоматӣ кунанд.

Санҷиш ба ду қисм тақсим мешавад: чаҳорчӯбаи санҷишӣ барои навиштан ва иҷрои санҷишҳо ва асбобҳо бо маслиҳатҳо барои беҳтар кардани сифати код.

Чорчӯбҳои санҷишӣ

Дастури Dummies: Сохтани занҷирҳои DevOps бо асбобҳои кушодаасос

Асбобҳо бо маслиҳатҳои сифат

Дастури Dummies: Сохтани занҷирҳои DevOps бо асбобҳои кушодаасос

Аксари ин абзорҳо ва чаҳорчӯбаҳо барои Java, Python ва JavaScript навишта шудаанд, зеро C++ ва C# хусусӣ мебошанд (гарчанде ки GCC манбаи кушода аст).

Мо абзорҳои фарогирии санҷишро татбиқ кардем ва ҳоло лӯлаи DevOps бояд ба расм дар оғози дарс монанд бошад.

Қадамҳои иловагӣ

Контейнерҳо

Тавре ки ман қаблан гуфтам, сервери барномаро дар мошини виртуалӣ ё сервер ҷойгир кардан мумкин аст, аммо контейнерҳо маъмултаранд.

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

Барои контейнерҳо одатан Docker ва Kubernetes гирифта мешаванд, гарчанде ки имконоти дигар мавҷуданд.

Дастури Dummies: Сохтани занҷирҳои DevOps бо асбобҳои кушодаасос

Дар бораи Docker ва Kubernetes мақолаҳоро хонед opensource.com:

Воситаҳои автоматикунонии миёнаравӣ

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

Инҳоянд баъзе вариантҳо барои воситаҳои автоматикунонии миёнаравӣ:

Дастури Dummies: Сохтани занҷирҳои DevOps бо асбобҳои кушодаасос

Тафсилот дар мақолаҳо opensource.com:

Ва акнун чӣ?

Ин танҳо нӯги айсберг аст. Занҷири DevOps метавонад хеле бештар кор кунад. Бо асбоби CI/CD оғоз кунед ва бубинед, ки боз чӣ корҳоро автоматӣ карда метавонед, то кори худро осон кунад. Дар бораи фаромӯш накунед воситаҳои алоқаи кушод барои хамкории самарабахш.

Инҳоянд чанд мақолаи хуби DevOps барои шурӯъкунандагон:

Шумо инчунин метавонед DevOps-ро бо абзорҳои кушодаи зуд ҳамгиро кунед:

Манбаъ: will.com

Илова Эзоҳ