Водич за лутке: Изградња ДевОпс ланаца помоћу алата отвореног кода

Водич за лутке: Изградња ДевОпс ланаца помоћу алата отвореног кода
Изградња вашег првог ДевОпс ланца у пет корака за почетнике.

ДевОпс је постао лек за сувише споре, неповезане и иначе проблематичне развојне процесе. Али потребно вам је минимално знање о ДевОпс-у. Покриваће концепте као што је ДевОпс ланац и како да га направите у пет корака. Ово није комплетан водич, већ само "риба" која се може проширити. Почнимо са историјом.

Мој увод у ДевОпс

Радио сам са облацима у Цити Групи и развијао ИааС веб апликацију за управљање Цити-јевом инфраструктуром облака, али ме је увек занимало како да оптимизујем развојни ланац и унапредим културу међу програмерима. Грег Лавендер, наш технички директор за Цлоуд архитектуру и инфраструктуру, препоручио ми је ову књигу. Пројекат "Феникс". Лепо објашњава принципе ДевОпс-а и чита се као роман.

Табела на полеђини показује колико често компаније објављују нове верзије:

Водич за лутке: Изградња ДевОпс ланаца помоћу алата отвореног кода

Како Амазон, Гоогле и Нетфлик успевају да уведу толико тога? И једноставно је: схватили су како да направе готово савршен ДевОпс ланац.

За нас у Цитију ствари су биле веома различите док нисмо прешли на ДевОпс. Тада је мој тим имао различита окружења, али смо испоруку на развојни сервер обављали ручно. Сви програмери су имали приступ само једном развојном серверу заснованом на ИБМ ВебСпхере Апплицатион Сервер Цоммунити Едитион. Уз истовремени покушај испоруке, сервер је „пао“ и сваки пут смо морали да „болно“ преговарамо између себе. Такође смо имали недовољну покривеност кода тестовима, дуготрајан ручни процес испоруке и никакав начин да пратимо испоруку кода уз помоћ неког задатка или захтева клијента.

Било је јасно да нешто хитно треба да се уради и нашао сам колегу истомишљеника. Одлучили смо да заједно направимо први ДевОпс ланац – он је поставио виртуелну машину и Томцат сервер апликација, а ја сам се побринуо за Џенкинса, интеграцију са Атлассиан Јира и БитБуцкет, као и покривање кода тестовима. Пројекат је био успешан: у потпуности смо аутоматизовали развојни ланац, постигли скоро 100% непрекидног рада на развојном серверу, били смо у могућности да надгледамо и побољшамо покривеност кода помоћу тестова, а Гит грана је могла да буде повезана са Јира испоруком и проблемом. И скоро сви алати које смо користили за изградњу ДевОпс ланца били су отвореног кода.

У ствари, ланац је био поједностављен, јер нисмо чак ни применили напредне конфигурације користећи Јенкинс или Ансибле. Али смо успели. Можда је то последица принципа Парето (познато и као правило 80/20).

Кратак опис ДевОпс и ЦИ/ЦД ланца

ДевОпс има различите дефиниције. ДевОпс, као и Агиле, укључује различите дисциплине. Али већина ће се сложити са следећом дефиницијом: ДевОпс је метода или животни циклус развоја софтвера, чији је главни принцип стварање културе у којој су програмери и други запослени „на истој таласној дужини“, ручни рад је аутоматизован, свако ради оно у чему је најбољи, повећава се учесталост испорука, повећава се продуктивност рада, повећава се флексибилност.

Иако сами алати нису довољни за креирање ДевОпс окружења, они су неопходни. Најважнији од њих је континуирана интеграција и континуирана испорука (ЦИ/ЦД). Постоје различите фазе у ланцу за свако окружење (нпр. ДЕВ (развој), ИНТ (интеграција), ТСТ (тестирање), КА (обезбеђење квалитета), УАТ (тестирање прихватања корисника), СТГ (припрема), ПРОД (употреба)) , ручни задаци су аутоматизовани, програмери могу да произведу квалитетан код, испоруче га и могу лако да га поново направе.

Ова напомена описује како да креирате ДевОпс ланац у пет корака, као што је приказано на слици испод, користећи алате отвореног кода.

Водич за лутке: Изградња ДевОпс ланаца помоћу алата отвореног кода

Идемо на посао.

Корак 1: ЦИ/ЦД платформа

Пре свега, потребан вам је ЦИ/ЦД алат. Џенкинс је ЦИ/ЦД алат отвореног кода са лиценцом МИТ-а написан на Јави који је популаризовао ДевОпс покрет и постао де факто стандард за ЦИЦД.

Шта је Џенкинс? Замислите да имате магичну контролну таблу за разне услуге и алате. Сама по себи, ЦИ/ЦД алатка као што је Џенкинс је бескорисна, али са различитим алатима и услугама постаје свемоћна.

Поред Џенкинса, постоји много других алата отвореног кода, изаберите било који.

Водич за лутке: Изградња ДевОпс ланаца помоћу алата отвореног кода

Ево како изгледа ДевОпс процес са ЦИ/ЦД алатом

Водич за лутке: Изградња ДевОпс ланаца помоћу алата отвореног кода

Имате ЦИ/ЦД алатку у лоцалхост-у, али још увек нема много тога да се уради. Пређимо на следећи корак.

Корак 2: Версионирање

Најбољи (и вероватно најлакши) начин да тестирате магију ЦИ/ЦД алата је да га интегришете са алатом за управљање контролом извора (СЦМ). Зашто вам је потребна контрола верзија? Рецимо да правите апликацију. Пишете га на Јави, Питхон-у, Ц++, Го, Руби-у, ЈаваСцрипт-у или било ком другом језику који је вагон и мала колица. Оно што пишете се зове изворни код. У почетку, посебно ако радите сами, можете све да сачувате у локалном директоријуму. Али како пројекат расте и све више људи се придружује, потребан вам је начин да делите промене кода, али избегавате сукобе приликом спајања промена. И такође морате некако да вратите претходне верзије без коришћења резервних копија и коришћења методе копирања и лепљења за датотеке кода.

А овде без СЦМ-а нигде. СЦМ складишти код у репозиторијумима, управља његовим верзијама и координира га међу програмерима.

Постоји много СЦМ алата, али Гит је заслужено постао де фацто стандард. Саветујем вам да га користите, али постоје и друге опције.

Водич за лутке: Изградња ДевОпс ланаца помоћу алата отвореног кода

Ево како ДевОпс цевовод изгледа након додавања СЦМ-а.

Водич за лутке: Изградња ДевОпс ланаца помоћу алата отвореног кода

ЦИ/ЦД алат може аутоматизовати отпремање и преузимање изворног кода и тимску сарадњу. Није лоше? Али како сада од овога направити функционалну апликацију, коју воле милијарде корисника?

Корак 3: Направите алатку за аутоматизацију

Све иде како треба. Можете да отпремите код и унесете промене у контролу извора и да позовете пријатеље да раде са вама. Али још увек немате апликацију. Да би ово била веб апликација, мора се компајлирати и упаковати за дистрибуцију или покренути као извршни фајл. (Интерпретирани програмски језик као што је ЈаваСцрипт или ПХП не мора да се компајлира.)

Користите алат за аутоматизацију изградње. Који год алат да изаберете, он ће саставити код у правом формату и аутоматизовати чишћење, компилацију, тестирање и испоруку. Алати за прављење се разликују у зависности од језика, али се обично користе следеће опције отвореног кода.

Водич за лутке: Изградња ДевОпс ланаца помоћу алата отвореног кода

Савршен! Сада хајде да убацимо конфигурационе датотеке алата за аутоматизацију изградње у контролу извора тако да их ЦИ/ЦД алат направи.

Водич за лутке: Изградња ДевОпс ланаца помоћу алата отвореног кода

То прија. Али где је све ово да се сада избаци?

Корак 4: Сервер веб апликација

Дакле, имате упаковану датотеку која се може извршити или покренути. Да би апликација била заиста корисна, мора да има неку врсту услуге или интерфејса, али све то треба негде да ставите.

Веб апликација може бити хостована на серверу веб апликација. Сервер апликација обезбеђује окружење у коме можете да извршавате упаковану логику, рендерујете интерфејсе и излажете веб услуге преко утичнице. Потребан вам је ХТТП сервер и неколико других окружења (виртуелна машина, на пример) да бисте инсталирали сервер апликација. За сада, хајде да се претварамо да се бавите свим овим док идете (иако ћу о контејнерима говорити у наставку).

Постоји неколико отворених сервера веб апликација.

Водич за лутке: Изградња ДевОпс ланаца помоћу алата отвореног кода

Већ имамо скоро функционалан ДевОпс ланац. Одличан посао!

Водич за лутке: Изградња ДевОпс ланаца помоћу алата отвореног кода

У принципу, можете се зауставити овде, онда можете сами да се носите са тим, али вреди разговарати о квалитету кода.

Корак 5: Тест премаз

Тестирање одузима много времена и труда, али је боље одмах пронаћи грешке и побољшати код како би задовољио крајње кориснике. У ту сврху постоји много отворених алата који не само да ће тестирати код, већ и саветовати како да га побољшају. Већина ЦИ/ЦД алата може се прикључити на ове алате и аутоматизовати процес.

Тестирање је подељено на два дела: тестирање оквира за писање и извршавање тестова и алатке са саветима за побољшање квалитета кода.

Тестинг Фрамеворкс

Водич за лутке: Изградња ДевОпс ланаца помоћу алата отвореног кода

Алати са квалитетним саветима

Водич за лутке: Изградња ДевОпс ланаца помоћу алата отвореног кода

Већина ових алата и оквира је написана за Јава, Питхон и ЈаваСцрипт јер су Ц++ и Ц# власнички (иако је ГЦЦ опен соурце).

Применили смо алате за покривање теста и сада би ДевОпс цевовод требало да изгледа као на слици на почетку туторијала.

Додатни кораци

Контејнери

Као што сам раније рекао, сервер апликација може бити смештен у виртуелној машини или серверу, али контејнери су популарнији.

Шта су контејнери? Укратко, у виртуелној машини оперативни систем често заузима више простора од апликације, а контејнер је обично довољан са неколико библиотека и конфигурација. У неким случајевима, виртуелне машине су неопходне, али контејнер може да прими апликацију заједно са сервером без додатних трошкова.

За контејнере се обично узимају Доцкер и Кубернетес, мада постоје и друге опције.

Водич за лутке: Изградња ДевОпс ланаца помоћу алата отвореног кода

Прочитајте чланке о Доцкер-у и Кубернетесу на Опенсоурце.цом:

Алати за аутоматизацију средњег софтвера

Наш ДевОпс ланац је фокусиран на сарадничку изградњу и испоруку апликације, али постоје и друге занимљиве ствари које можете да урадите са ДевОпс алатима. На пример, користите алате Инфраструцтуре ас Цоде (ИаЦ), такође познате као алатке за аутоматизацију међувера. Ови алати помажу у аутоматизацији инсталације, управљања и других задатака за међуверски софтвер. На пример, алатка за аутоматизацију може преузети апликације (сервер веб апликација, база података, алати за праћење) са исправним конфигурацијама и гурнути их на сервер апликација.

Ево неколико опција за отворене алате за аутоматизацију средњег софтвера:

Водич за лутке: Изградња ДевОпс ланаца помоћу алата отвореног кода

Детаљи у чланцима Опенсоурце.цом:

Шта сад?

Ово је само врх леденог брега. ДевОпс ланац може много више. Почните са ЦИ/ЦД алатом и погледајте шта још можете да аутоматизујете да бисте олакшали свој посао. Не заборави на отворени комуникациони алати за ефикасну сарадњу.

Ево још неких добрих ДевОпс чланака за почетнике:

Такође можете да интегришете ДевОпс са отвореним агилним алатима:

Извор: ввв.хабр.цом

Додај коментар