🚤Скорость разработки

Developer velocity – это скорость и эффективность, с которой команда разработки может создавать, изменять и развертывать качественный код.

Velocity – это не всегда про измеримые метрики и включает в себя внедрение инженерных практик, автоматизацию рутины, коммуникацию в командах и непрерывное обучение.

Скорость разработки напрямую влияет на производственный цикл разработки программного обеспечения – Software Development Lifecycle (SDLC).

Чеклист

  • Технический стек представляет собой ограниченное кол-во core-языков и технологий → нет проблемы «зоопарка» технологий.

  • В разработке используется ограниченное кол-во сторонних сервисов, что позволяет митигировать риски, связанные с вендорами; предпочтение отдается решениям с открытым исходным кодом (self-hosted) и сервисам с хорошей документаций, поддержкой и возможностью тестирования.

  • Реализовано быстрое развертывание локальных окружений для разработчиков через Docker Compose и др. инструменты.

  • Разработчики могут собирать и тестировать сборки (или большую часть сервисов) локально.

  • Интеграционные тесты могут быть запущены локально.

  • Разработчики пишут тесты, которые фокусируются на качестве кода и его поддержке, а не на проценте его покрытия.

  • Инженеры (включая QA) могут легко развернуть необходимую инфраструктуру для разработки и тестирования изменений.

  • Быстрый цикл разработки

    • Фронтенд: hot-reload

    • Бэкенд: инкрементальные быстрый билды

    • Для маленьких команд: оптимизированный BuildKit Dockerfile

    • Для больших команд: настроеная система воспроизводимых (reproducible) сборок

  • Отсутствие сабмодулей при работе с Git – баланс монорепозиториев и микросервисов.

  • Воспроизводимая сборка пакетов и/или Docker-образов.

  • Стандартизированные подходы к именованию веток, сообщению коммитов и merge-реквестам, которые позволяют поддерживать либо линейную историю, либо держать контекст в feature-ветках и оперативно откатывать изменения.

  • Стандартизированный и быстрый процесс ревью кода.

  • Автоматизация посредством CI/CD пайплайнов, возможность смотреть логи задач.

  • Возможность развертывания окружений для merge-реквестов.

  • main (master) ветка всегда готова к релизу.

  • Автоматизированные сборки и релизы.

  • Адекватное время развертывания изменений и сервисов на продакшене: для небольших сервисов – до 5 минут, для небольших монолитов – до 15 минут; для средних и больших проектов и команд – до часа.

  • Доступные всей команде инструменты мониторинга и уведомлений.

  • Инфраструктура как код (IaC), которая позволяет быстро развертывать новые окружения и версионировать изменения.

Last updated