Roadmap для DevOps инженеров
В этой статье рассмотрим дорожную карту, как развиваться и что учить для тех, кто хочет стать DevOpsами/Site Reliability Engineerами.

📖 Общие полезные статьи
- 8 best practices по использованию Docker в продакшине
- Выбор стратегии деплоя микросервисов
- Blue-Green Deployment паттерн
- CI/CD
- Архитектура ПО
- Статьи по микросервисам
- Статьи про DevOps практики
- Статьи про паттерны проектирования
- Статьи по дата структурам
🗺️ Изучите язык программирования
Начать стоит с изучения одного из предложенных на дорожной карте языков программирования: Python, Ruby, Go, Rust, C, C++, и т.д. Главным будет базовое понимание какого-то Cи-подобного языка. это вам поможет в будущем читать код верхнеуровнево любого Си-подобного языка.
Что касается Go – это статически типизированный язык программирования, который был разработан внутри компании Google. В отличие от динамически типизированного языка, код проверяется перед запуском, а не после.
Go считается одним из простейших языков программирования для начинающих. Google создали быстро изучаемый язык для того, чтобы быстрее вводить новые команды программистов в работу. Простой синтаксис Go помогает быстро понять чужой код без дополнительных обозначений или комментариев.
Но доминирующим языком для бэкенда остается Python. Roadmap по питону можно найти тут.
📈 Agile DevOps процесc
Стоит так же выучить и Agile процессы. У вас должно быть глубокое понимание когда, как и каким образом встраивать DevOps процесс в вашу разработку.
Так же стоит обратить внимание на следующие статьи:
- Continuous integration vs. continuous delivery vs. continuous deployment
- Статьи по менеджменту
- Статьи по Agile процессам и практикам

💾 Big data решения
Часто девопсам нужно поддерживать BigData решения, схемы ниже описывают основные подходы к распределенным системам
Распределенная файловая система
Существует 3 основных подхода как организовать распределенную файловую систему:
- Один CPU к одному диску
- Параллельное считіваение - Один CPU и много дисков
- Распределенное считывание. Сет серверов из пункта №1

Distributed Database
Существует 2 основных подхода как организовать распределенную базу данных:
- Master-Slave(follower) репликация. В этом случае на Slave (follower) используется для чтения, а мастер для записи.
- Мульти мастер репликация

Distributed Computation
Для распределенных вычислений можно выделить 2 основных подхода:
- Несколько процессоров, которые использует совместную память для общения
- Отдельные компьютеры использующее свои процессоры и память, которые коммуницируют между собой по сети.

🔧 Навыки администрирования серверов
Инженеру DevOps необходимо управлять всеми типами серверов. Часто речь идет о целом парке: их может быть больше ста и состоят они из экземпляров ОС Linux (очень редко из экземпляров других ОС).
Поэтому для начала советую уделить особое внимание Linux. Если у вас мало опыта работы с данной ОС, начните с Ubuntu. Изучите основные команды, инструменты для мониторинга, настройки и разберитесь с работой терминала.
Список ОС которые нужно уметь администрировать
- Windows server
- Ubuntu
- CentOS
- RHEL
- FreeBSD
- OpenBSD
- NetBSD
- Fedora
- Debian
- SuseLinux
Понимать следующие аспекты ОС
- Управление процессами
- Потоки и параллелизм
- Сокеты
- Основы POSIX
- Основы компьютерных сетей
- Управление вводом/выводом
- Виртуализация
- Память/Диски
- Файловые системы
- Управление инициализацией (initd)
- Управление сервисами (systemd)
🕸️ Сети, безопасность и протоколы
Знание сетей, безопасности и базовых протоколов необходимо инженеру DevOps, так как он должен настраивать VPC и группы безопасности/брандмауэры, а также использовать различные протоколы.
- HTTP (протокол передачи гипертекста);
- SSL (обеспечивает защищенный обмен данными);
- SSH (сетевой протокол, позволяющий производить удаленное управление операционной системой);
- FTP (протокол передачи файлов);
- SMTP (простой протокол передачи почты)
- IMAPS
- POP38
- DMARC
- SPF
- Doman Keys
- Перенаправление портов
- IPSec & VPN
- AT-TLS
- OSPF Authentication
- SNMP
- Firewall
- Proxy
🏢 Веб серверы
🏘️ Инфраструктура как код
Инфраструктура как код (IaC) – это по сути настройка и подъем всей инфраструктуры в виде конфигурационных файлов, с помощью которых легко подымать новые серверы и масштабировать старые.
Контейнеры
- Docker – это программная платформа для быстрой разработки, тестирования и развертывания приложений. Docker упаковывает ПО в стандартизованные блоки, которые называются контейнерами. Каждый контейнер включает все необходимое для работы приложения: библиотеки, системные инструменты, код и среду исполнения. Благодаря Docker можно быстро развертывать и масштабировать приложения в любой среде и сохранять уверенность в том, что код будет работать.
- LXC – Linux containers система виртуализации на уровне операционной системы для запуска нескольких изолированных экземпляров операционной системы
Управление конфигурацией
- Ansible – ПО с открытым исходным кодом, которое автоматизирует поставку программного обеспечения, управление конфигурацией и развёртывание приложений. Ansible помогает DevOps-специалистам автоматизировать сложные задачи
- Salt
- Chef
- Puppet
Оркестрирование контейнеров
Управление инфраструктурой
Service mesh
- Istio – Open Source-проект, разработанный при сотрудничестве команд из Google, IBM и Lyft. Он решает сложности, возникающие в приложениях, основанных на микросервисах, например: управление трафиком, безопасность, трассировка, мониторинг, логи.
- Consul – это децентрализованный отказоустойчивый discovery-сервис от компании HashiCorp
- Envoy
- Linkerd
🏄♂️ CI/CD инструменты
🕵️ Мониторинг инфраструктуры и приложений
Мониторинг инфраструктуры
- Prometheus – мониторинг систем таких как: серверы, базы данных, отдельные виртуальные машины, приложение и другое.
- Grafana – платформа с открытым исходным кодом для визуализации, мониторинга и анализа данных.
- Nagios
- Zabbix
- Monit
- DataDog
Мониторинг приложений
- Jaeger – tracing приложений
- New Relic
- AppDynamic
- Instana
- OpenTracing
☁️ Облачные платформы
📝 Командная строка
Ниже приведен список утилит которые должен знать и использовать продвинутый DevOps.
Утилиты для работы с текстом
awksedgrepsortuniqcatcutechofmttrnlegrepfgrepwc
Мониторинг процессов
pstophtopatopIsof
Сети
nmaptgpdumppungmtrtraceroutedlgalrmanalrodumpdlgiptablesnetstat
Написание bash скриптов
Консоли
- Vim
- Nano
- PowerShell
- Emacs
Производительность системы
nmaniostatsarvmstat
Другие
stracedtracesystemtapunamedfhistory