DevOps (Development & Operations) — это подход к созданию, доставке и эксплуатации программного обеспечения, который предполагает тесное сотрудничество между командами разработки (Development) и эксплуатации (Operations). Цель DevOps — ускорить выпуск новых версий ПО при сохранении стабильности, качества и безопасности.
DevOps — это культура, объединяющая команды разработки и эксплуатации при помощи практик автоматизации, инструментов и методологий для быстрой и надежной поставки программного обеспечения.
Основные элементы определения:
1. Культура сотрудничества
2. Автоматизация процессов
3. Непрерывная интеграция и доставка (CI/CD)
4. Непрерывное измерение и обратная связь
- Автоматические юнит- и интеграционные тесты. - Статический анализ кода. - Сканы на уязвимости.
- Культура непрерывного улучшения (Continuous Improvement)
- Принцип «You build it, you run it»
### 5.2. Автоматизация (Automation)
- Автоматизированные сборки при каждом коммите, выполнение набора тестов.
2. Развертывание (Deployment)
- Инструменты: Ansible, Puppet, Chef, Terraform, AWS CloudFormation. - Скрипты и playbook’и для автоматизированного Provisioning (создания инфраструктуры) и конфигурации серверов.
3. Мониторинг и логирование
- Инструменты: Prometheus, Grafana, ELK Stack (Elasticsearch, Logstash, Kibana), Datadog. - Автоматическая агрегация метрик, построение дашбордов, оповещение о критических ситуациях.
4. Инфраструктура как код (IaC)
- Хранение описания инфраструктуры в виде версионируемого кода. - Возможность повторного воспроизведения окружений, отката к предыдущим версиям.
### 5.3. Непрерывная интеграция (Continuous Integration, CI)
- Запускает сборки по коммитам, пулл-реквестам.
3. Набор автоматизированных тестов
- Юнит-тесты, интеграционные тесты, статический анализ кода (linting, SonarQube).
- Показатели эффективности CI
### 5.4. Непрерывная доставка и развертывание (Continuous Delivery & Deployment, CD)
- Две идентичные среды: “Blue” (текущая prod) и “Green” (новая версия). - После успешных тестов в “Green” переключение трафика, “Blue” становится backup.
- Canary Deployment:
- Постепенное развёртывание новой версии на небольшой % инстансов (канареек). - Мониторинг поведения, откат при проблемах.
- Rolling Deployment:
- Поочередная замена экземпляров старой версии на новую, без полного прерывания сервиса.
—
- Декларативный язык HCL, управление ресурсами в облаках AWS, GCP, Azure и др.
- Ansible
- SSH-базированная автоматизация конфигурации, управление состоянием серверов.
- Chef / Puppet
- Серверно-агентная архитектура, DSL на Ruby (Chef) или собственный DSL (Puppet).
- AWS CloudFormation, Azure Resource Manager Templates, Google Deployment Manager — родные инструменты IaC для облачных провайдеров.
- Практики IaC
1. Декларативный подход (Terraform, CloudFormation): описываем желаемое состояние, система сама приводит среду к этому состоянию.
2. Идемпотентность: повторный запуск скрипта приводит к тому же результату без нежелательных изменений.
3. Модульность: выделение повторяемых блоков (модулей) для переиспользования (например, VPC, базы данных, кластер Kubernetes).
4. Версионирование и ревью: инфраструктурные манифесты размещаются в Git, подчинены тому же процессу CI/CD.
- Prometheus: сбор метрик через pull-модель, хранение временных рядов. - Grafana: визуализация, дашборды, алерты.
- ELK Stack (Elasticsearch, Logstash, Kibana)
- Сборка и фильтрация логов, хранение в Elasticsearch, визуализация и поиск через Kibana.
- Datadog, New Relic, Splunk — SaaS-решения для мониторинга и логирования.
- Jaeger, Zipkin — распределённые трассировки для микросервисных архитектур.
### 7.2. Обратная связь (Feedback)
- Метрики и метрики качества
1. MTTR (Mean Time to Recover) — среднее время восстановления после сбоя.
2. MTBF (Mean Time Between Failures) — среднее время между отказами.
3. Deployment Frequency — частота релизов в production.
4. Change Lead Time — время от коммита кода до его успешного релиза в prod.
5. Error/Failure Rate — доля неудачных сборок/деплоев/запросов.
—
- Проверка кода на наличие уязвимостей, нехватку валидации данных, инъекции и т. д.
2. Динамический анализ (DAST)
- Сканы уже запущенного приложения на уязвимости (OWASP ZAP, Burp Suite).
3. SCA (Software Composition Analysis)
- Проверка библиотек и зависимостей на известные уязвимости (OWASP Dependency-Check, Snyk, WhiteSource).
4. Управление секретами и ключами
- Хранение паролей, токенов, сертификатов в секретных хранилищах (HashiCorp Vault, AWS Secrets Manager, Azure Key Vault).
5. Контейнерная безопасность
- Сканирование Docker-образов (Clair, Anchore). - Минимизация размера и привилегий контейнера.
6. Политики и соответствие (Compliance)
- Внедрение правил безопасности в pipeline (Policy as Code, e.g. Open Policy Agent). - Аудит и логирование изменений инфраструктуры и кода.
—
### 9.2. Контейнеризация и оркестрация
- Orchestration (Kubernetes)
- Преимущества
1. Изоляция и предсказуемость: контейнеры гарантируют, что приложение будет работать одинаково везде.
2. Масштабирование: автоматическое увеличение/уменьшение числа подов в зависимости от нагрузки.
3. Управление конфигурацией: отделение конфигурации (ConfigMaps, Secrets) от образа.
- Основные роли и обязанности
1. Разработчики (Developers)
- Автоматизация тестов, написание тест-кейсов, регрессионные проверки.
3. SRE (Site Reliability Engineer)
- Фокусируются на стабильности, масштабировании, безопасности и мониторинге сервисов. - Пишут инструменты для автоматизации операций, управляют Incident Response.
4. Инженеры по инфраструктуре (Infrastructure Engineers)
- Настройка и поддержка серверов, сетей, систем хранения. - Управление конфигурацией, разворачивание кластеров Kubernetes, облачные сервисы.
5. Security Engineer / DevSecOps
- Интегрируют практики безопасности во все этапы CI/CD. - Проводят аудиты, сканы уязвимостей, управляют секретами.
- Взаимодействие и коммуникация
—
Категория | Инструменты / Технологии |
—————————– | ————————————————————————————————– |
Система контроля версий | Git, GitHub, GitLab, Bitbucket |
CI/CD-системы | Jenkins, GitLab CI/CD, GitHub Actions, CircleCI, Travis CI, Bamboo |
Управление конфигурацией | Ansible, Chef, Puppet, SaltStack |
IaC (Infrastructure as Code) | Terraform, CloudFormation, Azure ARM Templates, Google Deployment Manager |
Контейнеризация | Docker |
Оркестрация контейнеров | Kubernetes, OpenShift |
Мониторинг и алертинг | Prometheus, Grafana, Zabbix, Nagios, Datadog, New Relic |
Логирование и трассировка | ELK Stack (Elasticsearch, Logstash, Kibana), Fluentd, Loki, Jaeger, Zipkin |
Управление секретами | HashiCorp Vault, AWS Secrets Manager, Azure Key Vault |
Управление артефактами | Nexus, Artifactory, AWS CodeArtifact |
Security / DevSecOps | SonarQube, Checkmarx, OWASP ZAP, Snyk, Clair |
Облачные платформы | AWS, Google Cloud Platform (GCP), Microsoft Azure |
Системы управления инцидентами | PagerDuty, Opsgenie, VictorOps |
develop
автоматически запускает pipeline.- Spotify
—