Биллинг: формулы и переменные
Эта страница для точной проверки расчёта: что агрегируется, как применяются лимиты, как получается итоговая сумма.
Нормативная публичная версия методики: Pricing Appendix.
1. Compute — raw-счётчики и нормализация
Заголовок раздела «1. Compute — raw-счётчики и нормализация»За расчётный период агрегируются:
invocation_countcpu_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_000Q_memory_gb_seconds = SUM(memory_mb_us) / (1024 × 1_000_000)Q_residency_seconds = (SUM(ready_us) + SUM(reserved_us)) / 1_000_000Q_streaming_seconds = SUM(streaming_us) / 1_000_000Q_websocket_seconds = SUM(websocket_us) / 1_000_0002. Isolate — raw-счётчики и нормализация
Заголовок раздела «2. Isolate — raw-счётчики и нормализация»Raw-счётчики:
isolate_invocation_countisolate_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_000Q_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)3. Static — raw-счётчики и нормализация
Заголовок раздела «3. Static — raw-счётчики и нормализация»Raw-счётчики:
static_egress_bytesstatic_image_transform_countstatic_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³)Static Storage — byte-seconds
Заголовок раздела «Static Storage — byte-seconds»Storage учитывает реальную длительность хранения каждого деплоя в рамках расчётного периода:
byte_seconds = Σ (размер_артефакта × время_хранения_в_секундах)Q_static_storage_gb_month = byte_seconds / (1024³ × 2_592_000)Время хранения — пересечение жизненного цикла деплоя с расчётным периодом. Артефакт учитывается с момента деплоя до момента удаления (purge).
4. Managed PostgreSQL — raw-счётчики и нормализация
Заголовок раздела «4. Managed PostgreSQL — raw-счётчики и нормализация»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 / 3600Q_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)5. Common — raw-счётчики и нормализация
Заголовок раздела «5. Common — raw-счётчики и нормализация»Raw-счётчики:
build_minuteskv_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³)6. Overage по каждой метрике
Заголовок раздела «6. Overage по каждой метрике»Для любой метрики M любого слоя:
Q_overage_M = max(0, Q_used_M - Limit_M)Где Limit_M — включённый лимит плана по метрике.
7. Стоимость line item
Заголовок раздела «7. Стоимость line item»Режим per_unit
Заголовок раздела «Режим per_unit»Amount_M = Q_overage_M × Rate_MРежим per_block
Заголовок раздела «Режим per_block»Blocks_M = ceil(Q_overage_M / BlockSize_M)Amount_M = Blocks_M × BlockRate_MКаждый line item содержит layer и metric теги для идентификации.
8. Финальная сумма счёта
Заголовок раздела «8. Финальная сумма счёта»InvoiceTotal = Σ Amount_M + Adjustments - Credits + TaxesГде:
Σ Amount_M— сумма по всем line items всех слоёвAdjustments— ручные/системные корректировкиCredits— промокредиты и компенсацииTaxes— налоги по профилю биллинга
9. Политика округлений
Заголовок раздела «9. Политика округлений»- Raw-счётчики: без округления
Q_*: точность не менее 6 знаков после запятой- Для
per_block: сначалаceilблоков, потом умножение - Каждый
Amount_M:round_half_upдо денежной точности - Общая сумма: после суммирования line items и применения корректировок
10. Мини-пример расчёта
Заголовок раздела «10. Мини-пример расчёта»Пусть за период:
- Compute:
Q_cpu_seconds = 52,800, лимит50,000, ставка0.01за секунду - Isolate:
Q_isolate_invocations = 1,200,000, лимит1,000,000,per_block1,000 по ставке0.05 - Static:
Q_static_egress_gb = 25, лимит20, ставка5.00за GB
Compute CPU: overage = 2,800; amount = 2,800 × 0.01 = 28.00Isolate Inv: overage = 200,000; blocks = ceil(200,000 / 1,000) = 200; amount = 200 × 0.05 = 10.00Static Egress: overage = 5; amount = 5 × 5.00 = 25.00─────────────────────────────────────────────Subtotal = 45.50К 45.50 применяются Adjustments, Credits, Taxes по правилам профиля.