Как SPG99 делает auto-start безопасным и прозрачным для приложений
Снаружи SPG99 выглядит как обычный PostgreSQL по стандартному DSN. Внутри платформа разделяет точку входа, жизненный цикл compute и durable-хранение данных. Именно это позволяет базе безопасно спать, быстро запускаться и переживать пересоздание рабочего узла без смены DSN.
Один DSN для приложений через Gateway.
Auto-start и auto-stop — штатные состояния архитектуры.
Остановка compute не означает потерю данных.
Gateway, Control Plane, Compute и storage-контур разделены по ролям
Клиент всегда приходит в Gateway. Control Plane решает, нужно ли поднимать compute. Compute исполняет SQL. Pageserver, Safekeeper и S3 держат durable-состояние базы. Поэтому auto-stop — это штатная часть архитектуры, а не рискованная оптимизация.
Наведите курсор на "звезду" или название сервиса, чтобы увидеть его роль и границы.
Каталог tenants и БД, доступы, lifecycle и orchestration запуска.
Управление и observability поверх того же Control Plane API.
Единый TLS endpoint PostgreSQL (:5432). Принимает соединение, определяет БД и инициирует auto-start.
Поднимают compute и доводят PostgreSQL до состояния ready.
Рабочий SQL-слой. Может быть пересоздан, потому что durable-состояние вынесено отдельно.
Принимает WAL и обеспечивает durable write-path.
Собирает storage-состояние и отдаёт basebackup / страницы для bootstrap и restart.
Долговечный слой данных и WAL в РФ.
Для приложения — DSN. Для платформенной команды — Console и API
Пользовательская поверхность у SPG99 намеренно простая: стандартный PostgreSQL endpoint для приложений и Control Plane API для автоматизации. Это позволяет встроить сервис в CI/CD, внутренний портал или IaC без отдельного проприетарного протокола.
# Control Plane API (v2)
export SPG99_CP_URL="https://<cp-host>/v2"
export SPG99_API_KEY="<api-key>"
# 1) Создать tenant
curl -sS "$SPG99_CP_URL/tenants" -H "Authorization: Bearer $SPG99_API_KEY" -H "Content-Type: application/json" -d '{"name":"acme"}' | jq .
# 2) Создать БД (стартовый публичный уровень по умолчанию: L1)
curl -sS "$SPG99_CP_URL/tenants/acme/dbs" -H "Authorization: Bearer $SPG99_API_KEY" -H "Content-Type: application/json" -d '{"name":"app"}' | jq .
# 3) Получить DSN для подключения через Gateway
curl -sS "$SPG99_CP_URL/tenants/acme/dbs/app" -H "Authorization: Bearer $SPG99_API_KEY" -H "Content-Type: application/json" | jq -r '.connection_string'
# Compute lifecycle
# 1) Создать БД один раз
curl -sS -X POST "$SPG99_CP_URL/tenants/acme/dbs" -H "Authorization: Bearer $SPG99_API_KEY" -H "Content-Type: application/json" -d '{"name":"app"}' | jq .
# 2) Первое подключение триггерит auto-start compute
psql 'postgres://<pg_user>:<pg_password>@<gateway-host>:5432/app?sslmode=require'
# 3) Проверить текущий статус
curl -sS "$SPG99_CP_URL/tenants/acme/dbs/app" -H "Authorization: Bearer $SPG99_API_KEY" | jq .
