Проектирование Архитектуры (Architecture Design)
1. Ключевые Принципы
Простота Превыше Всего (Simplicity Above All)
- •Цель: Решить задачу максимально просто.
- •Избегайте Overengineering: Сложная архитектура и тяжелые библиотеки усложняют поддержку.
- •Zero-Dependency: Добавляйте только действительно необходимые компоненты.
- •Предпочтение No-ORM: Не используйте ORM, если простые SQL-запросы проще.
- •Фреймворки: Не используйте фреймворки, если API проще реализовать на низкоуровневых библиотеках.
Модульность
- •Слабая связность (Loose coupling), высокая сцепленность (high cohesion).
- •Четкие определения интерфейсов между компонентами.
2. Требования к Компонентам Архитектуры
Модель Данных (Data Model)
- •Проектируйте Детально:
- •Все сущности, атрибуты с типами.
- •Все связи (1:1, 1:N, M:N).
- •Все ограничения и индексы.
- •Думайте о Миграциях:
- •Как данные будут мигрировать при изменениях.
- •Обратная совместимость.
- •Учитывайте Производительность:
- •Частые запросы -> Индексы.
- •Денормализация при необходимости.
Безопасность (Security)
- •Встроенная: Безопасность должна быть спроектирована, а не "залатана" потом.
- •Auth: Стратегии OAuth2/JWT/Session определены.
- •Защита: Учет OWASP Top 10.
Масштабируемость (Scalability)
- •Горизонтальная: Stateless сервисы.
- •База Данных: Стратегии партицирования, репликации.
3. Важные Правила
✅ ДЕЛАТЬ:
- •Основываться на ТЗ: Обосновывайте каждое решение требованиями из ТЗ.
- •Учитывать Существующее: Структурируйте новые компоненты так, чтобы они вписывались в существующие паттерны.
- •Быть Конкретным: Указывайте конкретные технологии (например, "PostgreSQL 14"), а не просто "SQL DB".
- •Связывать с Use Cases: Сопоставляйте компоненты с UC, которые они выполняют.
❌ НЕ ДЕЛАТЬ:
- •Писать Код: Вы проектируете архитектуру, а не реализацию.
- •Игнорировать Legacy: Изучите существующий проект перед проектированием.
- •Оставлять Решения на Потом: Ключевые технологии должны быть выбраны сейчас.
- •Накапливать Долг: Если требуется рефакторинг, зафиксируйте это.
4. Управление Неопределенностью
Критическая Стадия: Неверные архитектурные решения очень дороги.
- •Обращайте внимание на Открытые Вопросы.
- •Не делайте предположений о критических вещах.
- •Если сомневаетесь в технологии: Добавьте в "Открытые Вопросы" для пользователя.