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

Pricing Appendix

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

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

Pricing Appendix задаёт:

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

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

  • Invocation — пользовательское выполнение Runtime по запросу
  • CPU Seconds — фактическое процессорное время выполнения
  • Memory GB-Seconds — интеграл потребления памяти во времени
  • Residency Seconds — время удержания готовых экземпляров
  • Streaming Seconds — длительность потоковой выдачи
  • WebSocket Seconds — время активных WebSocket-соединений
  • Invocation — выполнение isolate-кода по запросу
  • CPU Seconds — wall-time выполнения isolate
  • Memory GB-Seconds — интеграл сконфигурированной памяти на время выполнения
  • Subrequests — внешние операции isolate (KV ops + HTTP fetch)
  • 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 — сетевой трафик между приложением и базой
  • Extra Databases — количество БД сверх включённых в план
  • Extra Branches — количество веток сверх включённых в план
КлючЕдиница
invocationscount
cpu_secondsseconds
memory_gb_secondsGB-s
residency_secondsseconds
streaming_secondsseconds
websocket_secondsseconds
КлючЕдиница
invocationscount
cpu_secondsseconds
memory_gb_secondsGB-s
subrequestscount
КлючЕдиница
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_gbGB
  • Запрос, дошедший до пользовательского кода и завершившийся пользовательским ответом (Compute/Isolate)
  • Ресурсное потребление (CPU, memory, residency) в рамках выполнений
  • Доставка данных пользователю, хранение артефактов и трансформация изображений (Static)
  • Внешние операции isolate (KV, HTTP fetch)
  • CU-weighted compute, хранилище, трафик и доп. ресурсы managed PostgreSQL
  • Запросы, отклонённые до запуска пользовательского кода
  • 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_residency_seconds = (SUM(ready_us) + SUM(reserved_us)) / 1_000_000
Q_streaming_seconds = SUM(streaming_us) / 1_000_000
Q_websocket_seconds = SUM(websocket_us) / 1_000_000
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_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 использует gauge-семантику (пик за период). 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 = MAX(kv_storage_bytes) / (1024³)

Примечание: kv_storage использует gauge-семантику (максимум за период). Примечание: build_minutes считается по пересечению build-window с расчётным периодом; ceil применяется один раз к суммарной длительности периода.

Для любой метрики M любого слоя:

Q_overage_M = max(0, Q_used_M - Limit_M)
Amount_M = Q_overage_M × Rate_M
Blocks_M = ceil(Q_overage_M / BlockSize_M)
Amount_M = Blocks_M × BlockRate_M
Subtotal = Σ Amount_M (по всем line items всех слоёв)

Каждый line item содержит layer и metric теги для идентификации слоя и метрики.

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

Где:

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

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

  • quantities — нормализованные значения по каждой метрике
  • overages — превышения по каждой метрике
  • limits — действующие лимиты по каждой метрике
  • Hard Cap ограничивает максимальные overage-расходы за период
  • При достижении порога могут применяться защитные ограничения
  • Guardrails автоматически детектируют аномалии (velocity spike, jump anomaly) по каждому слою
  • Полный перечень лимитов и ставок: Лимиты и квоты
  • Эта страница описывает методику расчёта
  • Текущие ставки и включённые лимиты публикуются на Pricing и в биллинге workspace

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

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

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

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

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

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

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