Наталья Габрух 31 октября 2020

🗺 Дорожная карта инженера DevOps

Путь становления специалиста DevOps суров и тернист, но мы систематизировали для вас информацию с помощью дорожной карты. Разбираемся поэтапно, как стать инженером DevOps.
🗺 Дорожная карта инженера DevOps
∞ Дорожная карта DevOps-инженера в 2023 году

Мы уже рассказывали о профессии инженера DevOps и как ее можно освоить. Другие публикации по теме доступны на сайте Proglib.io.

Что такое DevOps?

DevOps – это методология, которая позволяет автоматизировать и интегрировать процессы между разработчиками программного обеспечения и ИТ-командами. Благодаря этому они создают, тестируют и выпускают качественные продукты в короткие сроки.

Главная задача методологии DevOps вовремя предоставить необходимую технологию бизнес-подразделениям и наладить ее бесперебойную работу.

Схема работы DevOps
Схема работы DevOps

Сокращение DevOps расшифровывается, как development и operations. «Dev» используется как сокращение, обозначающее работу программистов и всех, кто задействован в разработке продукта. Например, менеджеров, тестировщиков и других специалистов.

«Ops» – это общий термин, который характеризует работу системных администраторов, операционного персонала, администраторов баз данных, сетевых инженеров, специалистов по безопасности и других.

В итоге, DevOps – это командные усилия сотрудников, занимающихся разработкой, операциями и тестированием.

Схема взаимодействия в методологии DevOps
Схема взаимодействия в методологии DevOps

В DevOps нет junior-инженеров?

Обсуждения на Reddit и StackOverflow часто касаются темы о младших инженерах DevOps. Многие считают, будто их не существует, а мир разработки довольно суров к тем, кто пытается прорваться на арену DevOps.

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

Основные сложности для новичка в DevOps связаны со следующими факторами:

  • жесткими требованиями и высоким уровнем ответственности. Для младшего специалиста решить все проблемы настройки среды разработки DevOps будет крайне непросто, например:
  1. развернуть среду разработки, тестирования, предпродажной подготовки и производства;
  2. настроить передачу данных между средами;
  3. разработать механизмы резервного копирования и развертывания;
  4. осуществить мониторинг с прогнозированием, визуализацией данных и ведением журнала;
  5. задокументировать настройки и запросы на изменение;
  6. сформировать отчетность перед инженерным менеджментом, и прочее.
  • отсутствием необходимого опыта

(специалист DevOps с опытом может настроить полностью автоматическую систему, выявить сбои еще до их возникновения и устранить проблемы с минимальным воздействием. Младший специалист тратит слишком много времени на самообразование, которое часто сводится к поиску в Google, ему непросто принимать правильные решения в сложной ситуации);

  • отсутствием формального образования

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

Дорожная карта специалиста DevOps

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

Дорожная карта специалиста DevOps
Дорожная карта специалиста DevOps

Изучите язык программирования

Начать стоит с изучения одного из предложенных на дорожной карте языков программирования: Python, Ruby, Go, Rust, C, C++, и т.д. Главное не их количество, а общее понимание принципов работы.

Языки программирования и основные концепции ОС
Языки программирования и основные концепции ОС

Автор рекомендует начать изучение с языка Go, также известного как Golang. Go – это статически типизированный язык программирования, который был разработан внутри компании Google. В отличие от динамически типизированного языка, код проверяется перед запуском, а не после.

Плюсы:

  • легкость и доступность для изучения (простой синтаксис);
  • производительность и скорость работы (Go компилируется в машинный код);
  • возможность выявления ошибок на ранних этапах;
  • возможность написания не громоздкого кода;
  • большое количество библиотек (библиотека Go легко читается, отличается качеством, благодаря чему можно выполнить практически любую поставленную задачу);
  • отсутствие наследования, что значительно упрощает поддержку приложений на Go;
  • наличие инструмента, который помогает стандартизировать код – go fmt.

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

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

Возможности языков Go и Python мы сравнивали в одном из материалов.

Изучите основные аспекты операционных систем

Следующий этап связан с изучением основных концепций ОС, необходимых для инженера DevOps.

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

Получите навыки администрирования серверов

Инженеру DevOps необходимо управлять всеми типами серверов. Часто речь идет о целом парке: их может быть больше ста и состоят они из экземпляров ОС Linux (очень редко из экземпляров других ОС).

Поэтому для начала мы советуем уделить особое внимание Linux. Если у вас мало опыта работы с данной ОС, начните с Ubuntu. Изучите основные команды, инструменты для мониторинга, настройки и разберитесь с работой терминала.

Сервера, сети и их безопасность
Сервера, сети и их безопасность

Изучите сети и безопасность

Знание сетей, безопасности и базовых протоколов необходимо инженеру DevOps, так как он должен настраивать VPC и группы безопасности/брандмауэры, а также использовать различные протоколы.

Например:

  • HTTP (протокол передачи гипертекста);
  • SSL (обеспечивает защищенный обмен данными);
  • SSH (сетевой протокол, позволяющий производить удаленное управление операционной системой);
  • FTP (протокол передачи файлов);
  • SMTP (простой протокол передачи почты) и другие.

Важно разобраться, как они настраиваются на уровне сервера и что влияет на безопасность работы сетей.

Еще обязательно придется работать с веб-серверами, поэтому необходимы знания и практический опыт взаимодействия с серверами обратного прокси, такими как Nginx и/или Apache.

Изучите инфраструктуру как код

Инфраструктура как код (IaC) – это управление сетями, виртуальными машинами, балансировщиками нагрузки и топологией подключения с использованием методов разработки кода и программного обеспечения, таких как контроль версий и непрерывная интеграция.

Модель облака, управляемая API, позволяет разработчикам и системным администраторам взаимодействовать с инфраструктурой программно и масштабно, вместо того, чтобы вручную настраивать ресурсы. Инженеры могут управлять инфраструктурой с помощью инструментов на основе кода и использовать ее, как они обрабатывают код приложения.

Инфраструктура как код
Инфраструктура как код

Важно обратить внимание на работу с контейнерами (автор советует использовать ПО Docker), изучить управление конфигурацией (с помощью системы управления конфигурациями Ansible), оркестрирование контейнеров (это лучше всего делать с Kubernetes) и управление инфраструктурой с помощью программного инструмента с открытым кодом Terraform.

Изучите некоторые инструменты CI/CD

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

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

Как специалист DevOps, вы должны изучить и знать основные инструменты CI/CD:

Научитесь мониторить программное обеспечение и инфраструктуру

Компании отслеживают метрики, чтобы увидеть, как производительность приложений и инфраструктуры влияет на работу конечного пользователя их продукта.

Собирая, классифицируя, а затем анализируя данные, которые создаются приложениями и инфраструктурой, организации могут сделать вывод, как изменения или обновления влияют на пользователей.

Программное обеспечение и инфраструктура
Программное обеспечение и инфраструктура

Для инженера DevOps важно собирать отзывы и внедрять изменения, для этого необходимы такие инструменты мониторинга, как Nagios, Prometheus, Grafana.

Изучите облачных провайдеров

Будущему специалисту DevOps важно разобраться с особенностями работы облачных провайдеров. Для начала обратите внимание на AWS – лидера в сфере облачных технологий. При необходимости уделите внимание Azure, Google Cloud, Digital Ocean и другим.

Облачные провайдеры
Облачные провайдеры

Куда и как расти специалисту DevOps?

Чтобы войти в профессию, необходим технический бэкграунд. Отличный вариант – перейти в DevOps из системных администраторов, специалистов по эксплуатации, тестированию или разработчиков.

Если необходимого опыта у вас нет:

  • пройдите базовый курс по администрированию ОС Linux;
  • изучите языки программирования Go и/или Python (напишите для начала несколько скриптов);
  • разберитесь в принципах ООП (объектно-ориентированное программирование);
  • обратите внимание на общий цикл разработки продукта.
  • изучите базовые протоколы: HTTP, SSL, SSH и т.д.;
  • обратите внимание на основные инструменты CI/CD: Jenkins, GitLab CI и т.д.

Если вы уже имеете опыт в профессии, советуем записаться на курсы, чтобы развить необходимые навыки и получить недостающие знания.

Карьерный путь инженера может выглядеть так:

  • развитие специалиста DevOps в отрасли с углублением в специализацию (параллельно можно изучать похожие технологии);
  • системным администраторам можно перейти в разработчики, или наоборот (если вам интереснее работать с инфраструктурой, нежели с кодом);
  • можно переквалифицироваться в специалиста по безопасности DevSecOps (это методология разработки ПО, которая подразумевает контроль и безопасность на всех этапах создания приложений);
  • рост в направлении проектного менеджмента, системной архитектуры или тестирования.

Заключение

Путь развития в DevOps долгий и непростой, но определенно стоит потраченных усилий, чтобы овладеть одной из самых высокооплачиваемых и востребованных на рынке ИТ-профессий.

***

Хочу научиться программировать с нуля, но не знаю, с чего начать. Что делать?

Можно учиться самостоятельно (долго) или пойти на курсы с преподавателями (быстро). Плюс нужно учитывать, что джунов много, конкуренция выше и работодатели повышают порог вхождения при найме на работу. Чтобы получить актуальные знания, мы в proglib.academy запустили курсы:

  • Основы программирования на Python.
  • Профессия Python-разработчик.
  • Алгоритмы и структуры данных.
  • Математика для Data Science.
  • Профессия Data Science.
  • Frontend Basic: принцип работы современного веба.
  • Профессия Фронтенд-разработчик.
  • Обработка естественного языка. Полный курс.

На подходе еще больше 10 курсов для взрослых и детей.

МЕРОПРИЯТИЯ

Комментарии

ВАКАНСИИ

Добавить вакансию
Senior Java Developer
Москва, по итогам собеседования
Разработчик С#
от 200000 RUB до 400000 RUB

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ