В предыдущих статьях мы писали об основах DevOps и рассказали, как освоить эту профессию. Остальные публикации по теме доступны на сайте Proglib.io.
***
Чем инженер DevOps отличается от сисадминов DevOps (DEVelopment OPerations) – набор практик, сочетающий разработку программного обеспечения (Dev) и IТ-операции (Ops). Эти практики направлены на сокращение жизненного цикла создания систем и непрерывную поставку программного обеспечения высокого качества.
Специалист DevOps должен знать все процессы цикла: от самой разработки до поддержки продукта после релиза. Он должен быть хорошим менеджером, который разбирается в процессах планирования и управления командами, а также умеет общаться с заказчиком.
Работа специалиста DevOps объединяет несколько направлений:
непрерывную интеграцию и доставку (CI/CD); автоматизацию развертывания серверов (IaC); мониторинг; отчетность; сотрудничество. Роль DevOps мы уже рассматривали подробнее.
Существует миф, будто задачи инженера DevOps может решать системный администратор или администратор Big Data, но сферы ответственности и рабочие объекты у этих специалистов различаются.
Иллюстрация с сайта pixabay.com
Системный администратор:
разрабатывает конфигурацию корпоративной сети; работает с программным и аппаратным обеспечением персональных компьютеров; настраивает серверы; ведет мониторинг состояния сети; реализует резервное копирование и восстановление данных. Администратор Big Data:
настраивает и обслуживает инфраструктуру для хранения данных, создавая кластеры и конфигурируя облачные платформы; заботится об информационной безопасности больших данных; взаимодействует с облачными и виртуальными серверами.
Иллюстрация с сайта pixabay.com
Инженер DevOps:
запускает поставленный разработчиками релиз в производство; интегрирует процессы разработки в поставки; стандартизирует окружение разработки; настраивает серверы, автоматизированную проверку и заливку кода; автоматизирует тестирование, решает задачи по деплою; находит и исправляет проблемы; автоматизирует процессы. Системные администраторы обслуживают серверы и ПО, администраторы Big Data отвечают за инфраструктуру для больших данных, а инженеры DevOps автоматизируют решение задач, которые относятся к интеграции и доставке программного продукта заказчику.
Нюансы работы специалистов разных уровней Мы расспросили специалистов DevOps разных уровней об их основных обязанностях и использующихся в работе инструментах.
Иллюстрация с сайта pixabay.com
Алексей Мамаев стажировался на позиции DevOps в «Тинькофф Банк» , а сейчас занимает должность младшего разработчика в Mail.ru Group. Большая часть времени в процессе его стажировки уделялась разработке.
Круг обязанностей был следующим:
настройка мониторинга инфраструктуры; разработка внутренних сервисов (например, конфигурирования серверов). Задачи и инструменты:
конфигурирование мониторинга внутренней инфраструктуры (добавление метрик, их группировка, формирование дашбордов) в Nagios; разработка дополнительных плагинов на C, когда нужна более тонкая логика обработки: например, отслеживание совокупности метрик; добавление метрик для системы мониторинга Prometheus с использованием Golang; Шаблонное редактирование конфигураций развернутых в Kubernetes или на физических машинах веб-сервисов с помощью Puppet; Разработка внутренних сервисов: бекенда на Python и простейшего фронтенда с использованием Bootstrap. Возможно, с использованием Django/Flask. Как пример – простейший веб-интерфейс управления определенным классом серверов в дата-центре (включить/выключить, отобразить информацию о машине). В итоге немалый объем работы был связан с мониторингом. По словам Алексея, эта сфера интересна ему в т.ч. по эстетическим соображениям, а опыт в DevOps может быть полезен обычным разработчикам: если в команде нет специалистов, им достается часть обязанностей по доставке ПО и поддержке разворачиваемых сервисов.
Иллюстрация с сайта pixabay.com
Андрей Сидоров занимает в компании ARRIVAL должность DevSecOps Architech.
В его обязанности входит проработка целевой безопасности компании:
построение Security CI/CD для всех компонентов системы в соответствии со стандартами безопасности; построение SIEM для анализа и выявления кибер-угроз всем компонентам ИТ-инфраструктуры; построение системы работы с секретными данными на уровне всей компании; построение инфраструктуры для работы приложений в соответствии со стандартами безопасности. В течение рабочего дня у Андрея обычно запланированы организационные звонки, занимающие в общей сложности до трех часов.
В остальное время он продумывает и разрабатывает Proof Of Concept различных решений и тестирует гипотезы.
Инструменты:
Terraform (для управления конфигурацией инфраструктуры); CI/CD инструменты: Gitlab, Jenkins, TeamCity; Kubernetes; Vault; Istio; Open Policy Agent; Golang, Python. Сейчас Андрей занимается решением для отправки отчетов различных сканеров (owasp dependency check, gitleaks, hadolint, dockle, trivy) в системы Application Security Vulnerability management (DefectDojo). В зависимости от настроек, оно импортирует нужную информацию о проекте и отправляет в DefectDojo, интегрируясь с Jira.
Андрей отмечает, что профессионалы в DevOps чаще вырастают из системных администраторов: им очень не хватает опыта программирования, поэтому изучение Go и Python необходимы. Go – из-за высокой популярности в корпоративном секторе, а также благодаря активному использованию в экосистеме Kubernetes.
Kubernetes становится стандартом любой инфраструктуры и он с нами надолго. Всем инженерам необходимо получить опыт эксплуатации сервисов на этой платформе, но надо понимать, когда ее использование целесообразно.
Иллюстрация с сайта pixabay.com
Илья Бленцов работает на должности Senior IT Engineer.
По мнению Ильи, обязанности специалиста DevOps зависят от проекта и его фазы, роли инженера на этом проекте и списка задач. Он приводит такие варианты задач по автоматизации отдельно взятых процессов:
установка/развертывание решения, статическое тестирование кода, подготовка/обновление/клонирование окружения; изучение существующих инструментов и процессов на проекте с последующей их автоматизацией и оптимизацией, например «на нашем проекте вся автоматизация на скриптах Ansible и Shell»; изучение и внедрение конкретного инструмента (например, graylog для управления логами на проекте или Vault), где инженеру необходимо будет изучить продукт и понять, как с его помощью решить задачи проекта; организация CI/CD на проекте с помощью Gitlab-CI, где задачи инженера будут следующими: изучить существующие процессы на проекте; понять, как запрошенный инструмент поможет решить поставленную задачу; адаптировать/оптимизировать существующие процессы для реализации поставленной задачи; построить CI/CD; разработка унифицированного инструмента для компании, с написанием сопроводительной документации, подготовкой презентации и внедрением. По мнению эксперта, не последнее место занимает задача «продать» новый инструментарий или подход командам, презентовать его, и в конце концов научить им пользоваться.
Илья отмечает, что ему приходится работать с IaaS и PaaS, развернутыми в частных и публичных облаках. В DevOps большинство задач так или иначе связаны с IaaS, причем наиболее популярна и актуальна сейчас экосистема Kubernetes.
Интересен опыт работы с публичными облаками крупных провайдеров: AWS, Azure, Google Cloud Platform. Python для специалиста DevOps по-прежнему «в топе», но все более актуальным становится язык программирования Go.
***
DevOps – сложная и многогранная методология. Профессию можно освоить самостоятельно, но если вы только начинаете свой путь в ней, обратите внимание на курс DevOps онлайн-университета GeekBrains.
В течении полутора лет студенты осваивают перечисленные героями статьи инструменты: Python, Docker, Kubernetes, Ansible, Terraform, CD/CI, AWS и Azure. Они изучают настройку серверов, облачные технологии и микросервисную архитектуру, платформу Azure, системы мониторинга на примере Prometheus+Grafana и многое другое. В возникающих проблемах студентам помогают разобраться опытные преподаватели и личный наставник.
Интересно, хочу попробовать