Кто такой devops инженер и чем он занимается
Кто такой DevOps-инженер, что он делает, сколько зарабатывает и как им стать
DevOps-инженеры — это многопрофильные специалисты, которые умеют автоматизировать процессы и знают, как работают разработчики, QA и менеджеры. Они умеют программировать, быстро осваивают сложные инструменты и не теряются перед незнакомой задачей. DevOps-инженеров мало — им готовы платить по 200–300 тысяч рублей, но вакансий всё равно много.
В статье рассказываем, чем конкретно занимается DevOps и что нужно изучить, чтобы претендовать на такую должность. Бонусом — важные ссылки на книги, видео, каналы и профессиональное сообщество.
Разобрался, чем занимаются и сколько зарабатывают DevOps-инженеры
Чем занимается DevOps-инженер
В ситуации с DevOps важно не путать термины. Дело в том, что DevOps — это не какое-то конкретное направление деятельности, а профессиональная философия. Это методология, которая помогает разработчикам, тестировщикам и системным администраторам работать быстрее и эффективнее за счёт автоматизации и бесшовности.
Соответственно, DevOps-инженер — это специалист, который внедряет эту методологию в процесс работы:
Всё, что написано выше, происходит в близких к идеальным проектах. В реальном же мире приходится стартовать в проекте, где планирование пропустили, с архитектурой ошиблись, а об автоматизации задумались, когда все проекты встали. И разобраться во всех этих проблемах, решить их и сделать так, чтобы всё работало — ключевой навык DevOps-специалиста.
На рынке кадров есть путаница. Иногда бизнес ищет DevOps-инженеров на позицию системного инженера, билд-инженера или кого-то ещё. Обязанности в зависимости от размера компании и направления тоже меняются — где-то ищут человека на консалтинг, где-то просят всё автоматизировать, а где-то требуют выполнять расширенные функции системного администратора, умеющего программировать.
Что нужно для старта в профессии
Вход в профессию требует предварительной подготовки. Просто прийти на курсы с нуля, ничего не понимая в IT, и выучиться до уровня junior не получится. Нужен технический бэкграунд:
Не обязательно знать всё перечисленное досконально, для старта обучения DevOps достаточно минимального уровня подготовки. Если такой технический бэкграунд есть, попробуйте записаться на курсы.
Кто такой DevOps-инженер?
Эксперт в DevOps и Linux.
DevOps-инженер — связующее звено между всеми этапами создания продукта: от написания кода до релиза. Спрос на его труд растет из года в год, и даже младший специалист может рассчитывать на зарплату от 100 тыс. рублей. Мы попросили DevOps-инженера из Ростелекома, а также автора одноименного курса в SkillFactory Вячеслава Светлова разложить для нас его профессию по полочкам.
Что такое DevOps?
DevOps — это набор практик на стыке системного администрирования (Ops — Operations) и разработки (Dev — Development).
До внедрения DevOps при создании приложения целью группы разработки было написание кода, а группы инфраструктуры — поддержка всех серверов в работоспособном состоянии.
Если возникала проблема, инженер инфраструктуры мог сказать: «С сервером все в порядке, проблема с кодом, дальше разбираться я не буду, проблема не моя», — а разработчик говорил: «На моем компьютере этот код работает, проблема с сервером, дальше разбираться я не буду, это не моя зона ответственности».
С приходом DevOps-инженера вся команда фокусируется на единой цели — создании качественного продукта.
Без DevOps-культуры в компании может практиковаться ручное тестирование, ручное управление инфраструктурой, могут возникать конфликты в частях кода, написанных разными разработчиками. В итоге бизнес получит низкое качество продукта, низкую скорость вывода продукта на рынок, демотивированных сотрудников, вынужденных большую часть времени тратить на рутинные задачи и сложности при масштабировании.
Что делает DevOps-инженер?
DevOps-инженер синхронизирует все этапы создания программного продукта: от написания кода до тестирования и релиза.
Это профессионал, имеющий широкие знания в IT и понимающий, как прийти к конечному продукту. Он хорошо разбирается в инфраструктуре, понимает принципы разработки приложений и построения их архитектуры. Еще он — менеджер-практик, знающий жизненный цикл приложения и современные методологии разработки.
А можно на простом примере?
Есть два друга, которые хотят пожарить мясо на природе. Итоговый продукт их деятельности — шашлык. Друзья распределяют между собой задачи: один нанизывает мясо на шампур (сравним его с разработчиком), другой собирает мангал и разводит огонь (сравним его с инженером инфраструктуры).
Угли готовы, мясо на шампурах, положили шампуры на мангал — ждут. Но пошел дождь, надо перенести мангал под тент, чтобы угли не потухли. Одному это сделать трудно, дождь усиливается.
Без DevOps-культуры разработчик (отвечающий за нанизывание мяса на шампуры) может сказать: «Мясо на шампурах — моя работа сделана. Дальше разбираться я не буду», — и в итоге шашлыка никто не поест.
DevOps-инженер — это третий друг, который заранее посмотрел прогноз погоды, понял, что будет дождь, взял с собой тент, развернул его и, когда погода испортилась, помог перенести мангал с мясом под тент. В итоге все насладились вкусным мясом (выпустили качественный продукт).
Где нужен DevOps?
DevOps-инженеры нужны в компаниях, которые разрабатывают ПО для себя или на заказ. При этом сферы могут быть самые разные: медицина, транспорт, спорт, автомобили и пр.
Что ему нужно знать?
DevOps-инженер — многопрофильный специалист, и для успешной работы ему необходимо разбираться в нескольких IT-направлениях. Требования к нему в разных компаниях отличаются, но база для всех примерно такая:
Какие нужны софт-скилы?
Помимо хорошего технического кругозора и навыков автоматизации DevOps-инженеру крайне необходимо развивать софт-скилы, которые помогут синхронизировать работу всех участников и подразделений.
Особенно требуется умение работать в команде, поскольку DevOps-культура в целом подразумевает довольно плотное общение между командой разработки и командой инфраструктуры. Часто для получения конечного результата надо уметь находить компромиссы.
Насколько это востребовано и сколько получает DevOps-инженер?
IDC прогнозирует, что количество специалистов DevOps с 2019 по 2024 год возрастет в два раза. Ожидается, что к 2024 году минимум 30% компаний внедрят полноценный цикл DevOps.
По данным Research and Markets сфера DevOps переходит из нишевого инструмента в глобальный рынок, который имеет просто колоссальный потенциал для роста. За период карантина в 2020 году рынок вырос на 29,3%.
В марте 2021 года на сайте hh.ru было более 4,3 тыс. вакансий DevOps-инженера.
Можно заметить рост популярности запроса «devops» и других запросов по теме на графиках от сервиса Google Trends.
Зарплата зависит от компании и навыков. Младший специалист DevOps в Москве получает от 70 до 150 тыс. рублей в месяц, а зарплата ведущего составляет примерно 250 тыс. рублей. По данным Хабр Карьеры, во втором полугодии 2020 года средняя медианная зарплата специалиста DevOps составила 155 тыс. рублей.
На сайте hh.ru можно найти вакансии с зарплатой более 400 тыс. руб. в месяц. Больше всего вакансий предполагают доход от 105 тыс. до 265 тыс. рублей.
Плюсы и минусы профессии
Освойте перспективную IT-профессию на стыке разработки, системного администрирования и бизнеса. Дополнительная скидка 5% по промокоду BLOG.
Чем DevOps отличается от Agile?
Agile — обобщающий термин для целого набора принципов, подходов и практик, основанных на ценностях гибкой разработки. Такую методологию применяют для организации труда небольших групп. Она нацелена на минимизацию рисков при работе с помощью разделения разработки на короткие циклы, каждый из которых выглядит как отдельный конечный проект. Каждый из этапов обычно включает в себя спектр задач: планирование, анализ требований, проектирование, программирование, тестирование и документирование.
В отличие от Agile, DevOps предполагает разработку методологии, позволяющей оптимизировать выполнение повторяющихся задач. Этот подход лучше применять для разработок, в которых необходимо найти способ быстро и с высокой повторяемостью переносить программное обеспечение в производственную среду.
DevOps-инженерами становятся:
Я пришел в специальность из системного администрирования около трех лет назад. До этого работал в центре обработки данных (ЦОД), занимался системами мониторинга — приходилось заниматься как администрированием, так и немного разработкой. После решил попробовать себя в DevOps, там и остался.
Как начать?
DevOps вряд ли будет вашей стартовой профессией в IT, нужно уже иметь опыт в сфере и общее понимание разработки. Для DevOps-инженера также важно знать фундаментальные основы системного администрирования и сетей.
Узнать больше о сетях можно в книгах «Компьютерные сети» Виктора и Натальи Олифер и «Руководство по подготовке к экзамену CCNA» Уэнделла Одома. А ознакомиться с Linux и операционными системами в целом помогут «Настольная книга Unix & Linux системного администратора» Эви Немет и «Современные операционные системы» Эндрю Таненбаума.
Присоединяйтесь к профсообществам на форумах и в соцсетях, чтобы лучше понимать тенденции рынка и обращаться за советами:
Теоретические знания можно отрабатывать на онлайн-курсах (на Udacity есть бесплатный курс), с их помощью удобно систематизировать знания.
На курсе «DevOps-инженер» от Skillfactory вы за 6 месяцев освоите ключевые инструменты и востребованные рынком технологии. Под управлением экспертов вы создадите портфолио архитектурных решений и подходов, научитесь уверенно рассказывать о них на собеседовании и осознанно внедрять в своих проектах.
После этого вы присоединитесь к сообществу специалистов-практиков, получите рекомендации экспертов по внедрению изменений, решению реальных проблем и удержанию фокуса на постоянных улучшениях.
Освойте перспективную IT-профессию на стыке разработки, системного администрирования и бизнеса. Дополнительная скидка 5% по промокоду BLOG.
Кто такой DevOps-инженер? 12 ответов на часто задаваемые вопросы
Авторизуйтесь
Кто такой DevOps-инженер? 12 ответов на часто задаваемые вопросы
Рассказать о DevOps-инженере в двух словах невозможно: кто-то говорит, что такого специалиста не существует, а кто-то убеждён, что это тот же сисадмин, но под другим углом. Не профессия, а загадка. Для большей ясности мы опросили экспертов, которые развёрнуто ответили на распространённые вопросы об этой специальности.
Что такое DevOps?
Development Operations — это методология разработки, которая направлена на эффективное взаимодействие разработчиков с другими IT-специалистами. Например, программисты и тестировщики отвечают за Development, а администраторы — за Operations. И вот когда специалист вовлечён не только в непосредственную разработку, но также в процесс деплоя и эксплуатации системы — это DevOps.
DevOps — это не набор инструментов и платформ, это, скорее, концепция, набор практик и правил, позволяющий ликвидировать разрыв между разработчиками сервиса и сотрудниками, отвечающими за обслуживание и эксплуатацию приложения.
Зачем это нужно?
Участники команды работают сообща и приобретают целостное видение работы всей системы. Это способствует эффективному взаимодействию и, как следствие, улучшению качества продукта.
Стоит сразу обозначить, что, говоря о DevOps, мы имеем в виду не должность. Это не отдельная профессия, а методология и следование набору определённых практик и стратегий, направленных на то, чтобы в конечном счёте результат (реализованный в коде и выполняющий в продуктивной среде функционал) соответствовал ряду бизнес-требований. Бизнесу нужна высокая скорость разработки, стабильность в процессе эксплуатации, при внесении изменений и масштабировании, минимизация затрат, возможность избежать найма дополнительных специалистов.
Это перспективная отрасль?
Ещё бы. Дополнительные навыки и понимание всего процесса сделают вас востребованным сотрудником. Эта специальность появилась на рынке IT относительно недавно и почти сразу же стала одной из самых популярных и востребованных. Но стоит отметить, что многие работодатели, выставляя подобную вакансию, путают DevOps-специалиста с представителями других профессий или просто ищут 2 в 1. Как итог, спрос сейчас превышает предложение.
Хорошо, а кто такой DevOps-инженер?
Devops-инженер как человек с выделенной ролью — это администратор, область деятельности которого лежит немного в стороне по отношению к разработке продукта/продуктов. Он занимается настройкой инструментов и систем, которые позволяют более часто и качественно доносить фичи разработанных продуктов до клиентов. Devops-инженеры — это такие строители дорог, по которым бегут грузовики, нагруженные продуктами, которые создали другие инженеры. В большинстве случаев Devops-инженер — это роль, которую на себя может взять любой член команды. В крупных компаниях, где за счёт создания выделенной роли можно сэкономить, Devops-инженеры проектируют и поддерживают системы доставки изменений для многих команд, стандартизируя эти процессы.
Какие проблемы он решает?
«Магия» DevOps приходит на помощь, когда на проекте есть проблемы со стабильностью, масштабированием, работой под нагрузкой или с выкладкой на продакшн, а также, например, если процесс выпуска продукта занимает слишком много времени.
В чём разница между DevOps-инженером и системным администратором?
Главное отличие сисадмина от DevOps-инженера, конечно же, не в инструментарии и не в знаниях. Я считаю, что это отличие в подходе к работе. У сисадмина есть определённый, неизменный список задач, которые он выполняет ежедневно. Возможно, ещё план по развитию или автоматизации инфраструктуры. У DevOps-инженера, как части команды, таких ограничений нет. Список задач может быть крайне диверсифицированным: вчера я писал код, сегодня тестирую приложение, завтра буду делать то, что будет актуально на тот момент для команды, например, разрабатывать новую фичу, траблшутить проблему с сетью в тестовой среде или настраивать CI/CD процесс.
Какова его роль в команде?
Разработчик пишет код, тестировщик — тесты, системный администратор занимается эксплуатацией всего, а DevOps-инженер «дружит» между собой результаты их работы. Он делает волшебную кнопку, на которую кликает разработчик после написания очередного куска кода, и далее написанный код попадает в тестовую среду, проходит все стадии тестирования и уходит в прод. Главная задача DevOps-инженера — минимизировать взаимодействие между командами разработки и эксплуатации. В REG.RU часто DevOps-инженерами становятся бывшие системные администраторы, которым небезразличны боли разработчиков.
С какими инструментами работает этот специалист?
Из основных инструментов DevOps-инженера я бы отметил:
Учитывая широкую зону интересов, DevOps’у приходиться пользоваться множеством инструментов и постоянно пробовать для себя что-то новое:
Что входит в обязанности DevOps-инженера?
DevOps-инженер — специалист, обеспечивающий автоматизацию процесса разработки продукта. В это понятие входит широкий спектр задач:
Куда можно устроиться, будучи таким специалистом?
В любую крупную компанию, которая занимается разработкой, внедрением и администрированием. Дефицит DevOps-инженеров наблюдается там, где разрабатывается большое количество сервисов в рамках B2C: это мобильные операторы, банки, интернет-провайдеры, etc. К потенциальным работодателям также относятся Google, Facebook, Amazon и прочие гиганты.
Что с порогом вхождения?
Если вы только начинаете свой путь в IT, будет нелегко, поскольку багаж необходимых знаний солидный. Гораздо проще перейти в DevOps, будучи разработчиком или системным администраторам, — в этом случае останется освоить примерно половину того, что требуется.
С чего начать, чтобы стать DevOps engineer?
Начните с полезных статей:
Посмотрите видео на канале ADV-IT, где подробно расписано, что учить и в каком порядке:
Получите более уверенные знания из нескольких книг:
Философия DevOps. Искусство управления IT
IT-принцип «agile» стал мантрой цифровой эпохи. С ростом проектов, переходом от монолитных приложений к системе микросервисов, увеличением и накоплением продуктов возникают вопросы, которые требуют совершенно иного подхода. Теперь наибольший интерес вызывает находящаяся на стыке разработки и операционного управления методология DevOps.
DevOps — это не просто набор техник, это философия. Разработчики, зацикленные на пользователях, должны уделять внимание поддержке и ее запросам. Сисадмины должны сообщать о проблемах продукта и вносить свой вклад в улучшение процесса работы. Но налаживание связей внутри компании — это лишь первый шаг. Чтобы продукт стал простым и удобным, придётся вложить время и ресурсы в его доработку. Конфигурация через центральную службу, внедрение простым копированием, отсутствие внешних зависимостей, обдуманные метрики вместо мусора в логах – вот лишь часть задач, которые придется решать на этом пути.
Книга «Философия DevOps» познакомит вас с техническими, культурными и управленческими аспектами devops-культуры и позволит организовать работу так, чтобы вы получали удовольствие от разработки, поддержки и использования программного обеспечения.
Continuous delivery. Практика непрерывных апдейтов
Эта книга поможет всем, кто собирается перейти на непрерывную поставку программного обеспечения. Руководители проектов ознакомятся с основными процессами, преимуществами и техническими требованиями. Разработчики, администраторы и архитекторы получат необходимые навыки организации работы, а также узнают, как непрерывная поставка внедряется в архитектуру программного обеспечения и структуру ИТ-организации.
Эберхард Вольф познакомит вас с популярными передовыми технологиями, облегчающими труд разработчиков: Docker, Chef, Vagrant, Jenkins, Graphite, ELK stack, JBehave и Gatling. Вы пройдёте через все этапы сборки, непрерывной интеграции, нагрузочного тестирования, развёртывания и контроля.
Руководство по DevOps. Как добиться гибкости, надёжности и безопасности мирового уровня в технологических компаниях
Профессиональное движение DevOps зародилось в 2009 году. Его цель – настроить тесные рабочие отношения между разработчиками программного обеспечения и отделами IT-эксплуатации. Внедрение практик DevOps в повседневную жизнь организации позволяет значительно ускорить выполнение запланированных работ, увеличить частоту релизов, одновременно повышая безопасность, надёжность и устойчивость производственной среды. Эта книга представляет собой наиболее полное и исчерпывающее руководство по DevOps, написанное ведущими мировыми специалистами.
И помните, что от этого специалиста требуется тщательная проработка целого ряда вопросов.
Дополнительные ответы экспертов
DevOps-инженер компании-разработчика российского офисного ПО МойОфис
Если вкратце, то DevOps-инженер — это связующее звено между инфраструктурой и разработчиками, упрощающее работу каждой из команд. DevOps-инженер понимает и специфику разработки, и специфику администрирования и тестирования. Основная его задача — автоматизация и упрощение процессов выпуска продукта.
Я бы сказал, что чёткого разделения между системным и DevOps-инженером нет — и те и другие отвечают за работу продукта на производстве. Однако акцент работы первого может быть смещён в сторону поддержки работоспособности продукта уже в готовом окружении, в то время как DevOps-инженер больше ориентирован на подготовку этого самого окружения.
Каждый день DevOps-инженер оперирует большим количеством инструментов. Их можно условно разделить на разные группы — к примеру, те, что связаны со средой непрерывного развёртывания (CI/CD-tools), с автоматической конфигурацией, мониторингом, облачной инфраструктурой и др. При выборе каждой технологии специалист обязан чётко осознавать, как внедрение того или иного решения повлияет на процессы в команде. Такие сотрудники должны обладать широким кругозором: это очень востребованная в наше время профессия, и настоящие профи ценятся на вес золота.
директор по развитию DBI
Основные задачи системного администратора в команде — это обеспечение работы сетевых и аппаратных ресурсов. Практически всегда в этот список входит ещё и поддержка программных ресурсов и решение некоторых вопросов информационной безопасности, например, настройка фаерволов, VPN-соединения, управление доступами к ресурсам и установка антивирусов.
13–15 декабря, Онлайн, Беcплатно
Именно системным администраторам делегируется необходимость общения с конечными пользователями. Не работает почта? Сломалась клавиатура? Все эти вопросы к системному администратору. Часто системные администраторы помогают разработчикам в настройке сети, серверов. Непосредственно в процессе разработки системные администраторы участия не принимают.
А вот работа DevOps-инженера ориентирована как раз на интеграцию процессов разработки, тестирования, развёртывания и поддержки программных продуктов и сервисов, подразумевает тесное взаимодействие с разработчиками и вовлечённость в проект. В «крупную клетку» задачи DevOps-инженера включают:
Таким образом, основная задача DevOps-инженера — сделать всё для того, чтобы заказчик получил работающий релиз программного обеспечения в срок.
DevOps Engineer, TL, DataArt
Начнём с того, что DevOps — подход, а не инженер. Роль DevOps в проекте основополагающая. Проект и всё, что с ним связано, базируется на DevOps-процессах. DevOps — это связать вместе разные части всей экосистемы (Dev, QA, Ops, Sec) и автоматизировано обеспечить SDLC.
Основываясь на DevOps-подходе и инженерах, которые его обеспечивают, проект получает гибкость, автоматизацию, непрерывность и отказоустойчивость, управление костами, ресурсами и т. д.
Чем DevOps отличается от сисадмина? Практически всем. Сисадмин отвечает за конкретные задачи: управление доступом пользователей, настройка сетевой составляющей инфраструктуры, почтовые/DNS-серверы, VMS, обновления ОС и т. д. В сложной экосистеме и процессах, связанных с проектом и SDLC, это малая часть задач, относящихся к Ops.
Основными обязанностями ДевОпс можно назвать следующие основополагающие процессы в жизнедеятельности продукта:
Каждый пункт можно разложить на десятки подзадач. Счёт технологий идёт на сотни. База выглядит вот так:
Зачем нужен DevOps и кто такие DevOps-специалисты
Когда приложение не работает, меньше всего хочется услышать от коллег фразу «проблема на вашей стороне». В итоге страдают пользователи – а им всё равно, какая часть команды несет ответственность за поломку. Культура DevOps появилась как раз затем, чтобы сплотить разработку и поддержку и объединить их вокруг общей ответственности за конечный продукт.
Какие практики входят в понятие DevOps и зачем они нужны? Чем занимаются DevOps-инженеры и что они должны уметь? На эти и другие вопросы отвечают эксперты из EPAM: Кирилл Сергеев, системный инженер и DevOps-евангелист, и Игорь Бойко, ведущий системный инженер и координатор одной из DevOps-команд компании.
Зачем нужен DevOps?
Раньше между разработчиками и поддержкой (т. н. operations) существовал барьер. Звучит парадоксально, но у них были разные цели и KPI, хотя они и делали общее дело. Целью разработки было как можно быстрее реализовать бизнес-требования и добавить их в работающий продукт. Поддержка отвечала за то, чтобы приложение стабильно работало – а любые изменения ставят стабильность под угрозу. Налицо конфликт интересов – DevOps появился, чтобы его решить.
Что такое DevOps?
Вопрос хороший – и спорный: окончательно в мире об этом пока не договорились. В ЕРАМ считают, что DevOps объединяет в себе технологии, процессы и культуру взаимодействия внутри команды. Это объединение нацелено на непрерывную доставку ценностей конечным пользователям.
Кирилл Сергеев: «Разработчики пишут код, тестировщики его проверяют, а администраторы устанавливают финальный продукт на производственное окружение. Долгое время эти части команды были несколько разрознены, а потом появилась идея объединить их общим процессом. Так появились DevOps-практики».
Настал тот день, когда разработчики и системные инженеры заинтересовались работой друг друга. Барьер между производством и поддержкой стал стираться. Так появился DevOps, в который входят практики, культура и порядок взаимодействия в команде.
В чем состоит суть DevOps-культуры?
В том, что ответственность за конечный результат лежит на каждом из участников команды. Самое интересное и сложное в философии DevOps – понять, что конкретный человек не просто отвечает за свой этап работы, а несет ответственность за то, как будет работать весь продукт. Проблема лежит не на чьей-то стороне – она общая, и каждый член команды помогает ее решить.
Важнейшее положение DevOps-культуры – именно решать проблему, а не просто применять DevOps-практики. Более того, эти практики внедряют не «на чьей-то стороне», а в весь продукт. Проекту нужен не сам по себе DevOps-инженер – ему нужно решение проблемы, а роль DevOps-инженера может быть распределена по нескольким членам команды с разной специализацией.
Какие бывают DevOps-практики?
DevOps-практики покрывают все этапы жизненного цикла ПО.
Игорь Бойко: «Идеальный случай – когда мы начинаем использовать DevOps-практики прямо при инициации проекта. Вместе с архитекторами мы планируем, какой у приложения будет архитектурный ландшафт, где оно будет располагаться и как масштабироваться, выбираем платформу. Сейчас в моде микросервисная архитектура – для нее мы выбираем систему оркестрации: нужно уметь управлять каждым элементом приложения по отдельности и обновлять его независимо от других. Еще одна практика – это “инфраструктура как код”. Так называют подход, при котором инфраструктура проекта создается и управляется при помощи кода, а не через прямое взаимодействие с серверами.
Дальше мы переходим на этап разработки. Здесь одна из крупнейших практик – построение CI/CD: нужно помочь разработчикам интегрировать изменения в продукт быстро, мелкими порциями, чаще и безболезненней. CI/CD покрывает и проверку кода, и заливку мастера в кодовую базу, и разворачивание приложения на тестовых и продуктивных средах.
На этапах CI/CD код проходит через quality gates. С их помощью проверяют, чтобы код, который вышел с рабочей станции разработчика, соответствовал заданным критериям качества. Здесь добавляется юнит- и UI-тестирование. Для быстрого, безболезненного и фокусированного разворачивания продукта можно выбрать подходящий тип деплоймента.
DevOps-практикам есть место и на стадии поддержки готового продукта. Их применяют для мониторинга, обратной связи, безопасности, внедрения изменений. На все эти задачи DevOps смотрит с точки зрения постоянных улучшений. Мы сводим к минимуму повторяющиеся операции, автоматизируем их. Сюда же относятся миграции, расширение приложения, поддержка работоспособности».
Чем полезны DevOps-практики?
Если бы мы писали учебник по современным практикам DevOps, на его первой странице значились бы три пункта: автоматизация, ускорение релиза и быстрая обратная связь от пользователей.
Кирилл Сергеев: «Первое – это автоматизация. Все взаимодействия в команде мы можем автоматизировать: написали код – выкатили – проверили – установили – собрали фидбэк – вернулись в начало. Всё это – автоматически.
Второе – ускорение выхода релиза и даже упрощение разработки. Заказчику всегда важно, чтобы продукт вышел на рынок как можно скорее и начал приносить пользу раньше, чем аналоги конкурентов. Процесс доставки продукта можно бесконечно улучшать: сокращать время, добавлять дополнительные контрольные метки, совершенствовать мониторинг.
Третье – это ускорение обратной связи от пользователя. Если у него есть замечания, мы можем сразу же вносить корректировки и тут же обновлять приложение».
Как соотносятся понятия «системный инженер», «билд-инженер» и «DevOps-инженер»?
Они пересекаются, но относятся к немного разным сферам.
Системный инженер в ЕРАМ – это должность. Они бывают разных уровней: от джуниора до chief-специалиста.
Билд-инженер – это скорее роль, которую можно выполнять на проекте. Сейчас так называют людей, ответственных за CI/CD.
DevOps-инженером называют специалиста, который внедряет на проекте DevOps-практики.
Если суммировать всё это, получается примерно следующее: человек в должности системного инженера исполняет на проекте роль билд-инженера и занимается там внедрением DevOps-практик.
Чем именно занимается DevOps-инженер?
DevOps-инженеры собирают воедино все части, из которых состоит проект. Они знают специфику работы программистов, тестировщиков, системных администраторов и помогают упростить их работу. Они понимают потребности и требования бизнеса, его роль в процессе разработки – и строят процесс с учетом интересов заказчика.
Мы много говорили про автоматизацию – ею DevOps-инженеры занимаются в первую очередь. Это очень большой пункт, в который, помимо прочего, входит подготовка окружения.
Кирилл Сергеев: «Прежде чем внедрять обновления в продукт, их нужно протестировать на стороннем окружении. Его готовят DevOps-инженеры. Они же насаждают на проекте DevOps-культуру в целом: внедряют DevOps-практики на всех слоях своих проектов. Эти три принципа: автоматизация, упрощение, ускорение – они привносят всюду, куда могут дотянуться».
Что должен знать DevOps-инженер?
По большому счету, у него должны быть знания из разных областей: программирование, работа с операционными системами, базами данных, системами сборки и конфигураций. К ним добавляется умение работать с облачной инфраструктурой, системами оркестрации, мониторинга.
1. Языки программирования
DevOps-инженеры знают несколько базовых языков для автоматизации и могут, например, сказать программисту: «Давай ты будешь делать установку кода не руками, а с помощью нашего скрипта, который всё автоматизирует? К нему мы подготовим config-файл, его будет удобно читать и тебе, и нам – и мы в любой момент сможем его изменить. А еще мы будем видеть, кто, когда и для чего вносит в него изменения».
DevOps-инженер может выучить один или несколько из этих языков: Python, Groovy, Bash, Powershell, Ruby, Go. Знать их на глубинном уровне не требуется – достаточно основ синтаксиса, принципов ООП, умения писать несложные скрипты для автоматизации.
2. Операционные системы
DevOps-инженер должен понимать, на каком сервере будет установлен продукт, в какой среде будет запускаться, с какими сервисами будет взаимодействовать. Можно выбрать специализацию на Windows или Linux-семействе.
3. Системы контроля версий
Без знаний системы контроля версий DevOps-инженеру никуда. Git – одна из самых популярных систем в настоящий момент.
4. Облачные провайдеры
AWS, Google, Azure – особенно если мы говорим про Windows-направление.
Кирилл Сергеев: «Облачные провайдеры предоставляют нам виртуальные сервера, которые прекрасно ложатся на рельсы CI/CD.
Установка десяти физических серверов требует порядка ста ручных операций. Каждый сервер нужно вручную запустить, установить и настроить нужную операционную систему, установить наше приложение на этих десяти серверах, а потом десять раз всё перепроверить. Облачные сервисы заменяют эту процедуру десятью строчками кода, и хороший DevOps-инженер должен уметь ими оперировать. Так он экономит время, силы и деньги – и для заказчика, и для компании».
5. Системы оркестрации: Docker и Kubernetes
Кирилл Сергеев: «Виртуальные сервера разделены на контейнеры, в каждый из которых мы можем установить наше приложение. Когда контейнеров много, надо ими управлять: один включить, другой выключить, где-то сделать бэкапы. Это становится довольно сложным делом, для которого нужна система оркестрации.
Раньше каждым приложением занимался отдельный сервер – любые изменения в его работе могли повлиять на исправность приложения. Благодаря контейнерам приложения становятся изолированными и запускаются по отдельности – каждое на своей виртуальной машине. Если происходит сбой, не нужно тратить время на поиск причины. Проще уничтожить старый контейнер и добавить новый».
6. Системы конфигураций: Chef, Ansible, Puppet
Когда необходимо обслуживать целый парк серверов, приходится делать много однотипных операций. Это долго и сложно, а еще ручная работа повышает шанс ошибки. Тут на помощь приходят системы конфигураций. С их помощью создают скрипт, который удобно читать и программистами, и DevOps-инженерами, и системными администраторами. Этот скрипт помогает проводить одинаковые операции на серверах автоматически. Так ручных операций (и, следовательно, ошибок) становится меньше.
Какую карьеру может построить DevOps-инженер?
Развиваться можно и горизонтально, и вертикально.
Игорь Бойко: «С точки зрения горизонтального развития, у DevOps-инженеров сейчас самые широкие перспективы. Всё постоянно меняется, и наращивать навыки можно по самым разным направлениям: от систем контроля версий до мониторинга, от управления конфигурациями до баз данных.
Можно стать системным архитектором, если сотруднику интересно разобраться, как работает приложение на всех этапах своего жизненного цикла – от разработки до поддержки».
Как стать DevOps-инженером?
А также можно посмотреть актуальные тренинги по DevOps на сайте Тренинг-центра EPAM.
Больше информации о DevOps-направлении на сайте.