Что такое DevOps
DevOps – это образ мышления, культура и набор технических практик.
DevOps – способствует общению, интеграции, автоматизации и тесному взаимодействию между всеми специалистами, необходимыми для планирования, разработки, тестирования, развертывания релиза и для сопровождения Программного Решения (далее, просто Решение).
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
- Architect for testability
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