Перейти к содержанию

C4 и контейнеры

Контейнерная модель (C4 Level 2)

flowchart TB
  subgraph platform [KonstructoriumPlatform]
    authSvc["auth_service : Django DRF"]
    userSvc["user_service : Django DRF"]
    productSvc["product_service : Django DRF"]
    orderSvc["order_service : Django DRF"]
    reviewSvc["review_service : Django DRF"]
    chatSvc["chat_service : Django DRF"]
    analyticsSvc["analytics_service : Django DRF"]
    adminSvc["admin_service : Django DRF"]
    botSvc["telegram_bot_service : aiogram"]
    celerySvc["order_celery : Celery Worker"]
    pg["PostgreSQL 15"]
    redis["Redis 7"]
  end

  botSvc --> orderSvc
  botSvc --> productSvc
  orderSvc --> celerySvc
  celerySvc --> redis

  authSvc --> pg
  userSvc --> pg
  productSvc --> pg
  orderSvc --> pg
  reviewSvc --> pg
  chatSvc --> pg
  adminSvc --> pg

Карта API-префиксов

  • auth_service: /api/*
  • user_service: /api/*
  • product_service: /api/*
  • order_service: /api/*
  • review_service: /api/*
  • chat_service: /api/chat/*
  • admin_service: /api/admin/*
  • analytics_service: /api/analytics/*

Точка связности через shared app imports

Сервисы на старте добавляют соседние директории в PYTHONPATH и импортируют внешние Django app-модели. Это следует рассматривать как архитектурный контракт, требующий строгого контроля версий миграций.

Нефункциональные атрибуты

  • Преимущество: единая семантика пользователей и ролей.
  • Риск: tight coupling, сложная эволюция независимого деплоя.
  • Рекомендация: документировать любые изменения моделей как межсервисное событие.