Биллинг: формулы и переменные
Эта страница для точной проверки расчёта: что агрегируется, как применяется usage credit, как получается итоговая сумма.
Нормативная публичная версия методики: Pricing Appendix.
1. Compute — входные значения и нормализация
Заголовок раздела «1. Compute — входные значения и нормализация»За расчётный период агрегируются:
invocation_countcpu_us(микросекунды)memory_mb_us(интегралmemory_mb × время)ready_us,reserved_us,streaming_us,websocket_us,frozen_us
Входные значения хранятся без округления.
Нормализованные количества
Заголовок раздела «Нормализованные количества»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_compute_seconds = SUM(ready_us + reserved_us + streaming_us + websocket_us) / 1_000_000Q_frozen_seconds = SUM(frozen_us) / 1_000_000Q_process_cu_seconds = max(Q_cpu_seconds, Q_memory_gb_seconds / 4, Q_compute_seconds × 0.25) + Q_frozen_seconds × 0.052. Isolate — входные значения и нормализация
Заголовок раздела «2. Isolate — входные значения и нормализация»Входные значения:
isolate_invocation_countisolate_cpu_us(активное runtime CPU-like время, µs)isolate_memory_mb_us(интегралeffective_memory_limit_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_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)3. Static — входные значения и нормализация
Заголовок раздела «3. Static — входные значения и нормализация»Входные значения:
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 — входные значения и нормализация
Заголовок раздела «4. Managed PostgreSQL — входные значения и нормализация»Входные значения:
kaiki_cu_seconds— CU-weighted compute time: cu_size × active_time_secondskaiki_data_storage_bytes— пиковый объём хранилища, включает written_data/WALkaiki_data_transfer_bytes— сетевой трафик
Диагностические (не 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 — входные значения и нормализация
Заголовок раздела «5. Common — входные значения и нормализация»Входные значения:
build_minuteskv_storage_byteskv_storage_byte_secondskv_read_unitskv_write_units
Нормализованные количества
Заголовок раздела «Нормализованные количества»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_000Q_kv_write_million_units = SUM(kv_write_units) / 1_000_0006. Gross usage по billable-метрикам
Заголовок раздела «6. Gross usage по billable-метрикам»Для любой billable-метрики M quantity считается с первой единицы. Плановые control values не вычитаются из
quantity для экономического расчёта:
GrossLineAmount_M = charge(Q_used_M, Rate_M)Где Rate_M — текущая ставка метрики. Limit_M, если он есть в плане, является reference/control value или
защитным порогом.
7. Стоимость line item
Заголовок раздела «7. Стоимость line item»Режим per_unit
Заголовок раздела «Режим per_unit»GrossLineAmount_M = Q_used_M × Rate_MРежим per_block
Заголовок раздела «Режим per_block»Blocks_M = ceil(Q_used_M / BlockSize_M)GrossLineAmount_M = Blocks_M × BlockRate_MКаждый line item содержит layer и metric теги для идентификации.
8. Финальная сумма счёта
Заголовок раздела «8. Финальная сумма счёта»GrossUsage = Σ GrossLineAmount_MIncludedCreditApplied = min(GrossUsage, IncludedUsageCredit)ExtraUsage = max(0, GrossUsage - IncludedUsageCredit)InvoiceTotal = ExtraUsage + Adjustments - Credits + TaxesГде:
Σ GrossLineAmount_M— сумма по всем gross line items всех слоёвIncludedCreditApplied— включенный usage credit планаExtraUsage— usage сверх included credit, который попадает в счёт в пределах extra usage budgetAdjustments— ручные/системные корректировкиCredits— промокредиты и компенсацииTaxes— налоги по профилю биллинга
9. Политика округлений
Заголовок раздела «9. Политика округлений»- Raw-счётчики: без округления
Q_*: точность не менее 6 знаков после запятой- Для
per_block: сначалаceilблоков, потом умножение - Каждый
Amount_M:round_half_upдо денежной точности - Общая сумма: после суммирования line items и применения корректировок
10. Мини-пример расчёта
Заголовок раздела «10. Мини-пример расчёта»Пусть за период:
- Compute:
Q_process_cu_seconds = 7,200, ставка7.50за CU-час - Static:
Q_static_egress_gb = 25, ставка7.50за GB - Included usage credit:
5,000.00
Compute CU: blocks = ceil(7,200 / 3,600) = 2; amount = 2 × 7.50 = 15.00Static Egress: amount = 25 × 7.50 = 187.50─────────────────────────────────────────────GrossUsage = 202.50IncludedCreditApplied = 202.50ExtraUsage = 0.00Такой период полностью покрывается included usage credit. Если GrossUsage превысит credit, разница попадёт в
счёт в пределах extra usage budget.