Архитектура системы

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

Преимущества архитектуры

Модульность

  • Четкое разделение ответственности
  • Независимая разработка модулей
  • Упрощенное тестирование

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

  • Горизонтальное масштабирование
  • Оптимизация производительности по модулям
  • Кеширование на уровне модулей

Надежность

  • Изоляция сбоев
  • Мониторинг и наблюдаемость
  • Обработка ошибок на уровне модулей

Подробнее о каждом аспекте архитектуры читайте в соответствующих разделах документации.