Гид по DevOps за начинаещи

Какво е значението на DevOps, какво означава за ИТ специалистите, описание на методите, рамките и инструментите.

Гид по DevOps за начинаещи

Оттогава, когато терминът DevOps стана утвърден в ИТ света, много неща се промениха. С оглед на факта, че голяма част от екосистемата е с отворен код, е важно да преразгледаме защо това започна и какво означава за кариерата в ИТ.

Какво е DevOps

Въпреки че няма едно окончателно определение, смятам, че DevOps е технологична структура, която осигурява взаимодействие между екипите за разработка и операционните екипи за по-бързо внедряване на код в производствени среди с възможност за повторяемост и автоматизация. Останалата част от статията ще посветим на разкриването на това твърдение.

Думата „DevOps“ е съчетание на думите „разработка“ (development) и „операции“ (operations). DevOps помага за увеличаване на скоростта на доставка на приложения и услуги. Това позволява на организациите ефективно да обслужват своите клиенти и да станат по-конкурентоспособни на пазара. По-просто казано, DevOps е съгласуваност между разработката и ИТ операциите с по-ефективно взаимодействие и сътрудничество.

DevOps предполага такава култура, при която сътрудничеството между екипите за разработка, операторите и бизнес екипите се счита за критично важен аспект. Става дума не само за инструменти, тъй като DevOps в организацията постоянно носи ползи и на клиентите. Инструментите са един от неговите стълбове, наред с хората и процесите. DevOps увеличава възможностите на организациите да предоставят висококачествени решения в кратки срокове. Освен това DevOps автоматизира всички процеси — от създаването до внедряването на приложение или продукт.

Дискусията за DevOps се съсредоточава върху взаимоотношенията между разработчиците, хората, които пишат софтуер за прехрана, и операторите, отговорни за поддръжката на този софтуер.

Предизвикателства за екипа за разработка

Разработчиците обикновено ентусиазирано и с желание внедряват нови подходи и технологии за решаване на проблемите на организациите. Въпреки това, те също така се сблъскват с определени предизвикателства:

  • Конкурентният пазар създава голямо налягане за своевременното доставяне на продукта.
  • Те трябва да се грижат за управление на кода, готов за производство, и за внедряване на нови възможности.
  • Цикълът на издаване може да бъде дълъг, затова екипът на разработчиците трябва да направи няколко предположения преди внедряване на приложенията. В такъв сценарий е нужно повече време за решаване на проблеми, възникващи по време на разгръщането в производствена или тестова среда.

Проблемите, с които се сблъсква оперативната група

Оперативните групи исторически са ориентирани към стабилността и надеждността на ИТ услугите. Именно затова те се стремят към стабилност чрез промени в ресурсите, технологиите или подходите. Към техните задължения спадат:

  • Управление на разпределението на ресурси с нарастващо търсене.
  • Обработка на промените в дизайна или настройките, необходими за прилагане в производствена среда.
  • Диагностика и решаване на проблеми, свързани с производството, след саморазгръщане на приложения.

Как DevOps решава проблемите на разработката и операциите

Вместо да издават голямо количество функции в приложението наведнъж, компаниите се опитват да разберат дали могат да внедрят малко количество функции за своите клиенти чрез серия от итерации на изданията. Този подход има редица предимства, като по-добро качество на софтуера, по-бърза обратна връзка с клиентите и т.н. Това от своя страна осигурява висока степен на удовлетвореност на клиентите. За да достигнат тези цели, от компаниите се изисква:

  • Да намалят процента на провалите при издаването на нови версии
  • Да увеличат честотата на разгръщане
  • Да постигнат по-бързо средно време за възстановяване при пускането на нова версия на приложението.
  • Да съкратят времето за корекции

DevOps изпълнява всички тези задачи и помага да се осигури непрекъсната доставка. Организациите използват DevOps, за да постигнат нива на производителност, които преди няколко години бяха немислими. Те извършват десетки, стотици и дори хиляди разгръщания на ден, като същевременно осигуряват надеждност, стабилност и безопасност от световна класа. (Научете повече за размерите на партидите и тяхното влияние върху доставката на софтуер).

DevOps се опитва да реши различни проблеми, които възникват в резултат на използването на методологии от миналото, включително:

  • Изолацията на работата между екипите за разработка и операциите
  • Тестването и внедряването като отделни фази, изпълнявани след проектиране и изграждане и изискващи повече време от цикълете на изграждане.
  • Прекомерните времеви разходи за тестване, внедряване и проектиране вместо фокус върху предоставянето на основни бизнес услуги
  • Ръчно внедряване на код, водещо до грешки в производствената среда
  • Разликата в графиците на работа на екипите за разработка и операции, водеща до допълнителни закъснения

Гид по DevOps за начинаещи

Сблъсък между DevOps, Agile и традиционната ИТ

DevOps често се обсъжда във връзка с други ИТ практики, особено Agile и водопадната ИТ инфраструктура.

Agile е набор от принципи, ценности и методи за производство на софтуер. Например, ако имате идея, която искате да преобразувате в софтуер, можете да използвате принципите и ценностите на Agile. Но този софтуер може да работи само в среда за разработка или тестване. Нуждаете се от прост и безопасен начин да прехвърлите софтуера в производствена среда бързо и с висока повторяемост, а пътят минава през инструментите и методите на DevOps. Agile методологията за разработка на софтуер е фокусирана върху процесите на разработка, докато DevOps отговаря за разработването и внедряването — по най-безопасния и надежден начин.

Сравнението на традиционния водопад с DevOps е добър начин да разберем предимствата, които носи DevOps. В следния пример приемаме, че приложението ще бъде пуснато след четири седмици, разработката е завършена на 85%, приложението ще бъде пуснато, а процесът на закупуване на сървъри за изпращане на кода едва сега е започнал.

Традиционни процеси
Процеси в DevOps

След поръчка за нови сървъри екипът за разработка работи по тестването. Оперативният екип работи по обширната документация, необходима в предприятията за внедряване на инфраструктура.
След като поръчате нови сървъри, екипите от разработчици и оператори работят заедно по процесите и документацията за инсталиране на новите сървъри. Това помага за по-добро разбиране на изискванията към инфраструктурата.

Неправилна информация за възстановяване след повреда, излишност, местоположения на центровете за данни и изисквания към хранилищата, поради липса на входни данни от екипа разработчици, който разполага с дълбоки познания в приложението.
Подробната информация за преодоляване на повреди, излишност, аварийно възстановяване, местоположения на центровете за данни и изисквания към хранилищата е известна и коректна благодарение на приноса на екипа разработчици.

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

Оперативната група е напълно осведомена за напредъка, постигнат от екипа разработчици. Тя също взаимодействува с екипа разработчици и заедно разработват план за мониторинг, който удовлетворява ИТ и бизнес нуждите. Те също така използват инструменти за мониторинг на производителността на приложенията (APM).

Натоварващо тестване, проведено преди старта на приложението, води до срив на приложението, което забавя старта му.
Натоварващо тестване, проведено преди старта на приложението, води до намаляване на производителността. Екипът разработчици бързо отстранява тясно място и приложението стартира навреме.

Жизнен цикъл на DevOps

DevOps предполага приемане на определени общоприети практики.

Непрекъснато планиране

Непрекъснатото планиране се основава на принципите на Lean, за да започне малко, като се определят ресурсите и резултатите, необходими за проверка на бизнес стойността или визията, постоянна адаптация, измерване на напредъка, изучаване на нуждите на клиентите, промяна на посоката при необходимост, като се взема предвид гъвкавостта, както и актуализиране на бизнес плана.

Съвместно развитие

Процесът на съвместна разработка позволява на бизнеса, екипите от разработчици и тестери, разположени в различни часови зони, да предоставят непрекъснато качествен софтуер. Това включва многоплатформена разработка, поддръжка на програмиране на различни езици, създаване на потребителски истории, разработване на идеи и управление на жизнения цикъл. Съвместната разработка включва процеса и практиката на непрекъсната интеграция, което улеснява честата интеграция на кода и автоматичното изграждане. При честото внедряване на код в приложението, проблемите с интеграцията се откриват на ранните етапи от жизнения цикъл (когато е по-лесно да се коригират), а общите усилия за интеграция се намаляват благодарение на непрекъснатата обратна връзка, тъй като проектът демонстрира непрекъснат и визуален напредък.

Непрекъснато тестване

Непрекъснатото тестване намалява разходите за тестване, помагайки на екипите от разработчици да балансират между скорост и качество. То също така елиминира тесните места в тестването чрез виртуализация на услугите и опростява създаването на виртуализирани тестови среди, които могат лесно да се споделят, разгръщат и обновяват с течение на времето. Тези възможности намаляват разходите за инициализиране и поддръжка на тестови среди, а също така съкращават времето на тестовия цикъл, позволявайки интеграционно тестване на ранните етапи от жизнения цикъл.

Непрекъснати пускове и разгръщане

Тези методи въвеждат една от основните практики: непрекъснати пускове и разгръщане. Те осигуряват непрекъснат конвейер, който автоматизира ключови процеси. Той намалява броя на ръчните операции, времето за очакване на ресурси и обема на преизпълнението, позволявайки разгръщане с натискане на бутон, което осигурява повече релизи, намаляване на броя на грешките и пълна прозрачност.

Автоматизация играе ключова роля в осигуряването на стабилен и надежден софтуерен доставка. Една от най-важните задачи е да се възприемат ръчните процеси, като изграждане, регресия, разгръщане и създаване на инфраструктура, и да се автоматизират. За това е необходим контрол на версията на изходния код; сценарии за тестване и разгръщане; данни за инфраструктурата и конфигурацията на приложенията; както и библиотеки и пакети, от които зависи приложението. Друг важен фактор е възможността да се запитва състоянието на всички среди.

Непрекъснат мониторинг

Непрекъснатият мониторинг осигурява генерирането на корпоративни отчети, които помагат на екипите разработчици да разберат наличността и производителността на приложенията в производствената среда, дори преди да бъдат разгръщани в продукция. Ранната обратна връзка, предоставяна от непрекъснатия мониторинг, е от съществено значение за намаляване на разходите за грешки и управление на проектите в правилната посока. Тази практика често включва инструменти за наблюдение, които обикновено разкриват метрики, свързани с производителността на приложенията.

Постоянна обратна връзка и оптимизация

Непрекъснатата обратна връзка и оптимизацията осигуряват визуализация на потока от клиенти и точно определяне на проблемните области. Обратната връзка може да бъде включена както на етапа на предпродажба, така и на етапа след производството, за да се максимизира стойността и да се осигури успешно завършване на още повече транзакции. Всичко това осигурява незабавна визуализация на основната причина за проблемите на клиентите, които влияят на тяхното поведение и влияние върху бизнеса.

Гид по DevOps за начинаещи

Ползи от DevOps

DevOps може да спомогне за създаването на среда, в която разработчиците и операторите работят като един отбор за постигане на общи цели. Важна веха в този процес е внедряването на непрекъсната интеграция и непрекъсната доставка (CI/CD). Тези методи позволяват на екипите по-бързо да извеждат софтуер на пазара с по-малко грешки.

Важно предимствата на DevOps са:

  • Предсказуемост: DevOps предлагава значително по-ниска честота на откази при пускане на нови версии.
  • Поддържане: DevOps осигурява лесно възстановяване при провали в новата версия или изключване на приложението.
  • Възпроизводимост: Системата за контрол на версиите на сглобката или кода позволява възстановяване на по-ранни версии при необходимост.
  • По-високо качество: Решаването на проблеми с инфраструктурата подобрява качеството на разработката на приложения.
  • Време за пускане на пазара: Оптимизацията на доставката на софтуер съкращава времето за пускане на пазара с 50%.
  • Намаляване на риска: Осигуряването на сигурността в жизнения цикъл на софтуера намалява количеството на дефектите през целия жизнен цикъл.
  • Икономическа ефективност: Стремежът към икономическа ефективност при разработването на софтуер е харесван от висшето ръководство.
  • Устойчивост: Програмната система е по-стабилна и безопасна, а промените могат да бъдат проверявани.
  • По-голяма кодова база се разделя на управляеми части: DevOps се основава на гъвкави методологии на разработка, които позволяват разделяне на голямата кодова база на по-малки и управляеми части.

Принципи на DevOps

Приемането на DevOps е произвело няколко принципа, които еволюират (и продължават да еволюират). Повечето доставчици на решения са разработили свои собствени модификации на различни методики. Всички тези принципи се основават на цялостен подход към DevOps и организации от всякакъв размер могат да ги използват.

Проектиране и тестване в среда, подобна на производствената

Същността е да се позволи на екипите от разработчици и специалисти по контрол на качеството (QA) да проектират и тестват системи, които функционират като производствени системи, така че те да могат да видят как работи приложението дълго преди да бъде готово за разгръщане.

Приложението трябва да бъде свързано с производствените системи възможно най-рано в жизнения цикъл, за да се решат три основни потенциални проблема. Първо, това позволява да се тества приложението в среда, близка до реалната. Второ, това позволява да се тестват и проверяват процесите за доставка на приложението предварително. Трето, това дава възможност на операционния екип да провери на ранна фаза как ще се държи средата им, когато приложенията бъдат разположени, позволявайки им да създадат прецизно настроена, приложение-ориентирана среда.

Разполагане с възпроизводими, надеждни процеси

Този принцип позволява на екипите за разработка и операции да поддържат гъвкави процеси за разработка на софтуер през целия жизнен цикъл. Автоматизацията е от решаващо значение за създаването на итеративни, надеждни и възпроизводими процеси. Следователно организацията трябва да изгради конвейер за доставка, осигуряващ непрекъснато автоматизирано разполагане и тестване. Честото разполагане също така позволява на екипите да тестват процесите на разполагане, намалявайки риска от провали по време на реални релизи.

Мониторинг и проверка на качеството на работа

Организациите са добри в мониторинга на приложения в производствения процес, тъй като разполагат с инструменти, които регистрират метрики и ключови показатели за изпълнение (KPI) в реално време. Този принцип пренася мониторинга на ранните стадии на жизнения цикъл, осигурявайки, че автоматизираното тестване следи функционалните и нефункционалните атрибути на приложението в ранните етапи на процеса. Всяко пъти, когато приложението се тества и разполага, качествените показатели трябва да бъдат проучвани и анализирани. Инструментите за мониторинг осигуряват ранно известяване за проблеми, свързани с експлоатацията и качеството, които могат да възникнат в производствения процес. Тези показатели трябва да бъдат събирани в формат, достъпен и разбираем за всички заинтересовани страни.

Усъвършенстване на цикли за обратна връзка

Една от целите на DevOps процесите е да предостави на организациите възможността за бърза реакция и въвеждане на промени. При доставката на софтуер, тази цел изисква организацията да получи обратна връзка на ранна фаза и след това бързо да се учи от всяко предприето действие. Този принцип изисква от организациите да създават комуникационни канали, които позволяват на заинтересованите страни да имат достъп и да взаимодействат по принципа на обратната връзка. Разработката може да се осъществява посредством корекция на проектните планове или приоритетите. Производството може да действува, като подобрява производствената среда.

Dev

  • Планиране: Kanboard, Wekan и други алтернативи на Trello; GitLab, Tuleap, Redmine и други алтернативи на JIRA; Mattermost, Roit.im, IRC и други алтернативи на Slack.
  • Писане на код: Git, Gerrit, Bugzilla; Jenkins и други инструменти с отворен код за CI/CD
  • Сглобяване: Apache Maven, Gradle, Apache Ant, Packer
  • Тестове: JUnit, Cucumber, Selenium, Apache JMeter

Ops

  • Издаване, разгръщане, операции: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform
  • Мониторинг: Grafana, Prometheus, Nagios, InfluxDB, Fluentd и други, покрити в това ръководство

( * Инструменти за операции са номерирани по реда на прилагане от операционните екипи, но техният инструментариум се припокрива с инструментите за освобождаване и разгръщане. С цел удобство, номерацията беше премахната.)

В заключение

DevOps е все по-популярна методология, чиято цел е да обедини разработчиците и операторите в едно цяло. Тя е уникална, различна от традиционните IT операции и допълва Agile (но не е толкова гъвкава).

Гид по DevOps за начинаещи

Научете повече за това как да получите търсена професия от нулата или да напреднете по отношение на умения и заплата, като преминете платени онлайн курсове в SkillFactory:

още курсове

Полезно

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster