Архитектура REKLA

REKLA построена на современной микросервисной архитектуре, обеспечивающей высокую масштабируемость, надежность и простоту разработки.

Принципы архитектуры

Микросервисы

Каждый сервис отвечает за конкретную бизнес-функцию и может разрабатываться независимо

API-First

Все взаимодействие между сервисами происходит через REST API

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

Горизонтальное масштабирование каждого сервиса по необходимости

Отказоустойчивость

Изоляция сбоев и graceful degradation при недоступности сервисов

Схема архитектуры

Компоненты системы

REKLA BOT

Назначение: Telegram-бот для взаимодействия с пользователями

Dashboard Backend

Назначение: API-сервер для бизнес-логики и управления данными

Dashboard Frontend

Назначение: Веб-интерфейс для управления каналами

Marking Module

Назначение: Автоматическая маркировка рекламного контента

Паттерны проектирования

Repository Pattern

Все сервисы используют паттерн Repository для абстракции работы с данными:
class BaseSQLRepo:
    def __init__(self, session: AsyncSession):
        self.session = session
    
    async def get(self, id: int) -> Optional[Model]:
        # Базовая реализация получения по ID
        pass
    
    async def create(self, **kwargs) -> Model:
        # Базовая реализация создания
        pass

Unit of Work

Управление транзакциями через паттерн Unit of Work:
class UnitOfWork:
    def __init__(self):
        self.users = UserRepository()
        self.channels = ChannelRepository()
    
    async def __aenter__(self):
        self.session = await create_session()
        return self
    
    async def commit(self):
        await self.session.commit()
    
    async def rollback(self):
        await self.session.rollback()

Event-Driven Architecture

Использование событий для связи между сервисами:
@dataclass
class PublicationCreated:
    publication_id: int
    channel_id: int
    user_id: int
    scheduled_at: datetime

# Обработчик события
async def handle_publication_created(event: PublicationCreated):
    await marking_service.process_publication(event.publication_id)

Масштабирование и производительность

Горизонтальное масштабирование

  • Каждый микросервис может масштабироваться независимо
  • Load balancer распределяет нагрузку между инстансами
  • Автоматическое масштабирование на основе метрик

Кеширование

  • Redis для кеширования часто используемых данных
  • Кеширование результатов API запросов
  • Кеширование статической информации о каналах

Асинхронная обработка

  • Celery для обработки тяжелых задач в фоне
  • Очереди для планирования публикаций
  • Асинхронные операции с внешними API

Мониторинг и логирование

Централизованное логирование

  • Структурированные логи в JSON формате
  • Агрегация логов всех сервисов
  • Алерты на критические ошибки

Метрики и мониторинг

  • Мониторинг производительности каждого сервиса
  • Отслеживание бизнес-метрик
  • Health checks для всех сервисов

Трейсинг

  • Распределенный трейсинг запросов между сервисами
  • Отслеживание времени выполнения операций
  • Выявление узких мест в производительности

Безопасность

Аутентификация и авторизация

  • JWT токены для API аутентификации
  • OAuth 2.0 для внешних интеграций
  • Role-based access control (RBAC)

Защита данных

  • Шифрование конфиденциальных данных
  • Регулярные бэкапы базы данных
  • Соответствие требованиям GDPR

Сетевая безопасность

  • HTTPS для всех внешних соединений
  • VPN для межсервисного взаимодействия
  • Firewall и DDoS защита

Следующие шаги