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

программирование для 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-инженера со знаниями одновременно по техническим вопросам и по процессам, нет ничего невозможного.

Развивайтесь, узнавайте новое и делайте процесс доставки приложений ещё лучше!

Добавить комментарий

Спасибо, что поделились