Visitors have accessed this post 9236 times.

Методология и принципы DevOps

9
0
9236
4 сентября 2020 12:24
Автор: Rebrain Me
DevOps

Visitors have accessed this post 9236 times.

«Когда ты это выяснишь, юный Билл, ты сможешь осознать Три Пути, – говорит он. – Первый Путь помогает нам понять, как наладить быстрый поток работы, соединяющий отдел разработки и IT-сопровождения, потому что именно он лежит между бизнесом и клиентами. Второй Путь показывает нам, как сократить и усилить цикл обратной связи, чтобы можно было сразу фиксировать качество и избегать ненужных переделок. И Третий Путь показывает нам, как создать культуру постоянного эксперимента, как учиться на ошибках и понять, что повторение и практика – это то, что ведет к настоящему мастерству» (из книги «Проект «Феникс». Роман о том, как DevOps меняет бизнес к лучшему»).

Эта цитата прекрасно иллюстрирует самую суть DevOps. Но давайте разберем, как появился DevOps и что такое методология DevOps.

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

DevOps как отдельная дисциплина (и как термин – Development + Operations = DevOps) появился в 2009 году после первой конференции DevOpsDays, организованной бельгийским разработчиком Патриком Дебуа (хотя, нужно сказать, что некоторые источники считают, что DevOps появился еще в 2008, а после конференции получил широкое распространение). На конференции собрались сисадмины, разработчики, менеджеры и системные программисты со всего мира. Идея DevOps, предлагающая новый порядок взаимодействия команд разработки, тестирования и внедрения, пришлась им настолько по вкусу, что вместе с ними она разлетелась и начала транслироваться по всей планете.

Что интересно, DevOps появился не с подачи крупного вендора, а по сути, родился из потребностей практиков – системных администраторов, разработчиков, менеджеров проектов. Благодаря этому, DevOps постепенно стал достаточно массовым движением в сфере ИТ.

Идеологи DevOps тратили много времени и сил на его описание и обсуждение. Но они столкнулись с недостатками общепринятых ИТ-инструментов, с которыми им приходилось работать. Так появилось поколение новых инструментов, которые позволили формализовать так называемые best practices (лучшие практики), таких как puppet, chef, vagrant, Jenkins и т.д.

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

Принципы DevOps

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

DevOps позволил убрать стену между отделами разработки и внедрения. Как результат, это упростило и ускорило процесс их взаимодействия, а значит, пошло на пользу и бизнесу, потому что эффективность процессов существенно возросла. В DevOps-культуре нет такого, что разработчики делают свою часть и их не слишком интересует, смогут ли ее запустить в продакшн системные администраторы. А системные администраторы, в свою очередь, вовсю «кроют» разработчиков, которые, по их мнению, передали им малопригодный к работе продукт.

В культуре DevOps каждый ответственен за конечный результат. А значит, возникающая проблема – общая, и каждый должен быть максимально заинтересован в ее устранении.

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

Итак, основные принципы DevOps:

  • Автоматизация – автоматизируйте все, что возможно. Что невозможно, тоже. Чтобы все процессы по тестированию, сборке и развертыванию приложения, выкатке обновлений, сбору фидбека производились автоматически.
  • Ускорение релиза, в том числе через упрощение процесса разработки. Этот принцип подчеркивает прямую связь идеологии DevOps с потребностями бизнеса – чем быстрей заказчик получит конечный работающий продукт, тем выше будет эффективность и конкурентоспособность его бизнеса. Поэтому DevOps активно использует best practices, которые помогают, например, усовершенствовать процессы мониторинга или сократить время, затрачиваемое на процессы доставки продукта пользователю.
  • Получение быстрой обратной связи – именно DevOps-методология позволила ускорить этот процесс, а самое главное – по следам ОС от пользователей оперативно вносить корректировки в продукт и производить его обновления.
  • Наличие стандартов. Для DevOps важно наличие темплейтов и стандартов настройки и использования тех или иных инструментов. Благодаря этому, сложный процесс, задействующий одновременно разработку, тестирование и эксплуатацию, не превращается в «хаос», а напротив, получает возможности для автоматизации каждого этапа.
  • Непрерывное тестирование. Процесс запуска непрерывных security-тестов позволяет полностью контролировать процесс и оперативно реагировать на возникающие проблемы.

DevOps часто рассматривается с точки зрения некоторого совпадения идеологии с подходом к разработке Agile. Но в нашем случае этот подход масштабируется не только на разработку, но и на эксплуатацию и тестирование. Тут можно выделить ряд принципов, которые DevOps заимствует из Agile. Кстати, описанный выше принцип автоматизации тоже восходит к Agile.

5 принципов, заимствованных из Agile (CALMS)

  • Культура – так как DevOps подразумевает определенную культуру взаимодействия разных подразделений – разработки, тестирования, эксплуатации;
  • Бережливость – тут подразумевается бережное отношение к процессам и времени, затрачиваемому на них, а значит, отказ от действий с низкой эффективностью, постоянный поиск методов для улучшения производительности и ускорения процессов, оперативное обнаружение и решение проблем.
  • Измерения – цифровые показатели и критерии для оценки работы очень важны в DevOps.
  • Обмен – это пункт про совместную ответственность нескольких команд за жизнедеятельность продукта.
  • Автоматизация – о принципе «Автоматизируйте все» мы уже рассказали чуть выше.


Методы DevOps и инструменты их реализации

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

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

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

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

Непрерывные интеграция и доставка (CI/CD)

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

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

То есть, CI/CD позволяет автоматизировать все действия от фиксации кода до развертывания его в продакшн. Это позволяет сократить временные и трудозатраты на рутинные операции и ускорить процесс развертывания кода с минимальными рисками.

Управление версиями

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

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

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

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

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

Управление конфигурацией

Эта методика позволяет управлять состоянием ресурсов (серверов, виртуальных машин и баз данных) в системе. При помощи определенных инструментов DevOps-инженер может разворачивать изменения контролируемо и систематически, при этом сведя к минимуму риски изменения конфигурации. А также отслеживать актуальное состояние системы и любые изменения\отклонения в конфигурации от нужного ее состояния.

Используя эту методику вместе с IaC, возможно автоматизировать настройку любой, самой сложной, системы.

Непрерывный мониторинг

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

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

Таким образом, в ведении DevOps-инженера часто оказываются следующие процессы (хотя тут можно выделить несколько самостоятельных профессий — инженер по автоматизации, release инженер, security инженер и др.):

  1. Работа с кодом в части его анализа и контроля версий, а также написания скриптов (Code)
  2. Процесс непрерывной интеграции нового кода (Build)
  3. Процесс непрерывного тестирования с оперативной обратной связью (Test)
  4. Процесс установки приложений (Operate)
  5. Процесс автоматизации выпуска релизов, в том числе в части управления изменениями (Release)
  6. Процесс непрерывного развертывания, управление инфраструктурой как кодом (Deploy)
  7. Процесс непрерывного мониторинга работы приложения (Monitor)


В части решения этих задач в DevOps используется широкий перечень инструментов, например:

  • Для планирования и оценки – JIRA.
  • Для контроля версий — Git, Mercurial, хостинги GitHub / BitBucket / GitLab.
  • Инструменты контейнеризации — Docker, rkt, CRI-O, Swarm, Nomad by HashiCorp, Kubernetes.
  • Для сборки и тестирования приложения — Jenkins, TeamCity, GitLab CI, Bamboo.
  • Для непрерывного развертывания и управления инфраструктурой как кодом — Puppet, Chef, Ansible, SaltStack.
  • Для управление облачными ресурсами — Terraform.
  • Для мониторинга и алертинга – Prometheus, Grafana, New Relic, DataDog, AlertManager, PagerDuty.

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

Если вам интересно посещать открытые онлайн-мероприятия по DevOps, Kubernetes, Docker, GitlabCI и др. и задавать вопросы в режиме реального времени, подключайтесь к каналу DevOps by REBRAIN*Анонсы мероприятий каждую неделю

Практикумы для специалистов по инфраструктуре и разработчиков — https://rebrainme.com.
Наш Youtube-канал — https://www.youtube.com/channel/UC6uIx64IFKMVmj12gKtSgBQ.

Агентство Fevlake, проектируем и поддерживаем IT-инфраструктуры с 2012 года — https://fevlake.com.

Комментарии (3)
Введено символов из возможных
Не отвечать

Вам также может понравится

Kubernetes: 6 секретов успешных команд
array(1) { [0]=> object(WP_Term)#11555 (16) { ["term_id"]=> int(10) ["name"]=> string(10) "Kubernetes" ["slug"]=> string(10) "kubernetes" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(10) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(4) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(10) ["category_count"]=> int(4) ["category_description"]=> string(0) "" ["cat_name"]=> string(10) "Kubernetes" ["category_nicename"]=> string(10) "kubernetes" ["category_parent"]=> int(0) } } Kubernetes

Перевод статьи — https://enterprisersproject.com/article/2020/2/kubernetes-6-secrets-success

Kubernetes будет управлять контейнерами и приложениями за вас, но знаете ли вы, в чем заключается ваша роль? Вот шесть важных вещей, которые делают эффективные команды при успешном запуске Kubernetes в производственной среде.Kubernetes заработал...

0
0
29 января 2021
Docker — установка, настройка и первые шаги в системе
array(1) { [0]=> object(WP_Term)#976 (16) { ["term_id"]=> int(8) ["name"]=> string(6) "Docker" ["slug"]=> string(6) "docker" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(8) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(8) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(8) ["category_count"]=> int(8) ["category_description"]=> string(0) "" ["cat_name"]=> string(6) "Docker" ["category_nicename"]=> string(6) "docker" ["category_parent"]=> int(0) } } Docker

Автор - Юрий Власов

Docker – де-факто стандартный движок контейнеризации, который повсеместно используется для запуска приложения как в окружениях для разработки, так и в публичных\высоконагруженных средах. Подробнее о терминологии можно узнать здесь.

В этой статье я расскажу, как поставить и запустить Docker локально и начать знакомство с...

8
0
21 августа 2020
Как переименовать файл в Linux
array(1) { [0]=> object(WP_Term)#11555 (16) { ["term_id"]=> int(6) ["name"]=> string(5) "Linux" ["slug"]=> string(5) "linux" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(6) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(28) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(6) ["category_count"]=> int(28) ["category_description"]=> string(0) "" ["cat_name"]=> string(5) "Linux" ["category_nicename"]=> string(5) "linux" ["category_parent"]=> int(0) } } Linux

Переименование файлов Linux - одна из самых простых задач, которую вы можете выполнить непосредственно из командной строки.

Есть несколько способов, как это сделать, и в этом туториале я покажу вам, как легко можно в Linux переименовать файл.
Переименование файла в Linux с помощью команды mv
В Linux команда переименования файла - mv - одна из...

3
0
27 мая 2020