Перейти к основному содержимому

Автоматизация развертывания и эксплуатации программного обеспечения

DevOps - это кто?

img.png

  • DevOps (Development + Operations) - объединяет разработку и эксплуатацию: CI/CD, деплой, мониторинг, обратная связь от продакшена. Цель - быстрые и надёжные релизы.
  • DevSecOps (Dev + Security + Ops) - безопасность «встроена» в DevOps: сканирование уязвимостей, SAST/DAST, управление секретами и политиками на всех этапах пайплайна.
  • ITOps (IT Operations) - классическая эксплуатация ИТ: серверы, сети, бэкапы, поддержка пользователей, SLA, инциденты. Часто пересекается с TechOps.
  • NetOps (Network Operations) - управление сетевой инфраструктурой: маршрутизация, балансировка нагрузки, мониторинг сети, автоматизация конфигураций.
  • SecOps (Security Operations) - операционная безопасность: мониторинг угроз, реагирование на инциденты (SOC), управление уязвимостями и политиками.
  • DataOps (Data Operations) - непрерывная доставка и качество данных: пайплайны ETL/ELT, контроль качества данных, версионирование датасетов, воспроизводимость экспериментов.
  • MLOps (Machine Learning Operations) - эксплуатация ML‑моделей: обучение, валидация, деплой моделей, мониторинг дрейфа данных/концепций, управление версиями моделей.
  • ModelOps - расширение MLOps на все типы аналитических моделей (не только ML): governance, аудит, соблюдение регуляторных требований, жизненный цикл моделей в масштабе предприятия.
  • AIOps (Artificial Intelligence for IT Operations) - применение ML/AI к операционным данным (логи, метрики, трейсы) для автоматического обнаружения аномалий, предсказания сбоев и автоматизации рутинных действий.
  • GitOps - подход, где единственным источником истины является Git‑репозиторий; инфраструктура и приложения приводятся в соответствие с ним через автоматизацию (например, ArgoCD).
  • CloudOps - эксплуатация облачных сред: управление ресурсами, оптимизация затрат, автоскейлинг, обеспечение отказоустойчивости в облаке.
  • InfraOps - управление инфраструктурой (физической и виртуальной), часто как базовый слой для других Ops‑практик.
  • AppOps (Application Operations) - поддержка и эксплуатация конкретных приложений в продакшене: релизы, мониторинг, устранение инцидентов, фичи‑флаги.
  • ChatOps - автоматизация и координация операций через чат‑платформы (Slack, Mattermost и т. п.): команды, уведомления, запуск задач из чата.
  • NoOps - идеал максимальной автоматизации, когда ручное управление инфраструктурой не требуется; на практике встречается редко и обычно относится к управляемым PaaS/SaaS‑сервисам.
  • TestOps - интеграция тестирования в CI/CD: автоматизация тестов, управление тестовыми средами, отчётность.
  • FinOps (Financial Operations) - оптимизация расходов на облачные ресурсы: бюджетирование, тегирование, прогнозирование затрат.
  • DataSecOps - безnопасность данных в рамках DataOps: шифрование, контроль доступа, маскирование, соответствие GDPR/152‑ФЗ и т. д.
  • SRE (Site Reliability Engineering) - инженерный подход к надёжности сервисов; часто пересекается с DevOps/ITOps, но с сильным упором на SLI/SLO, error budgets и автоматизацию.

1. Зачем существует дисциплина

Современные приложения разрабатываются и эксплуатируются в условиях высокой неопределённости: требования меняются, инфраструктура усложняется, а время простоя напрямую влияет на бизнес. Дисциплина «Автоматизация развертывания и эксплуатации ПО» учит студентов сквозному подходу к доставке ценности — от идеи до продакшена и обратно.

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

  • Быструю поставку рабочих изменений;
  • Надёжную эксплуатацию с измеримыми показателями качества;
  • Безопасную разработку с встроенной проверкой на каждом этапе.

2. Сквозной результат курса

По завершении курса студент способен:

  1. Спроектировать инфраструктуру для распределённого приложения с учётом RTO/RPO, SLI/SLO и экономики ресурсов.
  2. Доказать воспроизводимость OCI-контейнера: собрать образ, зафиксировать Dockerfile и верифицировать его детерминизм.
  3. Диагностировать неуспешный deployment по метрикам, логам и трейсам, сформулировав гипотезу о причине сбоя.
  4. Сформулировать SLI/SLO для сервиса и рассчитать error budget.
  5. Построить CI/CD-пайплайн, автоматизирующий сборку, тестирование и доставку в staging/production.
  6. Развернуть кластер с балансировкой, отказоустойчивостью и GitOps-управлением состоянием.

3. Обязательное ядро

Ядро курса — это набор навыков, без которого невозможен инженерный ввод в эксплуатацию современных систем:

МодульКлючевые навыки
Жизненный цикл ПО и инженерная культураSDLC, iterative/incremental development, feedback loops, DORA metrics, toil automation
Управление ИТ-услугамиIncident vs problem, change enablement, SLA/SLO/error budget, continual improvement
КонтейнеризацияOCI, namespaces, cgroups, Dockerfile, reproducibility, Podman
Системы контроля версий и CI/CDGit, branching strategies, Git hooks, CI/CD pipelines, automated testing
Оркестрация и кластерыКонсенсус (Raft), балансировка, service discovery, Kubernetes basics, ArgoCD
Наблюдаемость (Observability)Три столпа: метрики (Prometheus), логи (Loki/Promtail), трейсы (OpenTelemetry/Jaeger), SLI/SLO

4. Факультативные треки

Эти темы расширяют ядро, но не являются обязательными для базового результата:

  • Platform Engineering: внутренняя developer-платформа, self-service порталы, Golden Path.
  • FinOps: unit-экономика инфраструктуры, cost allocation tags, idle resources, reservations, cost per request.
  • DevSecOps: SAST/DAST, управление секретами, policy-as-code, supply-chain security.
  • GitOps: ArgoCD/Flux, declarative infrastructure, drift detection.
  • Распределённые сети: CIDR, DHCP, DNS, TLS/PKI, service mesh (Istio).

5. Prerequisites

  • Базовое понимание работы ОС Linux (файловая система, процессы, сети);
  • Умение работать в командной строке;
  • Основы программирования (любой язык).

6. Формат лабораторных и доказательства сдачи

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

  • Артефакт (Dockerfile, CI/CD-конфиг, Kubernetes-манифест, пайплайн);
  • Доказательство (скриншоты, логи, результаты тестов, ссылки на репозиторий);
  • Рефлексию (краткий анализ: что пошло не так, как были измерены результаты).