Даведачная: як уладкованы працэс Continuous Integration

Сёння мы звернемся да гісторыі тэрміна, абмяркуем складанасці ўкаранення CI і прывядзем некалькі папулярных інструментаў, якія дапамогуць з ім працаваць.

Даведачная: як уладкованы працэс Continuous Integration
/Flickr/ Altug Karakoc / CC BY / Фота зменена

Тэрмін

Continuous Integration (бесперапынная інтэграцыя) – падыход да распрацоўкі прыкладанняў, які прадугледжвае частае правядзенне зборак праекта і тэсціраванне кода.

Мэта - зрабіць працэс інтэграцыі прадказальным і выявіць патэнцыйныя багі і памылкі на ранняй стадыі, каб было больш часу на іх выпраўленне.

Упершыню тэрмін Continuous Integration з'явіўся ў 1991 годзе. Яго ўвёў ва ўжыванне стваральнік мовы UML. Градзі Буч (Grady Booch). Інжынер прадставіў канцэпцыю CI як частку ўласнай практыкі распрацоўкі. метаду Буча. Ён меў на ўвазе інкрыментальнае ўдакладненне архітэктуры пры праектаванні аб'ектна-арыентаваных сістэм. Градзі не апісаў нейкіх патрабаванняў да бесперапыннай інтэграцыі. Але пазней у сваёй кнізеObject-Oriented Analysis and Design with Applications» ён сказаў, што задача методыкі - паскорыць выпуск «ўнутраных рэлізаў».

Гісторыя

У 1996 годзе CI перанялі стваральнікі метадалогіі экстрэмальнага праграмавання (XP) - Кент Бек (Kent Beck) і Рон Джэфрыс (Ron Jeffries). Бесперапынная інтэграцыя стала адным з дванаццаці ключавых прынцыпаў іхняга падыходу. Заснавальнікі XP удакладнілі патрабаванні да метадалогіі CI і адзначылі неабходнасць праводзіць зборку праекту некалькі разоў у дзень.

У пачатку 2000-х метадалогію бесперапыннай інтэграцыі стаў прасоўваць адзін з заснавальнікаў Agile Alliance Марцін Фаулер (Martin Fowler). Яго эксперыменты з CI прывялі да з'яўлення першай праграмнай прылады ў гэтай сферы – CruiseControl. Утыліту стварыў калега Марціна - Мэцью Фоммель (Matthew Foemmel).

Цыкл зборкі ў інструменце рэалізаваны ў выглядзе дэмана, перыядычна правяраючага сістэму кіравання версіямі на змены ў кодавай базе. Рашэнне можна спампаваць і сёння - яно распаўсюджваецца пад BSD-падобнай ліцэнзіяй.

З з'яўленнем софту для CI практыку пачалі пераймаць усё больш кампаній. Паводле даследавання Forrester [стар.5 справаздачы], у 2009 годзе 86% з пяцідзесяці апытаных тэхналагічных кампаній выкарыстоўвалі або ўкаранялі CI-метады.

Сёння практыка Continuous Integration прымяняецца арганізацыямі з самых розных індустрыі. У 2018 годзе буйны хмарны правайдэр правёў апытанне сярод ІТ-спецыялістаў кампаній са сферы паслуг, адукацыі і фінансаў. З шасці тысяч рэспандэнтаў 58% адказалі, што выкарыстоўваюць у рабоце інструменты і прынцыпы CI.

Як гэта працуе

Аснову бесперапыннай інтэграцыі складаюць два інструменты - сістэма кантролю версій і CI-сервер. Апошні можа быць як фізічнай прыладай, так і віртуальнай машынай у хмарным асяроддзі. Распрацоўнікі адзін ці некалькі разоў у дзень загружаюць новы код. CI-сервер аўтаматычна капіюе яго з усімі залежнасці і выконвае зборку. Пасля - запускае інтэграцыйныя і юніт-тэсты. Калі тэсты праходзяць паспяхова, то CI-сістэма разгортвае код.

Агульную схему працэсу можна ўявіць наступным чынам:

Даведачная: як уладкованы працэс Continuous Integration

Метадалогія CI прад'яўляе шэраг патрабаванняў да распрацоўшчыкаў:

  • Неадкладна выпраўляць праблемы. Гэты прынцып прыйшоў у CI з экстрэмальнага праграмавання. Выпраўленне багаў - самая прыярытэтная задача распрацоўшчыкаў.
  • Аўтаматызаваць працэсы. Распрацоўнікі і менеджэры павінны ўвесь час шукаць "вузкія месцы" падчас інтэграцыі і ўстараняць іх. Напрыклад, часта «бутэлькавым горлышкам» інтэграцыі. аказваецца тэсціраванне.
  • Праводзіць зборкі як мага часцей. Раз у дзень, каб сінхранізаваць працу каманды.

Складанасці ўкаранення

Першая праблема - высокія аперацыйныя выдаткі. Нават калі кампанія выкарыстоўвае адкрытыя CI-інструменты (пра якія мы пагаворым далей), то ёй усё роўна давядзецца выдаткаваць грошы на падтрымку інфраструктуры. Аднак рашэннем могуць стаць хмарныя тэхналогіі.

Яны спрашчаюць зборку разнамаштабных кампутарных канфігурацый. Плюс кампаніі плацяць толькі за выкарыстоўваныя рэсурсы, што дапамагае зэканоміць на інфраструктуры.

Згодна з апытаннямі [стр.14 артыкулы], бесперапынная інтэграцыя павышае нагрузку на супрацоўнікаў кампаніі (прынамсі першы час). Ім даводзіцца асвойваць новыя інструменты, а калегі не заўсёды дапамагаюць з навучаннем. Таму даводзіцца разбірацца з новымі фрэймворкамі і сэрвісамі "на хаду".

Трэцяя складанасць - праблемы з аўтаматызацыяй. З ёй сутыкаюцца арганізацыі з вялікім аб'ёмам legacy-кода, які не пакрыты аўтаматызаванымі тэстамі. Гэта прыводзіць да таго, што код проста перапісваюць перад паўнавартасным укараненнем CI.

Даведачная: як уладкованы працэс Continuous Integration
/Flickr/ theilr / CC BY-SA

Хто выкарыстоўвае

Аднымі з першых перавагі методыкі ацанілі ІТ-гіганты. Google выкарыстоўвае бесперапынную інтэграцыю з сярэдзіны 2000-х. CI укаранілі для рашэння праблемы з затрымкамі ў працы пошукавай сістэмы. Бесперапынная інтэграцыя дапамагла аператыўна выяўляць і ўстараняць непаладкі. Цяпер CI выкарыстоўваюць усе падраздзяленні ІТ-гіганта.

Бесперапынная інтэграцыя дапамагае і невялікім кампаніям, а таксама прылады CI выкарыстоўваюць фінансавыя і медыцынскія арганізацыі. Напрыклад, у Morningstar сэрвісы бесперапыннай інтэграцыі дапамаглі патчыць уразлівасці на 70% хутчэй. А медыцынская платформа Philips Healthcare змагла ў два разы паскорыць тэсціраванне абнаўленняў.

Інструменты

Вось некалькі папулярных інструментаў для CI:

  • Джэнкінс - адна з самых папулярных CI-сістэм. Яна падтрымлівае больш за тысячу плагінаў для інтэграцыі з рознымі VCS, хмарнымі платформамі і іншымі сэрвісамі. Jenkins выкарыстоўваем і мы ў 1cloud: інструмент уваходзіць у нашу DevOps-сістэму. Ён рэгулярна правярае Git-галінку, прызначаную для тэставання.
  • Buildbot - python-фрэймворк для напісання ўласных працэсаў бесперапыннай інтэграцыі. Першапачатковая налада прылады даволі складаная, аднак гэта кампенсуецца шырокімі магчымасцямі кастамізацыі. Сярод добрых якасцяў фреймворка карыстачы вылучаюць яго невысокую рэсурсаёмістасць.
  • Concourse CI - сервер ад Pivotal, які выкарыстоўвае кантэйнеры Docker. Concourse CI інтэгруецца з любымі інструментамі і сістэмамі кантролю версій. Распрацоўнікі адзначаюць, што сістэма падыходзіць для працы ў кампаніях любых памераў.
  • Gitlab CI - Інструмент, убудаваны ў сістэму кантролю версій GitLab. Сэрвіс працуе ў воблаку і выкарыстоўвае для канфігурацыі YAML-файлы. Як і Concourse, Gitlab CI прымяняе Docker-кантэйнеры, якія дапамагаюць ізаляваць розныя працэсы сябар ад сябра.
  • Кодаванне - хмарны CI-сервер, які працуе з GitHub, GitLab і BitBucket. Платформа не патрабуе доўгай першапачатковай налады – у Codeship даступныя стандартныя прадусталяваныя CI-працэсы. Для невялікіх (да 100 зборак у месяц) і open source праектаў Codeship даступны бясплатна.

Матэрыялы з нашага карпаратыўнага блога:

Крыніца: habr.com

Дадаць каментар