Azure DevOps: от теории к большой практике
Более 95 % компаний из списка Fortune 500 выбирают Microsoft Azure для реализации масштабируемых, экономически эффективных решений для своего бизнеса. Это говорит о том, что DevOps-инженеры в этой дисциплине трудятся над интересными проектами и постоянно развиваются, осваивая новые тренды и технологии. О том, кто такие DevOps’ы написано много статей, а о практике Azure DevOps и ее особенностях, проектах и комьюнити, возможностях профессионального роста и обучающих программах мы поговорим с Максимом Зарубиным, руководителем практики в EPAM.
О себе
Карьеру в сфере ИТ я начинал как системный администратор, а в EPAM пришел уже на должность Senior systems engineer. C Microsoft Azure мое знакомство началось с первого проекта в компании, где мы разрабатывали решение для одной популярной DAM (digital asset management) системы. В то время Azure не пользовался популярностью, а его сервисы казались довольно сырыми, но они были интересными и перспективными. Имея опыт работы с hardware — инсталляция «железа» в дата-центрах, его настройка и конфигурирование — не мог не оценить возможность получить те же опции за считанные секунды в облаке. Никаких долгих перелетов, покупки оборудования, его установки, настройки ОС и сети — такие сервисы очень вдохновляли.
На второй проект я зашел уже в роли Delivery manager. Мы работали над непростой задачей, о которой я расскажу немного позже, и собрали отличную команду — с этого момента началось формирование первого подразделения Azure в компании. Но начать рассказ, наверное, стоит с того, что же такое «клауд».
Azure cloud
Azure — это облако, которое совмещает в себе миры Linux и Windows. В любом из них можно развиваться и строить карьеру. Кроме того, в отличие от других облачных технологий, Azure — это самый быстрорастущий cloud за последний год, что способствовало активному расширению рынка вакансий в этом направлении: инженеры востребованы, есть хорошие варианты по трудоустройству, возможность выбора проектов и клиентов.
Любой облачный провайдер, в том числе Azure, предлагает 3 варианта для хостинга ресурсов:
Infrastructure-as-a-Service (IaaS) — «инфраструктура как сервис». Классический вариант, к которому все привыкли: мы можем управлять сетью, виртуальными машинами, операционными системами, базами данных. Этот вариант дает максимальную свободу действия, но несет в себе и максимальную ответственность, как за безопасность, так и за поддержку.
Platform-as-a-Service (PaaS) — «платформа как сервис». Заветная мечта многих клиентов — сократить расходы на обслуживание и внедрение. Благодаря PaaS решениям, нам не нужно управлять ни сетью, ни операционной системой, все это делает облачный провайдер.
Software-as-a-Service (SaaS) — «ПО как сервис». Клиент не управляет никакими инфраструктурными компонентами и даже не разрабатывает приложение. Это готовый набор приложений с возможностью конфигурации функционала по подписке. Пример таких решений — это Teams, Exchange Online.
Наша практика может предложить клиенту все эти модели, нам под силу любые проекты несмотря на то, что сама дисциплина существует в компании не так и давно.
О практике Azure в EPAM
В EPAM практика Azure DevOps начала формироваться в 2016 году, изначально в ней было пять специалистов включая меня. На тот момент мы делали автоматизацию при помощи PowerShell, Azure Resource Manager еще только зарождался, но мы активно использовали его с первых дней. Классические виртуальные машины в классических сетях, Infrastructure-as-a-service реализация – с этого все начиналось.
Первым проектом практики была DAM система для крупной американской компании. Команда инженеров разрабатывала продукт, а команда DevOps занималась CI/CD решением и поддержкой продакшн-решения. Применялся подход Infrastructure-as-Code, активно использовали Azure Resource Manager. Этот проект позволил команде более глубоко изучить cloud работая над системой, которая находилась в продакшене и была доступна реальным пользователям.
Каким виделось будущее Azure в 2010, как выглядит его настоящее в 2021
В 2010 году я был уверен, что нативные сервисы клауда будут востребованы и широко распространены к 2021 году, поскольку их менеджмент проще, они не требуют инсталляции и предоставляются как платформа или готовый софт. Десять лет назад они только начинали развиваться и мы, как истинные энтузиасты, использовали их, несмотря на большое количество сложностей и ограничений. Сегодня это уже полноценные и развитые сервисы, которые используются на реальном продакшене. Мои ожидания начали оправдываться в 2020 году, cloud native — это уже устойчивый тренд среди мировых компаний, а для многих даже свершившийся факт.
Azure постоянно совершенствуется, только в нашей практике клиентов заинтересованных в реализации решений с помощью технологий Azure мы уже считаем не в десятках, а в сотнях. Интерес к подобным технологиям вполне закономерен.
Популярность не только Azure, но и AWS (Amazon Web Services), да и всех клаудов резко возросла в последние годы. Во-первых, потому, что использование облака выгоднее для бизнеса. Сейчас в мире мы можем наблюдать процесс перехода от культуры классического потребления, а именно от инвестиций в инфраструктуру и железо, к получению сервисов по модели pay-as-you-go, когда можно оплачивать использование инфраструктуры только за тот период, когда она действительно востребована. В классическом сценарии запуска проектов были необходимы затраты на аренду помещения, покупку оборудования, сервера, на настройку. И, если все это нужно только на несколько месяцев, что делать с оборудованием по окончании проекта? Облако позволяет воспользоваться всем необходимым и оптимизировать расходы. Это выгодно: экономия средств, ресурсов и времени.
Кроме того, рост интереса к Cloud Azure связан с тем, что, поскольку это важный стратегический продукт для Microsoft, компания не жалеет средств на его развитие, разработку новых функций и совершенствование старых. Добавляет привлекательности этому облаку в глазах энтерпрайз-клиентов и наличие большого пакета продуктов Microsoft, которыми можно воспользоваться. Сложно представить крупную компанию, которая не использует Exchange, Teams, Outlook, SharePoint. При переходе на Azure Cloud эти сервисы тоже переводятся в формат работы software-as-a-service, что выгодно для энтерпрайз-клиентов.
Благодаря удобству и возможностям, которые Cloud Azure предоставляет бизнесу, он стал популярным и востребованным среди наших клиентов — это дало толчок для роста и развития практики.
Экспертизы практики
Всего в компании более 8000 клауд-инженеров, несколько сотен из них имеют Primary skill именно в Azure Cloud. Наша дисциплина Azure в EPAM объединяет более 100 cloud-инженеров, около 20 технических лидов и не менее 10 архитекторов.
Практика распределенная, это значит, что члены команды находятся в разных странах мира: Беларусь, Казахстан, Узбекистан, Армения, Грузия, Литва и Россия. Несмотря на то, что территориально все живут в разных уголках земли, команда поддерживает тесный контакт благодаря возможности работать онлайн, делится знаниями и опытом, помогает друг другу развиваться и проводит совместные разработки.
Люди — самая важная составляющая успеха любом деле. Практика Azure — это, прежде всего, объединение Azure-ориентированных специалистов, постоянно развивающих свои навыки благодаря изучению новых фич Azure и обмену опытом.
Рассказывая о нашей дисциплине, мы, обычно, показываем этот слайд:
О первых двух блоках я уже рассказал, скажу по паре слов и о других.
Компетенции
Ключевые компетенции практики — DevOps направление и cloud-engineering.
В Cloud-engineering — это, в первую очередь, работа с Infrastructure-as-Code и configuration management, что предполагает использование Azure Resource Manager и Terraform, PowerShell Design State Configuration, а также Ansible.
В компании выстроена довольно зрелая компетенция, более того мы даже создали в EPAM акселератор Landing zone (он нужен чтобы лэндить приложения наших клиентов во время миграции в Azure Cloud или же для централизованного управления ресурсами).
Вторая важная часть компетенции связана с software development life cycle и с процессами continuous integration и continuous delivery. Здесь мы чаще всего используем Azure DevOps Service со всеми его составляющими: пайплайны, репозиторий, борды. Мы также разработали акселератор Cloud native Pipelines — масштабируемое CI/CD решение, которое позволяет за считанные дни с ноля построить CI/CD и начать разработку.
Активно развиваем компетенции в Cloud native development: .Net, .Net core, Java.
Клиенты и проекты
Сейчас дисциплина Azure DevOps в EPAM концентрируется на миграционных проектах, обычно — из Onprem в Azure.
Можно выделить несколько типов:
Миграционные Lift & Shift проекты, когда workload-ы клиента переводятся в публичное облако Azure с сохранением виртуальных машин, операционных систем, без изменений в приложении. Основное внимание уделяется автоматизации проектов, используются infrastructure-as-a-code подходы и configuration management.
Проекты, в которых при миграции необходимо редевелопить приложение на более современную архитектуру, часто микросервисную. В практике активно используется Azure Kubernetes Service, а также построение CI/CD пайплайнов при помощи Azure DevOps Services для организации беспрерывной поставки кода.
Нужно понимать, что, на данный момент, практически все крупные компании используют один или несколько клаудов и enterprise клиенты часто выбирают именно Azure.
К примеру, сейчас мы начинаем проект для французской логистической компании, которая приняла решение о миграции в public cloud Azure. У них около 2000 серверов и 4 дата центра на разных континентах. Мы делаем для клиента разработку лэндинг зоны, ассесмент инфраструктуры и их приложений, осуществляем миграцию приложений в облако Azure.
Таких проектов в практике много, все они масштабные, интересные и дают возможность специалистам поработать с лидерами мировых рынков в различных сферах.
Личный челлендж
Сейчас у меня уже большой опыт работы с крупными компаниями, на счету множество проектов для важных клиентов. Но, если вы спросите меня, какой из них был самым сложным, то я честно скажу — один из первых, на которые я зашел вместе с командой EPAM. Моим challenging project стал именно тот, во время работы над которым сформировалась наша практика. Тогда я работал на позиции Senior software engineer и впервые столкнулся с ролью Delivery manager (сейчас уже правильнее говорить Service Delivery manager).
Мы делали миграцию для крупного ритейл-клиента, не было прорыва с точки зрения технологического стека, но, для меня, несмотря на то что я знаком с этой областью и имел опыт в ритейле, это был большой вызов. Почему? Потому что мне, тогда инженеру, пришлось развивать себя и делать первые шаги в управлении.
Чемодан-вокзал-самолет, командировка к клиенту, presale и старт проекта, discovery, миграция — команда справилась с работой за полтора года. Главная сложность была в том, что это крупный клиент, у которого только в России было около 1000 магазинов — достаточно большой scale. Сложнее всего было синхронизироваться по времени. В России на тот момент насчитывалось около 12 часовых поясов, а наша команда была распределенной (Казахстан, Беларусь и т. д.) — разница во времени усложняла работу инженерам и создавала множество трудностей в управлении командой. Но, мы справились — проект был успешным, мне удалось развить в себе менеджерские навыки, а команда стала ядром, на базе которого впоследствии сформировался наш первый Azure Unit.
Обучение и карьерный рост
В дисциплине Azure DevOps перед инженерами всегда стоят интересные и нетривиальные задачи, требующие непрерывного развития. Мы стараемся сформировать в практике дружескую атмосферу, где каждый член команды готов поделиться знаниями и опытом с коллегами. Так сложилось, что люди приходят к нам, растут и развивают свои таланты, а мы поддерживаем их в этом стремлении: инициируем и совершенствуем программы обучения для специалистов всех уровней.
Есть курсы для тех, кто желает войти в практику, а есть и для тех, кто планирует развиваться в ней:
«Hire to Train» — индивидуальная модульная менторинг программа, за прогрессом в которой следят тренеры (специалисты практики Azure в EPAM): оказывают помощь, консультируют и проверяют задания. План обучения составляется с учетом уровня знаний и опыта каждого отдельного кандидата. Основные модули: Docker и Kubernetes, Azure DevOps Services и Azure Public Cloud. Если обучающийся уже хорошо знаком с одним из них — этот блок исключается. Программа открыта в тестовом варианте с 2020 года и уже более 30 специалистов успешно завершили обучение и работают в проектах по всему миру. Курс создан для системных инженеров с опытом работы с компьютерными сетями и серверами, экспертизой в базах данных и операционных системах, уровнем английского языка не ниже B1. Программа позволяет овладеть необходимыми инструментами и навыками для работы c Azure Cloud по DevOps направлению (Infrastructure as code, Continuous Delivery, Containerization) и успешно пройти собеседование на позицию Azure DevOps инженера в проекты для крупных клиентов EPAM.
В Azure практике существует несколько бесплатных программ, для обучения по направлению DevOps с «нуля», окончив которые студенты получают возможность пройти стажировку в лаборатории (DevOps Lab). Найти подходящий курс или зарегистрироваться на практику в лаборатории удобнее всего на сайте EPAM Training Center.
Техническая экспертиза, которую развивает практика, поддерживается бесплатными квалификационными программами по направлениям Azure Cloud и разработке Microsoft, а также Kubernetes и Terraform.
Приветствуется участие инженеров в акселераторах (research&development), так как они дают возможность работать частично или full-time над созданием продуктов проводить исследования новых технологий, появляющихся в облаке. Благодаря этому команда постоянно находит что-то новое и полезное для себя и для клиентов.
Комьюнити и собственные разработки
Самая продуктивная команда та, где налажено общение и обмен опытом, поэтому в наши дни невозможно не признавать силу нетворкинга и комьюнити.
У Azure есть свое собственное сообщество – «Azure times», которое регулярно проводит мероприятия, где команда делится новыми фишками и обсуждает обновления в облаке.
А в специальном «Exellence-центре» практики инженеры обмениваются опытом и знаниями, собирают best practices, на основе которых мы создаем собственные уникальные продукты.
Например, в скором времени практика Azure в EPAM планирует совместно с Microsoft выпустить на рынок два собственных продукта (о которых я уже упоминал):
Cloud native pipelines — посвящен CI/CD решению на базе Azure DevOps Service. Эта разработка будет одинакова удобна в применении как для клиентов, только начинающих работу с CI/CD, так и для тех, кто использует Azure DevOps, но сталкивается с проблемами масштабирования и менеджмента. В новом решении проблемы такого характера были учтены и проработаны.
Azure Landing Zone — нацелен на построение Landing Zone для новых приложений, которые мигрируют в Azure. Подойдет такое решение для клиентов, чьи приложения уже существуют в Azure, но возникают проблемы управления инфраструктурой.
О настоящем и будущем
2020 год и пандемия многое изменили как для команды, так для компании и бизнеса, да и для мира в целом. Новая реальность создала предпосылки для ускоренного развития нашей практики. С переходом большинства привычных процессов в онлайн и скачком спроса на ИТ услуги, инфраструктуру —публичные облака стали набирать популярность. Буквально в первые месяцы пандемии у Azure и других клаудов не хватало мощностей, чтобы удовлетворить спрос.
Такой интенсивный рост интереса к миграции в публичные облака положительно сказался на развитии дисциплины. На данный момент количество проектов так велико, что потребность в инженерах, работающих в направлении Azure выше, чем количество таких специалистов в компании, да и на рынке в целом. Сейчас только у нас более 200 открытых позиций в этом направлений. На каждого инженера в практике приходится около 10 предложений.
Если говорить о будущем, то я уверен, что физические границы между странами, как некий ограничитель для найма вскоре полностью нивелируются. Поэтому уже сейчас мы активно работает над тем, чтобы практика включала в себя еще больше локаций — все 40+ стран, в которых сегодня работает EPAM.
С точки зрения технологий, как уже упоминал ранее, во время пандемии сформировался новый тренд — cloud native. Думаю, он не угаснет и интерес к этой технологии и дальше будет набирать обороты. Практика будет еще больше вовлечена в разработку клауд нативных приложений и чаще будет сталкиваться с использованием подобных сервисов в операционной деятельности.
Идеальный DevOps-инженер для практики Azure
В связи с большим демандом и множеством открытых позиций, в том числе таких, где доступны обучение и менторинг, мне бы хотелось сказать, что наша команда будет рада видеть талантливых людей в наших рядах. На данном этапе мы в поиске коллег, которые идеально подойдут нашей практике.
Какими знаниями нужно обладать, чтобы попасть в ряды Azure DevOps’ов? Мы с командой постоянно думаем над портретом такого человека, рисуем его — а получается мифическое существо с четырьмя руками и двумя головами. Дело в том, что нужно владеть достаточно большим инструментарием, который включает Windows и Linux миры, знание сетей, умение автоматизировать, навыки осуществления миграции и многое другое. Количество требуемых скиллов огромное.
Но если без шуток, то необходимый минимум — это Azure и его сервисы, навыки Infrastructure as Code, знание Azure Resource Manager и Terraform. Не обойтись и без основ — потребуются общие базовые инжиниринговые скиллы: сети, базы данных и веб-сервера, скриптинг, PowerShell, python. Важно владеть основными платформами Kubernetes и Doсker, а также иметь навыки работы с сервисными CI/CD решениями.
Если говорить о личных качествах, то это, в первую очередь, желание и умение обучаться. Индустрия сейчас меняется крайне быстрыми темпами, сервисы постоянно обновляются, видоизменяются, если остановить процесс обучения сегодня, то уже через пару лет навыков будет недостаточно, чтобы быть успешным в своей сфере.
В целом, выбор проектов и ролей на них настолько велик, что есть возможность найти подходящее и комфортное место для каждого кандидата.
Даже тем, кто считает себя обладателем «гуманитарного» ума, стоит попробовать свои силы в DevOps. «Математический» образ мышления не приобретается при рождении, он нарабатывается в процессе обучения. Поэтому стать Azure DevOps инженером может каждый, кто приложит достаточно усилий, независимо от пола, первичного образования. Если есть желание развиваться в этом направлении — у вас получится. И таких примеров в нашей практике много.