Карьера в IT #гайд

Как перейти из системного администрирования в DevOps

Мы расскажем, как системный администратор может стать DevOps-специалистом.
22 мая 2019 Читать ~ 7 минут

Содержание:

  1. DevOps как концепция
  2. DevOps как профессия
  3. Что нужно знать системному администратору, чтобы стать DevOps-инженером
  4. Когда приступать к поиску работы DevOps-инженером
  5. Карьерные перспективы в DevOps

DevOps-инженеров не выпускают вузы и редко готовят с нуля специализированные курсы – на новую для IT позицию большинство специалистов приходят из системного администрирования. Такой карьерный маневр позволяет сисадмину повысить профессиональную квалификацию, не переходя в разработку. Если вас заинтересовала эта возможность, то статья поможет вам сформировать представление о концепции DevOps и работе DevOps-инженера.

DevOps как концепция

Как DevOps меняет разработку ПО

Когда-то Agile существенно изменил процесс разработки в IT, а сегодня на индустрию так же сильно влияет DevOps. Первыми применять концепцию начали крупные корпорации, вроде Amazon и Facebook, которые стремились внедрять новые сервисы в свои продукты как можно быстрее. Сегодня DevOps практикуют компании по всему миру, что помогает им адаптироваться к современным IT-тенденциям: усложнению IT-инфраструктуры, переходу от физических платформ к виртуализации, необходимости частых обновлений приложений в ответ на запросы пользователей.

Несмотря на популярность DevOps, все еще не существует единой трактовки самого понятия. Чаще всего DevOps описывают как современную IT-методологию, когда фазы разработки и эксплуатации объединяются в один процесс для ускорения доставки ПО.

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

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

Практики DevOps

Новая концепция – это не ребрендинг широко известного подхода Agile. Гибкие методологии ускоряют процесс разработки продукта, а DevOps позволяет быстрее запускать новые релизы в рабочем окружении. Таким образом, DevOps дополняет Agile, позволяя ускорить процесс создания и обновления программного продукта, обеспечивая при этом его высокое качество. DevOps обозначает не только культуру взаимоотношений между командами разработки, тестирования и эксплуатации, но и конкретные технологические практики.

Непрерывная интеграция (Continuous Integration) – процесс, при котором разработчики ежедневно синхронизируют новую часть кода с основной веткой в системе контроля версий. Как правило, после сборки проекта запускаются автоматизированные тесты. Если будет обнаружена ошибка, то разработчик сразу получит оповещение и сможет приступить к исправлению дефекта.

Непрерывная доставка (Continuous Delivery) – практика, при которой проект после сборки попадает в тестовую среду, где проходит финальное тестирование перед установкой на серверах заказчика. В результате команда получает готовый к развертыванию релиз.

Непрерывное развертывание (Continuous Deployment) – процесс работы с релизом идет так же, как при непрерывной доставке. Но в данном случае изменения в исходном коде, как только проходят через этап QA, автоматически (без участия разработчиков) развертываются на рабочих серверах. В результате заказчик и пользователи получают обновления программы сразу после того, как они будут подготовлены.

DevOps как профессия

Когда менеджмент решает перейти к DevOps, команде IT-проекта нужно освоить конкретные практики и новые инструменты. В таком случае придется нагружать дополнительными задачами либо программистов, либо системных администраторов. Лучше нанять профессионала, который уже понимает суть DevOps и может помочь настроить все необходимые процессы. Так IT-сектору понадобился специалист с новым сочетанием навыков на стыке системного администрирования и программирования – DevOps-инженер. В Беларуси, по данным портала dev.by, DevOps-инженеры зарабатывают в среднем в два раза больше, чем системные администраторы. Такая разница обусловлена тем, что компетентный DevOps-инженер может повысить эффективность всего процесса разработки и зона его ответственности шире, чем у системного администратора.

В начале проекта DevOps-инженер может проектировать необходимую IT-инфраструктуру. Затем  он контролирует, чтобы среда разработки и тестирования соответствовали условиям, в которых будет работать готовый программный продукт. Но в основном DevOps-инженер работает над проектом на этапе эксплуатации.

Если спросить DevOps-инженера, чем он занимается, то, скорее всего, он ответит «автоматизацией». Под таким определением скрывается целый спектр задач, которые можно условно разделить на три блока:

  • Автоматизация процессов доставки релизов из производственной среды в эксплуатацию.
  • Управление физическими и виртуальными серверами и их конфигурацией.
  • Мониторинг состояния инфраструктуры и поведения приложений.

Одна из основных задач DevOps-инженера – настроить платформы и инструменты для непрерывной интеграции, доставки или развертывания кода. Для автоматической сборки проекта и развертывания на серверах могут использоваться программы Jenkins, TeamCity, GoCD или Bamboo. DevOps-инженер пишет скрипт с последовательностью команд, которые один из этих инструментов автоматически выполняет на серверах.

Раньше системные администраторы настраивали каждый сервер вручную. Сегодня DevOps-инженер следует подходу «инфраструктура как код» (IaC), когда все скрипты для настройки серверов, как и код разработчиков, сохраняются в системе контроля версий. Удаленно координировать работу всех физических или виртуальных серверов можно через системы Chef, Puppet, Ansible или Kubernetes.

Для мониторинга состояния инфраструктуры DevOps-инженер может использовать системы Zabbix, Nagios или Prometheus. Например, Zabbix позволяет контролировать работу серверов, сетевого оборудования, баз данных и веб-приложений. 

Что нужно знать системному администратору, чтобы стать DevOps-инженером

Опыт системного администратора – хорошая отправная точка для карьеры DevOps-инженера. Осталось дополнить этот бэкграунд специфическими для DevOps навыками. Освоить их вы можете самостоятельно или на дистанционных курсах. Например, в GeekBrains на факультете DevOps вы можете выбрать обучение на полгода или год в зависимости от ваших навыков.

Опыт администрирования ОС

Чтобы практиковаться в работе с операционной системой Linux, можно установить дистрибутивы Fedora или Ubuntu на своем компьютере. Если хотите в целом подтянуть свои знания в администрировании, то можно записаться на курсы. Например, в Минске в образовательном центре ПВТ программа по Linux длится месяц, а на образовательном портале Microsoft есть бесплатный курс по администрированию Windows Server.

Знание программирования

DevOps-инженеру нужно знать скриптовые языки программирования (Bash, Perl), на которых пишутся сценарии для настройки автоматизации. Чтобы повысить квалификацию, можно выучить один из языков общего назначения, например, Java или Python. Это поможет лучше понимать код разработчиков.

Понимание работы с облачными сервисами

Сегодня наиболее востребованы облачные платформы от Amazon и Microsoft. Основные сервисы AWS, с которыми работает DevOps-инженер, – EC2, VPC, S3, RDS, ELB, EBS. Дополнительно можно изучить ECS, CloudFormation, OpsWorks, CloudWatch. Если вы еще не работали с AWS, то можете зарегистрироваться на официальном сайте – и получите годовой бесплатный доступ ко многим продуктам компании. Узнать больше об инструментах платформы поможет специализированный портал. Microsoft в конце 2018 года расширила список сервисов для платформы Azure DevOps. Для знакомства с ними можно выбрать бесплатные курсы на образовательном портале Microsoft.

Навыки работы с контейнерами

Контейнеры – это изолированные структуры, в которых можно развертывать приложения независимо от основной операционной системы. По сравнению с виртуальными машинами, контейнеры меньше весят и быстрее запускаются. Самый популярный инструмент для работы с контейнерами – Docker. И разработчик, и DevOps-инженер могут одновременно работать в Docker-контейнере. Пока разработчик пишет код самого приложения, DevOps-специалист создает конфигурационные файлы. Для запуска и управления контейнерами используются системы оркестрации, самая популярная из которых – Kubernetes. Разобраться в основах программы можно с помощью онлайн-курса от Linux Foundation.

Знание английского языка

В IT знание английского языка уже давно стало аксиомой. Но для DevOps-инженера это особенно актуально, ведь этот подход востребован в основном на проектах для зарубежных заказчиков, преимущественно из США. Английский пригодится и для самообразования, чтобы вы могли изучать новые технологии, не дожидаясь пока появится соответствующий курс на русском языке. Если в будущем захотите получить профессиональный сертификат (например, AWS Certified DevOps Engineer), экзамен, скорее всего, тоже нужно будет сдавать на английском.

Когда приступать к поиску работы DevOps-инженером

Обязанности DevOps-инженера на проекте сильно зависят от организации, в которой он работает. Многие белорусские компании только начинают вводить в штат эту должность, поэтому не требуют от кандидатов наличия соответствующего опыта. Начинайте искать работу, пока специальность все еще считается новой для нашего рынка.

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

Мы уже упоминали некоторые технологии, которые применяются для DevOps-практик. Ниже представлен более полный список инструментов, встречающихся в вакансиях на позицию DevOps-инженера:

  • Система контроля версий (GitHub, SVN и др.).
  • Программа для непрерывной интеграции (Jenkins, TeamCity, Bamboo и др.).
  • Платформа для автоматизации развертывания ПО (например, Chef, Puppet, GoCD, Ansible).
  • Инструмент для мониторинга (Zabbix, Nagios, Prometheus и др.).
  • Облачная инфраструктура (например, AWS, Microsoft Azure).
  • Инструменты для работы с контейнерами (например, Docker, Kubernetes, Helm).

Вы можете устроиться junior DevOps-инженером – часто вакансии на эту позицию требуют лишь опыта в администрировании или начальных знаний необходимых технологий. Совмещая обучение с работой в компании, вы будете расти в профессии гораздо быстрее.

Карьерные перспективы в DevOps  

DevOps как концепция будет и дальше развиваться, вбирая в себя современные практики разработки и эксплуатации. И ваша карьера в этом направлении может развиваться также динамично. DevOps-инженер хорошо понимает все процессы работы над проектом, поэтому в перспективе может перейти в менеджмент. Например, в США  встречаются вакансии DevOps-менеджера, а вскоре такая позиция может появиться и на нашем рынке.

Владимир Степуро
Директор HR-отдела в Научсофт