Кто такой DevOps Engineer. Обзор профессии от Олега Миколайченко

Продолжаем цикл материалов об ІТ-специальностях. Каждую описывает «типичный представитель» — опытный специалист и просто авторитетный коллега, тот самый человек, который знает все тайные уголки своей профессии. Мы надеемся, эти материалы помогут школьникам, студентам, переквалификантам, джуниорам и всем тем, кто заинтересован в выборе ІТ-специальности. Цикл не только поможет оценить перспективы, но и даст возможность лучше понять индустрию и особенности профессии изнутри. Обсуждайте и дополняйте материал в комментариях, чтобы сделать его еще полезней.

О профессии рассказывает Олег Миколайченко, SQUAD, Head of Infrastructure.

Оставить комментарий
Кто такой DevOps Engineer. Обзор профессии от Олега Миколайченко

Продолжаем цикл материалов об ІТ-специальностях. Каждую описывает «типичный представитель» — опытный специалист и просто авторитетный коллега, тот самый человек, который знает все тайные уголки своей профессии. Мы надеемся, эти материалы помогут школьникам, студентам, переквалификантам, джуниорам и всем тем, кто заинтересован в выборе ІТ-специальности. Цикл не только поможет оценить перспективы, но и даст возможность лучше понять индустрию и особенности профессии изнутри. Обсуждайте и дополняйте материал в комментариях, чтобы сделать его еще полезней.

О профессии рассказывает Олег Миколайченко, SQUAD, Head of Infrastructure.

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

Олег Миколайченко, SQUAD, Head of Infrastructure
DevOps Engineer — это именно та роль в разработке, границы которой бесконечно размыты, но в то же время  имеют осязаемые очертания. Когда говорят о DevOps, имеют в виду инфраструктуру для проектов (сервера, облачные решения, автоматизацию, балансировщики и т. п.), процессы сборки и деплоймента (CI/CD — это сюда, многочисленные решения Jenkins/CircleCI/TravisCI/etc.) и конечно огромную базу знаний о микросервисах, архитектурах, высокой нагрузке, и основных контейнерных платформах. На этом этапе плюс-минус выглядит на адекватную позицию, но если сюда добавить ответственность за мониторинг, централизованный сбор логов, метрики, графики, оповещения об инцидентах, on-call (вдруг, ночью что-то упало) и ключевую роль в разработке архитектур для сервисов (конечно, NALSD) — получается такой себе многорукий шайтан-переросток с кучей обязанностей и огромной зарплатой. А, чуть не забыл: если где-то в веб-сервисе или приложении есть проблема, и никто не знает откуда растут ноги и кто ее может решить — это тоже к DevOps-ам. Получается, DevOps — в дополнение к  коммуникатор-роутер-решатель-проблем. Давайте разберемся, как выглядит обычный рабочий день инженера из команды DevOps. 

 Как выглядит типичный день DevOps Engineer 

Не выдумывая абстрактных инженеров в вакууме, я возьму нескольких коллег из команды и покажу примерную нагрузку в течение дня:

  1. Дейли синк. Ответы на вопросы — что делал вчера, что получилось и не получилось, какие планы на сегодня. Обязательно указывает Jira тикеты в отчете, показывает постоянный прогресс. 
  2. Работа над своим приоритетом, например — кумулятивный дашборд для всех сервисов. Описывает графики в grafanalib, смотрит результаты в Grafana. 
  3. Взаимодействие с разработчиками — попросили поправить TTL для AWS SQS, зашел в репозиторий с Infrastructure as a Code, добавил строку в Terraform, применил изменения. 
  4. Вернулся к прошлой долгосрочной задаче над реализацией Jenkins в облаке, автоматизировал пайплайны, перенес репозиторий. 
  5. Пообедал. Шутка — уже, конечно, вечер. Книги, курсы, самообучение. Документация. 
  6. Подключился на несколько митингов, поправил IAM роль с доступами, довольный закрыл ноут, и ближе к вечеру получил алерт с мониторинг системы — упал сервис. 
  7. Починил сервис. 

Что нужно знать DevOps инженеру 

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

Первое — и самое важное, это soft skills и коммуникация. Важно уметь общаться, находить общий язык, решать проблемы, иначе — роадмап не работает. 

Второе — для Junior и для Mega Senior набор технологий и арсенал инструментов будет одинаковым. Секрет в том, что глубина знаний может быть разной. Если зеленый инженер может поверхностно знать о процессах и потоках Linux, то опытный зубр девопса будет хорошо знать и понимать внутреннюю кухню: 

  • системные вызовы для реализации процессов и потоков 
  • статусы процессов и их значения            
  • за секунду увидит типичную проблему, и точно ударит молотком, решив ее за 10 минут     
  • знает как раздуть эту работу на 3 дня
  • напишет fork/exec, запустит strace, подключится bcc и еще куча всего-всего. 

Третье — нужно выбрать свой стек, и свой набор технологий. Моя рекомендация — AWS, Terraform, Kubernetes, Prometheus Stack, EFK. Звучит просто, на деле — адище из кучи информации, большой порог вхождения и обучения не менее года. Если распыляться и добавить еще фишечек — есть вероятность закончить обучение в тот момент, когда технология устарела и больше никому не нужна. 

Где учиться DevOps методологии 

Идеально — сразу уметь, если так не получается — желательно загрузить себя теорией из книг, и реализацией на любом pet-project. Книжки для изучения я дам в отдельном разделе, а тут сделаю акцент на задании, которое поможет понять, получится ли пройти собеседование на позицию DevOps Engineer: Напишите приложение на Python или Go, реализуйте 3 эндпоинта — /get, /put, /reset с соответствующей логикой, суть приложения — считать запросы. Запакуйте его в Docker, и запустите в AWS EKS в количестве 100 реплик с автоскейлингом. При изменении исходного кода, Jenkins должен пересобирать контейнер, и деплоить новую версию в кластер. Кластер, конечно же, описан в Infrastructure as a Code. Нужно настроить доставку логов в отдельный EFK, добавить метрики в приложение (например, prometheus-exporter) и настроить оповещения в мессенджер. Убиваете приложение — приходит оповещение.

Если вы это сделали — супер, можно пробовать проходить собеседования, и я даю гарантию что опыт решения подобной задачи будет очень кстати. Для улучшения кода и решения можно показать свои наработки ребятам из сообщества ukrops.club — всегда очень ценные подарки, советы, векторы развития. Это, к слову, самое активное и домашнее DevOps комьюнити. Курсы можно смотреть на Udemy, Pluralsight, особенно — на acloud.guru. Также очень советую educative.io — Learn DevOps for Developers, и обязательно — самообучение, stackowerflow, и все книжки по тебе с приставкой «Deep Dive».  

Если вы — уже опытный  зубр DevOps — в таком случае стоит подписаться на CNCF, Hashicorp, Monitorama конференции и ждать апдейтов. Если вы — DevOps Manager — в таком случае, конференция DevOps Days именно для вас. 

Что почитать — книги 

Давайте пройдемся по книгам, которые must have, и в конце я добавлю немного личных супер полезных находок. Поехали:

  1. Continuous Delivery: Reliable Software Releases — самая ценная и важная книга для понимания конвейера разработки, непрерывной доставки, стратегий ролаута и прочих базовых понятий. Очень старая (2011), но актуальная, и такой и останется. Классика. Читать по диагонали — только для понимания основных концепций. 
  2. SRE Books — набор из 3 книг (многие думают, что достаточно одной — нет), с реальными жизненными примерами решения проблем, реализацией систем, архитектур и нескольких инженерных подходах. Из книг нужно вынести практики форирования постмортемов, NALSD, SLO/SLI/SLA, подходы для resilience/recovery/disaster и т. д. Читать и перечитывать — обязательно. 
  3. Cloud Native DevOps with Kubernetes — тут все понятно, это техничка о Kubernetes. Читать вдумчиво, гуглить непонятные термины или выражения, поставить на стол как быстрый справочник в решении проблем. 
  4. Infrastructure as Code: Dynamic Systems for the Cloud Age — тоже техничка, только тут о Terraform — важно, нужно, полезно. 

Что почитать — Telegram каналы 

Лучшие каналы о DevOps в Telegram — сам читаю, ценю и рекомендую обязательно подписаться:  

  • Telegram-канал «ДевОпс Инженер» — я веду канал с 2018 года, 5538 подписчиков
  • Telegram-канал «CatOps» — основатель Юрий Рочняк, соавтор — Максим Власов 4539 подписчиков
  • Telegram-канал «Дайджест Украинских Девопсов» — ведет Всеволод Поляков, 2895 подписчиков
  • Telegram-канал «DevOps простыми словами» — канал, где Антон Кошевой из MacPaw делится полезными наработками, 837 подписчиков 

Зарплаты 

Сколько может зарабатывать DevOps инженер в Украине? Совсем недавно (начало 2020) хорошие инженеры зарабатывали по $5000, а на данный момент — ситуация поменялась, и в среднем, сильный и опытный Senior может попробовать попасть на позицию с оплатой в $6-7k. Среднюю температуру по зарплатам можно понять на DOU.UA: перцентили явно занижены, и в опросах принимают участие не всегда самые высокооплачиваемые инженеры. Более того, участников опроса не сильно и много, поэтому — вопросы к репрезентативности.  Статистика, на данный момент, выглядит вот так: 

Мое видение последних тенденций рынка нашей специализации выглядит так: 

  • Junior зарплаты не сдвинулись: $500 без опыта, $1.5k — за джуниора, который может самостоятельно работать. Вакансий больше — найти работу проще. 
  • Middle подпрыгнули с $2.5k/month до $3.5k — $4.5k 
  • Senior выросли с $5k до $6k 
  • Job hoppers/неэтичные подходы — могут пробовать залетать на $7k

Важный момент — сначала усилия, достижения и результат, потом — деньги. Наоборот — не работает. 

Карьера для DevOps инженера 

Сильно размытые рамки зон ответственности позволяют выбрать свою любимую специализацию, и стать настоящим экспертом в очень узкой области: процессы разработки, мониторинг, контейнеры, etc. 

У моих знакомых есть показательные случаи по примеру:

  • Senior DevOps -> DevOps Team Lead -> Director of Engineering 
  • Senior DevOps -> Solutions Architect -> VP of Engineering Senior DevOps -> CEO

У каждого из них своя история, но это точно всегда истории о «values» — когда инженеры показывают сверхрезультаты, и вырастают из рамок своей ответственности. Резюмируя, делаешь больше — больше получаешь, очень простая истина. Например, у меня получилось дорасти до Head of Infrastructure. Еще есть суперский вариант перейти в SRE, если есть особая, сильная любовь к программированию. SRE — новая огромная тема, которую я затрону в следующей статье. 

Мой совет — пробовать делать акцент не на технологиях (конечно, я понимаю, это интересно), а сместить фокус на ценность для компании или команды, которую удалось принести. Отлично работают подобные подходы:

  1. Мониторинг и графики (часто вызывают вау-эффект и приступы кидания денег в DevOps команду)
  2. Ускорения любых процессов (сборки, деплоя, масштабирования, etc)
  3. Контроль ресурсов и оптимизация расходов (сэкономленное == заработанное)
  4. Открытые и прозрачные постмортемы (у всех бывают проблемы, важно — lessons learned)
  5. Работа над брендом компании (узнаваемость дает поле для роста, и более простой хайринг в компанию)

Главное — идти, и у вас все получится!

Нідерландський IT-шник закохався та переїхав до України.
До села Херсонської області, щоб працювати в EPAM та сподіватися тут на цифровізацію держструктур.

Хочете повідомити важливу новину? Пишіть у Telegram-bot.

А також підписуйтесь на наш Telegram-канал — dev.ua | IT України.

Обсуждение

Комментариев пока нет.