Что такое DevOps, DevOps-культура и как стать DevOps-разработчиком нам рассказал Андрей Белов — ведущий инженер по сопровождению ПО в EPAM.
Опиши свой обычный рабочий день
У DevOps-инженера две основные задачи: сопровождение команды разработчиков и автоматизация разработки. Первая задача часто накладывается на уже запланированные активности и может затянуться на несколько часов или даже дней. Это сильно влияет на работу по автоматизации. Чтобы приводить инфраструктуру к единому знаменателю, приходится общаться с разными командами. Поэтому в течение дня много рабочих встреч и звонков. И нужно часто переключаться между задачами, менять контекст.
Что такое DevOps?
DevOps — это и набор практик, и методология взаимодействия специалистов. DevOps — это комплексная область. И она не только про автоматизацию, развёртывание окружений и обеспечение цикла разработки. Но также и про стабильность работы приложения, мониторинг, обеспечение тестирования и эксплуатации приложения.
Повторяемость, развёртывание и автоматизация всего, что возможно
В чём состоит DevOps-культура?
Прежде всего в том, что мы меняем фокус с отслеживания изменений в инфраструктуре на обеспечение скорости доставки готового продукта в рабочее окружение. Нижележащие системы (виртуальные машины, окружение, сети) мы не обслуживаем, как нечто, что трогать нельзя. А придерживаемся методологии immutable, когда каждый компонент системы не должен меняться. Если он вышел из строя или его нужно переконфигурировать, мы его изымаем и заменяем на новый. И, конечно, автоматизация всего, что можно автоматизировать. С оглядкой на то, как много усилий это потребует.
Что даёт автоматизация?
Автоматизация даёт читабельный код — любой инженер может легко понять, почему так сделано и зачем. Таким образом, мы сильно ускоряем процесс разработки и улучшаем надёжность этого процесса.
Из кого состоит DevOps-команда?
Первая часть команды — бывшие системные администраторы, которые умеют писать код. Вторая часть — Quality Assurance инженеры, умеющие создавать надёжный цикл тестирования приложения. Они обладают навыками программирования, знают ООП — это помогает им писать автотесты в удобном для восприятия и легко поддерживаемом виде. И третья часть — разработчики. У них тоже есть ценный навык программирования. Они идут в инфраструктуру, потому что им нравится работать с более низкоуровневыми системами.
Чем конкретно занимаются DevOps-инженеры?
- Автоматизируют развёртывание системы — пишут скрипты на Groovy или Python с использованием различных фреймворков. Чаще всего с помощью инструмента Terraform или AWS CloudFormation. Потому что сейчас мы всё больше "уходим в облака": Amazon AWS, Google GCP, Microsoft Azure, IBM Cloud и другие.
- Описывают систему мониторинга, согласуют её с разработчиком (ключевые индикаторы, которые показывают нам, что приложение работает как нужно).
- И обеспечивают цикл разработки — пишут скрипты автоматизации для Jenkins и CI/CD процессов на Git Lab CI или Git Hub.
Зачем идти в DevOps?
- Востребованность. На мировом IT-рынке сейчас порядка 30 млн разработчиков. И их количество будет расти — автоматизация потребует 100 млн рабочих мест к концу десятилетия. Когда разработчиков много, может возникнуть хаос в процессах разработки и инфраструктуре. И в этом плане DevOps стал востребованной профессией: и процесс разработки, и инфраструктуру надо обслуживать.
- Конкурентная зарплата. Уже третий год подряд мы наблюдаем бум зарплат в DevOps. И они останутся конкурентными.
- Принятие ключевых решений. Если вы любите брать на себя ответственность и отвечать за принятые решения, то DevOps предоставит вам прекрасную возможность реализовать свой потенциал.
DevOps — точка соприкосновения разных команд: разработка, Quality Assurance, деливери, бизнес-анализ
Какие сложности есть в профессии?
DevOps-инженер — это разносторонне развитый специалист. Он знает и алгоритмы, и системное администрирование, и инфраструктуру, и сети. Следовательно, нужно быть эрудированным в разных аспектах разработки. Необязательно подробно, но спектр знаний, в которые нужно погрузиться, широкий.
Как понять, подходит ли мне DevOps-направление?
Желание спуститься в машинное отделение, не побояться замарать руки в мазуте и починить в двигателе сломанную шестерёнку — я бы сказал, это одно из must-have качеств для DevOps. Если вы любите операционные системы, настройку железа и опций сети. Например, настроить приложение, чтобы оно работало быстро, или оптимизировать потребление памяти.
Какие знания должны быть у будущего DevOps?
Обязательно знание информатики и вычислительных систем, потому что часто возникают задачи, когда нужно принять решение, которое сильно повлияет на дальнейшую разработку и эксплуатацию. Необходимо понимать, для чего нужна операционная система. Иметь представление о том, как устроены сети, какие бывают варианты организации сетей и протоколов. Нужно знать, что такое процесс разработки. Знать систему контроля версий Git — это один из главных инструментов. И системы сборки — Jenkins, GitLab CI, Travis, Circle CI.
А какие soft skills?
Уметь аргументировано отстаивать свою точку зрения: доказать, что твоё решение лучшее для решения этой проблемы. Пригодятся навыки тайм-менеджмента: прежде всего самоорганизация в условиях повышенного спроса на помощь со стороны других команд. Умение развиваться самостоятельно: уделять время на чтение книг, прохождение курсов, изучение видеоуроков.
Нужно быть довольно гибким и стрессоустойчивым. Уметь быстро переключаться между контекстами. Но при этом довольно подробно и глубоко погружаться в проблему, чтобы её решить оптимальным способом.
Что бы ты порекомендовал прочитать новичкам?
- Майк Ганцарз. «Философия Unix».
- Эндрю Таненбаум, Дэвид Уэзеролл. «Компьютерные сети».
- "The Phoenix Project" Gene Kim, Kevin Behr, and George Spafford.
И курсы Computer Science 101 от MIT и Harvard University:
- Introduction to Computer Science and Programming in Python.
- Advanced Data Structures.
- CS50's Introduction to Computer Science.
Также советую обязательно следить за появлением новых курсов по DevOps для начинающих от EPAM, чтобы не пропустить свой шанс блистательно начать карьеру с нами.