Что такое Devops или как сделать разработку эффективнее
Время на прочтение: 6 минут(ы)Рассказываем, что такое DevOps и почему Devops-инженеры зарабатывают больше, чем разработчики.
Что такое DevOps?
Давайте представим процесс разработки. Что нужно сделать и какие специалисты нужны для создания продукта:
- Написать код, этим занимаются программисты
- Протестировать продукт на баги, выявить их вручную или автоматически, эта работа тестировщиков
- Запустить код на сервер, чтобы клиент получил доступ к продукту, эти задачи выполняют инженеры
Раньше в классическом понимании всеми этапами занимались разные команды. У них были разные цели, зоны ответственности, руководители. Иногда они могли даже не пересекаться. Однако из-за такой структуры возникали недопонимания, а создание продукта тормозилось. Например, инженеры не могли деплоить код на сервер, так как ждали разработчиков, или тестировщики могли проверять неготовый код.
Чтобы оптимизировать работу, был придуман новый подход — DevOps. С его помощью запускается конвейер, где программисты, тестировщики, инженеры работают сообща и ставят для себя общую цель — донести до клиента готовый продукт. Таким образом, это набор инструментов, позволяющих эффективно взаимодействовать разным отделам IT и, соответственно, быстрее создавать продукт.
Модель напоминает вертикальный конвейер, где из одного блока задачи перетекают в другой.
Термин DevOps появился в 2009 году. Логика его такова: это комбинация слов Development (“разработка”) и Operations (“эксплуатация”), которая отражает симбиоз нескольких отделов IT воедино.
Сегодня крупные IT индустрии активно применяют метод в своей разработке, например, Amazon, Google, Netflix. Последняя компания — отличный пример, как можно подняться в топ высокотехнологичных индустрий.
Преимущества методологии Devops
1. Сокращает время выпуска продукта
Благодаря работе в одной среде, где налажена коммуникация и процессы, теперь запускать приложения или публиковать сайты стало в разы быстрее. Командам не нужно ждать своего “заветного” часа, чтобы приступить к своей части работы. Плюс, многие процессы автоматизируются.
2. Уменьшается количество сбоев
Во-первых, допускается меньше ошибок из-за отсутствия недопониманий между отделами, например, тестировщики получают нужный код. Во-вторых, циклы разработки сокращаются, поэтому код выходит чаще, а возможностей для его проверки больше.
3. Повышает безопасность продукта
В инструментах DevOps есть те, которые позволяют на этапе тестирования продукта найти возможные недостатки безопасности. Это позволяет сокращать время на тестирование и выпуск продукта, так как угрозу находят на раннем этапе разработке.
4. Создает более гибкие системы
Облачная инфраструктура помогает использовать только нужные ресурсы, а также наращивать мощность.
5. Сокращает издержки на разработку
Когда команды не заняты работой, компания теряет деньги, точно также как при рутинной и неавтоматизированной работе специалистов. Благодаря методологии, простоев в работе нет. А значит, компания платит только за эффективную работу сотрудников.
Инструменты DevOps
Эффективно взаимодействовать разным отделам IT помогают инструменты DevOps, которые запускают и заставляют непрерывно работать “конвейер”. Разберемся, что это за “помощники”.
Системы контроля версий (обычно Git)
Чем-то напоминает облако, куда можно загрузить код в процессе работы над ним. С его помощью можно видеть предыдущие версии, возвращаться к ним и видоизменять, работать над изменениями могут сразу несколько специалистов.
CI/CD системы
Иными словами, непрерывная интеграция и непрерывная поставка. Методология DevOps позволяет процессам разработки проходить параллельно. Этот инструмент обеспечивает автоматическую передачу кода и получение обратной связи. Плюс код нуждается в непрерывном тестировании, что также реализуется в виде набора автоматизированных тестов. Чаще всего используют приложения GitLab или Jenkins.
Системы мониторинга
Они позволяют проверять продукт на всем его этапе разработки и выпуска, собирать ошибки, отправлять их на доработку. На данном этапе обычно применяют приложения вроде Grafana.
Чем занимается DevOps-инженер?
Пришло время поговорить о том, кто внедряет методологию в сами процессы.
DevOps-инженеры — это многопрофильные специалисты (как кофе 3 в 1), которые выполняют сразу несколько функций и автоматизируют процесс разработки. Они знают, как написать код, что должно входить в процесс тестирования и какие инструменты применить, чтобы выпустить продукт. Таким образом, в задачи инженера входит:
- на первых этапах (на этапах планирования), специалист помогает создать архитектуру продукта (приложения или сайта)
- далее инженер заливает код, автоматизирует его проверку, проверяет сервера (куда продукт должен будет выпускаться), уже на данном этапе специалисты применяют инструменты DevOps
- следующий этап – тестирование, задача специалиста – настроить автоматизацию тестов
- проверяет реализацию проекта
- собирает обратную связь от пользователей на наличие багов и внедряет изменения, важная задача здесь – улучшить продукт так, чтобы пользователи этого не заметили
- настраивает процесс обновления продукта
Что нужно знать DevOps инженеру?
Из-за многопрофильности задач, которые приходится выполнять специалисту, ему придется иметь обширный кругозор и разбираться в разных направлениях IT. Ему следует знать работу программиста, тестировщика, системного администратора, поэтому набор навыков достаточно обширный.
Разработка
В первую очередь, инженеру следует знать несколько языков программирования, принципы ООП. Не обязательно детально знать синтаксис каждого, но базовые функции каждого языка специалист должен применять.
Во-вторых, инженеру приходится писать алгоритмы, проводить тесты и быстро выявлять ошибки. Поэтому специалисту следует уметь быстро реагировать на проблемы: написать новую программу для теста продукта, прочесть чужой код и выявить неточности.
Операционные системы
Одна из задач инженера — выпустить продукт для пользователя. Поэтому специалисту нужно понимать разные ОС и знать преимущества каждой. Это поможет выпускать приложения/сайты на более подходящих операционных системах, заранее предугадать сложности с выпуском, выявить ошибки. Например, чаще всего в вакансиях по умолчанию указано умение работать в Linux.
Владение инструментами CI/CD
Проще говоря, знать и понимать облачные технологии. Именно эти инструменты в DevOps помогают выстаивать параллельный процесс работы и оптимизировать работу над одним продуктов, так как над его реализацией могут работать сразу несколько специалистов. Например, чаще всего используют Jenkins, но также не помешает знание Terraform (приложение для удаленной работы в облаках).
Микросервисы
Речь идет о выявлении потенциальных проблем. Поэтому нужно понимать, как отключить часть контейнеров без повреждения общей системы. Для этого понадобится знание Docker и Kubernetes.
Дополнительный минимум инструментов, который понадобится при работе инженера:
- Изучите базы данных: базово знать не только MySQL, но и NoSQL
- Установите GitLab и разберитесь, как в нем работать
- Знание языков разметки будет не лишним (JSON, YAML)
Перспективы профессии DevOps
Сейчас наблюдается явная нехватка специалистов. Например, на сайте hh.ru по запросу “DevOps инженер” около 2 тыс. вакансий на всю Россию. К ним можно прибавить дополнительные вакансии на других сайтах по поиску работы.
Причинами нехватки “рук” могут быть непонимание профессии у новичков и ее многопрофильность. Но при этом методологию активно внедряют во многие бизнес-проекты.
DevOps — это человек-оркестр. Нужно быть специалистом с большим кругозором в области IT, поэтому таким инженерам хорошо платят за работу, так как их очень ценят в компании. Например, среди специалистов по эксплуатации заработная плата DevOps инженеров выше остальных.
Исходя из анализа вакансий на hh.ru, средние заработные платы по грейдам DevOps инженеров можно представить так:
Грейд | Заработная плата |
Junior | от 50 до 120 тыс. рублей |
Middle | от 70 до 300 тыс. рублей |
Senior | от 150 до 500 тыс. рублей |
Чтобы понять размах профессии, можно сравнить ЗП DevOps инженера и узкопрофильного разработчика. Средняя заработная плата разработчика будет ниже, чем инженера.
Как стать DevOps инженером?
Лучше всего, когда вы уже работаете системным администратором более года и имеете профильный диплом об образовании. При таких условиях легче попасть на позицию Junior DevOps инженер.
Даже если у вас уже есть опыт в IT, вам потребуется повышать свои навыки: изучить еще один язык программирования, погрузиться с облачные технологии, узнать о операционных системах.
Во-первых, можно начать с самостоятельного погружения в сферу. Предлагаем вам ряд книг, на которые стоит обратить внимание:
- Джин Ким, Патрик Дебуа, Джон Уиллис и Джез Хамбл «Руководство по DevOps»
- Джон Арундел и Джастин Домингус «Kubernetes для DevOps»
- Thomas Limoncelli «The Practice of System and Network Administration»
Плюс есть много обучающих видео на YouTube:
- Выступление на DevOpsConf
- Cloud Native Computing Foundation
- DevOps-решения: ускорить запуск продуктов и сэкономить
Получить комплексный подход к обучению можно на курсе “Профессия: DevOps-инженер” от ProductStar. Вы сможете освоить:
- основы DevOps: изучите на кейсах подход, методологию, основные понятия, этапы жизненного цикла, разработки ПО
- основы Python: базовый синтаксис, форматирование строк, следования, ветвления и циклы, создание и применение функций
- Git и Gitlab: Git, знакомство с системами контроля версий, создание веток, основные понятия, клонирование, слияния, merge
- Упаковка приложений в Docker: расширенные опции Docker, подходы к упаковке приложений, а также освоение навыков на практике
Эксперты ProductStar помогут вам получить все необходимые навыки, собрать проекты для вашего резюме и получить достойную работу в интересующей вас компании, гарантируя трудоустройство.