«Чтобы DevOps-у чего-то добиться, нужна проактивная позиция, а не просто плыть по течению»

Мы продолжаем цикл публикаций про ИТ-профессии. В этот раз мы поговорили с Кириллом, руководителем группы практики DevOps в IBS. Он рассказал об особенностях профессии, образовании и том, почему «DevOps-ом невозможно прийти с улицы».

DevOps (сокращение от Development Operations) — это набор практик для повышения эффективности процессов разработки и эксплуатации ПО. Это меньше имеет отношение к ИТ-профессии, а больше про методологию или даже культуру. Во многом она определяет взаимодействие между командой разработки и командой эксплуатации.

Чем занимается DevOps

DevOps — тайна за семью печатями. В каждой компании к этой роли относятся по-своему. Можешь рассказать, как ты ее видишь и что за ней стоит?

Исторически всегда было разделение на программистов и системных администраторов. Программисты что-то пишут, сисадмины как-то пытаются это администрировать. Часто конечный продукт оказывался сложным для администрирования и промышленной эксплуатации, возникали разногласия, в ходе которых обе стороны перекладывали друг на друга ответственность: «Проблема не на нашей стороне». В итоге ломался весь конвейер разработки.

Для решения рассогласованности, повышения эффективности процессов разработки и эксплуатации был выработан набор практик DevOps. Одна из практик — IaC (Infrastructure-as-Code — инфраструктура как код).

Допустим, у нас был сервер. Его ручками настроили, и он работает. Добавили второй, настроили, и он тоже, может быть, работает. Но если представить тысячу серверов, то начинаются проблемы. Поэтому к инфраструктуре начали относиться как к программному продукту: ее стали описывать в коде, тестировать. Появилась возможность тиражировать описанную инфраструктуру, осуществлять правку парой коммитов. И таких практик, как IaC в DevOps, — масса.

Суть DevOps сводится к знанию практик и умению применять большое количество инструментов. Приходится код писать и администрировать.

Роль DevOps в компаниях молодая, ей около 10 лет. Почему она появилась именно в это время?

Потому что бизнес меняется. Раньше можно было выпускать релиз раз в квартал — писать его тихонечко, тестировать, выкатывать. Сейчас жизнь стала гораздо быстрее. Многое ушло в веб, и с развитием бизнеса появились большие потребности в быстрых решениях, фичах, MVP (minimal viable product — минимально жизнеспособный продукт). Это похоже на бесконечную акцию в магазинах: мы предоставляем клиенту маленькую ценность, он видит, что наш продукт развивается, и не уходит от нас к конкурентам.

При этом конкуренция возросла. Из-за этого появилась потребность в специалистах, которые смогут организовать бесконечный процесс — конвейер разработки. Он должен быть автоматическим, не требовать ручных вмешательств. А также мы должны описывать инфраструктуру в коде для возможности быстро перенести наш продукт на другие сервера и проактивно мониторить, предвосхищая аварийные ситуации. Поэтому и появился DevOps.

То есть DevOps — это человек, который оптимизирует процесс разработки и делает его максимально простым и удобным?

Да. Программисты пишут только код, они не занимаются настройкой окружения, они продумывают архитектуру приложения на уровне кода. Часто они не задумываются о том, как мы будем доставлять и обновлять код, как будут работать хранилища данных, будем ли мы собирать метрики, логи, агрегировать все это, мониторить и т. д.

Нам приходится думать обо всем: как мы будем это доставлять, обновлять, мониторить, восстанавливать, если упало, и удобно ли это. Часто мы говорим программистам: «Нет, ребята, давайте так делать не будем, есть определенные риски с дальнейшим конфигурированием» или «Если у нас возрастет количество сервисов, то необходим единый стандарт конфигурирования, иначе возможны ошибки». Ну, и никто не отменял хардкод — это бесконечная война. DevOps — это человек-оркестр.

Как стать DevOps-ом. Особенности профессии

Можно ли стать DevOps-ом, кроме как вырасти из системного администратора или из разработчика?

Нет, абсолютно. Если человек никак не связан с разработкой, это очень сложно. Постоянно придется рассказывать, почему все так, а не иначе, потребуется много времени. А время — деньги. Чем лучше работает наш конвейер, тем дешевле и эффективнее наша разработка.

Сама работа DevOps-а тесно связана с программированием. Нужны Python, Golang, Groovy для системы сборки Jenkins. Требуются и декларативные вещи: это Ansible — описание инфраструктуры. Нужно много всего.

Хорошо, спрошу по-другому. Откуда проще приходить — из разработки или из системного администрирования?

Скорее из системного администрирования. Я и сам так пришел в профессию. Сначала работал в техподдержке, затем стал сисадмином. По сути, DevOps — это переименованный системный администратор. Просто часто они очень ленивые и ничего не хотят делать. Есть же шутливый стереотип о бородатом сисадмине, который пьет пиво и злится на всех, кто просит что-то сделать.

Но если человек заинтересован в своем росте, если изучает и пытается применять все инструменты, практики и подходы, он может вырасти до DevOps-a. Чтобы чего-то добиться, нужна проактивная позиция, а не просто плыть по течению.

Разработчики всегда говорят, что написание кода — творческий процесс. Насколько деятельность DevOps-а творческая?

В любой инженерной работе есть определенная доля творчества, потому что «каждая метла метет по-своему». В DevOps, как и в программировании, необходимо предусмотреть множество «если», сделать это красиво и оптимально. Работа творческая, но часто приходится искать оптимальные решения и перелопачивать много информации, тратить много времени. Тут уже не до творчества.

Можешь назвать качества, которыми должен обладать хороший DevOps?

Обязательно проактивность. Если человек не заинтересован в обучении, а настроен плыть по течению, сразу нет.

Умение видеть причинно-следственные связи и выстраивать сложные логические цепочки. Программист держит в голове только свою часть системы, а DevOps — зачастую все, включая информацию о серверах.

И наконец, постоянное недоверие к разработчикам. То, что они говорят, часто надо перепроверять.

Можешь назвать преимущества своей профессии?

У меня есть возможность щупать новые технологии. Зачастую программисты используют один и тот же фреймворк и язык программирования. А у меня полный зоопарк, я могу играть с чем угодно. Взять те же хранилища данных — у меня большая свобода выбора среди того разнообразия, которое существует на данный момент.

Возможность предлагать оптимальные решения, у людей устоялся стек, о многих новых продуктах они не знают, не знают, что существует новая фича, софт, который позволит сделать определенные вещи значительно проще и быстрее. Не обязательно известное решение, но — лучшее.

IBS. Образование

Чем практика DevOps отличается в разных компаниях?

Тут, скорее, различия в заказчиках. И есть определенные сложности, связанные с выбором технологии. Где-то нельзя использовать облака, определенные инструменты, операционные системы, могут быть ограничения. Но в enterprise они есть всегда и с ними нужно жить.

С точки зрения работы: сборки и доставки кода, написание автоматизации — ничего не меняется, везде один и тот же конвейер. Могут меняться люди, технологии, но сам процесс разработки не меняется — код, его сборка, тестирование, доставка. Бесконечная петля.

Без каких знаний DevOps-у не обойтись?

Я убежден, что образование в России немного недотягивает в отношении свободы. У нас фундаментальный подход — учи что сказали. На Западе студент сам волен выбирать, какие предметы будет изучать. Естественно, есть и обязательные предметы для получения диплома, но большую часть предметов студент волен выбирать сам.

По сравнению с этой системой мы — в кандалах. Человек пришел учиться на программиста, а у него в расписании — философия и офисные технологии. Но такой студент уже знает, как работает компьютер. Его не надо учить, как работать в Word. Да, есть дисциплины, без которых не обойтись в системном программировании, но это не значит, что они нужны для веб-разработчика. Сомневаюсь, что в наших вузах можно почерпнуть что-то для хорошего старта в карьере. Самообразование, на мой взгляд, пока полезнее.

Ты упомянул самообразование. Как ты повышаешь свою квалификацию?

Моя работа — это мое хобби. В компьютерные игры я не играю, другими активностями не занимаюсь. Увлечен реализацией информационной платформы на базе Kubernetes. Она нужна для максимально быстрого старта процесса разработки. Это своего рода конструктор, который позволит приступить к процессу разработки без ожидания настройки требуемых интеграционных компонент, настройки сборки и доставки кода.

Обучаться — это пробовать что-то новое. Читать книги бесполезно, потому что пока не начнешь это щупать, толку мало. Все равно что читать про Эрмитаж. Посмотрел картинки — да, красиво. Но в нем надо побывать и самому все прочувствовать.

Ты посещаешь какие-нибудь профессиональные мероприятия, конференции, форумы?

Нет. Иногда смотрю в записи, но в них много воды про «успешный успех». Какие мы классные, как мы кнопку нажали и у нас все стало хорошо. Такого не бывает в жизни. Люди не рассказывают о своих проблемах, о том, как они превозмогали боль в достижении результата. Тратить на это несколько дней я не вижу смысла, проще посмотреть в записи те моменты, что интересны, и применить на практике.

Есть ли тогда необходимость в профессиональных сертификатах?

Да. Это другое. Бизнесу нужно понимать, что перед ним человек, который обладает требуемой квалификацией. Сертификат не только показывает, кто что умеет, — он подтверждает компетенцию. Это определенная гарантия, что перед вами специалист, а не дурачок.

В резюме пишут все что угодно. В сертификации такое не прокатит. Кроме того, если человек получил сертификат, значит, у него есть знания в данной области, он потратил на это свое время, деньги.

Можешь посоветовать что-нибудь тем, кто хочет стать DevOps-ом?

Нужно начать применять практики DevOps. Пытаться автоматизировать все, что есть. Посмотреть, как выглядят процессы разработки в крупных компаниях. DevOps-ом невозможно прийти с улицы. Надо устроиться, например, тестировщиком — у них порог вхождения достаточно низкий. Так человек познакомится с процессом разработки, начнет понимать, как работает этот конвейер. А дальше можно двигаться или в автоматизированное тестирование, или идти в DevOps-ы. Здесь нужно знать операционные системы, изучать многие инструменты. Зачастую тестировщики, которые более или менее продвинуты, все эти инструменты тоже щупают.

0
4 комментария
Evgeniy Berendyaev
DevOps — тайна за семью печатями

Я уж не знаю, сколько времени должно пройти, сколько тысяч статей и докладов выйти, чтобы девопс перестал быть тайной за семью печатями.
Фраза же "девопс это переименованный системный администратор" звучит как "бмв это переименованный велосипед", всё же различий у этих двух ролей более чем достаточно, чтобы выйти за рамки всего лишь нового наименования.

Ответить
Развернуть ветку
IBS
Автор

Пожалуй, это и правда неточность - но ниже проясняемая:
"Но если человек заинтересован в своем росте, если изучает и пытается применять все инструменты, практики и подходы, он может вырасти до DevOps-a"

Ответить
Развернуть ветку
Sergei Timofeyev

Сколько клише в одной статье и ничего толком по теме. Из QA в DevOps... это реально разные сферы. 

Ответить
Развернуть ветку
IBS
Автор

Ну, там же не написано, что QA и DevOps это одно и тоже. Просто порог вхождения в QA достаточно низок, чтобы значительно быстрее погрузиться в it-сферу и получить возможность выбрать свой путь развития дальше - в том числе и в DevOps, например.

Ответить
Развернуть ветку
1 комментарий
Раскрывать всегда