SyncOps data · infra
все системы · 99.98% v3.4.1 Консоль

Docs / syncops-docs · v3.4.2

Техническая документация

Установка и API за 5 минут

Всё, что нужно, чтобы поднять кластер, написать первый пайплайн и начать гонять данные. CLI, REST, GraphQL, готовые сниппеты на Go и Python — без «прочитайте в вики».

Быстрый старт

Установка за 5 минут

Один бинарник, один конфиг, один порт. Никаких оркестраторов и ручных миграций — кластер поднимается сам.

Терминал с выполнением команды syncops init и выводом состояния кластера

Шаг 1 — установка. Скачайте бинарник для вашей платформы и проверьте целостность контрольной суммой SHA-256 из релиза v3.4.2:

curl -fsSL https://get.syncops.dev | sh
syncops --version # syncops 3.4.2 (build 2025-03-14)

Шаг 2 — инициализация кластера. Создайте конфиг и запустите мастер инициализации. Мастер сгенерирует ключи, настроит WAL-журнал и поднимет контроллеры:

syncops init --region ru-central --nodes 3
syncops up --config syncops.yaml

Шаг 3 — первый пайплайн. Опишите источник и цель, укажите гарантию доставки. После syncops apply данные пойдут, а метрики появятся в :9090/metrics.

Справка по CLI

Ключевые команды

CLI покрывает весь жизненный цикл: от инициализации до инспекции чекпоинтов и диагностики lag. Каждая команда идемпотентна и безопасна для повторного запуска.

init

syncops init

Создаёт кластер и генерирует конфиг. Флаги: --region, --nodes, --wal-dir. По умолчанию WAL пишется на NVMe-том.

idempotent · 0 args required
apply

syncops apply

Применяет декларативный манифест пайплайнов. Дифф-мод: показывает, что изменится, до реального применения. Флаг --dry-run не трогает данные.

dry-run · diff · rollback-safe
status

syncops status

Снимок состояния: lag по каждому пайплайну, возраст чекпоинтов, размер бэклога. Форматы вывода: таблица, JSON, Prometheus-экспорт.

--format json|table|prom
checkpoint

syncops checkpoint

Управление точками восстановления: список, принудительный снимок, восстановление из чекпоинта. Критично для отката после инцидента без потери данных.

snapshot · restore · list
inspect

syncops inspect

Диагностика конкретного сообщения или ключа: путь через ноды, время обработки, применённые трансформации, разрешение конфликтов.

trace · follow · --key
scale

syncops scale

Горизонтальное масштабирование нод без простоя. Система перераспределяет шарды WAL и обновляет маршрутизацию автоматически.

zero-downtime · shard-rebalance

REST API Reference

Программное управление

Полный CRUD по пайплайнам, метрикам и чекпоинтам. Аутентификация — bearer-токен, лимиты — 600 req/min на кластер.

Базовый URL: https://api.syncops.dev/v3 · Auth: Authorization: Bearer <token>

GET /pipelines — список пайплайнов с текущим lag и статусом. Query-параметры: ?region=ru-central&status=lagging. Ответ содержит total, page и items[].

POST /pipelines — создание пайплайна из JSON-манифеста. Валидация схемы до применения; при ошибке возвращается 422 с полем errors[].

GET /pipelines/{id}/metrics — метрики конкретного пайплайна за период. Форматы: JSON, CSV, Prometheus exposition format.

POST /checkpoints — принудительный снимок. Тело: {"pipeline":"pg-ch-01","label":"pre-deploy"}. Возвращает 201 с идентификатором чекпоинта.

DELETE /pipelines/{id} — удаление с опциональным ?purge=true для полного стирания WAL-записей. Без purge — мягкое удаление с 30-дневным окном.

GraphQL Endpoints

Гибкие запросы к кластеру

Для сложных дашбордов и кастомных интеграций. Одна точка, все данные: ноды, пайплайны, конфликты, метрики. Поддержка подписок на изменения в реальном времени.

query

Схемы данных

Типы: Cluster, Pipeline, Node, Conflict, Checkpoint. Каждая с полями id, createdAt, status и вложенными связями.

schema: introspection on
mutation

Операции записи

Мутации: createPipeline, updateConfig, takeCheckpoint, resolveConflict. Все атомарные и идемпотентные — повторный вызов не создаст дублей.

atomic · idempotent
subscription

Реалтайм-подписки

Подписки: onLagExceeded, onConflictDetected, onPipelineStatus. Транспорт — WebSocket, payload в формате GraphQL-ответа. Авто-реконнект с backoff.

transport: ws · auto-reconnect

{
  cluster(id: "prod-ru-central") {
    pipelines(status: LAGGING) {
      id
      name
      lag(ms)
      checkpoint { age(seconds) }
     }
   }
}

Примеры кода

Go и Python — первые 20 строк

Минимальные рабочие примеры: подключение, создание пайплайна и чтение метрик. SDK-ы обёртывают REST и обрабатывают ретраи с экспоненциальным backoff.

go

Go SDK

Клиент с нативной поддержкой контекста и канселейшена. Подключение, манифест, применение — три вызова. Ретраи и таймауты из коробки.

import "github.com/syncops/go"
python

Python SDK

Асинхронный клиент на httpx. Контекст-менеджеры, dataclass-модели, логирование. Совместим с Python 3.10+.

pip install syncops-sdk
common

Общие паттерны

Оба SDK поддерживают: кастомные HTTP-клиенты, интерцепторы для логирования, стриминг больших датасетов и graceful shutdown по SIGTERM.

streaming · interceptors · ctx

Go:

client := syncops.New("https://api.syncops.dev/v3", token)
manifest := syncops.Pipeline{
  Name: "pg-to-ch",
  Source: "postgres://prod-ru-central",
  Target: "clickhouse://analytics",
  Guarantee: syncops.ExactlyOnce,
}
if err := client.Apply(ctx, manifest); err != nil { log.Fatal(err) }

Python:

from syncops import Client, Pipeline

async with Client("https://api.syncops.dev/v3", token) as c:
  pipe = await c.pipelines.create(
    name="pg-to-ch",
    source="postgres://prod-ru-central",
    target="clickhouse://analytics",
    guarantee="exactly-once",
  )
  print(await pipe.metrics.lag())

FAQ

Частые вопросы

Для разработки достаточно одной ноды: 2 vCPU, 4 ГБ RAM, 20 ГБ NVMe. Для продакшена с нагрузкой до 1M msg/s рекомендуем 3 ноды по 8 vCPU / 16 ГБ / 200 ГБ NVMe. Система масштабируется горизонтально без простоя.
Генерируйте bearer-токены через syncops token create --scope write. Токены имеют TTL (по умолчанию 720 часов) и могут быть ограничены по scope: read, write, admin. Ротация — syncops token rotate без простоя.
Да. Трансформации описываются в манифесте пайплайна: маппинг полей, фильтрация, агрегация, вызов внешнего сервиса через webhook. Для сложных сценариев — Wasm-плагины, которые исполняются в изолированной среде без доступа к сети.
WAL-журнал реплицируется на 3 ноды. При потере ноды контроллер автоматически перераспределяет её шарды на оставшиеся ноды. Восстановление занимает до 45 секунд при типовой нагрузке. Чекпоинты позволяют откатить конкретный пайплайн без влияния на остальные.
Максимальный размер одного сообщения — 16 МБ. Для больших объектов используйте chunking-режим: SDK разбивает payload на части с последовательными номерами и собирает на стороне цели. Альтернатива — ссылка на объект в S3 с передачей метаданных.

Готовы к старту

Поднимите кластер за один вечер

Установите SyncOps, опишите первый пайплайн и получите данные в целевой системе. Без карты, без звонков, без «мы вам перезвоним».

Выбрать тариф Быстрый старт Без карты · 14 дней · отмена в один клик