Ниже приведен пример RFC, который можно использовать для твоей следующей разработки
Терминология
Термины, специфичные для проекта.
Постановка задачи
Продуктовое описание проблемы и задачи проекта. Привести обоснование выбранных решений с точки зрения продукта.
Архитектурное описание
Верхнеуровнево
Описание архитектуры на уровне C1–C2 нотации, с обоснованием выбранных подходов к реализации.
Редко вдаемся в подробности по типу:
- Какие таблицы будут у БД
- Как будем осуществлять fallback при такой-то интеграции
- Какой тип кеширование лучше заиспользовать
Но можно, если более сложная логика
Детали
Описание архитектуры более детально:
- Это может быть детальная проработка на уровне C2
- Также это может быть проработка на уровне C3, если хотим подсветить особенности работы какого-то компонента в сервисе
- Например, у нас worker с большим количеством логики, походов в БД, смежных интеграций. Такой компонент лучше нарисовать и объяснить подробно
- Иногда бывают ситуации (скорее реже, чем чаще), что нужно спуститься на уровень C4
- Например, мы делаем сложную интеграцию с банковским приложением и пониманием, что в ближайшем будущем точно будут схожие интеграции, но с другими банками. Мы, конечно же, хотим сделать интеграцию гибкой и переиспользовать раз к разу. Поэтому стоит подробно рассказать про классовые диаграммы, хитрые абстракции и тд
Альтернативные варианты реализации
Здесь рассказываем про другие возможные подходы, если такие имеются
Проблема 1:
- Решение 1 — плюсы и минусы.
- Решение 2 — плюсы и минусы.
- Вывод 1 — выбранное решение и обоснование.
Проблема 2:
- Решение 1 — плюсы и минусы.
- Решение 2 — плюсы и минусы.
- Вывод 2.
Что дальше?
После проработки и написания RFC необходимо Провалидировать архитектуру с кем-то более опытным и внести улучшения.
- Если изменения затрагивают смежные домены, то стоит попросить соседние команды также изучить твое RFC. Может быть ситуация, когда смежные команды смотрят RFC «по диагонали» и им все окей, но при Pull Requests выяснялось, что решение придётся переделывать