article-spots
article-carousel-spots
programs
Технологии

Не нравится делать одну задачу больше чем два раза? Добро пожаловать в DevOps!

10 сент. 2021

Что такое DevOps, DevOps-культура и как стать DevOps-разработчиком нам рассказал Андрей Белов — ведущий инженер по сопровождению ПО в EPAM. 

Опиши свой обычный рабочий день 

У DevOps-инженера две основные задачи: сопровождение команды разработчиков и автоматизация разработки. Первая задача часто накладывается на уже запланированные активности и может затянуться на несколько часов или даже дней. Это сильно влияет на работу по автоматизации. Чтобы приводить инфраструктуру к единому знаменателю, приходится общаться с разными командами. Поэтому в течение дня много рабочих встреч и звонков. И нужно часто переключаться между задачами, менять контекст.   

Что такое DevOps?   

DevOps — это и набор практик, и методология взаимодействия специалистов. DevOps — это комплексная область. И она не только про автоматизацию, развёртывание окружений и обеспечение цикла разработки. Но также и про стабильность работы приложения, мониторинг, обеспечение тестирования и эксплуатации приложения.   

Повторяемость, развёртывание и автоматизация всего, что возможно  


В чём состоит DevOps-культура? 

Прежде всего в том, что мы меняем фокус с отслеживания изменений в инфраструктуре на обеспечение скорости доставки готового продукта в рабочее окружение. Нижележащие системы (виртуальные машины, окружение, сети) мы не обслуживаем, как нечто, что трогать нельзя. А придерживаемся методологии immutable, когда каждый компонент системы не должен меняться. Если он вышел из строя или его нужно переконфигурировать, мы его изымаем и заменяем на новый. И, конечно, автоматизация всего, что можно автоматизировать. С оглядкой на то, как много усилий это потребует.  

Что даёт автоматизация? 

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

Из кого состоит DevOps-команда?  

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

Чем конкретно занимаются DevOps-инженеры?   

  1. Автоматизируют развёртывание системы — пишут скрипты на Groovy или Python с использованием различных фреймворков. Чаще всего с помощью инструмента Terraform или AWS CloudFormation. Потому что сейчас мы всё больше "уходим в облака": Amazon AWS, Google GCP, Microsoft Azure, IBM Cloud и другие.  
  2. Описывают систему мониторинга, согласуют её с разработчиком (ключевые индикаторы, которые показывают нам, что приложение работает как нужно).  
  3. И обеспечивают цикл разработки — пишут скрипты автоматизации для 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: 

Также советую обязательно следить за появлением новых курсов по DevOps для начинающих от EPAM, чтобы не пропустить свой шанс блистательно начать карьеру с нами.