Skip to content

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

  • High-level архитектурные диаграммы
  • Схемы взаимодействия сервисов (4 ключевых потока)
  • Схема базы данных (15+ таблиц с индексами)
  • Варианты развёртывания: Docker Compose, Kubernetes, VM
  • Архитектура безопасности (OAuth, RBAC, шифрование)
  • Стратегия масштабирования (single-tenant → multi-tenant)
  • Мониторинг и эксплуатационные требования

Версия: 1.0-alpha
Дата: 2025-06-09
Статус: Черновик
Аудитория: Технические специалисты, DevOps, SRE

💡 Смотрите также: Начало работы · Развёртывание · Возможности · English version


Высокоуровневая архитектура

Философия

SLOzy построен на stateless-архитектуре с внешним состоянием (PostgreSQL + Redis). Это даёт горизонтальное масштабирование, простые обновления и разделение ответственности.

Ключевые принципы:

  1. Сервис-ориентированность: отдельные API-сервис, worker и мониторинг
  2. Stateless: никакого локального состояния, всё в БД/кэше
  3. Event-Driven: ingestion worker запускается по cron
  4. Multi-Process: тяжёлые задачи (расчёт метрик) в отдельном процессе
  5. Future-Proof: архитектура поддерживает single-tenant (MVP) и multi-tenant (будущее)

Интеграция с системами метрик

SLOzy — read-only consumer. Он не хранит сырые метрики, а только результаты расчётов (SLI, burn rate, error budget) в своей PostgreSQL.

Типовые сценарии подключения:

СценарийURL в Data SourceКак настроено
Одна Docker-сетьhttp://prometheus:9090Внутренний Docker DNS
Другой сервер в сетиhttp://10.0.1.50:9090Прямой HTTP
VictoriaMetricshttp://victoria:8428Совместимый API (/api/v1/query)
Thanoshttp://thanos:19194Query frontend
За reverse proxyhttps://prom.example.comBasic Auth / Bearer Token

Схема компонентов

┌─────────────────────────────────────────────────────────┐
│                    SLOzy Deployment                      │
│              (развёртывается у клиента)                  │
└─────────────────────────────────────────────────────────┘

                     ┌───────────────────────┐
                     │     Внешний трафик    │
                     └───────────┬───────────┘
                                 │ HTTPS (Port 443)

                 ┌───────────────▼────────────────┐
                 │            Nginx                │
                 │   (SSL, reverse proxy, лимиты)  │
                 └───────────────┬────────────────┘
                                 │ Port 8080

┌────────────────────────────────────────────────────┐
│                Application Layer                    │
│                                                     │
│  ┌──────────────┐         ┌───────────────────┐   │
│  │ slozy-web    │         │  slozy-ingestor   │   │
│  │ (API Server) │         │  (Worker Service)  │   │
│  │              │         │                   │   │
│  │ - SLO CRUD   │         │ - Prometheus      │   │
│  │ - Auth       │         │   Queries         │   │
│  │ - Dashboard  │         │ - Burn Rate Comp. │   │
│  │  Endpoint    │         │ - Metrics Store   │   │
│  └──────┬───────┘         └─────────┬─────────┘   │
│         │                          │              │
└─────────┼──────────────────────────┼──────────────┘
          │                          │
          │                          │ SQL + TCP
          ▼                          ▼
┌─────────────────┐      ┌─────────────────┐
│   PostgreSQL    │      │     Redis       │
│   (основная БД) │      │  (кэш + сессии) │
└─────────────────┘      └─────────────────┘



┌────────────────────────────────────────────────────┐
│            Внешние зависимости                      │
│                                                     │
│  ┌────────────┐   ┌─────────────┐   ┌──────────┐  │
│  │ Prometheus │   │ Victoria    │   │  Grafana │  │
│  │ (метрики)  │   │ Metrics     │   │ (дашборды)│  │
│  └────────────┘   └─────────────┘   └──────────┘  │
└────────────────────────────────────────────────────┘

Технологический стек

КомпонентТехнологияНазначение
BackendGo 1.22+API-сервер, worker
База данныхPostgreSQL 15+Основное хранилище
КэшRedis 7+Кэш метрик, сессии
ФронтендReact 18 + TypeScriptWeb-интерфейс
МетрикиPrometheus APIИсточник данных SLO
ВизуализацияGrafana (опционально)Дашборды

Дальнейшие шаги