DevOps – не профессия, а концепция организации производственных процессов, сборки и внедрения программных продуктов в живую экосистему. Она подразумевает тесное сотрудничество между разработчиками и обслуживающим персоналом, который занимается информационно-технической поддержкой ПО. Эти и сопутствующие задачи выполняет так называемый DevOps-инженер. Рассмотрим, какие знания и навыки могут потребоваться специалисту для успешной деятельности.
Изучаем основы
Освоить основы DevOps человеку без предварительной технической подготовки сложно. Инженер должен владеть знаниями в десятке сфер деятельности, без которых невозможно эффективно предотвращать организационную разрозненность.
Ссылки в публикации приведены на лучшие, преимущественно русскоязычные, материалы, но инженер обязан знать английский язык для уверенного чтения технической литературы.
Язык программирования, система контроля версий
Изучите один или несколько языков программирования. Не обязательно осваивать C++ до уровня middle, ЯП нужен для написания скриптов автоматизации. Для этого подходят простые в освоении мультипарадигменный Python или JavaScript с фреймворком Node.js, за рубежом популярны Rust, Ruby, Go.
Из литературы можете начать с:
- Свейгарт Эл – Автоматизация рутинных задач с помощью Python.
- Гифт, Берман, Деза, Георгиу — Python и DevOps: Ключ к автоматизации Linux.
- Чоу Эрик — Python для сетевых инженеров.
Система контроля версий (рекомендуем Git) хранит ресурсы разработчиков в собственном репозитарии: код, файлы. Git позволяет управлять исходниками, отслеживать изменения в программном коде, организовать совместную работу над проектом. Для начала разберитесь с теоретическими вопросами платформы, основными командами и запросами.
Источники знаний:
Изучение концепции работы ОС, Linux
Операционная система – мост между пользователем и оборудованием. Она позволяет запускать и настраивать программы, управлять работой аппаратных компонентов компьютера. DevOps-инженеру нужно уверенно работать с командной строкой, отказавшись от графического интерфейса, понимать принципы работы операционных систем: потоки, параллелизм, работа с памятью, управление вводом / выводом, службами, её запуском.
При использовании Windows понадобится знание командной строки и PowerShell, Linux – терминала. Можете начать с простейшего дистрибутива – Ubuntu, для продвинутых пользователей стоит остановиться на BSD или Debian.
Литература для новичков:
- Попов А. В. – Введение в Windows PowerShell.
- Справочник команд Linux.
- Настольная книга по администрированию Debian.
- Робачевский, Немнюгин, Стесик – Операционная система UNIX.
Сетевые протоколы, компьютерные сети
Для работы веб-приложений, облачных и прочих сетевых сервисов инженеру следует знать принципы передачи данных по интернету, особенности функционирования различных устройств, взаимодействие между ними. Изучите:
- принцип работы брандмауэров;
- DNS:
- модель OSI;
- IP-адреса;
- порты;
- сетевые протоколы (FTP, SMTP, HTTP), шифрование (HTTPS, SSL, IPSec, VPN)
Начать можно с материалов:
- Келдыш Н — Системная защита информации компьютерных сетей.
- Бондарев В.В. — Анализ защищенности и мониторинг компьютерных сетей.
- Основы TCP/IP.
- Лора А. Чеппел, Эд Титтел – TCP/IP. Учебный курс.
- Основы организации OSI.
Настройка веб-сервера
Управление сервером и мониторинг его работы нужны для создания безопасных серверов, повышения эффективности, поддержки их функционирования, масштабирования экосистемы в соответствии с потребностями бизнеса. Какие нужны знания:
- прямые / обратные прокси;
- управление Apache, IIS, Nginx;
- кэширующие серверы.
Для ознакомления:
Контейнеризация
Контейнеризация позволяет упаковывать код с зависимостями, который одинаково быстро работает на разных платформах. Для начала хватит знаний работы с технологией Docker – лёгкий пакет с необходимыми для контейнеризации инструментами и библиотеками.
Также DevOps-инженеру нужны знания оркестровки контейнеров – процесса автоматизации развёртывания, управления, масштабирования и сетевого взаимодействия контейнеров. Они помогут разворачивать приложения в разных средах.
Где почерпнуть знания:
- Моуэт Эдриен – Использование Docker.
- Kubernetes в действии.
- Вьяс Джей, Лав Крис — Kubernetes изнутри.
- Гадзурас Эммануил — Docker Compose для разработчика.
- Арундел, Домингус — Kubernetes для DevOps: развертывание, запуск и масштабирование в облаке.
- Продвинутый курс по Docker.
- Лиз Райс – Безопасность контейнеров. Фундаментальный подход к защите контейнеризированных приложений.
Инфраструктура как код (IaC)
IaC – подход к управлению и описанию инфраструктуры центра обработки информации через файлы конфигурации вместо ручного редактирования конфигурации серверов. Самый востребованный инструмент – Terraform – поможет подготовить инфраструктуру, управлять её настройками.
Введение в тематику:
CI/CD
DevOps-инженеру нужны умения непрерывной интеграции и развёртывания – способ доставки приложений заказчику путём максимального внедрения автоматизации на всех этапах жизни программного продукта. Научитесь настраивать серверы CI/CD, автоматизировать запуск, тестирование кода, разрабатывать средства управления пакетами. Инструменты – GitLab, Jenkins, читайте материалы по ним и CI/CD.
Мониторинг, наблюдение
Разработку и функционирование готового продукта нужно регулярно мониторить, тестировать в рабочей среде, обнаруживать и решать проблемы. Для этого используют Grafana и Prometheus – изучите их, разберитесь с мониторингом микросервисов.
Документы:
- Что такое мониторинг.
- Мониторинг микросервисов.
- Документация по Grafana.
- Руководство по Prometheus.
Дальше на практике ознакомьтесь со средствами мониторинга приложений: Jaeger, New Relic, Instana.
Облачные сервисы
Облако работает на серверах ЦОДа, которые обеспечивают функционирование приложений. DevOps-инженер должен знать инфраструктуру основных или используемых в деятельности поставщиков услуг: AWS, Azure.
Способы разработки приложений
Для плодотворного сотрудничества с разработчиками программного обеспечения ознакомьтесь с этапами и методиками их создания, средствами автоматического тестирования ПО, например, Scrum. Рекомендуемые источники:
- Методология разработки Scrum.
- Автоматизация тестирования.
- Мирко Херинг — Действенные практики для трансформации традиционных ИТ-организаций.
Это лишь основы. Специалисту в зависимости от сферы деятельности могут понадобиться следующие инструменты отслеживания работы: Asana, Jira; анализа исходного кода: Veracode, SonarQube.
Перспективы
DevOps – инженер, который получает неплохие деньги. Из-за большого количества компетенций, знаний, навыков и ответственности таких людей порой некем заменить. Часто они должны всегда оставаться на связи, иногда даже во время отпуска и выходных. Кому-то нравится годами сидеть на одном месте, другие после нескольких лет работы меняют сферу деятельности на:
- сетевое или системное администрирование;
- программирование, тестирование ПО;
- кибербезопасность;
- DevSecOps – метод разработки приложений со строгим контролем их безопасности на каждом этапе;
- проектный менеджмент;
- системную архитектуру.
Обучение на DevOps
Самому освоить основы DevOps – методологии организации производственных и бизнес-процессов – без прочного бэкграунда сложно. Обычно инженерами стают программисты, специалисты службы поддержки, проектные менеджеры, специалисты в сфере виртуализации, облачных вычислений, развёртывания и автоматизации разных этапов производства ПО. Рекомендуем вам подборку лучших курсов для DevOps-инженеров
Полезные ссылки
Дополнительно можете ознакомиться со следующими источниками знаний по методологии DevOps:
- Форсгрен, Хамбл, Ким — Ускоряйся! Наука DevOps.
- Джульен Вехен — Безопасный DevOps.
- Дэвис, Дэниелс — Философия DevOps. Искусство управления IT.
YouTube.
- Инструменты и практика.
- Интенсив, знакомство с DevOps.
- Разговоры о DevOps и IT.
- Конференции по интеграции разработки, тестирования, эксплуатации ПО.
- DevOps с нуля.
Telegram:
- DevOps Moscow – московское сообщество.
- DevOps_Ru – крупный чат.
- Devops Deflope – новостной канал.
- DevOps&SRE – огромная библиотека.
- DevSecOps – материалы о безопасности.
FAQ
Какова ценность DevOps?
Методика ускоряет и повышает эффективность выпуска программного обеспечения, которое соответствует всем требованиям бизнеса.
Основные задачи DevOps?
Способ доставки приложений DevOps ускоряет развёртывание, выход готового продукта на рынок за счёт внедрения автоматизации, постоянного тестирования, проверки безопасности и мониторинга приложений.
Где можно работать, освоив принципы DevOps?
Методология востребована везде, где работают группы специалистов в сфере разработки, развёртывания, мониторинга и обслуживания программного обеспечения. Это десятки отраслей IT, производство, банковская сфера.
Сколько зарабатывает DevOps-инженер?
Доход зависит от работодателя, опыта, знаний, навыков специалиста, успешности его работы и множества иных критериев. Новички могут получать 60 — 80 тысяч рублей, доход эксперта достигает 250 — 300+ тысяч рублей ежемесячно. В среднем по стране он колеблется в пределах 120 – 160 тысяч руб./мес.