Архитектура системы
Alifshop API построен на основе модульной монолитной архитектуры с применением принципов Domain-Driven Design (DDD) и Event-Driven Architecture. Система разделена на 6 основных модулей с четким разделением ответственности.
Обзор архитектуры
Система представляет собой единое приложение (.NET 8.0), разделенное на логические модули по доменным границам:
Alif.ServiceShop.API/
├── Modules/
│ ├── Catalog/ # Каталог товаров
│ ├── Cart/ # Корзина покупок
│ ├── Orders/ # Заказы и управление
│ ├── Marketing/ # Маркетинг и промо
│ ├── Moderation/ # Модерация контента
│ └── Afghanistan/ # Региональная логика
├── BuildingBlocks/ # Общие компоненты
└── API/ # Точка входа
Ключевые архитектурные принципы
Разделение по доменам
Каждый модуль инкапсулирует свою бизнес-логику и данные:
- Catalog - управление товарами, категориями, ценами
- Cart - корзина, добавление/удаление товаров
- Orders - обработка заказов, статусы, доставка
- Marketing - акции, скидки, рекомендации
- Moderation - проверка контента, отзывы
- Afghanistan - локальная специфика
Слоистая архитектура
Каждый модуль следует Clean Architecture:
- Domain - доменные сущности и бизнес-правила
- Application - случаи использования (CQRS + MediatR)
- Infrastructure - данные, внешние сервисы
- IntegrationEvents - межмодульные события
Обмен данными
Модули взаимодействуют через:
- Integration Events - асинхронные события (Kafka)
- Module Facades - синхронные вызовы
- Shared Contracts - общие типы данных
Технический стек
Основные технологии
- .NET 8.0 - основная платформа
- ASP.NET Core - веб-фреймворк
- MediatR - CQRS pattern
- Autofac - dependency injection
Хранение данных
- MySQL - основная база данных
- MongoDB - документы (корзины)
- Redis - кеширование
- Elasticsearch - поиск
Интеграции
- Kafka - событийная шина
- JWT - аутентификация
- Swagger - документация API
- Sentry - мониторинг ошибок
Развертывание
Система развертывается как единое приложение:
- Docker - контейнеризация
- Docker Compose - локальная разработка
- Kubernetes - продакшн окружение
# docker-compose.yml
services:
app:
image: service-shop
ports: ["8080-8081:80"]
replicas: 2
mysql:
image: mysql:latest
redis:
image: redis:latest
Преимущества архитектуры
Модульность
- Четкое разделение ответственности
- Независимая разработка модулей
- Упрощенное тестирование
Масштабируемость
- Горизонтальное масштабирование
- Оптимизация производительности по модулям
- Кеширование на уровне модулей
Надежность
- Изоляция сбоев
- Мониторинг и наблюдаемость
- Обработка ошибок на уровне модулей
Подробнее о каждом аспекте архитектуры читайте в соответствующих разделах документации.