Первая в России Serverless PostgreSQL‑платформа

spg99 поднимает и останавливает compute-узлы автоматически, хранит данные в S3-совместимом хранилище в РФ и управляет жизненным циклом БД через единый Control Plane. Вы создаёте БД одной командой — инфраструктура на нашей стороне.

Посмотреть CLI и API
Внешнее хранилище данных: S3 + Pageserver/SafekeeperAuto start/stop compute по подключению и idleЕдиный Gateway-адрес для всех БД
Databases
tenant t1
TenantDBStateLast usedTimelineScale
t1d1READY10s ago000000011
t1d2STOPPED2h ago000000020
Строка подключения
postgres://t1:<client_token>@provisioner.spg99.ru:5432/d1Gateway:5432
Storage
S3 + Pageserver/Safekeeper
Compute
YC VM, auto start/stop
Как работает spg99

Compute поднимается по запросу, данные хранятся в S3

Хранение — в S3-совместимом хранилище через связку Pageserver/Safekeeper, compute-узлы — одноразовые VM в Яндекс.Облаке. Control Plane ведёт каталог БД, управляет жизненным циклом compute и предоставляет единое API для операторов и CLI.

  • Данные лежат в S3 + Pageserver/Safekeeper, а не на диске VM.
  • Compute поднимается по запросу (auto start) и останавливается по idle (auto stop).
  • Вы работаете с одной CLI-утилитой spgctl и REST API v2.
  • Приложения видят один Gateway-endpoint и стандартный PostgreSQL-протокол.
Для кого spg99

spg99 решает задачи продуктовых команд, SaaS-платформ и внутренних сервисов с требованиями по размещению в РФ

Продуктовые команды и стартапы

Не нужно держать отдельного DBA и разбираться в тонкостях WAL, бэкапов и жизненного цикла VM. CLI + API — и готовая БД.

SaaS-платформы с десятками/сотнями БД

Для каждого клиента — отдельная БД/tenant, при этом compute не простаивает: idle-инстансы автоматически останавливаются.

Внутренняя аналитика и сервисы с требованиями по РФ

Размещение данных и бэкапов внутри РФ, инфраструктура — в Яндекс.Облаке, S3-совместимое хранилище.

Какие задачи закрывает spg99

Control Plane берёт на себя всю рутину вокруг PostgreSQL и инфраструктуры

  • Поднятие, обновление и патчинг PostgreSQL на VM.
  • Настройка WAL-стриминга, резервных копий и S3-хранилища.
  • Восстановление БД после падения compute.
  • Расчёт стоимости: отделяем оплату storage от compute, compute можно гасить по idle и не платить за простаивающие инстансы.
Преимущества

Платформа, построенная вокруг разделения storage и compute, auto start/stop и единого Control Plane

Storage и compute разделены по-взрослому

Данные лежат в S3 через Pageserver/Safekeeper. Compute-узлы — одноразовые VM: их можно пересоздавать сколько угодно, timeline при этом сохраняется.

Auto start/stop по подключению и idle

Первое подключение через Gateway автоматически поднимает VM. При отсутствии трафика Control Plane останавливает compute по политике idle.

Одна команда для создания БД

spgctl db create … или POST /v2/tenants/{t}/dbs. Профиль YC, образ, зону и размер подберёт Control Plane.

Единый Gateway-адрес для приложений

Приложения подключаются как к обычному Postgres по стандартному DSN. Gateway занимается маршрутизацией и оркестрацией scale.

Российская инфраструктура по умолчанию

Компоненты крутятся в Яндекс.Облаке, данные и WAL-архивы лежат в S3-совместимом хранилище в РФ.

Каноничная архитектура компонентов

Control Plane, Provisioner, Agent, Safekeeper, Pageserver, Gateway — роли разделены, операции стандартизированы, всё прозрачно для операторов.

Developer Experience

Создание и запуск БД — простые команды в spgctl или REST-запросов к Control Plane. Приложение видит обычный PostgreSQL-DSN, а не детали Yandex.Cloud и S3.

CLIREST API v2psql
CLI: spgctl
# Логин под своим tenant
export SPG99_CP_URL=https://provisioner.spg99.ru
export SPG99_TOKEN=<acme-token>

# Создать tenant t1 (один раз)
spgctl tenant create t1

# Создать БД d1 в t1 без немедленного старта compute
spgctl db create \
  --tenant t1 \
  --name d1 \
  --size dev-small \
  --start-immediately=false

# Явно запустить compute
spgctl db scale --tenant t1 --db d1 --to 1

# Посмотреть состояние
spgctl db describe --tenant t1 --db d1
GitHub: spgctl
github.com

Исходники CLI spgctl: репозиторий с кодом, инструкциями по сборке и установке. Открывайте PR или берите готовый релиз.

REST API v2
curl -sS -X POST "$CP_URL/v2/tenants/t1/dbs" \
  -H "Authorization: Bearer $ACME_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"d1","size":"dev-small","start_immediately":false}' | jq .
DSN, который вернёт Control Plane
postgres://t1:<client_token>@provisioner.spg99.ru:5432/d1стандартный PostgreSQL
Архитектура

Как работает spg99 под капотом

Восемь сервисов, одна платформа. Control Plane управляет жизненным циклом БД, Pageserver/Safekeeper отвечают за storage, Gateway — за входной PostgreSQL-протокол.

Схема потока запросов и данных
ClientGatewayControl Plane
Provisioner / Agent / ComputeSafekeeperPageserverS3
Catalog

Control Plane — источник истины по tenants, db, timelines, state, scale и DSN.

Storage

Safekeeper/Pageserver превращают S3 в надёжный слой хранения WAL и page-слоёв для PostgreSQL.

Control Plane (CP)

Ведёт каталог БД (SQLite catalog.sqlite), хранит состояние (STOPPED/READY/…), реализует REST API v2 и управляет операциями scale 0↔1. Генерирует DSN, register-token и X.509 для воркеров.

Provisioner

Адаптер к Yandex.Cloud API. По командам CP создаёт и останавливает VM под compute, не общается напрямую с приложениями.

Compute-узел

VM с PostgreSQL 17 и расширением spg99 (remote storage manager + WAL-sender) и Agent. Agent принимает bootstrap от CP, настраивает Postgres и репортит состояние.

Safekeeper

Принимает WAL от spg99_walsender, пишет локальный лог и выгружает сегменты в S3. Обеспечивает надёжное хранение WAL.

Pageserver

Подписывается на Safekeeper, применяет WAL и создаёт page-слои в S3. Отвечает за чтения для remote storage manager в PostgreSQL.

Gateway

Слушает :5432 с TLS, реализует PostgreSQL-протокол для клиентов. По первому коннекту запрашивает lease у CP и, при необходимости, триггерит auto start.

S3-хранилище

Bucket spg99-data с иерархией tenants/{tid}/db/{dbid}/timeline/{tl}/…. Там живут WAL и page-слои.

CLI spgctl

Инструмент разработчиков, ходит только в Control Plane REST v2. Никаких прямых вызовов YC API и ручной работы с S3.

End-to-end сценарий

От создания БД до остановки по idle

Наглядный путь запроса через компоненты spg99 — от CLI до S3.

11. Создаёте БД

spgctl db create или POST /v2/tenants/{t}/dbs — Control Plane заводит запись в каталоге, создаёт timeline в Pageserver и готовит storage.

22. Первое подключение

Клиент идёт на Gateway, который запрашивает lease у Control Plane и, если compute не запущен, инициирует auto start через Provisioner.

33. Работа и durability

PostgreSQL пишет WAL в Safekeeper. Safekeeper пакует сегменты в S3, Pageserver подписывается на WAL, применяет его и хранит page-слои в S3.

44. Остановка по idle

Control Plane отслеживает active_connections и last_used_at. При простое отправляет команду stop_db в Provisioner — VM гасится, данные остаются в S3.

Кейсы

Кейсы использования spg99

Сценарии, где разделённые storage/compute и auto start/stop дают максимальный эффект.

Мульти-тенант SaaS

Отдельная БД на tenant. Базы поднимаются по первому запросу, простои не стоят денег — compute выключен.

Preview / staging-окружения

Временные БД под каждую ветку или PR. После тестов compute останавливается, storage остаётся для отладки.

Внутренние сервисы со sporadic-нагрузкой

Админки, внутренние API и ETL, которые включаются по расписанию или руками. Платите только за время работы.

Аналитика и долгие запросы

Выделенные профили compute, которые живут только во время тяжёлых задач и не мешают боевой нагрузке.

Цены

Простая модель: storage отдельно, compute отдельно

Storage — долгосрочно в S3, compute — только когда нужен. Никаких сюрпризов от простаивающих VM.

Скоро
Standard

Pay-as-you-go для продакшена

  • · Оплата за GiB в S3.
  • · Почасовая оплата compute по профилям (dev-small, prod-medium и т.д.).
  • · Auto start/stop включены по умолчанию.
В разработке
Platform / Enterprise

Отдельный контур и расширенные SLO

  • · Выделенные профили compute и storage.
  • · VPC-подключение, расширенная безопасность.
  • · Индивидуальные SLO и поддержка.
Roadmap

Куда развивается spg99

Мы начинаем с надёжного ядра — внешнего хранилища данных на базе российской облачной инфраструктуры и Control Plane — и развиваем платформу вглубь и вширь.

Сейчас

MVP ядро платформы

  • · Внешнее хранилище данных (S3 + Pageserver/Safekeeper).
  • · Auto start/stop compute через CP и Gateway.
  • · CLI spgctl и REST API v2.
  • · Развёртывание в Яндекс.Облаке (ru-central1).
В ближайшем релизе

Наблюдаемость, безопасность и web-консоль

  • · Pay as you go: готовые дашборды в Grafana и логи в Kibana по cold start, состояниям compute и auto start/stop без ручной настройки.
  • · Web-консоль для управления tenants/БД и выдачи DSN/кредов без CLI.
  • · Новые профили compute и ускорение cold start за счёт оптимизации bootstrap и подгрузки page-слоёв.
Дальше

Масштабирование и интеграции

  • · Расширенное масштабирование (multi-AZ, гибкие политики auto scale).
  • · Шаблоны окружений dev/stage/prod поверх compute-профилей.
  • · Дополнительные интеграции и SDK.
FAQ

Ответы на частые вопросы

Если чего-то не хватает — это отличный повод поговорить с инженером spg99.

Чем spg99 отличается от PostgreSQL на обычной VM в Яндекс.Облаке?

spg99 отделяет compute от storage. Данные и WAL хранятся в S3 через Pageserver/Safekeeper, VM с PostgreSQL одноразовая и управляется Control Plane. Вы не настраиваете кластеры, репликацию и бэкапы вручную.

Что происходит с данными, если VM упала?

Данные не лежат на диске VM. WAL и page-слои уже находятся в S3. Control Plane поднимет новый compute-узел, подключит его к Safekeeper/Pageserver и восстановит состояние по timeline.

Как работает auto start/stop?

Первое подключение к DSN приходит в Gateway. Gateway спрашивает Control Plane, есть ли живой compute. Если нет — CP через Provisioner поднимает VM. По idle Control Plane отправляет команду на остановку.

Можно ли мигрировать существующую базу в spg99?

Да, через логическую или физическую репликацию и/или pg_dump/pg_restore. Детали зависят от исходной версии и объёма данных.

Где физически хранятся данные и WAL?

В S3-совместимом объектном хранилище в РФ. Safekeeper пишет WAL в S3, Pageserver хранит там page-слои, организованные по tenants/db/timeline.

Как контролировать стоимость хранения и compute?

Storage оплачивается помесячно за GiB в S3, compute — по часам фактической работы VM. Auto start/stop не даёт простаивать инстансам без трафика.