Насколько DevOps-инженеру нужно знать программирование?

Давайте пойдём необычным путём и раскроем карты с самого начала. Чтобы быть хорошим DevOps-инженером, уметь писать код необязательно. Но это умение не будет лишним: оно откроет новые возможности, поможет лучше понимать разработчиков и говорить с ними на одном языке.
Как обойтись без кода?
Начнём с определения, что такое DevOps. На эту тему написано много книг и публикаций и все они сходятся в этом:
DevOps — это набор практик, инструментов и концепций, цель которых решить проблему изолированности процессов и быстрее доставлять ценность продукта на протяжении всего жизненного цикла приложения.
Это определение не говорит о конкретных действиях DevOps-инженера, из-за чего появляется много вопросов. Если жизненный цикл очень объёмный и сложный, с ним предстоит работать полностью или только с каким-то этапом? Что такое ценность и как её определить? А может эта ценность субъективна? Какая оптимальная скорость доставки?
Из-за этой неопределённости уметь писать код необязательно. Инженеры и работодатели интерпретируют этот момент по-своему.
Общее описание обязанностей DevOps:
- работа с провайдером публичного облака
- внедрение процессов CI/CD
- исследование проблем в размещённых средах
- работа над инфраструктурой, часто устаревшей
- обеспечение оптимального потребления облачных ресурсов
- реализация мониторинга и оповещений для размещённой инфраструктуры
- контроль расходов на инфраструктуру
Все эти пункты можно выполнять без знания программирования. С облачным провайдером можно работать через интерфейс пользователя. Процессы CI/CD можно реализовать с помощью визуальных редакторов или так называемых What you see is what you get. С древней инфраструктурой — голыми руками, так как тут больше ничего не поможет. А за расходами на инфраструктуру можно следить в облачных провайдерах через панель управления расходами. Это всё экспортируется в csv файл, который можно форматировать в лист Excel и сделать диаграммы.
Что даст знание кода?
Сразу уточним, что говоря об инженере DevOps, речь идёт не только о написании кода. Это ещё и про глубину его понимания, которая поможет с разработкой жизненного цикла доставки. Чем глубже ваши знания в области программирования, тем более высокоэффективным DevOps-инженером вы становитесь.
Скрипты развития событий:
I уровень: можете написать несколько скриптов
На этом уровне знаний вы умеете писать код по типу “запустите это, и выполнятся x, y и z”. Это не самый красивый код, может даже не очень эффективный, но свою функцию он выполняет. Скорее всего, вы можете работать только на одном языке, в зависимости от типа среды, в котором ваши скрипты работают. Например, Bash или PowerShell.
Пусть ваши знания очень поверхностны, они всё равно важны. Вы можете автоматизировать процесс, чтобы не делать вручную то, о чём мы писали выше. Это ещё и вопрос удобства: скорее всего вам будет удобнее работать с решениями, ориентированными на код. Например, с конвейерами CI/CD в виде кода. Вы сможете выполнять свою работу с гораздо большей повторяемостью.
II уровень: есть опыт разработки
Ваша эффективность и качество кода стали выше. Написанная вами автоматизация CD пайплайна более надёжна и работает так, как задумывалось. Вы лучше знаете стеки приложений, потому можете сами устранять неполадки или сообщать об архитектурных решениях. Ещё вы можете внедрять разработку в свои повседневные рабочие процессы.
Но самое крутое на этом уровне то, что вы начнёте понимать боли команды разработчиков, с которой работаете. Или определять области для улучшения компонентов жизненного цикла доставки приложений.
III уровень: получаете кайф от разработки
Вы интересуетесь программированием, занимаетесь разработкой не только для работы, но и для личных проектов. Вы можете быть не лучшим разработчиком в мире, но хотите участвовать в этом процессе. Все функции DevOps, указанные в начале, вы можете делать полностью с помощью кода.
Вы будете понимать не только инфраструктуру, но и само приложение, его составляющие и хотя бы один из языков, на котором оно разрабатывается. В таком случае вы сможете говорить с разработчиками на одном языке. Вы будете объяснять всё на понятных примерах, доносить требования к архитектуре и мониторингу или сами диагностировать проблему. Это поможет повысить взаимодействие разработчиков и администраторов инфраструктур и приведёт к лучшим результатам. Ведь все будут понимать какой процесс и для чего нужен.
Итог: You Win!
Вам не нужны знания программирования, чтобы попасть в DevOps. Но от них вы можете только выиграть: чтобы развиваться в роли и становиться эффективнее, нужно учиться понимать и писать код. Чем лучше ваши навыки программирования, тем шире возможности. Для DevOps-инженера со знаниями одновременно по техническим вопросам и по процессам, нет ничего невозможного.
Развивайтесь, узнавайте новое и делайте процесс доставки приложений ещё лучше!