Этот вопрос проверяет понимание методов раннего проектирования: от выявления требований до построения архитектурных решений.
При создании системы с нуля важно начать с определения требований, ограничений и ключевых сценариев. Используют подходы: от задачи (top-down), от данных (data-driven), от событий (event-driven), от домена (DDD), от MVP. Также важно выделить основные компоненты, выбрать архитектурный стиль (монолит, микросервисы), определить SLA и ограничения. Проектирование — это итеративный процесс, который начинается от простого варианта и постепенно усложняется.
При начале нового проекта стоит использовать один или комбинацию нескольких архитектурных подходов.
Идея:
от бизнес-задачи → к компонентам → к модулям → к деталям.
Кому подходит:
когда требования понятны;
когда нужен быстрый каркас системы.
Отталкиваемся от:
данных;
существующих сервисов;
инфраструктуры.
Подходит для компаний, где часть системы уже существует.
Для систем с большими объёмами данных:
сначала проектируем модели данных;
затем проектируем API, события, сервисы.
Хорошо работает для аналитических систем, CRM, e-commerce.
Система строится вокруг событий:
сервисы реагируют на события (Kafka, RabbitMQ);
слабая связанность;
легко масштабировать.
Хорошо подходит для распределённых систем, сложных workflows.
Определение:
DDD — подход, при котором архитектура строится вокруг модели предметной области и bounded contexts.
Где хорошо работает:
сложная предметная область;
много команд;
большой проект с долгим сроком жизни.
Если цель — быстрый вывод продукта:
начинаем с минимальной функциональности;
архитектура упрощена;
по мере роста продукта переход к более сложной структуре.
определить функциональные требования;
определить нефункциональные требования (SLA, latency, qps);
выбрать модель данных;
выбрать архитектурный стиль;
выбрать технологии (БД, язык, очередь, API);
предусмотреть логирование, мониторинг, отказоустойчивость.
Проектируя систему с нуля, выбирают подход, который подходит под задачу: DDD, event-driven, data-driven, top-down и др. На практике используют комбинацию, начиная с требований и заканчивая архитектурой.