AgentSkillsCN

architecture-design

设计可扩展且模块化的系统架构指南。

SKILL.md
--- frontmatter
name: architecture-design
description: Руководство по проектированию масштабируемой и модульной архитектуры системы.
version: 1.1

Проектирование Архитектуры (Architecture Design)

1. Ключевые Принципы

Простота Превыше Всего (Simplicity Above All)

  • Цель: Решить задачу максимально просто.
  • Избегайте Overengineering: Сложная архитектура и тяжелые библиотеки усложняют поддержку.
  • Zero-Dependency: Добавляйте только действительно необходимые компоненты.
  • Предпочтение No-ORM: Не используйте ORM, если простые SQL-запросы проще.
  • Фреймворки: Не используйте фреймворки, если API проще реализовать на низкоуровневых библиотеках.

Модульность

  • Слабая связность (Loose coupling), высокая сцепленность (high cohesion).
  • Четкие определения интерфейсов между компонентами.

2. Требования к Компонентам Архитектуры

Модель Данных (Data Model)

  1. Проектируйте Детально:
    • Все сущности, атрибуты с типами.
    • Все связи (1:1, 1:N, M:N).
    • Все ограничения и индексы.
  2. Думайте о Миграциях:
    • Как данные будут мигрировать при изменениях.
    • Обратная совместимость.
  3. Учитывайте Производительность:
    • Частые запросы -> Индексы.
    • Денормализация при необходимости.

Безопасность (Security)

  • Встроенная: Безопасность должна быть спроектирована, а не "залатана" потом.
  • Auth: Стратегии OAuth2/JWT/Session определены.
  • Защита: Учет OWASP Top 10.

Масштабируемость (Scalability)

  • Горизонтальная: Stateless сервисы.
  • База Данных: Стратегии партицирования, репликации.

3. Важные Правила

✅ ДЕЛАТЬ:

  1. Основываться на ТЗ: Обосновывайте каждое решение требованиями из ТЗ.
  2. Учитывать Существующее: Структурируйте новые компоненты так, чтобы они вписывались в существующие паттерны.
  3. Быть Конкретным: Указывайте конкретные технологии (например, "PostgreSQL 14"), а не просто "SQL DB".
  4. Связывать с Use Cases: Сопоставляйте компоненты с UC, которые они выполняют.

❌ НЕ ДЕЛАТЬ:

  1. Писать Код: Вы проектируете архитектуру, а не реализацию.
  2. Игнорировать Legacy: Изучите существующий проект перед проектированием.
  3. Оставлять Решения на Потом: Ключевые технологии должны быть выбраны сейчас.
  4. Накапливать Долг: Если требуется рефакторинг, зафиксируйте это.

4. Управление Неопределенностью

Критическая Стадия: Неверные архитектурные решения очень дороги.

  1. Обращайте внимание на Открытые Вопросы.
  2. Не делайте предположений о критических вещах.
  3. Если сомневаетесь в технологии: Добавьте в "Открытые Вопросы" для пользователя.