Кто такой DevOps инженер? Подробный разбор для рекрутеров
Постарались просто и понятно объяснить сложное и непонятное.
Привет! Меня зовут Настя Ширкина и у меня своя школа IT рекрутеров. Со всеми студентами делюсь любимым правилом охотника: "Если хочешь поймать оленя - думай как олень". Для хэдхантеров оно тоже актуально. Понимание своих кандидатов и сути их работы помогают нанимать более качественно. Поэтому и родилась идея интервью с разными IT-специалистами, которые честно и просто рассказывают про свою работу.
Ловите конспект интервью с DevOps-ом Андреем Грицуком.
Словарик
DevOps - одна из самых сложных, с точки зрения понимания, вакансий для рекрутера. Поэтому для начала делимся мини-словариком - он поможет не запутаться дальше.
Про жизненный цикл продукта написала аж отдельную статью в картинках. Обратите внимание на стадию внедрения. Она особенно важны в понимании роли DevOps-a.
Сервер. Думайте о нем как о мощном компьютере (системный блок), на котором “живёт” наше приложение. Для больших нагруженных приложений нужны большие компьютеры. Вот почему в некоторых компаниях есть целые комнаты, выделенные под это железо, - серверные.
Иногда нам не хочется заморачиваться с настройками серверов у себя или нам не выгодно покупать своё железо. Тогда компании арендуют часть чужого большого сервера и взаимодействуют с ним на расстоянии. Это уже облачные технологии.
Серверная часть приложения чаще всего состоит из набора сервисов, каждый из которых решает свою отдельную задачу. Определенный набор этих сервисов и взаимосвязи между ними - это инфраструктура.
Общее описание и место в царстве разработки
Кто или что такое девопс?
Это методология - её цель наладить коммуникацию между разными отделами: разработки, тестирование, поддержки. По сути DevOps-специалисты налаживают и автоматизируют внедрение продукта и дальнейшую его эксплуатацию (расширение, изменения в уже существующие части и т.д.).
Нужен ли на проекте отдельный девопс?
DevOps функциии могут брать на себя и разработчики. Но если команда большая или продукт уже разросся, то пора привлекать отдельного специалиста.
В идеальной вселенной лучше подключать девопса на этапе разработки архитектуры. Это помогает “подложить соломку”: спрогнозировать уязвимости, заложить масштабирование и более грамотно выстроить процесс деплоя.
Отличительные особенности
В чём разница между тобой и сисадмином?
Как говорилось выше, задача девопса наладить отношения между разработчиками и поддержкой и автоматизация всего и вся. Системный администратор это больше про железо, сети и так далее.
Можно обобщенно описать различия на примере выпечки коржей для торта.
Задача системного администратора подключить духовку в сеть, проверить, что есть напряжение, ну и “установить” наблюдение, чтобы в сети не пропало напряжение. Разработчик по определенным рецептам готовит эти коржи. Задача девопса определить: обойдёмся ли мы одной духовкой или нам нужно несколько, или как поместить побольше коржей, чтобы при этом все они равномерно запекались и не подгорали. А также, сам процесс доставки коржей в духовку и обратно на кухню, чтобы собрать эти коржи в торт.
Задачи
Какие ещё задачи на твоих плечах?
Автоматизация процесса сборки и поставки приложений на различные окружения (тестовые, продакшн), настройка окружения. В дальнейшем - поддержка продукта. Настройка централизованной сборки логов (отчетов об ошибках) приложений. А также настройка мониторинга - без этого ты не будешь спокойно спать.
Классификация
Есть ли какая-то специализация у девопсов?
Можно условно разделить по зонам ответственности:
- Build инженер
- Release инженер
- Devops
Или по технологиям, с которыми работают:
- Windows
- Linux
Переключиться между ними непросто. Поэтому если у вас на проекте линукс, то лучше искать линуксоида из коробки.
Также трудимся с разными облаками (Azure, AWS, Google-Cloud), вот между ними переход уже гораздо проще.
Инструменты
Что ещё из технологий используете?
Puppet, Chef, Ansible - это инструменты по управлению конфигурациями. Т.е. они помогают настраивать и выстраивать коммуникацию между большим количеством серверов. С ними можно выполнять действия на десятках серверов одновременно или, к примеру, разворачивать несколько приложений одним щелчком мыши.
Terraform - инструмент, который автоматизирует настройку инфраструктуры. Если упрощённо: тебе не надо ручками выбирать сервисы, строить между ними взаимодействие и т.д. Это довольно затратно по времени, особенно если часто приходится готовить инфраструктуру для новых приложений или фич. В тераформе мы может описать инфраструктуру кодом - и он автоматически создаст её сам.
Docker. Эта штука позволяет “упаковать” приложение в отдельный - контейнер. Контейнер - независимая часть реального или виртуального сервера. Чем-то похоже на отдельного пользователя на компе. Только эти пользователи могут работать одновременно и кроме вашего сервиса на них ничего не будет (ни косынки вам, ни пакета майкрософт). Т.о. докер позволяет вам легче развернуть ваше приложение в любой среде, сделать это изолировано (а значит и безопасно) от основной системы. Приложения между собой не конфликтуют: поломка в одном не повлечёт за собой косяки в соседнем.
Kubernetes. Когда количество сервисов, а соответственно и докер контейнеров растёт, нам нужно как-то ими управлять - для этого и создан kubernetes. Если по умному: это система оркестрации (координации) “упакованных” приложений для автоматизации их развёртывания, масштабирования и т.д.
А на каких языках скрипы пишешь?
Если мы говорим об автоматизации, то Python и Groovy,а также Bash(это оболочка linux). Груви используем для автоматизации сборки, тестирования и выкладки приложения. Выбор между питоном и башем зависит от цели: что-то проще сделать на одном, что-то на другом.
Общение с рекрутерами
Тут можно “поныть” про косячные моменты в диалогах с рекрутерами:)
Могут не с той вакансией постучаться или имя перепутать. Видно, что не все понимают суть вакансии)
Из последнего, что запомнилось, - лирический заход типа "лето постучалось в дверь, а я постучалась с вакансией". Не надо так :) Давайте по делу. И вакансии стихами - тоже не лучшая идея.
Гнездовья
DelEx Conference 2020 (тут можно партнериться)
DevOpsMinsk Community (тут следить за развитием сообщества и девопсами)
- devopsby (тут следить за смертью группы в фб)