Backend платформы AIOps построен как набор микросервисов на Python 3.12+ и Go (версия определяется services/*/go.mod), следующих принципам Clean Architecture, Domain-Driven Design и Event-Driven Architecture.
Статус контента
- Статус: Stable
- Проверено: 2026-03-12
- Примечание: версии библиотек ниже даны как ориентир и валидируются по
pyproject.tomlсервисов
Архитектурный стиль
Микросервисы
- Каждый сервис владеет своей БД (Database per Service).
- Внутренняя коммуникация: gRPC (internal), REST (public API где нужно).
- Асинхронная коммуникация: Kafka (события).
Clean Architecture (слои)
Все Python-сервисы (Identity, Credential и др.) имеют единую структуру:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
Правило зависимостей: зависимости направлены внутрь. core не импортирует infra или api.
Ключевые паттерны
- Transactional Outbox — надежная публикация событий в Kafka (at-least-once).
- Unit of Work — координация транзакций и репозиториев.
- Repository — абстракция доступа к данным (протокол в core, реализация в infra).
- Domain Services — бизнес-логика, не привязанная к одной сущности (например,
PasswordDomainServiceдля хеширования и валидации паролей).
Технологический стек
Python
- Runtime: Python 3.12+, asyncio, uvloop (Linux/macOS).
- Validation: Pydantic 2.x.
- ORM: SQLAlchemy 2.x (async), asyncpg.
- DI: Dishka 1.7+.
- gRPC: grpcio 1.78+, grpc-health-checking, grpc-reflection.
- Messaging: aiokafka, библиотека
omni-box. - Security: argon2-cffi (пароли), zxcvbn-python (сложность пароля).
- Observability: structlog, prometheus-client, OpenTelemetry.
- Testing: pytest, pytest-asyncio, grpcio-testing, factory-boy, testcontainers.
Go (API Gateway)
- Control Plane: xDS server для Envoy, file watcher для hot reload.
- Data Plane: Envoy Proxy (TLS, JWT, rate limiting, RBAC).
Данные
- PostgreSQL — основное хранилище, партиционирование для outbox.
- Redis — кеш, rate limiting.
- Kafka — event streaming (Strimzi Operator в K8s).
Общие библиотеки (libs/python)
Переиспользуемый код вынесен в общие пакеты (физически — в libs/python/common/, communication/, storage/, runtime/; полный список путей — libs/python/README.md):
| Библиотека | Назначение |
|---|---|
grpc-stubs |
Сгенерированные protobuf/gRPC stubs |
omni-box |
Реализация паттернов Transactional Outbox/Inbox |
unit-of-work-kit |
Базовые классы Unit of Work |
sqlalchemy-postgres-kit |
Сессии, базовые модели для PostgreSQL |
grpc-server-kit |
Lifecycle gRPC сервера |
grpc-interceptor-kit |
Context, tracing, metrics, logging, Sentry |
dishka-providers |
Провайдеры Dishka для DB, Redis, Kafka |
pydantic-settings-kit |
Настройки из env |
service-observability |
Логирование, метрики, трейсинг |
kafka-publisher-kit |
Обертка над Kafka producer |
redis-client-kit |
Redis client |
Протоколы и контракты
- Proto:
proto/aiops/identity/v1/,proto/aiops/credential/v1/— контракты gRPC. - Версионирование: все API под суффиксом
v1, обратная совместимость обязательна.
Связанные страницы
- Service Patterns — детали паттернов сервисов
- Event-Driven Patterns — Outbox, Kafka
- Database Access Patterns — Repository, UoW
- API Guidelines — gRPC, ошибки, идемпотентность
- Identity service — пример реализации
- Architecture / Data Flow — поток событий