Ръководство за 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 принципи и ценности. Но този софтуер може да работи само в среда за разработка или тестване. Искате прост, сигурен начин за бързо и многократно преместване на софтуер в производство и пътят е през инструментите и практиките на DevOps. Разработката на гъвкав софтуер се фокусира върху процесите на разработка, като DevOps отговаря за разработването и внедряването по възможно най-безопасния и надежден начин.

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

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

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

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

Работната група няма представа за напредъка на екипа за разработка. Тя също така разработва план за наблюдение въз основа на собствените си идеи.

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

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

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

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

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

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

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

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

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

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

Непрекъснато пускане и внедряване

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

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

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

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

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

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

Ръководство за DevOps за начинаещи

Предимства на DevOps

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

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

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

Принципи на DevOps

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

Разработвайте и тествайте в среда, подобна на производствена

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

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

Внедряване с възпроизводими, надеждни процеси

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

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

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

Подобряване на обратната връзка

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

Дев

  • Планиране: 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 и др., Netflix Archaius, Terraform
  • Мониторинг: Grafana, Prometheus, Nagios, InfluxDB, Fluentd и други, включени в това ръководство

(* Инструментите за операции са номерирани по реда на използване от командите за операции, но техните инструменти се припокриват от етапите на жизнения цикъл на инструментите за издаване и внедряване. Номерирането е премахнато за четливост.)

В заключение

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

Ръководство за DevOps за начинаещи

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

повече курсове

полезен

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

Добавяне на нов коментар