Что такое DevOps
Рассказываем, что такое DevOps, как он автоматизирует задачи IT-отделов и ускоряет выпуск продуктов, и как стать DevOps-инженером.
2К открытий2К показов
Разработка — это дорогое удовольствие, и чтобы компенсировать затраты, необходимо быстро выпускать продукт на рынок, опережать конкурирующие компании и оперативно реагировать на претензии интернет-пользователей. Решить проблему поможет DevOps.
Что такое DevOps
Если представить себе классический процесс разработки, то становится понятным, что в него включены 3 раздельных основных этапа:
- написание кода — этим занимается команда программистов;
- его автоматическое или ручное тестирование на баги — это работа тестировщиков;
- установка протестированного кода на сервер, чтобы пользователи получили доступ к продукту — эту задачу выполняет команда разработчиков.
Получается, что до появления DevOps каждым этапом разработки занималась разная команда специалистов. У каждой из них своя цель, зона ответственности, руководители. Они могли даже не пересекаться между собой. Из-за такой дифференциации возникали проблемы, и разработка шла медленно: к примеру, разработчики сначала собирали жалобы от пользователей, затем передавали их программистам, которые исправляли ошибки. В итоге до обновления продукта проходило очень много времени.
Чтобы оптимизировать работу, была внедрена методология DevOps. Суть такого подхода заключается в том, что тестировщики, системные администраторы и разработчики работают в одной команде с общей целью — донести до пользователя готовый продукт. Получается, что DevOps — это такой набор инструментов, который помогает автоматизировать задачи IT-отделов и ускорить выпуск продукта.
Модель схожа с вертикальным конвейером, где задачи безостановочно курсируют между отделами.
Термин DevOps появился приблизительно в 2009 году. Это сочетание двух слов: development («разработка») и operations («эксплуатация»), которые отражают процесс объединения дисциплин в единое целое.
Сегодня крупнейшие IT-компании активно применяют методологию в разработке продуктов, к примеру, Amazon, Google, Netflix. Последняя из них — это наглядный пример, как попасть в ТОП высоких технологий.
Преимущества методологии DevOps
Автоматизация процессов дает DevOps определенные преимущества:
- Методология позволяет ускорить процесс выхода на рынок программного продукта. Облачные платформы, инструменты для ускорения сборки, автоматизация процессов, работа в одной среде — такой подход значительно ускоряет запуск приложений. Теперь отделам не нужно ждать «долгожданного часа», чтобы приступить к выполнению своей задачи.
- Меньше ошибок. Как правило, сбои при развертывании связаны с багами. В DevOps циклы короче, поэтому коды выходят чаще, а значит, возможностей для его проверки больше. Такой подход предотвращает недопонимание между разработчиками и приводит к меньшему количеству ошибок.
- Надежность и безопасность продукта. В DevOps инструментах имеются те, которые анализируют исходный код на возможные недостатки безопасности. Такой подход помогает сократить время выхода продукта, так как отпадает необходимость проводить дополнительные тесты на безопасность.
- Создание более гибких систем. Использование облачной инфраструктуры позволяет применять только необходимое количество ресурсов и быстро наращивать мощности.
- Сокращает издержки на разработку. Когда один из отделов отдыхает, компания теряет прибыль, точно так же как при рутинном и не автоматизированном рабочем процессе. Применение DevOps исключает время бездействия IT-специалистов, а значит компания платит разработчикам только за эффективную работу.
Из чего следует, что DevOps помог стереть барьер между производством и поддержкой.
Инструменты DevOps
Чтобы взаимодействие между разными IT-отделами было плодотворным, нужен набор инструментов DevOps, позволяющий компании разработать и улучшить продукт быстрее, чем при применении традиционных способов создания ПО. К таким помощникам относятся:
- Система контроля версий (обычно Git). Это система, помогающая мониторить историю изменений в файлах. Такой подход помогает отслеживать весь процесс разработки, а по необходимости выполнить откат продукта к предыдущей версии. Работать над изменениями могут сразу несколько специалистов.
- CI/CD системы. Проще говоря, это комбинация непрерывной интеграции и поставки. Методология DevOps обеспечивает непрерывность и параллельность процесса: автоматизированную передачу кода и получение обратной связи. Кроме этого, скрипты необходимо непрерывно тестировать, что реализуется в виде набора автоматизированных тестов. В решении такого подхода помогают приложения GitLab или Jenkins.
- Система мониторинга. К примеру, приложение 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 инженером
Конечно, намного лучше, если у вас есть опыт работы системным администратором и разработчиком или вы являетесь дипломированным специалистом. Такой подход дает преимущества, и вы можете начать работать Junior DevOps инженером.
Даже если вы работаете системным администратором, вам необходимо будет повысить свой уровень знаний: дополнительно изучить еще один язык программирования, ознакомится с облачными технологиями, изучить ОС.
На старте можно пополнить багаж знаний, прочитав ряд книг:
● Джин Ким, Патрик Дебуа, Джон Уиллис и Джез Хамбл «Руководство по DevOps»;
● Джон Арундел и Джастин Домингус «Kubernetes для DevOps»;
● Thomas Limoncelli «The Practice of System and Network Administration».
Также просмотреть обучающие видео на YouTube:
2К открытий2К показов