Найти тему
ПиццаФабрика IT

Что такое DevOps-методология

Оглавление

В отделе разработки «ПиццаФабрики» девопс-инженеры поддерживают it-инфраструктуру компании. Помогают разработчикам выстроить релизный цикл приложения и ускорить разработку.

Недавно в состав нашей инженерной команды 911 вошёл новый девопс-инженер из Ярославля Алексей Прусаков. Расширение команды позволит руководителям направлений уделять больше времени своим направлениям и уменьшит нагрузку на дежурства.

Мы решили детально разобраться для чего it-командам нужны девопс-инженеры и что входит в понятия девопс-практик.

Кто такие DevOps-инженеры

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

Целью разработчиков всегда было уложиться в дедлайн бизнес-требований и выпустить продукт в релиз. Поддержка отвечала за стабильную работу продукта, а любые изменения ставят её под угрозу. Налицо конфликт интересов – DevOps появился, чтобы его решить.

Нет чёткого описания девопс-специалиста. В большинстве случаев компании ищут системного администратора с большим перечнем навыков. Обычно под DevOps-специалистом подразумевается администратор, который знает, как налаживать CI/CD — процессы, включающие в себя автоматизацию всего того, чем занимается сисадмин.

-2

Что такое DevOps

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

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

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

Какие бывают DevOps-практики

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

-3

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

Все взаимодействия в команде можно автоматизировать: написали код – выкатили – проверили – установили – получили обратную связь – вернулись в начало. И это всё – автоматически.

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

Третье – это ускорение обратной связи от пользователя. Если у него есть замечания, можно и нужно сразу же вносить корректировки и тут же обновлять приложение».

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

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

Что должен знать DevOps-инженер

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

Каждый инструмент, который используется для автоматизации, имеет язык конфигурации. Например, в Ansible, Docker, Kubernetes для описания конфигурации используется YAML, у Terraform — другой язык, у Puppet — третий. Можно писать скрипты на Bash, Python, PowerShell и т.д.

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

-4

Операционные системы

изначально большинство devops-инструментов создается для linux. Он больше распространён как серверная система. Windows сервера тоже встречаются, но их значительно меньше.

Системы контроля версий

Без знаний системы контроля версий DevOps-инженеру никуда. Git – одна из самых популярных систем в настоящий момент.

Облачные провайдеры

Облачные провайдеры предоставляют нам виртуальные сервера, которые прекрасно ложатся на рельсы CI/CD.

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

Системы оркестрации: Docker и Kubernetes

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

Раньше каждым приложением занимался отдельный сервер – любые изменения в его работе могли повлиять на исправность приложения. Благодаря контейнерам приложения становятся изолированными и запускаются по отдельности – каждое в своём окружении. Если происходит сбой, не нужно тратить время на поиск причины. Проще уничтожить старый контейнер и добавить новый.

Системы конфигураций: Chef, Ansible, Puppet

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