Приёмка DevOps практик на первом этапе перехода с «ручных» практик
DevOps Acceptable Criteria
Цели на первый этап:
- Быть готовым к большой амплитуде изменений и вызовов
- Обеспечить высокую доступность Продуктов для конечных пользователей
- Сокращение технических задержек на Релиз, до минут, без потери качества
Базовые принципы быстрой разработки:
- Стерильность сборки
- Prod-like контуры
- Эластичная инфраструктура
- Совместный доступ к коду
- Авто-тестирование
- Рутины не больше 50% рабочего времени
Стоит отметить, что проверку перехода на базовые DevOps практики лучше всего проводить поэтапно, каждый этап — это продукт или сервис.
Критерии приемки (AC)
- Наличие как минимум 2х контуров — Разхработки(Dev) и Стейдж (Stage)
- Контуры имеют минимальные различия по используемым технологиям и зависимостям от Prod (Prod-like контуры)
- Все элементы архитектуры продукта и обсуживающей инфраструктуры поддерживают автоматизированное управление
- Автоматическое попадание инкремента в нужный контур при Коммите(commit) или Мерже (merge)
- Дымовой тест(Smoke testing) на принципиальную работоспособность, как последний шаг пайплайна
- При сборке запускаются имеющиеся авто-тесты и критичные сценарии
- Принципиальный сценарий восстановления прописан в репозитории
- Для разделения микро-сервисов или элементов системы используется контейнеризация
- Стерильное разворачивание сервиса
- Время разворачивания копии продукта — не более чем 30 мин ручного труда
- Документация по Архитектуре и DevOps лежит в репозиторий
- Аутентификационные данные не хранятся в открытом виде в репозитории
- Команде понятно как и куда писать протоколы по сбоям (Postmortem Culture)
Определения:
Стерильность сборки — Организация сборки для внешнего контура таким образом, чтобы исключить возможность передачи Инкрементов:
- скомпилированных на локальных машинах Разработчиков
- с использованием внешних(не корпоративных) хранилищ Компонентов и Кода.
Рутина — это ручная, однообразная, поддающаяся автоматизации оперативная работа, связанная с поддержкой̆ работающего сервиса. Ее результаты не имеют ценности в перспективе, а трудоемкость растет линейно по мере роста сервиса(проекта).
- Site Reliability Engineering, Google, 2019
Эластичная инфраструктура (Эластичные вычисления) — это возможность быстро наращивать и освобождать ресурсы процессоров, памяти и хранения для удовлетворения меняющихся требований без необходимости планировать загрузку и предпринимать меры для обработки пиковых нагрузок.
- Microsoft