revise October 2024 capacity cost articles
Build and deploy / deploy (push) Successful in 17s

This commit is contained in:
2026-07-31 16:43:48 +03:00
parent 04dbb60f16
commit 1b5ff34e2b
7 changed files with 980 additions and 1 deletions
@@ -0,0 +1,33 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="620" viewBox="0 0 1000 620" role="img" aria-labelledby="title desc">
<title id="title">Кривая следующего предела для трёх synthetic сценариев</title>
<desc id="desc">График показывает три точки: текущий предел, следующий небольшой предел и большой инстанс. Производительность улучшается неравномерно, а модельная стоимость и операционный риск растут по разным кривым. Пунктиром отмечена stop condition.</desc>
<rect width="1000" height="620" rx="28" fill="#0c1524"/>
<text x="56" y="66" fill="#f5f8ff" font-family="Arial, sans-serif" font-size="34" font-weight="700">Следующий предел вместо большого инстанса</text>
<text x="56" y="104" fill="#aebed7" font-family="Arial, sans-serif" font-size="23">Три fixed synthetic cases: curve отделяет stop condition от решения</text>
<g stroke="#35506f" stroke-width="2">
<path d="M120 480 H908"/>
<path d="M120 150 V480"/>
<path d="M120 370 H908" stroke-dasharray="8 8"/>
</g>
<text x="68" y="160" fill="#aebed7" font-family="Arial, sans-serif" font-size="19">проверяемый</text>
<text x="68" y="184" fill="#aebed7" font-family="Arial, sans-serif" font-size="19">эффект</text>
<text x="710" y="364" fill="#ec8bad" font-family="Arial, sans-serif" font-size="19">stop: p95/risk condition</text>
<g font-family="Arial, sans-serif">
<path d="M176 420 C310 332 430 284 534 262 S742 222 860 218" fill="none" stroke="#69d3b1" stroke-width="7"/>
<text x="808" y="204" fill="#8de0c6" font-size="22" font-weight="700">performance</text>
<path d="M176 440 C322 410 428 366 534 322 S736 248 860 182" fill="none" stroke="#f5c365" stroke-width="7"/>
<text x="804" y="164" fill="#ffd58a" font-size="22" font-weight="700">model cost</text>
<path d="M176 352 C310 340 422 352 534 382 S730 440 860 458" fill="none" stroke="#ec8bad" stroke-width="7"/>
<text x="810" y="490" fill="#ffb2cc" font-size="22" font-weight="700">operational risk</text>
<circle cx="176" cy="420" r="12" fill="#69d3b1"/><circle cx="176" cy="440" r="12" fill="#f5c365"/><circle cx="176" cy="352" r="12" fill="#ec8bad"/>
<circle cx="534" cy="262" r="12" fill="#69d3b1"/><circle cx="534" cy="322" r="12" fill="#f5c365"/><circle cx="534" cy="382" r="12" fill="#ec8bad"/>
<circle cx="860" cy="218" r="12" fill="#69d3b1"/><circle cx="860" cy="182" r="12" fill="#f5c365"/><circle cx="860" cy="458" r="12" fill="#ec8bad"/>
<text x="133" y="532" fill="#dbe8fb" font-size="22" font-weight="700">current</text>
<text x="112" y="560" fill="#aebed7" font-size="18">1.2 CPU</text>
<text x="473" y="532" fill="#dbe8fb" font-size="22" font-weight="700">next limit</text>
<text x="476" y="560" fill="#aebed7" font-size="18">1.4 CPU</text>
<text x="783" y="532" fill="#dbe8fb" font-size="22" font-weight="700">large instance</text>
<text x="808" y="560" fill="#aebed7" font-size="18">4.0 CPU</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

@@ -0,0 +1,41 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1050" viewBox="0 0 1000 1050" role="img" aria-labelledby="title desc">
<title id="title">Capacity-card: нагрузка, ресурс, единица расчёта и предел</title>
<desc id="desc">Четыре крупные последовательные карточки показывают путь от synthetic нагрузки через ресурс и единицу расчёта к условию остановки. Нижняя подпись отделяет учебную модель от реального счёта.</desc>
<rect width="1000" height="1050" rx="28" fill="#0c1524"/>
<text x="56" y="66" fill="#f5f8ff" font-family="Arial, sans-serif" font-size="34" font-weight="700">Capacity-card: что связано с чем</text>
<text x="56" y="104" fill="#aebed7" font-family="Arial, sans-serif" font-size="23">Один fixed synthetic snapshot, не cloud bill и не production telemetry</text>
<g font-family="Arial, sans-serif">
<rect x="56" y="150" width="888" height="120" rx="18" fill="#163052" stroke="#4f9dff" stroke-width="3"/>
<text x="84" y="198" fill="#8cc5ff" font-size="25" font-weight="700">1. Workload</text>
<text x="84" y="238" fill="#f5f8ff" font-size="28" font-weight="700">120 req/s</text>
<text x="320" y="198" fill="#d6e4f8" font-size="22">peak: 180 req/s · p95: 235 ms</text>
<text x="320" y="234" fill="#aebed7" font-size="20">Нагрузка задаёт контекст, но сама не является единицей цены.</text>
<path d="M500 276 V318" fill="none" stroke="#69d3b1" stroke-width="6" stroke-linecap="round"/>
<path d="M488 310 L500 334 L512 310" fill="none" stroke="#69d3b1" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="56" y="342" width="888" height="120" rx="18" fill="#153b3b" stroke="#69d3b1" stroke-width="3"/>
<text x="84" y="390" fill="#8de0c6" font-size="25" font-weight="700">2. Resource</text>
<text x="84" y="430" fill="#f5f8ff" font-size="28" font-weight="700">request 1.2 CPU · 2.0 GiB</text>
<text x="570" y="390" fill="#d6f4ea" font-size="22">limit: 1.6 CPU · 3.0 GiB</text>
<text x="570" y="426" fill="#aebed7" font-size="20">Request и limit не равны usage.</text>
<path d="M500 468 V510" fill="none" stroke="#f5c365" stroke-width="6" stroke-linecap="round"/>
<path d="M488 502 L500 526 L512 502" fill="none" stroke="#f5c365" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="56" y="534" width="888" height="120" rx="18" fill="#4a3620" stroke="#f5c365" stroke-width="3"/>
<text x="84" y="582" fill="#ffd58a" font-size="25" font-weight="700">3. Unit cost</text>
<text x="84" y="622" fill="#f5f8ff" font-size="28" font-weight="700">CPU-h + GiB-h</text>
<text x="420" y="582" fill="#fff0ce" font-size="22">base: 0.36 u/h · usage: 0.116 u/h</text>
<text x="420" y="618" fill="#aebed7" font-size="20">Единицу, tier и период задаёт отдельный billing contract.</text>
<path d="M500 660 V702" fill="none" stroke="#ec8bad" stroke-width="6" stroke-linecap="round"/>
<path d="M488 694 L500 718 L512 694" fill="none" stroke="#ec8bad" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="56" y="726" width="888" height="120" rx="18" fill="#4c263a" stroke="#ec8bad" stroke-width="3"/>
<text x="84" y="774" fill="#ffb2cc" font-size="25" font-weight="700">4. Предел</text>
<text x="84" y="814" fill="#f5f8ff" font-size="28" font-weight="700">SLO · cost · risk · stop condition</text>
<text x="570" y="774" fill="#ffe0ea" font-size="22">Сравнение останавливается до выбора следующего лимита.</text>
<text x="570" y="810" fill="#aebed7" font-size="20">Предел не обещает экономию и не меняет среду.</text>
</g>
<rect x="56" y="894" width="888" height="96" rx="16" fill="#101f34" stroke="#31547e" stroke-width="2"/>
<text x="82" y="934" fill="#dbe8fb" font-family="Arial, sans-serif" font-size="22">Проверка: фиксируем единицу, период, scope и owner до сравнения вариантов.</text>
<text x="82" y="968" fill="#8fb2dc" font-family="Arial, sans-serif" font-size="20">Модель не подтверждает цену, экономию и изменение среды.</text>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

@@ -0,0 +1,41 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="620" viewBox="0 0 1000 620" role="img" aria-labelledby="title desc">
<title id="title">Причинная схема: загрузка не равна цене</title>
<desc id="desc">Схема разделяет наблюдаемую загрузку, выделенный ресурс, billing unit, quota и limit. Saturation влияет на риск и latency, а стоимость модели получается только после применения фиксированных единиц и правил.</desc>
<rect width="1000" height="620" rx="28" fill="#0c1524"/>
<text x="56" y="66" fill="#f5f8ff" font-family="Arial, sans-serif" font-size="34" font-weight="700">Почему процент загрузки не равен цене</text>
<text x="56" y="104" fill="#aebed7" font-family="Arial, sans-serif" font-size="23">Стрелка означает связь в synthetic модели, а не инвойс или production advice</text>
<g font-family="Arial, sans-serif" font-size="23">
<rect x="58" y="160" width="210" height="110" rx="16" fill="#163052" stroke="#4f9dff" stroke-width="3"/>
<text x="82" y="204" fill="#8cc5ff" font-weight="700">Observed usage</text>
<text x="82" y="242" fill="#d6e4f8">CPU 58%, memory 61%</text>
<rect x="58" y="334" width="210" height="110" rx="16" fill="#4c263a" stroke="#ec8bad" stroke-width="3"/>
<text x="82" y="378" fill="#ffb2cc" font-weight="700">Saturation</text>
<text x="82" y="416" fill="#ffe0ea">queue, p95, retry risk</text>
<rect x="386" y="160" width="228" height="110" rx="16" fill="#153b3b" stroke="#69d3b1" stroke-width="3"/>
<text x="410" y="204" fill="#8de0c6" font-weight="700">Allocated resource</text>
<text x="410" y="242" fill="#d6f4ea">request, limit, quota</text>
<rect x="386" y="334" width="228" height="110" rx="16" fill="#4a3620" stroke="#f5c365" stroke-width="3"/>
<text x="410" y="378" fill="#ffd58a" font-weight="700">Billing expression</text>
<text x="410" y="416" fill="#fff0ce">unit, tier, fixed base</text>
<rect x="732" y="246" width="212" height="116" rx="16" fill="#3a2754" stroke="#ad8cf5" stroke-width="3"/>
<text x="756" y="290" fill="#cfbcff" font-weight="700">Model cost</text>
<text x="756" y="328" fill="#eee8ff">fixed + variable</text>
<path d="M270 215 H378" fill="none" stroke="#69d3b1" stroke-width="6" stroke-linecap="round"/>
<path d="M370 203 L394 215 L370 227" fill="none" stroke="#69d3b1" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M614 215 H676 Q700 215 700 260 H724" fill="none" stroke="#ad8cf5" stroke-width="6" stroke-linecap="round"/>
<path d="M716 248 L740 260 L716 272" fill="none" stroke="#ad8cf5" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M270 389 H360 Q378 389 378 334" fill="none" stroke="#ec8bad" stroke-width="6" stroke-linecap="round"/>
<path d="M366 346 L378 322 L390 346" fill="none" stroke="#ec8bad" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M614 389 H676 Q700 389 700 348 H724" fill="none" stroke="#f5c365" stroke-width="6" stroke-linecap="round"/>
<path d="M716 336 L740 348 L716 360" fill="none" stroke="#f5c365" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
<text x="293" y="196" fill="#9bc9bb" font-size="18">usage may fit</text>
<text x="624" y="196" fill="#c7b5f4" font-size="18">allocation is an input</text>
<text x="286" y="426" fill="#f2b3c8" font-size="18">does not set a price</text>
<text x="630" y="426" fill="#f9d88f" font-size="18">applies units and tiers</text>
</g>
<rect x="58" y="500" width="886" height="68" rx="14" fill="#101f34" stroke="#31547e" stroke-width="2"/>
<text x="82" y="543" fill="#dbe8fb" font-family="Arial, sans-serif" font-size="22">Quota/limit — границы формы; saturation — stop; цена требует отдельной formula.</text>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB