66 Бит
Екатеринбург, Добролюбова 16
info@66bit.ru

Оставить заявку на сотрудничество

Перетащите файлы сюда
*Нажимая кнопку "Отправить заявку", вы соглашаетесь с политикой в области персональных данных
Поиск Очистить

Методология DevOps и её роль в разработке ПО

«Командная работа – это секрет, благодаря которому обычные люди достигают необычных результатов.» - Ифеаний Энох.

DevOps разработка (Development Operations) – это популярная методология, объединяющая этапы разработки продукта. Главная её задача – интегрировать процессы друг в друга и заставить их работать сообща. Главная цель методологии DevOps – ускорить разработку и выпуск программного обеспечения путём контроля взаимодействия между разработчиками, тестировщиками и сисадминами.

Получается вся команда разработки просто принимает эту методологию и старается следовать её канонам? Нет, человеческий фактор зачастую берёт своё и участники не справляются с интеграцией самостоятельно. Именно поэтому на помощь приходит инженер по DevOps.

Специалист по системной интеграции (DevOps-инженер) – это специалист, внедряющий методологию в команду разработки. Он оказывает посильную поддержку на всех этапах, предотвращает разногласия и конфликты и, по возможности, автоматизирует некоторые процессы разработки.

С помощью двух определений сложно понять концепцию методологии и задачи DevOps-инженера. Именно поэтому в нашей статье мы копнули чуть глубже в теме технологии девопс и постарались как можно нагляднее объяснить какие преимущества даёт методология, какими бывают специалисты и какую роль они играют в повышении качества разработки ПО?

Немного истории

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

Именно так работали команды разработки в 2000-х годах до внедрения DevOps технологии, когда самой популярной методологией была водопадная модель (Waterfall). При таком подходе разработка продукта была линейной и последовательной, вследствие чего уйма времени разработчиков уходила на разработку больших фрагментов кода, а тестировщики тратили больше времени на проверку этого кода.

Каждый отдел мог сидеть на разных этажах, а результаты работы скидывать друг другу без объяснений. Нетрудно догадаться, что это сильно тормозило выпуск готового продукта, а что важнее вызывало множество конфликтов на почве недопониманий.

Без методологии разработки DevOps тестировщики говорили: «У нас отличные тесты, это код нерабочий». Разработчики отвечали: «На наших компьютерах код работает, это тесты неправильные». А затем все дружно говорили: «Это не наша зона ответственности», и перед релизом вставала огромная преграда, а что с ней делать никто не понимал. Конечно, все разногласия рано или поздно решаются, но в разработке программного обеспечения, когда на кону качество продукта и мнение заказчика, лучше решать проблемы сразу.

С появлением методологии Agile (вдохновителя принципов девопс) отрасль перешла к итеративной разработке ПО с более частыми релизами. Заработавшие в этой модели непрерывная интеграция (Continuous Integration, CI) и непрерывная поставка (Continuous Delivery, CD) позволили быстрее и чаще выпускать ПО для пользователей.

Главная суть методологии DevOps вытекает из Agile, но с тем уточнением, что все отделы разработки должны непрерывно и прозрачно обсуждать друг с другом свои действия и планы на будущее. Только при таком подходе команда сможет выпустить качественный продукт за рекордно короткое время.

-2

DevOps практики

Конечно, если бы проблема заключалась только в разногласиях, уместнее было бы позвать корпоративного психолога и объяснить взрослым людям как взаимодействовать друг с другом. Однако, этапы DevOps включают в себя не только работу над коммуникацией:

  • Непрерывная интеграция (CI)

Раньше разработчики, обновляя код, вручную собирали и тестировали корректность. С развитием методологии DevOps обновлённые части кода начали загружаться в центральный репозиторий (общее онлайн хранилище). Там проходит автоматическая сборка и тестирование кода.

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

  • Непрерывная поставка и развёртывание (CD)

CD – это, так называемое, продолжение CI. Здесь все изменения кода автоматически развёртываются в тестовой среде. После этого развёрнутый код прогоняют через автоматические тесты, и запускается развёртывание в производственной среде.

Только неудачный тест может предотвратить запуск обновления сборки. Так разработчики могут быстрее обнаруживать и исправлять ошибки. CI/CD практики лежат в основах DevOps и выполняются последовательно и, чаще всего, не практикуются друг без друга.

  • Непрерывное тестирование

В процессе развёртывание кода на сервере сборки запускаются автоматические модульные тесты. Они заранее прописываются тестировщиком и учитывают контекст проводимых работ, поэтому тестировщику необходимо заранее обсуждать с разработчиками все детали и планировать тесты.

Модульные тесты, в отличие от внешних (функциональных) позволяют взглянуть на корректность кода изнутри. Только после успешного прохождения модульных тестов код будет развёрнут в среде контроля качества.

  • Непрерывное наблюдение

В число важных практик DevOps разработки входит также постоянный мониторинг качества производительности, безопасности и соответствия требованиям.

Непрерывное наблюдение за основными метриками позволит отслеживать состояние продукта от концепции до релиза и предотвращать ошибки на ранних этапах.

  • Инфраструктура как код

Ранее вся инфраструктура продукта (виртуальные машины, балансировщики нагрузки и т.д.) настраивались и управлялись вручную. Однако в последнее время становится популярным настраивать инфраструктуру программно, именно это и подразумевает под собой модель “Инфраструктура как код”.

  • Микросервисы

Микросервисная архитектура позволяет разбить продукт на множество небольших серверов или компонентов, каждый их которых отвечает за отдельный набор функций.

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

Ключевые преимущества DevOps

В наше время многие IT-компании и компании с IT-отделом приняли методологию DevOps за стандарт и заметили значительные улучшения во всех аспектах разработки:

  • Налаживание связей

Слаженная команда = качественный результат. А цель технологии девопс как раз таки заключается в установлении доверительных и понимающих отношений в команде разработки.

  • Повышение производительности

Автоматизация основных процессов разработки даёт значительный буст к производительности всей команды, вследствие чего проект не только закрывается в срок, но и радует заказчика и пользователей гарантией качества.

  • Увеличение скорости выпуска ПО

Вследствие слаженной работы и высокой производительности значительно ускоряется и время разработки. Чем больше процессов автоматизирует инженер по DevOps, тем меньше времени уйдёт на саму разработку и выявление ошибок.

  • Повышение лояльности клиентов

В разработке ПО на первом месте всегда стоят потребности пользователей, а следование DevOps разработке обеспечивает клиентов не только производительным и надёжным продуктом, но и уникальными решениями, которые рождаются в команде, где каждое мнение должно быть услышано.

  • Гарантии качества и работоспособности

Автоматические тесты и прозрачная коммуникация в команде позитивно влияют на качество и надёжность продукта, так как если каждый участник на 100% уверен в том, чего от него хотят и как его действия повлияют на чужую работу, трудности и ошибки будут стремиться к нулю.

Настало время разобраться кто стоит за внедрением методологии DevOps в компаниях и регулирует её корректное исполнение.

-3

Как мы жили до DevOps разработки?

Перед тем, как разобрать основные задачи инженера по DevOps пойдём от обратного и уточним как команды справлялись без него. Разработка ПО, как известно никогда не была и до сих пор не стала лёгким и быстрым процессом. Между командой разработки и заказчиком зачастую стоит стена из непонимания того, какие процессы необходимы и сколько времени и денег придётся на них потратить.

Однако, разногласия и недопонимания между заказчиком и командой всегда активно решались с помощью менеджера проектов или системного аналитика. Но что делать, когда стены начинают вырастать в самой команде?

Так, например, разработчики, тестировщики и сисадмины до внедрения методологии разработки DevOps часто не понимали или не хотели понять деятельность друг друга. Разработчики не знали, с какими проблемами сталкиваются тестировщики и сисадмины: тестировщики ругали разработчиков за то, что их код неудобно тестировать; сисадмины ругали всех — потому что исправление ошибок требовало времени, а выпустить обновление надо было ещё вчера.

Всё это было серьёзной проблемой пока на арену разработки не вышли они – специалисты по системной интеграции!

Чем занимается DevOps инженер?

И снова пофантазируем, представьте, несколько друзей собрались приготовить ужин: один нарезает салат, другой запекает мясо, третий варит гарнир. Задачи просты и понятны, однако в каждом процессе есть свои тонкости: первый не посолил салат, потому что ему сказали просто нарезать, второй не понял на сколько градусов включить духовку, третий не знал как долго нужно варить. В итоге все разругались и ушли домой голодные.

А теперь представим, что в самом начале они позвали четвёртого друга Диму и сказали, что он должен проштудировать рецепты и проследить за тем, чтобы всё было в порядке. В итоге Дима всем сказал чёткое время, заранее разогрел духовку, а салат не просто посолил, но и вкусную заправку придумал.

Так вот в реальном проекте Дима – тот самый специалист по интеграции прикладных решений (DevOps-инженер). Он внимательно следит за производительностью, эффективностью и корректностью работы. На практике задачи девопсера разнятся не просто от компании к компании, но и от команды к команде. Происходит это потому что принципы DevOps, как мы уже выяснили, были созданы, чтобы автоматизировать и упростить слабые места в разработке, но, как часто бывает, слабые места у всех разные.

Мы рассмотрим две крайности девопс программистов, а затем объединим их и выделим основные задачи, с которыми им приходится сталкиваться в большинстве проектов:

  • Первая крайность – “И швец, и жнец…”

Всевидящий специалист с восемью руками и четырьмя ногами. Он сделает всё, даже если в его обязанности это не входит, такие ребята редко, но всё же встречаются. Если для вас это звучит пугающе схоже с крепостными крестьянами, не переживайте. Такой инженер по DevOps чаще всего ценит свою работу как раз за разнообразие задач и отсутствие монотонного перекладывания бумаг.

  • Вторая крайность – Узконаправленный девопсер

По другую сторону баррикад спокойно работает узконаправленный девопсер, ему этот мир уже абсолютно понятен. Скорее всего это опытный DevOps разработчик, который успел получить опыт во всём и остановился на двух-трёх задачах, которые ему приносят удовольствие, а команде пользу.

А теперь выделим золотую середину и изучим самые распространённые задачи девопса:

  • Архитектура и масштабирование

На этапе планирования помогает решить какая у системы будет архитектура и какие средства масштабирования стоит применить.

  • Работоспособность

В ходе разработки, тестирования и внедрения следит за работоспособностью всех сред и инструментов разработки.

  • Автоматизация

Главная цель методологии разработки DevOps – ускорить процесс разработки, поэтому девопсер по возможности и необходимости автоматизирует некоторые процессы разработки. Самый распространённый пример – автоматизация тестирования.

  • Коммуникация

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

  • Организация

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

-4

Суперсилы классного DevOps-разработчика

Как и у любого другого специалиста, DevOps навыки делятся на hard (практические навыки) и soft (черты характера и личностные качества). К обязанностям девопс инженера относятся:

  • Программирование – или, как минимум, чёткое понимание девопс программистом задач и навыков разработчика, а также умение разобраться в коде и его работоспособности.
  • Контейнеризация и её поддержка – ПО для автоматического развёртывания и управления приложениями в средах с поддержкой контейнеризации
  • Настройка инфраструктуры разработки
  • Мониторинг работоспособности серверов и другой аппаратуры
  • Автоматизация – а точнее умение инженера по DevOps определить что именно необходимо автоматизировать и каким способом.
  • Настройка CI/CD – конвейера, который позволяет непрерывно вносить в код небольшие изменения и быстро запускать приложения на боевых серверах

Soft-скиллы DevOps разработчика складываются ото всех участников команды понемногу: он должен обладать аналитическим складом ума и системным мышлением, способностями к организации и управлению, умением презентовать свои решения и подойти к возникающим трудностям с разных сторон.

Разработка программного обеспечения от 66 Бит

Всего за 10 минут вы узнали что такое методология DevOps, почему она необходима в команде разработки и чем занимается DevOps инженер. А за такой же быстрой и качественной разработкой ПО советуем обращаться в 66 Бит! Наши специалисты обладают не только большим опытом, но и умением работать быстро и слаженно для лучшего результата. Подробнее читайте на сайте!

Поделиться в соцсетях:

Безопасность программного обеспечения
Миграция с Windows на Linux для бизнеса