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

Изучаем основы

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

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

Язык программирования, система контроля версий

Изучите один или несколько языков программирования. Не обязательно осваивать C++ до уровня middle, ЯП нужен для написания скриптов автоматизации. Для этого подходят простые в освоении мультипарадигменный Python или JavaScript с фреймворком Node.js, за рубежом популярны Rust, Ruby, Go.

Из литературы можете начать с:

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

Источники знаний:

Изучение концепции работы ОС, Linux

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

При использовании Windows понадобится знание командной строки и PowerShell, Linux – терминала. Можете начать с простейшего дистрибутива – Ubuntu, для продвинутых пользователей стоит остановиться на BSD или Debian.

Литература для новичков:

Сетевые протоколы, компьютерные сети

Для работы веб-приложений, облачных и прочих сетевых сервисов инженеру следует знать принципы передачи данных по интернету, особенности функционирования различных устройств, взаимодействие между ними. Изучите:

  • принцип работы брандмауэров;
  • DNS:
  • модель OSI;
  • IP-адреса;
  • порты;
  • сетевые протоколы (FTP, SMTP, HTTP), шифрование (HTTPS, SSL, IPSec, VPN)

Начать можно с материалов:

Настройка веб-сервера

Управление сервером и мониторинг его работы нужны для создания безопасных серверов, повышения эффективности, поддержки их функционирования, масштабирования экосистемы в соответствии с потребностями бизнеса. Какие нужны знания:

  • прямые / обратные прокси;
  • управление Apache, IIS, Nginx;
  • кэширующие серверы.

Для ознакомления:

  • Исчерпывающее руководство Apache.
  • Подробно о Nginx

Контейнеризация

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

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

Где почерпнуть знания:

Инфраструктура как код (IaC)

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

Введение в тематику:

CI/CD

DevOps-инженеру нужны умения непрерывной интеграции и развёртывания – способ доставки приложений заказчику путём максимального внедрения автоматизации на всех этапах жизни программного продукта. Научитесь настраивать серверы CI/CD, автоматизировать запуск, тестирование кода, разрабатывать средства управления пакетами. Инструменты – GitLab, Jenkins, читайте материалы по ним и CI/CD.

Учебное пособие по CI/CD.

Мониторинг, наблюдение

Разработку и функционирование готового продукта нужно регулярно мониторить, тестировать в рабочей среде, обнаруживать и решать проблемы. Для этого используют Grafana и Prometheus – изучите их, разберитесь с мониторингом микросервисов.

Документы:

Дальше на практике ознакомьтесь со средствами мониторинга приложений: Jaeger, New Relic, Instana.

Облачные сервисы

Облако работает на серверах ЦОДа, которые обеспечивают функционирование приложений. DevOps-инженер должен знать инфраструктуру основных или используемых в деятельности поставщиков услуг: AWS, Azure.

Основы Microsoft Azure.

Пособия по AWS.

Способы разработки приложений

Для плодотворного сотрудничества с разработчиками программного обеспечения ознакомьтесь с этапами и методиками их создания, средствами автоматического тестирования ПО, например, Scrum. Рекомендуемые источники:

Это лишь основы. Специалисту в зависимости от сферы деятельности могут понадобиться следующие инструменты отслеживания работы: Asana, Jira; анализа исходного кода: Veracode, SonarQube.

Дорожная карта для DevOps-инженеров

Перспективы

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

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

Обучение на DevOps

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

Полезные ссылки

Дополнительно можете ознакомиться со следующими источниками знаний по методологии DevOps:

YouTube.

Telegram:

FAQ

Какова ценность DevOps?

Методика ускоряет и повышает эффективность выпуска программного обеспечения, которое соответствует всем требованиям бизнеса.

Основные задачи DevOps?

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

Где можно работать, освоив принципы DevOps?

Методология востребована везде, где работают группы специалистов в сфере разработки, развёртывания, мониторинга и обслуживания программного обеспечения. Это десятки отраслей IT, производство, банковская сфера.

Сколько зарабатывает DevOps-инженер?

Дорожная карта для DevOps-инженеров

Доход зависит от работодателя, опыта, знаний, навыков специалиста, успешности его работы и множества иных критериев. Новички могут получать 60 — 80 тысяч рублей, доход эксперта достигает 250 — 300+ тысяч рублей ежемесячно. В среднем по стране он колеблется в пределах 120 – 160 тысяч руб./мес.