Рассказать о DevOps-инженере в двух словах невозможно: кто-то говорит, что такого специалиста не существует, а кто-то убеждён, что это тот же сисадмин, но под другим углом. Не профессия, а загадка. Для большей ясности журнал Tproger опросил экспертов, которые развёрнуто ответили на распространённые вопросы об этой специальности.
1. Что такое DevOps?
DevOps — это не набор инструментов и платформ, это, скорее, концепция, набор практик и правил, позволяющий ликвидировать разрыв между разработчиками сервиса и сотрудниками, отвечающими за обслуживание и эксплуатацию приложения.
Руслан Косарим, руководитель отдела прикладных систем, группа компаний Angara
2. Зачем это нужно?
Участники команды работают сообща и приобретают целостное видение работы всей системы. Это способствует эффективному взаимодействию и, как следствие, улучшению качества продукта.
Стоит сразу обозначить, что, говоря о DevOps, мы имеем в виду не должность. Это не отдельная профессия, а методология и следование набору определённых практик и стратегий, направленных на то, чтобы в конечном счёте результат (реализованный в коде и выполняющий в продуктивной среде функционал) соответствовал ряду бизнес-требований. Бизнесу нужна высокая скорость разработки, стабильность в процессе эксплуатации, при внесении изменений и масштабировании, минимизация затрат, возможность избежать найма дополнительных специалистов.
Дмитрий Криков, технический директор NGENIX
3. Это перспективная отрасль?
Ещё бы. Дополнительные навыки и понимание всего процесса сделают вас востребованным сотрудником. Эта специальность появилась на рынке IT относительно недавно и почти сразу же стала одной из самых популярных и востребованных. Но стоит отметить, что многие работодатели, выставляя подобную вакансию, путают DevOps-специалиста с представителями других профессий или просто ищут 2 в 1. Как итог, спрос сейчас превышает предложение.
4. Хорошо, а кто такой DevOps-инженер?
Devops-инженер как человек с выделенной ролью — это администратор, область деятельности которого лежит немного в стороне по отношению к разработке продукта/продуктов. Он занимается настройкой инструментов и систем, которые позволяют более часто и качественно доносить фичи разработанных продуктов до клиентов. Devops-инженеры — это такие строители дорог, по которым бегут грузовики, нагруженные продуктами, которые создали другие инженеры. В большинстве случаев Devops-инженер — это роль, которую на себя может взять любой член команды. В крупных компаниях, где за счёт создания выделенной роли можно сэкономить, Devops-инженеры проектируют и поддерживают системы доставки изменений для многих команд, стандартизируя эти процессы.
Иван Романько, директор по разработке, компания Selectel
5. Какие проблемы он решает?
«Магия» DevOps приходит на помощь, когда на проекте есть проблемы со стабильностью, масштабированием, работой под нагрузкой или с выкладкой на продакшн, а также, например, если процесс выпуска продукта занимает слишком много времени.
Фарит Валиахметов, руководитель направлений SDET и DevOps SimbirSoft
6. В чём разница между DevOps-инженером и системным администратором?
Главное отличие сисадмина от DevOps-инженера, конечно же, не в инструментарии и не в знаниях. Я считаю, что это отличие в подходе к работе. У сисадмина есть определённый, неизменный список задач, которые он выполняет ежедневно. Возможно, ещё план по развитию или автоматизации инфраструктуры. У DevOps-инженера, как части команды, таких ограничений нет. Список задач может быть крайне диверсифицированным: вчера я писал код, сегодня тестирую приложение, завтра буду делать то, что будет актуально на тот момент для команды, например, разрабатывать новую фичу, траблшутить проблему с сетью в тестовой среде или настраивать CI/CD процесс.
Павел Попескул, старший инженер по автоматизации процесса разработки, тестирования и развёртывания ПО компании ICL Services
7. Какова его роль в команде?
Разработчик пишет код, тестировщик — тесты, системный администратор занимается эксплуатацией всего, а DevOps-инженер «дружит» между собой результаты их работы. Он делает волшебную кнопку, на которую кликает разработчик после написания очередного куска кода, и далее написанный код попадает в тестовую среду, проходит все стадии тестирования и уходит в прод. Главная задача DevOps-инженера — минимизировать взаимодействие между командами разработки и эксплуатации. В REG.RU часто DevOps-инженерами становятся бывшие системные администраторы, которым небезразличны боли разработчиков.
Александр Хакимов, технический директор хостинг-провайдера и регистратора доменов REG.RU
8. С какими инструментами работает этот специалист?
Из основных инструментов DevOps-инженера я бы отметил:
* Систему контейнеризации Docker.
* Оркестратор контейнеров Kubernetes как сервис, предоставляемый в облаке — для построения и автоматизации универсальных пайплайнов доставки и для управления приложениями.
* Платформу для организации полноценного DevOps-воркфлоу — GitLab.
* Jenkins — для реализации CI/CD-пайплайнов.
* Ansible — для управления инфраструктурой.
* Платформенные (PaaS) облачные сервисы: например, управляемые базы данных, Hadoop и Spark в облаке — для автоматизации задач управления инфраструктурой и упрощения реализации распространённых задач.
Павел Селиванов, ведущий DevOps-инженер Mail.ru Cloud Solutions
Учитывая широкую зону интересов, DevOps’у приходиться пользоваться множеством инструментов и постоянно пробовать для себя что-то новое:
* системы сборки, позволяющие создать и поддерживать процесс CI/CD (GitLab, Jenkins);
* сервис проверки исходного кода (SonarQube);
* хранение и передача артефакта (Nexus, Docker);
* сервисы мониторинга и оповещений (Prometheus + Grafana + AlertManager, Zabbix, Nagios);
* сервисы логирования (Grafana Loki, Kibana/Graylog + ElasticSearch).
Максим Ефремов, системный инженер компании «Рексофт»
9. Что входит в обязанности DevOps-инженера?
DevOps-инженер — специалист, обеспечивающий автоматизацию процесса разработки продукта. В это понятие входит широкий спектр задач:
* Подготовка среды разработки продукта.
* Подготовка и подключение инструментов анализа качества разработки, включая инструменты автоматизации тестирований.
* Подготовка среды тестирования.
* Подготовка и подключение инструментов доставки изменений из одной среды в другую (из среды разработки в среду тестирования, из среды тестирования в продуктивную среду).
* Настройка взаимосвязей и окружения между всеми инструментами разработки и контроля для обеспечения непрерывно работающей автоматизированной линии сборки (создания) программного продукта — конвейера.
* Мониторинг работоспособности всех сред и инструментов разработки (включая инструменты контроля качества разработки или передачи данных).
Александр Казённов, руководитель корпоративной практики ДКИС ALP Group
10. Куда можно устроиться, будучи таким специалистом?
В любую крупную компанию, которая занимается разработкой, внедрением и администрированием. Дефицит DevOps-инженеров наблюдается там, где разрабатывается большое количество сервисов в рамках B2C: это мобильные операторы, банки, интернет-провайдеры, etc. К потенциальным работодателям также относятся Google, Facebook, Amazon и прочие гиганты.
11. Что с порогом вхождения?
Если вы только начинаете свой путь в IT, будет нелегко, поскольку багаж необходимых знаний солидный. Гораздо проще перейти в DevOps, будучи разработчиком или системным администраторам, — в этом случае останется освоить примерно половину того, что требуется.
12. С чего начать, чтобы стать DevOps engineer?
Начните с полезных статей:
* Эффективный DevOps: 6 способов прокачать команду и себя
* Как IT-специалисту ввести культуру DevOps в своей компании
* Кто такой DevOps и как им стать: план обучения
Читать в СМИ