0
Обложка: Что такое DevOps

Что такое DevOps

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

Что такое DevOps

Если представить себе классический процесс разработки, то становится понятным, что в него включены 3 раздельных основных этапа:

  • написание кода — этим занимается команда программистов;
  • его автоматическое или ручное тестирование на баги — это работа тестировщиков;
  • установка протестированного кода на сервер, чтобы пользователи получили доступ к продукту — эту задачу выполняет команда разработчиков.

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

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

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

Термин DevOps появился приблизительно в 2009 году. Это сочетание двух слов: development («разработка») и operations («эксплуатация»), которые отражают процесс объединения дисциплин в единое целое.

Сегодня крупнейшие IT-компании активно применяют методологию в разработке продуктов, к примеру, Amazon, Google, Netflix. Последняя из них — это наглядный пример, как попасть в ТОП высоких технологий.

Преимущества методологии DevOps

Автоматизация процессов дает DevOps определенные преимущества:

  1. Методология позволяет ускорить процесс выхода на рынок программного продукта. Облачные платформы, инструменты для ускорения сборки, автоматизация процессов, работа в одной среде — такой подход значительно ускоряет запуск приложений. Теперь отделам не нужно ждать «долгожданного часа», чтобы приступить к выполнению своей задачи.
  2. Меньше ошибок. Как правило, сбои при развертывании связаны с багами. В DevOps циклы короче, поэтому коды выходят чаще, а значит, возможностей для его проверки больше. Такой подход предотвращает недопонимание между разработчиками и приводит к меньшему количеству ошибок.
  3. Надежность и безопасность продукта. В DevOps инструментах имеются те, которые анализируют исходный код на возможные недостатки безопасности. Такой подход помогает сократить время выхода продукта, так как отпадает необходимость проводить дополнительные тесты на безопасность.
  4. Создание более гибких систем. Использование облачной инфраструктуры позволяет применять только необходимое количество ресурсов и быстро наращивать мощности.
  5. Сокращает издержки на разработку. Когда один из отделов отдыхает, компания теряет прибыль, точно так же как при рутинном и не автоматизированном рабочем процессе. Применение DevOps исключает время бездействия IT-специалистов, а значит компания платит разработчикам только за эффективную работу.

Из чего следует, что DevOps помог стереть барьер между производством и поддержкой.

Инструменты DevOps

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

  1. Система контроля версий (обычно Git). Это система, помогающая мониторить историю изменений в файлах. Такой подход помогает отслеживать весь процесс разработки, а по необходимости выполнить откат продукта к предыдущей версии. Работать над изменениями могут сразу несколько специалистов.
  2. CI/CD системы. Проще говоря, это комбинация непрерывной интеграции и поставки. Методология DevOps обеспечивает непрерывность и параллельность процесса: автоматизированную передачу кода и получение обратной связи. Кроме этого, скрипты необходимо непрерывно тестировать, что реализуется в виде набора автоматизированных тестов. В решении такого подхода помогают приложения GitLab или Jenkins.
  3. Система мониторинга. К примеру, приложение Grafana, которое проверяет продукт на всех этапах разработки и выхода на наличие недочетов. Автоматически собирает обнаруженные баги и отправляет их на доработку.

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

Поговорим о том, кто же внедряет методологию в сами процессы.

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

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

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

Что нужно знать DevOps инженеру

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

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

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

Операционные системы. Задача DevOps инженера — выпустить продукт для пользователя. Поэтому разработчику нужно знать возможности каждой версии ОС. Такой подход дает возможность выпускать продукт на более подходящей ОС, выявить недочеты и предугадать трудности. Хотя, судя по умолчанию в вакансиях, многие разработчики работают в Linux.

Владение инструментами CI/CD. Говоря простым языком, должен разбираться в облачных технологиях. DevOps инструменты помогают выстраивать параллельный процесс работы и оптимизировать его над одним продуктом, так как над реализацией работают сразу несколько специалистов. Как правило, используют Jenkins, но стоит изучить и Terraform — программа, которая помогает удаленно настраивать облачную инфраструктуру.

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

Вот еще немного знаний, помогающих на страте:

  • знать, как базово работают MySQL и NoSQL;
  • установить GitLab и понимать, как в нем работать;
  • изучить языки разметки JSON, YAML.

Перспективы профессии

Сегодня на рынке труда нехватка DevOps разработчиков. К примеру, на hh.ru представлено около 2 тысяч вакансий на всю Россию. К ним можно приплюсовать вакансии разработчиков на других сайтах по трудоустройству. Причинами нехватки специалистов являются: сложность профессии инженера и ее многопрофильность, но при этом наблюдается активное внедрение методологии во многие бизнес-процессы.

Чтобы стать успешным DevOps инженером, необходимо много учиться, так как необходимо быть специалистом с широким кругозором в IT-сфере, поэтому у таких разработчиков высокая зарплата и их ценят как сотрудников. К примеру, зарплата DevOps инженеров в несколько раз выше, чем у других специалистов.

Источник: Хабр Карьера

Средняя зарплата по грейдам DevOps инженеров, согласно сайту hh.ru, составляет:

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

Источник: Хабр Карьера

Как стать DevOps инженером

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

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

На старте можно пополнить багаж знаний, прочитав ряд книг:

Джин Ким, Патрик Дебуа, Джон Уиллис и Джез Хамбл «Руководство по DevOps»;

Джон Арундел и Джастин Домингус «Kubernetes для DevOps»;

Thomas Limoncelli «The Practice of System and Network Administration».

Также просмотреть обучающие видео на YouTube:

Выступление на DevOpsConf;

Cloud Native Computing Foundation;

DevOps решения: ускорить запуск продуктов и сэкономить.