Базовые принципы DevOps культуры

Michael Sokolov
2 min readOct 6, 2023
DALL·E

Цели:

  • Проектировать, создавать, тестировать и развертывать программное обеспечение быстрее и с более высоким качеством.
  • Минимизировать барьеры между разработкой программного обеспечения и инфрастуктурными командами.

Базовые принципы DevOps культуры

Культурные Принципы:

  • Ответственность: Все участники команды отвечают за качество и надежность продукта.
  • Осознание Риска: Все участники команды понимают и принимают возможные риски и стараются их минимизировать.

Принципы Разработки:

  • Стерильность сборки: Исключение возможности использования инкрементов, собранных на локальных машинах разработчиков или с использованием внешних хранилищ.
  • Прод-like контуры: Контуры должны быть максимально похожи на Продуктивный контур, на сколько это целесообразно.
  • Инфраструктура как Код (IaC): Автоматизация создания и изменения инфраструктуры с помощью кода.
  • Непрерывная интеграция (CI): Автоматическая проверка и интеграция нового кода.
  • Непрерывная поставка и развертывание (CD): Автоматический процесс выкатки изменений в продуктивное окружение.
  • Трассировка требований: Связь между беклогом, программным кодом и кодом структур БД должна быть просто прослеживаемой.

Принципы Эксплуатации:

  • Инфраструктура как Сервис (IaaS): Возможность быстро менять объем ресурсов на окружениях в зависимости от текущих потребностей.
  • Управление конфигурациями: Конфигурации программ, продуктов, инструментов и окружений — тоже являются кодом и могут быть быстро воспроизведены, без ручного вмешательства.
  • Мониторинг и Логирование: Непрерывное наблюдение за работой приложений и инфраструктуры.
  • Chat-OPS: Использование чат-ботов для отслеживания и управления операциями и инцидентами.
  • Документация: Актуальная и достаточная для передачи другой команде в рамках компании.

Принципы Безопасности:

  • Безопасность на протяжении всего жизненного цикла: Внедрение практик безопасности на всех этапах разработки и эксплуатации.
  • Автоматизированное тестирование безопасности: Регулярное и автоматическое тестирование на наличие уязвимостей.
  • Принцип наименьших привилегий: Предоставление минимально необходимых прав доступа для выполнения кода или сервисов..
  • Шифрование: Шифрование чувствительной информации на этапе разработки, тестирования, хранения и в процессе передачи.

Автоматизация:

  • Все что может быть автоматизировано, должно быть автоматизировано.
  • Ограничение рутины: Рутинная работа не должна превышать 50% рабочего времени специалистов.

Постоянное Обучение и Адаптация:

  • Postmortem Culture: Готовятся протоколы или отчеты по критичным сбоям и публикуются в рамках компании.

Лицензирование:

  • Приоритет открытому ПО: Отдается предпочтение открытому программному обеспечению с лицензиями, совместимыми с GPL.

Рутина

Рутина — это ручная, однообразная, поддающаяся автоматизации оперативная работа, связанная с поддержкой работающего сервиса. Ее результаты не имеют ценности в перспективе, а трудоемкость растет линейно по мере роста сервиса.

Источник — SRE Book, Google.

--

--