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

Биллинг: формулы и переменные

Эта страница для точной проверки расчёта: что агрегируется, как применяются лимиты, как получается итоговая сумма.

Нормативная публичная версия методики: Pricing Appendix.

За расчётный период агрегируются:

  • invocation_count
  • cpu_us (микросекунды)
  • memory_mb_us (интеграл memory_mb × время)
  • ready_us, reserved_us (frozen_us собирается, но не тарифицируется)
  • streaming_us, websocket_us

Все raw-счётчики хранятся без округления.

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

Raw-счётчики:

  • isolate_invocation_count
  • isolate_cpu_us (wall-time выполнения, µs)
  • isolate_memory_mb_us (интеграл configured_memory_mb × execution_time_us)
  • isolate_fetch_count, isolate_kv_reads, isolate_kv_writes
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)

Raw-счётчики:

  • static_egress_bytes
  • static_image_transform_count
  • static_origin_fetch_bytes
Q_static_egress_gb = SUM(static_egress_bytes) / (1024³)
Q_static_image_transforms = SUM(static_image_transform_count)
Q_static_origin_fetch_gb = SUM(static_origin_fetch_bytes) / (1024³)

Storage учитывает реальную длительность хранения каждого деплоя в рамках расчётного периода:

byte_seconds = Σ (размер_артефакта × время_хранения_в_секундах)
Q_static_storage_gb_month = byte_seconds / (1024³ × 2_592_000)

Время хранения — пересечение жизненного цикла деплоя с расчётным периодом. Артефакт учитывается с момента деплоя до момента удаления (purge).

Raw-счётчики:

  • kaiki_cu_seconds (counter — CU-weighted compute time: cu_size × active_time_seconds)
  • kaiki_data_storage_bytes (gauge — пиковый объём хранилища, включает written_data/WAL)
  • kaiki_data_transfer_bytes (counter — сетевой трафик)

Диагностические (не billable): kaiki_active_time_seconds, kaiki_compute_time_seconds, kaiki_written_data_bytes.

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)

Raw-счётчики:

  • build_minutes
  • kv_storage_bytes (gauge)
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³)

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

Q_overage_M = max(0, Q_used_M - Limit_M)

Где Limit_M — включённый лимит плана по метрике.

Amount_M = Q_overage_M × Rate_M
Blocks_M = ceil(Q_overage_M / BlockSize_M)
Amount_M = Blocks_M × BlockRate_M

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

InvoiceTotal = Σ Amount_M + Adjustments - Credits + Taxes

Где:

  • Σ Amount_M — сумма по всем line items всех слоёв
  • Adjustments — ручные/системные корректировки
  • Credits — промокредиты и компенсации
  • Taxes — налоги по профилю биллинга
  1. Raw-счётчики: без округления
  2. Q_*: точность не менее 6 знаков после запятой
  3. Для per_block: сначала ceil блоков, потом умножение
  4. Каждый Amount_M: round_half_up до денежной точности
  5. Общая сумма: после суммирования line items и применения корректировок

Пусть за период:

  • Compute: Q_cpu_seconds = 52,800, лимит 50,000, ставка 0.01 за секунду
  • Isolate: Q_isolate_invocations = 1,200,000, лимит 1,000,000, per_block 1,000 по ставке 0.05
  • Static: Q_static_egress_gb = 25, лимит 20, ставка 5.00 за GB
Compute CPU: overage = 2,800; amount = 2,800 × 0.01 = 28.00
Isolate Inv: overage = 200,000; blocks = ceil(200,000 / 1,000) = 200; amount = 200 × 0.05 = 10.00
Static Egress: overage = 5; amount = 5 × 5.00 = 25.00
─────────────────────────────────────────────
Subtotal = 45.50

К 45.50 применяются Adjustments, Credits, Taxes по правилам профиля.