«DevOops?», или Что вам не говорят о трендовой ИТ-профессии
Вместе с экспертом разбираемся в мифах профессии DevOps и в том, какие компетенции требуются, чтобы стать DevOps-инженером.
2К открытий2К показов
Илья Ильичев
IT Manager компании Linxdatacenter
Специальность DevOps-инженера сегодня смело можно назвать одним из самых модных кадровых трендов в ИТ наряду с разработкой на Python или такой областью, как Data Science.
Причина этой популярности понятна: общая скорость цифровизации экономики и общества влияет на рост числа цифровых проектов, а они, в свою очередь, всегда требуют участия DevOps-специалиста.
Любой программный код нуждается в инфраструктуре для своего исполнения, следовательно, серверы с тестовой и продуктивной средой для запуска решений для программистов кто-то должен настраивать и поддерживать в рабочем состоянии. DevOps-инженеры сегодня нарасхват, зарабатывают неплохие деньги и являются вожделенной карьерной ступенькой многих ИТ-специалистов.
Что в этом утверждении правда, а что миф? И какие компетенции нужны для того, чтобы стать DevOps-инженером?
Джентльменский набор
Начнём с минимальных требований в плане опыта и компетенций для человека, который хочет овладеть специальностью в ближайшем будущем.
Базовое требование: для хорошего старта нужен серьёзный опыт в работе с ИТ-инфраструктурой. Лучшие шансы у разностороннего специалиста с очень глубоким знанием Unix и родственных систем.
Далее, в требования к современным DevOps-инженерам входит обязательное знание одного-двух языков программирования на уровне, позволяющем писать скрипты для автоматизации процессов, запускать тесты и так далее – например Bash, Python, Go.
Поскольку практически вся работа сегодня строится на облачных решениях, необходимо хорошо разбираться в настройке облачных платформ: AWS, Azure, Google Cloud, VMware vDirector и других. Если у компании свои дата-центры или серверы, вам необходимо тесно работать с серверным «железом», знать технологии виртуализации, уметь настраивать сеть или разворачивать свое приватное облако.
Тут без знаний KVM, Xen, Open Stack, Proxmox, Vagrant, Apache CloudStack, VMware, MS Hyper-V, Nutanix не обойтись.
Все данные где-то приземляются, разнообразие файловых систем и систем хранения также очень велико. В зависимости от задач и потребностей вы выберете себе или файловую систему хранения, или блочную, или объектную: NFS, samba, s3, zfs, iscsi, FC сети, ceph, gluster и другие vSAN.
Для сурового enterprise применяются системы посерьёзней, как правило это закрытые решения с обязательной поддержкой и гарантией от таких вендоров как Dell EMC, NetApp QNAP, HPE, IBM, 3par, Oracle, Lenovo, Fujitsu, Hitachi. Это лишь неполный список технологий, с которыми вы должны быть знакомы, а некоторые знать и использовать нужно будет на все 100%.
Нюанс здесь в том, что каждая компания будет использовать свой технологический стек, куда, помимо всего вышеупомянутого, будут также входить контейнеры – Kubernetes, Docker, OpenShift, системы управления конфигурациями (SCM) – Ansible или Puppet, и другие платформы и решения для CI/DI (Continuous Integration and Continuous Delivery – процесс непрерывной интеграции и непрерывного развертывания ПО).
Наконец, требуется умение разбираться и настраивать элементы legacy-инфраструктуры компании. Некоторые компании ищут DevOps с хорошим уровнем знаний по сетевым технологиям, или хотя бы не ниже Cisco CCNA.
Обычно такой набор нужен достаточно крупным компаниям, с большим серверным парком и серьёзной ИТ-инфраструктурой для разработки собственного софта. В таких организациях задача DevOps – помогать программистам и продукт-менеджерам развивать свой ИТ-продукт и автоматизировать всё, что только можно и нельзя.
То есть здесь речь идёт не просто об ИТ-поддержке, а о целевом взаимодействии с командой разработки, где DevOps – это эксперт, решающий вопросы на стыке взаимодействия программистов-разработчиков и отдела эксплуатации.
Я в DevOps’ы бы пошёл
Всё ещё хочется в DevOps? Тогда продолжим.
Немного о требованиях к знанию языков программирования.
Конечно, в случае DevOps речь не идёт о том, чтобы DevOps-инженер программировал на двух-трёх языках, как продвинутый девелопер или team lead.
Вполне хватит владения на уровне «решить задачу автоматизации ИТ-администратора» или проанализировать ошибку «компиляции» кода. К примеру, создать конфиг на Ansible, вызвать какой-нибудь самописный скрипт и тому подобное.
Такие навыки нельзя сравнивать с умением спроектировать и написать код решения с нуля, думаю, можно оценивать требования в этом направлении на уровне junior developer.
Говоря о конкретных языках, можно отметить востребованность Python, Go, Ruby, Scala и C, а также языки сценариев командной оболочки – bash для Linux и PowerShell для Windows.
Более важным для работы будет доскональное знание и понимание принципов устройства и функционирования ИТ-инфраструктуры и технологического стека, на котором работает ваше решение. На мой взгляд, именно эта особенность профессии определяет, почему она будет оставаться практически недосягаемой при старте «с нуля» в обозримом будущем.
Настоящий DevOps сегодня – это погружение в условия каждодневного использования навыков на практике, решение конкретных практических задач, постоянное самообразование в новых предметных областях.
Уместить это многообразие в какой-то один курс, пусть даже на замечательной образовательной платформе с хорошей репутацией – нереально. Опыт и необходимые компетенции не приходят быстро и сразу, для этого нужно приложить много трудолюбия, времени и способностей, а также обладать огромным желанием развиваться в этом направлении.
Даже если вы что-то очень хорошо освоили, то нельзя на этом останавливаться. Скорость изменений в ИТ очень высока, в основном из-за появления массы новых протоколов, API, языков, ИТ-платформ и инструментов для разработки и запуска кода в облаках.
Этот «снежный ком» требуемых компетенций приводит к тому, что способность находить нужное решение на уровне зоны ответственности DevOps приходит только при условии постоянной работы на реальных проектах и задачах.
Скрипач не нужен
То, что мы видим в плане всплеска популярности DevOps как доступной специальности, «профессии будущего», которой непременно нужно научиться всем и каждому – маркетинговое лукавство. Все пытаются проехаться на новом тренде.
Нюансы, о которых вам обычно не рассказывают по поводу перспектив работы по специальности, помимо вышесказанного, заключаются ещё и в ограниченном числе вакансий.
DevOps-специалистов в каждую компанию, которая серьёзно развивает какой-то ИТ-продукт, нужно 1-2 человека.
Правда, по причине высочайших требований к навыкам и компетенциям, это очень дорогие специалисты – их зарплата ближе к старшим программистам, а в некоторых компаниях и к ИТ-директорам. Но им и платят за то, чтобы они в одиночку решали сложнейшие задачи и несли ответственность за это решение. Как правило, даже крупные компании предпочитают не нанимать большое количество таких специалистов.
Нужно учитывать и всеобщую автоматизацию разработки в ИТ, различные low code/no code платформы для запуска прототипов и MVP – DevOps-инженер автоматизирует и упрощает всё, что можно, и подмастерья для этого ему не нужны.
Прежде всего под автоматизацию подпадают рутинные программистские задачи. Развёртывание кода, автоматическая компиляция, обкатка на тестовой площадке и автоматический запуск тестов, по итогам которого либо происходит передача кода обратно на исправление, либо перевод в продукт – в релиз на сайт или в приложение.
Это всё сегодня автоматизируемо, а у многих автоматизировано уже полностью.
Главная задача на перспективу – максимально ускорить предварительно настроенный и чётко понимаемый процесс обновления релизов (CI/DI).
Противотренд – слабый
Некоторое повышение спроса на DevOps-инженеров можно ожидать в связи с общими растущими темпами цифровизации, когда потенциал специальности просматривается в самом росте зависимости всех и вся от ИТ. Соответственно, аналогично возрастает зависимость от автоматизации с помощью разнообразных ИТ-продуктов и решений.
Однако большинство потребностей таких точек роста цифровизации уже сегодня покрываются конструкторами приложений для бизнеса из готовых блоков (наподобие конструкторов сайтов). Также, многие компании разрабатывают и запускают всё необходимое сопровождение сами, в рамках ИТ-отдела.
С точки зрения развития тренда, сейчас, наверное, HR-предложение выровнялось. Да, постоянно ищутся специалисты, но этот спрос скорее будет удовлетворяться за счёт органического выращивания кадров из практикующих специалистов в компаниях, а не закрываться выпускниками курсов.
Инфраструктура как код: ЦОДы и DevOps
Некоторые компании развертывают часть или все свои ИТ-систем на open source решениях, и, скорее всего, они предпочтут разместить свое оборудование в ЦОДе.
Там им понадобится разворачивать и настраивать все компоненты вручную, нередко этими руками будут (как минимум на стартовом этапе) специалисты дата-центра.
Если у компании есть свой дата-центр или несколько арендованных стоек в коммерческом ЦОДе, то как правило используются виртуальные машины и контейнеры, базы данных и так далее. Одно приложение на голом железе уже почти никто не развёртывает.
Можно это автоматизировать в Puppet/ Ansible/ Chef/ Vagrant, а управлять этой автоматизацией посредством программного кода в этих системах.
Постепенное освоение компетенций профессии возможно через работу с парадигмой «инфраструктура как код» (Infrastructure as code, IaC). Не за горами повсеместное внедрение SDN (программно-определяемые сети) и SDDC (программно-определяемый ЦОД)
В этом аспекте DevOps – довольно актуальная и стремительно развивающаяся область, её используют всё больше компаний. Это один из сценариев того самого практического погружения в реалии DevOps в каждодневной работе, которое является ключевым требованием к росту в профессии в целом, реализуемое в формате IaC.
Однако этот сценарий больше подходит крупному бизнесу с сильной ИТ-составляющей или базовым ИТ-продуктом в качестве основного бизнеса, где количество DevOps-вакансий строго ограничено.
2К открытий2К показов