Что такое DevOps

DevOps – это образ мышления, культура и набор технических практик.

DevOps – способствует общению, интеграции, автоматизации и тесному взаимодействию между всеми специалистами, необходимыми для планирования, разработки, тестирования, развертывания релиза и для сопровождения Программного Решения (далее, просто Решение).

Radar

DevOps Health Radar

Радар помогает оценить нашу способность делать релиз по запросу.

  • Это наш Continuous Delivery Pipeline.
  • Он разделен на четыре квадранта которые называется аспектами.
  • Они воплощают согласованность, качество, скорость и бизнес-ценность.
  • Каждый аспект содержит четыре мероприятия, которые можно использовать для того, чтобы оценить зрелость организации.

Continuous Exploration

  • Бизнес цель: Alignment
  • IT цель: Continuous Exploration
  • Активности:
    • Hypothesize
    • Collaborate and research
    • Architect
    • Synthesize

Hypothesize описывает практики, необходимые для выявления идей и метрики, необходимые для подтверждения этих идей.

Collaborate and research описывает практики, необходимые для работы с клиентами и стейкхолдерами, для улучшения понимания потенциальных потребностей.

Architect описывает практики, которые позволяют быстро реализовывать, доставлять и поддерживать Решение.

Synthesize описывает практики, которые объединяют идеи в целостное видение, дорожную карту, приоритезованный бэклог и поддерживают окончательное согласование во время планирования программного инкремента (PI Planning).

Hypothesize

Цель:

  • Определение гипотез, подлежащих проверке
  • Навыки и умения:
    • Lean startup
    • Innovation accounting

Collaborate and research

Цель:

  • Работать со множеством стейкхолдер чтобы понять Потребности клиентов
  • Навыки и умения:
    • Research
    • Lean UX

Architect

Цель:

  • Архитектура для непрерывной доставки
  • Навыки и умения:
    • Architect for testability
      • Domain Driven Design (DDD)
      • Loose coupling and APl-driven architecture
      • Cloud-native architecture
      • Microservices and containerization
      • Serverless architecture
      • Strangler pattern
    • Separate deploy and release
    • Decouple release elements
    • Architect for operations
    • Threat modeling

Synthesize

Цель:

  • Соединить все в Vision, Roadmap и backlog и согласовать на PI Planning
  • Практики:
    • Feature writing
    • Behavior-driven development (BDD)
    • Economic prioritization
    • PI Planning (плпнирование программного инкремента)

Continuous Integration

  • Бизнес цель: Качество
  • IT цель: Continuous Integration
  • Активности:
    • Develop
    • Build
    • Test End-To-End
    • Stage

Develop описывает практики, необходимые для реализации историй и сохранения кода в репозиторий

Build описывает практики, необходимые для создания развертываемых артефактов и слияния разработческих веток

Test End-To-End описывает практики, необходимые для проверки Решения

Stage описывает практики, необходимые для деплоя и проверки Решения в промежуточной среде

Develop

Цель:

  • Реализовать Историю или часть Истории и закоммититься
  • Навыки и умения:
    • Break Features into Stories
    • Test-driven Development
    • Verson Control
      • требования, код, конфигурация, тесты, тестовые данные
      • понятные условия check-in и check-out
      • позволяет осуществлять авторевью
    • Engineering practices
      • Test-first mindset
      • Agile modeling
      • Emergent design
      • Pattern-based coding
      • Code review
    • Pair work
    • Application telemetery
    • Threat modeling

Application telemetery позволяет быстрее выявлять проблемы на продуктиве:

  • Телеметрия должна охватывать все уровни кода: методы, компоненты, сервисы. Все приложение
  • При разработке необходимо учитывать отслеживание “здоровья” операций
  • Фичи должны включать в себя возможность измерения гипотезы выгоды как по ведущим, так и по конечным индикаторам

Build

Цель:

  • Скомпилировать исходные файлы в развертываемые бинарные файлы, проверить, что код функционирует как задумал разработчик(и) и объединить ветки разработки в trunk
  • Навыки и умения:
    • Continuous code integration
    • Build and test automation
    • Trunk-based development
    • Gated commit
    • Application security

Build and test automation:

  • Частый запуск сборки, желательно, после каждого коммита
  • Запуск юнит-тестов как часть сборки
  • Запуск статического анализотора кода как часть сборки
  • Визуализация и монитор процесса сборки и прохождения тестов
  • Немедленное сообщение о сбоях
  • Починка неисправных сборок имеет наивысший приоритет

Test End-To-End

Цель:

  • Проверка внесенных изменений на соответствие критериям приемки в продуктовоподобной среде
  • Навыки и умения:
    • Test and production environment congruity
    • Test automation
    • Test data management
    • Service virtualization
    • Nonfunctional requirements

Stage

Цель:

  • Размещение полностью проверенных систем в предпрод среде из которой они могут деплоиться в продакшен
  • Навыки и умения:
    • Maintain a staging environment
    • Blue/green deployment
    • System demo

Continuous Deployment

  • Бизнес цель: Time-to-market
  • IT цель: Continuous Deployment
  • Активности:
    • Deploy
    • Verify
    • Monitor
    • Respond

Deploy - описывает практики, необходимые для развертывания Решения в производственной среде.

Verify - описывает практики, необходимые для обеспечения того, чтобы изменения работали в производственной среде, как задумано, прежде чем они будут переданы клиентам.

Monitor - описывает практики мониторинга и информирования о любых проблемах, которые могут возникнуть в производственной среде.

Respond - описывает практики быстрого решения любых проблем, возникающих во время развертывания

Deploy

Цель:

  • Внедрение изменений в производство с высокой частотой и низким риском
  • Навыки и умения:
    • Dark launches
    • Feature toggles
    • Infrastructure as code
    • Deployment automation
    • Self-service deployment
    • Selective deployment
    • Version control
    • Blue/green deployment

Verify

Цель:

  • Убедиться, что Решение ведет себя должным образом прежде, чем передавать его конечным пользователям
  • Навыки и умения:
    • Production testing
    • Test automation
    • Test data management
    • Nonfunctional requirements

Production testing - Протестировать Фичи в реальной среде. Включает функциональное и нефункциональное тестирование. Запуск синтетических транзакций.

Monitor

Цель:

  • Количественно измерять поведение системы и пользователей в режиме реального времени
  • Навыки и умения:
    • Full-stack telemetry
    • Visual displays
    • Federated monitoring
    • AIOps

Respond

Цель:

  • Упреждающее обнаружение и устранение производственных проблем до того, как они приведут к нарушению работы бизнеса
  • Навыки и умения:
    • Chaos engineering
    • Proactive detection
    • Cross-team collaboration
    • Session replay
    • Rollback and fix forward
    • Immutable infrastructure
    • Version control

Cross-team collaboration - Решение производственных проблем - отвественность каждого. Желательно, чтобы команда могла и разрабатывать и поддерживать. Команды из всего Value Stream должны сотрудничать для решения производственных проблем и выявления истинных причин.

Release on Demand

  • Бизнес цель: Business Value
  • IT цель: Release on Demand
  • Активности:
    • Release
    • Stabilize
    • Measure
    • Lean

Release - описывает практики, необходимые для доставки Решения конечным пользователям сразу или инкрементально.

Stabilize - описывает практики, необходимые, чтобы убедиться, что Решение работает хорошо с функциональной и нефункциональной точки зрения.

Measure - описывает практики, необходимые для количественной оценки того, обеспечивает ли недавно выпущенная функциональность предполагаемое значение.

Lean - описывает практики, необходимые для принятия решения о том, что следует делать с собранной информацией, и подготовки к следующему циклу в конвейере непрерывной доставки.

Release

Цель:

  • Выпускать ценность для Клиентов сразу или инкрементально
  • Навыки и умения:
    • Canary releases
    • Feature toggle
    • Decouple release elements
    • Dark launches

Stabilize

Цель:

  • Обеспечение стабильно высоких уровней непрерывности бизнеса, уровней обслуживания приложений и защиты данных
  • Навыки и умения:
    • Site reliability engineering (SRE)
    • Failover/disaster recovery
    • Continuous security monitoring
    • Architect for operations
    • Nonfunctional requirements

Measure

Цель:

  • Определить фактическую ценность для бизнеса, полученную с помощью отзывов, собранных на производственной среде
  • Навыки и умения:
    • Innovation accounting
    • Evaluate hypothesis

Lean

Цель:

  • Изучить гипотезу и решить, нужно ли продолжать развивать ее или выбрать другую, а также как улучшить поток ценности
  • Навыки и умения:
  • Lean startup
  • Relentless improvement
  • Value Stream mapping