Розподіл ресурсів
1) Завдання і принципи
Розподіл ресурсів - це системний спосіб зіставити попит (навантаження, проекти, інциденти) з пропозицією (CPU/RAM/IO/мережа, ліцензії, люди, бюджети) під цільові SLO і обмеження FinOps.
Базові принципи:- SLO-first: у ресурсу є мета якості; виділення - інструмент її витримати.
- Fairness + Priority: справедлива частка для всіх, але пріоритетним - гарантії.
- Isolation: обмежуємо blast-radius «ненажерливих» навантажень.
- Elasticity: автоматичне розширення/стиснення під фактичний попит.
- Cost-aware: кожен додатковий ресурс повинен мати зрозумілий ефект на SLO/дохід.
- Evidence-based: рішення підтверджені телеметрією та експериментами.
2) Таксономія ресурсів
Обчислення: CPU/Memory/GPU, контейнерні пули, безсерверні квоти.
Сховище: IOPS/пропускна, гарячі/теплі/холодні шари, кеш.
Мережа: egress/ingress, CDN, приватні канали, IP-пули.
Дані: слоти/віконні ресурси в DWH/стрімінгу, вікна бекфілів.
Люди: on-call слоти, IC/Release, час SRE/Dev (годинник/спринт).
Вендори: ліміти провайдерів (PSP/KYC/CDN), rate-limits і коннекти.
3) Модель пріоритизації (портфель)
Tier-0: життєво важливі флоу (логін, платежі). Гарантовані ресурси, окремі пули.
Tier-1: бізнес-критично (кор-продукт, звіти D-1). Кращі квоти.
Tier-2/3: допоміжні/дослідницькі. Burstable, бюджетні ліміти.
Проекти: оцінка Impact × Urgency × Confidence × Cost → ранг; узгодження в САВ/портфелі.
4) Політики розподілу (гарантії, квоти, ліміти)
Guaranteed (dedicated): фікс-частка/резерв; для Tier-0/1.
Burstable: базова квота + право займати вільне до ліміту.
Best-effort: без гарантій, може бути витіснено.
Quota/Limit-as-Code: всі квоти і межі описані декларативно (репозиторій політик).
Preemption/Pod Disruption Budget: кого можна витіснити і з якою швидкістю.
Мережеві квоти: egress/tenant, ліміти на з'єднання до провайдерів.
5) Багатотенантність та ізоляція
Namespace/Account per tenant: окремі ліміти, бюджет, аудит.
Галасливі сусіди: cgroups/requests/limits/IO-throttling; окремі ноди для «важких» завдань.
P95-ізоляція: SLO розраховується по перцентилях, не по середніх; burst не повинен ламати p95 сусідів.
Data tenancy: роздільні пулами шари зберігання і кеші для VIP/регіонів.
6) Авто-масштабування та еластичність
HPA/VPA/Cluster-autoscaler: масштаб по SLI/SLI-проксі (latency p95, queue depth), а не тільки CPU.
Scheduled scaling: заздалегідь під пікові вікна/події.
Warm pools: прогріті вузли/підключення для швидких скейлапів.
Мережа/CDN: автоматичний ребаланс по RUM/Anycast/POP-навантаженню.
7) Черги, класи сервісів і SLA
Класи: 'gold/silver/bronze'з цільовими часом очікування і бюджетом помилок.
Черги/шини: пріоритизація, окремі партії для Tier-0, DLQ.
Backpressure: дисципліни drop/shape/slow для захисту ядра.
Адаптивні таймаути/ретраї: під клас сервісу і поточний стан.
8) Людські ресурси
Зміни та покриття: відповідність трафіку (follow-the-sun), дублі P1 + P2 на піку.
Фокус SRE/Dev: відсоток часу на реактив/проактив (наприклад, 50/50) з KPI.
Запит ресурсів: шаблони RFC на годинник/спринт, прозора черга пріоритету.
9) Фінансова модель (FinOps)
Unit-економіка: $/1k запитів, $/успішний платіж, $/GiB логів.
Бюджети та алерти: квоти за акаунтами/тенантами, попередження про перевитрату.
Оптимізація: гаряче/тепле/холодне зберігання, лог-семплінг, спотові пули для non-critical.
Showback/Chargeback: звіти витрат за командами/тенантами мотивують ефективність.
10) Управління провайдерами
Ліміти та вікна: контрактні TPS і черги у PSP/KYC/CDN; планові вікна в календарі.
Failover-профілі: ваги і маршрутизація між декількома провайдерами.
Пульс-метрики: час відповіді, відмовостійкість, вартість/успішну операцію.
11) Метрики зрілості розподілу
SLO Adherence за класами: % дотримання в gold/silver/bronze.
Resource Efficiency: утилізація CPU/RAM/IO (медіана/р95), частка idle.
Cost per SLO-point: зміна витрат за утримання мети SLO.
Throttling/Preemption rate: як часто і кого витісняємо.
Hotspot MTTA: час реагування на перегріви пулів/тенантів.
Fairness Index: розкид затримок/квот між тенантами (джині/варіація).
12) Чек-листи
Перед зміною розподілу
- Визначені цілі SLO і клас сервісу.
- Є телеметрія по навантаженню (p95/p99, зростання, сезонність).
- Квоти/ліміти описані в Git і пройшли рев'ю.
- Перевірені ефекти на сусідів (ізолюючі тести).
- План відкату і guardrails готові.
Щотижневий операційний
- Heatmap утилізації пулів і hotspot-звіт.
- Звіт FinOps: $/од., перевитрати, аномалії.
- Провайдерські ліміти і SLA виконані.
- Черги: затримка в межах класів, немає голодування.
- CAPA по виявлених вузьких місцях в роботі.
13) Шаблони (ідеї)
13. 1 Політика квот (YAML)
yaml tenant: vip-eu class: gold compute:
cpu:
request: "8000m"
limit: "12000m"
memory:
request: "16Gi"
limit: "24Gi"
storage:
tier: hot iops_min: 8000 network:
egress_mbps_cap: 500 slo:
latency_p95_ms: 250 preemption:
protected: true burst:
allowed: true max_factor: 1.5
13. 2 Профіль авто-масштабування (фрагмент)
yaml autoscaling:
metric: "queue_depth" # или biz_sli.payment_latency_p95 target: 200 min_replicas: 6 max_replicas: 60 warm_pool: 4 cooldown_sec: 120
13. 3 Клас сервісу та черги
yaml class: gold sla:
wait_p95_ms: 150 queue:
partition: "gold-eu"
retry_policy:
attempts: 2 backoff_ms: 200 backpressure: "shape" # иначе drop/slow
13. 4 Заявка на ресурс (люди)
RFC: RES-OPS-2025-11
Цель: усилить on-call P2 на пике ноябрьских промо (EU)
Период: 2025-11-25..2025-12-05
Обоснование: прогноз трафика +30%, прошлогодний p95 MTTA ↑
Запрос: +1 P2 слот/сутки, +IC в prime-time
14) Процедури та автоматизація
Planner-бот: розрахунок квот з історії трафіку і цілей SLO, PR в репозиторій політик.
Guardrails-бот: стоп-сигнал деплоям при нестачі квоти/oversubscription.
Коммс-бот: повідомлення команд про перевитрату/витіснення/зміну класу.
Анотації: релізи/вікна обслуговування змінюють ваги/квоти на час робіт (зняття suppression після).
15) Анти-патерни
Виділяти «за відчуттями», без SLO і телеметрії.
Один великий пул для всіх без ізоляції «галасливих сусідів».
Безконтрольні burst без верхньої межі → «душимо» сусідів.
Відсутність backpressure/черг → сніговий ком таймаутів.
Ігнорувати вартість логів/egress - «тихий» витік бюджету.
Фіксовані квоти без сезонності/піків → недоступність або перевитрата.
16) Дорожня карта впровадження (4-8 тижнів)
1. Нед. 1–2: інвентаризація ресурсів і сервісів; призначення класів (gold/silver/bronze); первинні квоти; базові SLO.
2. Нед. 3–4: включити авто-масштабування по SLI-проксі; налаштувати черги та backpressure; ізолювати Tier-0 пули.
3. Нед. 5–6: FinOps звітність ($/од., квоти, алерти бюджету); warm-pools і розписні скейли під пікові дні.
4. Нед. 7–8: автоматизація Planner/Guardrails, кабінет тенанта (видимість квот/вартості), квартальний review fairness & hotspots.
17) Підсумок
Розподіл ресурсів - це не разова настройка, а живий процес, вбудований в SLO, телеметрію і FinOps. Коли пріоритети формалізовані, квоти і ліміти - як код, ізоляція і еластичність - за замовчуванням, а рішення підтверджуються метриками і вартістю, система стабільно переживає піки, захищає критичні флоу і не «пропалює» бюджет.