Перейти к содержимому

Pricing Appendix

Этот документ фиксирует публичные правила расчёта стоимости платформы.

  • Модель: PLATFORM_PRICING_V2
  • Статус: Public / normative
  • Дата вступления версии: 4 марта 2026
  • Применение: все начисления после даты вступления версии
  • Scope: Compute, Isolate, Static, Managed PostgreSQL, Common — billable метрики платформы, включая Runtime KV storage/read/write units

Pricing Appendix задаёт:

  • какие метрики тарифицируются по каждому слою;
  • какие события не тарифицируются;
  • как считаются usage credit, extra usage budget и line items;
  • как применяются округления и итоговая сумма.

Документ не раскрывает внутреннюю инфраструктуру и не описывает реализацию metering pipeline.

  • Invocation — пользовательское выполнение Runtime по запросу
  • Process Compute CU — единая compute-метрика Runtime. 1 CU соответствует 1 vCPU + 4 ГБ RAM
  • Isolate Compute CU — единая compute-метрика edge runtime. 1 CU соответствует активной runtime работе или 4 ГБ reserved memory time
  • Egress GB — объём данных, доставленных пользователю
  • Storage GB-Month — хранение артефактов деплоя
  • Image Transforms — трансформации изображений
  • Origin Fetch GB — запросы к origin при cache miss
  • CU Seconds — CU-weighted compute time (cu_size × active_time_seconds)
  • Storage GB — пиковый объём хранилища (данные + WAL, стоимость включает written_data)
  • Data Transfer GB — сетевой трафик между приложением и базой
  • Database Months — количество активных БД за период
  • Branch Months — количество активных веток за период
КлючЕдиница
process_compute_cu_secondsCU-seconds
КлючЕдиница
egress_gbGB
storage_gb_monthGB-month
image_transformscount
origin_fetch_gbGB
КлючЕдиница
cu_secondsCU-seconds
storage_gbGB
data_transfer_gbGB
extra_databasescount
extra_branchescount
КлючЕдиница
build_minutesminutes
kv_storage_gb_monthGB-month
kv_read_million_units1M read units
kv_write_million_units1M write units
  • Запрос, дошедший до пользовательского кода и завершившийся пользовательским ответом (Compute)
  • Ресурсное потребление Compute в CU, включая CPU, память, активное удержание процесса, streaming/WebSocket и тёплое ожидание после freeze
  • Ресурсное потребление Isolate в CU, включая активное runtime CPU-like время и reserved memory time
  • Доставка данных пользователю, хранение артефактов и трансформация изображений (Static)
  • CU-weighted compute, хранилище, трафик и доп. ресурсы managed PostgreSQL
  • Runtime KV storage, reads и writes
  • Запросы, отклонённые до запуска пользовательского кода
  • ISR cache hits без выполнения isolate
  • Внутренний service-to-service трафик платформы
  • Health-check и telemetry вызовы
  • Кэш-хиты, не создающие origin egress
  • Системные ретраи без пользовательского ответа
Q_invocations = SUM(invocation_count)
Q_cpu_seconds = SUM(cpu_us) / 1_000_000
Q_memory_gb_seconds = SUM(memory_mb_us) / (1024 × 1_000_000)
Q_compute_seconds = SUM(ready_us + reserved_us + streaming_us + websocket_us) / 1_000_000
Q_frozen_seconds = SUM(frozen_us) / 1_000_000
Q_process_cu_seconds =
max(Q_cpu_seconds, Q_memory_gb_seconds / 4, Q_compute_seconds × 0.25)
+ Q_frozen_seconds × 0.05
Q_isolate_invocations = SUM(isolate_invocation_count)
Q_isolate_cpu_seconds = SUM(isolate_cpu_us) / 1_000_000
Q_isolate_memory_gb_seconds = SUM(isolate_memory_mb_us) / (1024 × 1_000_000)
Q_isolate_cu_seconds = max(Q_isolate_cpu_seconds, Q_isolate_memory_gb_seconds / 4)
Q_isolate_subrequests = SUM(isolate_kv_reads + isolate_kv_writes + isolate_fetch_count)
Q_static_egress_gb = SUM(static_egress_bytes) / (1024³)
byte_seconds = Σ(artifact_size_bytes × overlap_seconds_in_period)
Q_static_storage_gb_month = byte_seconds / (1024³ × 2_592_000)
Q_static_image_transforms = SUM(static_image_transform_count)
Q_static_origin_fetch_gb = SUM(static_origin_fetch_bytes) / (1024³)

Примечание: storage_gb_month считается как аналитический byte-seconds интеграл по жизненному циклу артефактов.

Q_kaiki_cu_seconds = SUM(kaiki_cu_seconds)
Q_kaiki_cu_hours = Q_kaiki_cu_seconds / 3600
Q_kaiki_storage_gb = MAX(kaiki_data_storage_bytes) / (1024³)
Q_kaiki_data_transfer_gb = SUM(kaiki_data_transfer_bytes) / (1024³)
Q_kaiki_database_count = COUNT(databases WHERE status != DELETED)
Q_kaiki_total_branch_count = COUNT(branches WHERE status != DELETED)

Примечание: cu_seconds = cu_size × active_time_seconds. Для storage берётся пик за период. cu_hours тарифицируется блоками по 1 CU-час (BlockSize = 3600 CU-секунд). Storage стоимость включает written_data (WAL).

build_overlap_seconds_i = overlap_seconds(build_i_started_at..build_i_finished_at, period_start..period_end)
Q_build_minutes = ceil( SUM(build_overlap_seconds_i) / 60 )
Q_kv_storage_gb_month = SUM(kv_storage_byte_seconds) / (1024³ × 2_592_000)
Q_kv_read_million_units = SUM(kv_read_units) / 1_000_000
Q_kv_write_million_units = SUM(kv_write_units) / 1_000_000

Примечание: kv_storage_bytes используется как hard-cap gauge. Billable storage считает key + value + metadata + platform overhead во времени. KV read/write тарифицируются пропорционально количеству million units, без минимального блока 1M. Примечание: build_minutes считается по пересечению build-window с расчётным периодом; ceil применяется один раз к суммарной длительности периода.

Для любой billable-метрики M quantity считается с первой единицы. Limit_M не вычитается из quantity для экономического расчёта: это reference/control value и защитный порог.

GrossLineAmount_M = charge(Q_used_M, Rate_M)
GrossUsage = Σ GrossLineAmount_M
IncludedCreditApplied = min(GrossUsage, IncludedUsageCredit)
ExtraUsage = max(0, GrossUsage - IncludedUsageCredit)
BlockedUnapprovedUsage = max(0, ExtraUsage - ExtraUsageBudget)
GrossLineAmount_M = Q_used_M × Rate_M
Blocks_M = ceil(Q_used_M / BlockSize_M)
GrossLineAmount_M = Blocks_M × BlockRate_M
Subtotal = ExtraUsage (после применения included usage credit)

Каждый gross line item содержит layer и metric теги для идентификации слоя и метрики. Для Hobby paid extra usage нет: когда GrossUsage >= IncludedUsageCredit, новые billable-операции блокируются. Для Pro paid usage допускается только в пределах ExtraUsageBudget.

  1. Usage и промежуточные quantity считаются без раннего округления
  2. Для per_block сначала применяется ceil количества блоков
  3. Денежные значения line item округляются round_half_up до денежной точности
  4. Сумма формируется из line items после их округления
InvoiceTotal = Subtotal + Adjustments - Credits

Где:

  • Subtotal — сумма всех line items (compute + static + managed postgresql + common)
  • Adjustments — корректировки начислений
  • Credits — промо/компенсационные кредиты

ONREZA работает на УСН, поэтому НДС не выделяется: в инвойсах и УПД указывается «Без налога (НДС)». Для плательщиков типа ИП и ЮЛ после оплаты автоматически формируется УПД с составом начислений из line items. Подробнее — в разделе Оплата и реквизиты.

Каждый инвойс содержит diagnostics-блок:

  • quantities — нормализованные значения по каждой метрике
  • grossUsage — usage до применения included credit
  • includedUsageCreditApplied — применённый included usage credit
  • extraUsage — usage сверх included credit
  • limits — действующие hard caps и защитные пороги
  • Hard Cap ограничивает максимальные extra usage расходы за период
  • При достижении порога могут применяться защитные ограничения
  • Платформа автоматически детектирует резкие аномалии потребления по каждому слою
  • Полный перечень лимитов и ставок: Лимиты и квоты
  • Эта страница описывает методику расчёта
  • Текущие ставки, usage credit и hard caps публикуются на Pricing и в биллинге workspace

При расхождении источников:

  1. Индивидуальные коммерческие условия (если есть)
  2. Выставленный инвойс с детализацией line items за конкретный период
  3. Публичная pricing-страница и активные лимиты workspace
  4. Этот appendix как нормативная методика расчёта

Изменения модели публикуются как новая версия (PLATFORM_PRICING_V*) с датой вступления. Для каждой версии фиксируются:

  • список billable-метрик по слоям
  • формулы usage credit и extra usage
  • политика округлений
  • правила применения line items

Ретроактивное изменение уже выставленных и закрытых инвойсов не применяется, кроме случаев явной ошибки начисления.

  1. Возьмите usage по каждой метрике каждого слоя за расчётный период
  2. Примените per_unit или per_block тариф к quantity с первой единицы
  3. Сложите gross line items
  4. Примените included usage credit и extra usage budget
  5. Проверьте округления по правилам раздела 7 и примените корректировки/кредиты/налоги

Для пошаговых формул: Формулы и переменные.