Проект: {PROJECT_NAME}
Последнее обновление: {ДАТА}
┌─────────────┐
│ Client │
│ (Browser) │
└──────┬──────┘
│ HTTPS
▼
┌─────────────┐
│ Nginx │
│ (Reverse │
│ Proxy) │
└──────┬──────┘
│
▼
┌─────────────┐ ┌─────────────┐
│ Backend │◄──────┤ Redis │
│ API │ │ (Cache) │
└──────┬──────┘ └─────────────┘
│
▼
┌─────────────┐
│ PostgreSQL │
│ (DB) │
└─────────────┘
{ПАТТЕРН} - {ОПИСАНИЕ_ПАТТЕРНА}
Примеры:
- Monolith - всё в одном приложении
- Microservices - разделение на независимые сервисы
- Layered Architecture - слои presentation/business/data
- Event-Driven - асинхронная обработка через очереди
Технологии: {ТЕХНОЛОГИИ}
Расположение: {ПУТЬ}
Ответственность:
- Отображение UI
- Валидация форм (клиентская)
- Взаимодействие с Backend API
Ключевые модули:
- {МОДУЛЬ_1} - назначение
- {МОДУЛЬ_2} - назначение
Технологии: {ТЕХНОЛОГИИ}
Расположение: {ПУТЬ}
Ответственность:
- Бизнес-логика
- Валидация данных (серверная)
- Работа с БД
- Интеграции с внешними API
Endpoints:
- POST /api/auth/login - авторизация
- GET /api/users - список пользователей
- POST /api/orders - создание заказа
СУБД: PostgreSQL 15 / MySQL 8 / {БД}
Расположение: {СЕРВЕР}
Ответственность:
- Хранение данных
- Транзакции
- Constraints & индексы
Основные таблицы:
- users - пользователи
- orders - заказы
- products - товары
См. База данных для деталей.
Технология: Redis 7.0
Назначение:
- Кеширование частых запросов
- Session storage
- Rate limiting counters
Кешируемые данные:
- API ответы (TTL: 10 минут)
- Справочники (TTL: 1 час)
- Session tokens (TTL: 30 минут)
Технология: Celery / Bull / {ОЧЕРЕДЬ}
Задачи:
- Отправка email
- Генерация отчётов
- Синхронизация с внешними API
1. User → Frontend
├─ Заполняет форму заказа
└─ Нажимает "Создать"
2. Frontend → Backend API
├─ POST /api/orders
├─ Headers: Authorization: Bearer {token}
└─ Body: { items: [...], address: "..." }
3. Backend API
├─ Валидирует JWT token
├─ Валидирует данные (Pydantic)
├─ Проверяет остатки товаров
├─ Создаёт Order в БД
├─ Создаёт OrderItems в БД
├─ Уменьшает остатки (Stock)
└─ Отправляет задачу в очередь (отправить email)
4. Database
├─ BEGIN TRANSACTION
├─ INSERT INTO orders ...
├─ INSERT INTO order_items ...
├─ UPDATE stock ...
└─ COMMIT
5. Background Job
└─ Отправляет email подтверждения
6. Backend → Frontend
└─ Response: { order_id: 123, status: "created" }
7. Frontend → User
└─ Показывает "✅ Заказ #123 создан"
┌─────────────┐ ┌──────────────┐
│ users │ │ orders │
├─────────────┤ ├──────────────┤
│ id (PK) │◄──────┤ user_id (FK) │
│ email │ │ status │
│ password │ │ total_amount │
│ created_at │ │ created_at │
└─────────────┘ └──────┬───────┘
│
│
┌─────▼────────┐
│ order_items │
├──────────────┤
│ order_id(FK) │
│ product_id │
│ quantity │
│ price │
└──────────────┘
Форма: 3NF (Third Normal Form)
Почему:
- Отсутствие дублирования данных
- Легкость обновления
- Целостность данных
Endpoints следуют REST:
- GET /api/orders - получить список
- GET /api/orders/{id} - получить один
- POST /api/orders - создать
- PUT /api/orders/{id} - обновить полностью
- PATCH /api/orders/{id} - обновить частично
- DELETE /api/orders/{id} - удалить
{
"data": { ... },
"meta": {
"page": 1,
"total": 100
},
"errors": []
}
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid email format",
"details": {
"field": "email"
}
}
}
Как:
- Добавлять больше серверов Backend
- Load Balancer распределяет нагрузку
Требования:
- Stateless Backend (session в Redis)
- БД на отдельном сервере
Как:
- Увеличивать RAM/CPU сервера БД
- Оптимизировать запросы
Read Replicas:
- Master (write) + N Replicas (read)
- Читать из replica, писать в master
Sharding:
- Разделить данные по ключу (user_id % 10)
User Frontend Backend Database
│ │ │ │
├─ Login ──────► │ │
│ ├─ POST /login─► │
│ │ ├─ SELECT user─►
│ │ ◄───────────────┤
│ │ │ │
│ │ ├─ Verify pwd │
│ │ ├─ Generate JWT│
│ ◄──────────────┤ │
◄──────────────┤ │ │
│ Show Dashboard │ │
┌────────────────────────────────────────┐
│ Frontend (React) │
└───────────────┬────────────────────────┘
│ REST API
┌───────────────▼────────────────────────┐
│ Backend (FastAPI) │
│ ┌──────────┐ ┌──────────┐ │
│ │ Business │ │ API │ │
│ │ Logic │ │ Handlers │ │
│ └─────┬────┘ └────┬─────┘ │
│ │ │ │
│ ┌─────▼────────────▼─────┐ │
│ │ Data Access Layer │ │
│ └────────────┬───────────┘ │
└───────────────┼────────────────────────┘
│
┌───────▼────────┐
│ PostgreSQL │
└────────────────┘
Последнее обновление: {ДАТА}
Архитектор: {АВТОР}