Тема дня: Quality gates
Qaulity gate - это проверка на соответствие качественным метрикам вашего проекта в контрольных точках CI/CD процесса. Например, прохождение 100% тестов при создании ПРа - это одна из метрик quality gate.
Какие ещё точки в CI/CD процессе есть? Например, pre-commit, pre-push (фактически любые другие git-hooks). Можно настроить и более сложные, такие как pre-production check. Когда мы перед запуском скрипта на деплой проекта в production выполняем финальные проверки.
Если git hooks фактически стандартизированная вещь, то другие контрольные точки в CI/CD процессе сильно отличаются из-за особенностей конкретного CI/CD процесса.
Какими бывают качественные метрики?
Перечислим базовые:
1. Проверка на соответствие coding standarts. То есть чтобы линтер не ругался.
2. Автоматические тесты проходят.
3. Ручные тесты проходят.
И на этом в большинстве проектов качественные метрики заканчиваются. Ну нет у нашего брата регрессионного performance testing'а. Не меряют они размер бандлов, время загрузки веб-приложения. Может у кого-то и есть, но не систематизировано это всё.
Как можно улучшить?
Давайте введём качественные метрики.
Если у вас web приложение, давайте замерим First meaningful Paint time для главной страницы. Время, через которое по умолчанию отрисуется главная страница. и пользователь сможет наконец что-то делать.
Зная, что в релизе 1.1 эта метрика была равна 2,5 секунды, увидев в релизе 1.2 значение 5,5 секунды, вы остановитесь и призадумаетесь о причине увеличения времени загрузки сайта.
Давайте замерим размер бандла и в целом загруженного контента. В релизе 1.1 размер бандла составил 340 килобайт. В релизе 1.2 160 килобайт. Всё верно, ведь как раз была закрыта задача по оптимизации зависимостей в проекте. А размер сайта наоборот увеличился. Почему?
Это вершина айсберга. Улучшать дальше можно долго.
Время загрузки сайта разобьётся на:
- First Contentful Paint
- Time to first beet
- Time to Interactive
- First Meaningful Paint
- и прочее
Размер сайта разобьётся на:
- Размер js бандла,
- Размер css бандла,
- Объём картинок,
- И так далее
Подумайте, что именно важно для вашего проекта, какие именно quality attributes и начните их регрессионно измерять. Практически все измерения можно делать автоматически, в том же самом jenkins'е.
В следующем посте поговорим с вами о систематизации Quality attributes и тулзах для их измерения. Именно на них выстраиваются Quality gates.
Post #13
285