Tech Design Review — это процесс описания изменений в дизайне, архитектуре, сервисе или продукте и запрашивания фидбэка у коллег-разработчиков. Похож на ревью Pull Request.
Процесс TDR строится по такому алгоритму:
- Формулирование проблемы.
- Создание дашборда для TDR.
- Создание дизайн-документа.
- Начало ревью.
- Сбор оценок и отзывов.
После этого начинается доработка продукта по фидбэку, и ревью проводится заново. Если доработок больше нет, можно приступать к реализации.
Мы рекомендуем проводить TDR в следующих случаях:
- Портфельный продукт. Если продукт находится в продуктовом портфеле, то до наступления Gate 2 должен быть проведен TDR.
- Высокий уровень влияния. Если решение затрагивает более одного юнита, то обязательно проведение ревью и участие в нём представителей от юнитов.
- Значительные инвестиции в разработку. Если суммарно нужно потратить больше 3 челеловек в месяц на работу по задаче.
- Возрастание тех. долга. Если разрабатываемое решение (например, MVP) может значительно увеличить тех. долг.
- Передача сервиса или модуля в другую команду. Коллегам будет легче поддерживать и развивать решение, если обсудить его архитектуру в формате TDR.
- Внедрение новой технологии/продукта. Рассмотренные причины внедрения, альтернативы, будет обоснование и согласованно с архитектурой.
Для проведения TDR нужно создать дизайн-документ. У всех дизайн-документов единая структура.
- Проблема
Опишите, какая проблема с точки зрения продукта или бизнеса решается предлагаемым изменением.
- Описание
Опишите, что вы планируете сделать и как это будет работать на решение описанной выше проблемы.
- Схема зависимостей
Создайте схему зависимостей и прикрепите её в дизайн-документ.
- Компромиссы
Опишите, на какие компромиссы в решении мы идём и почему, опишите планируемый тех.долг, когда и как он будет устранён.
- Альтернативы
Если рассматривались какие-то альтернативы, зафиксируйте их здесь.
- FAQ
В этой секции фиксируются вопросы, которые возникают в процессе проектирования и ответы на них.
-
Нагрузка: в этом блоке собран список вопросов, на которые нужно ответить и сделать описание расчёта.
- Какая нагрузка в RPM ожидается на сервис?
- Какое количество реплик нужно на каждый DC?
- Отношение нагрузки на чтение и запись.
-
Ресурсы: в этом блоке собран список вопросов, на которые нужно ответить.
- Есть ли похожие по потреблению ресурсов сервисы? Если да, то сколько они потребляют?
- Закладывались ли ресурсы под этот сервис во время планирования ресурсов?
- Если нужна база данных, какую конфигурацию вы выбрали?
- Нужно ли хранилище на ceph для этого сервиса?
- Нужны ли специфичные ресурсы: например, GPU?
- Нужно ли хранить дополнительные поля в айтеме?
- Нужно ли хранить картинки или файлы?
-
Структура баз данных
Опишите структуру базы данных и планируемый способ хранения.
-
Информационная безопасность: обсудите ответы на эти вопросы с безопасниками и покажите им результаты моделированя угроз.
- Предполагает ли решение добавление публичного API?
- Предполагается ли хранение или обработка персональных данных?
-
Метрики
Соберите список ключевых бизнесовых, продуктовых и технических метрик.