English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

гість
1 / ?
назад до уроків

Що вирішує книга Олспоу

Дисципліна запобігання нестачі ресурсів

Джон Олспоу написав 'The Art of Capacity Planning' (O'Reilly, 2008; друге видання 2017) після керування операціями на Flickr під час років вибухового зростання. Його теза: планування потужності — це не одноразова вправа з електронних таблиць. Це неперервна дисципліна, яка поєднує вимірювання, прогнозування й інженерну підтримку. Пропустіть будь-яку з цих трьох — і ви або вичерпаєте потужність на продакшені, або витрачаєте гроші на обладнання, яке простоює.

Планування потужності розташоване між двома режимами відмови:

- Недостатня кількість серверів: сервіси працюють під навантаженням, затримка зростає, показники помилок піднімаються, користувачі йдуть. Найшвидший спосіб втратити користувачів у фазі зростання.

- Надмірне комплектування: обладнання працює з 10% завантаження, фінансовий відділ питає, чому бюджет постійно зростає без зростання доходу. Найшвидший спосіб втратити кількість персоналу на перегляді бюджету.

Мистецтво полягає у пошуку коридору між цими двома прірвами й утриманні себе всередині нього, коли навантаження змінюється.

Три основні питання керують кожною вправою з планування потужності:

- Що ми маємо? Поточна потужність у конкретних одиницях: запити в секунду, запити в хвилину, гігабайти зберігання, одночасні з'єднання.

- Що нам потрібно? Прогнозований попит на майбутню дату з явними межами невизначеності.

- Коли ми повинні діяти? Час на закупівлю, комплектування або масштабування. Хмара зменшує це до хвилин; локальне розташування може означати місяці.

Коридор планування потужності: недостатня кількість, оптимальна, надмірна

Чому це не може бути електронною таблицею

Компанія електронної комерції планує потужність один раз на рік, в листопаді, екстраполюючи попередніх 12 місяців трафіку лінійно. Вони працюють на виділених серверах з часом закупівлі 6 тижнів. Їхній трафік показує сильну щотижневу сезонність (пік у вихідні в 3x), сильну річну сезонність (5x у Black Friday) і зростав на 40% на рік протягом трьох років.

Перелічіть принаймні три конкретні режими відмови, які цей раз-на-рік лінійно-прогнозований підхід, ймовірно, матиме. Для кожної відмови назвіть специфічну частину реальності компанії, яку електронна таблиця ігнорує, й запропонуйте більш частий цикл вимірювання або планування, який це вирішує.

Навантаження проти завантаження

Два різні числа, обидва необхідні

Планування потужності відмовляє, коли команди вимірюють лише один з двох суттєвих вимірів.


Навантаження: попит на систему з зовні. Запити в секунду, операції в хвилину, мегабайти в секунду, одночасні користувачі. Навантаження описує те, що світ просить від вас.


Завантаження: як повна система працює під час обслуговування цього попиту. Відсоток ЦП, використана пам'ять, глибина черги, пропускна спроможність мережі, IOPS диска. Завантаження описує, як система відчуває себе під цим попитом.


Одне лише навантаження розповідає вам, що наближається, але не чи можете ви його обслужити. Одне лише завантаження розповідає вам, як ви заповнені, але не що очікувати завтра. Вам потрібні обидва, побудовані поруч, щоб приймати рішення про потужність.


Коефіцієнт потужності = навантаження / завантаження. Якщо ви обслужуєте 1000 запитів в секунду при 50% ЦП, ваш коефіцієнт потужності дорівнює 2000 RPS на 100% ЦП на сервер. Цей коефіцієнт перетворення дозволяє вам перевести прогнозований попит у потрібну кількість сервера.


Олспоу наголошує на вимірюванні з правильною деталізацією. Один зразок на хвилину приховує піки на 30 секунд. Один зразок на годину приховує все. Реальна робота з потужністю потребує роздільної здатності менше хвилини для пікових подій і роздільної здатності хвилини для трендів. Будь-що грубіше створює небезпечну помилкову впевненість.

Навантаження + завантаження нанесені разом з часом

Що приладдя вимірювати

Ваша команда запускає приладдя для вимірювання потужності на новому запуску продукту (сервіс перетворення відео). Ви можете вибрати до 8 метрик для відстеження з роздільною здатністю менше хвилини. Сервіс отримує завантаження відео, ставить їх у чергу, перетворює на кілька форматів і записує вихідні дані в хмарне сховище об'єктів.

Виберіть рівно 8 метрик. Для кожної позначте, чи вона захоплює навантаження чи завантаження, й обґрунтуйте, чому кожна метрика заслуговує включення порівняно з метрикою, яку ви залишили. Визначте одну метрику, яка, якби у вас була тільки одна, була б найбільш предиктивною щодо вичерпання потужності.

Тренд, сезонність, невизначеність

Три шари кожного прогнозу

Олспоу й книга SRE від Google згідні з структурою корисного прогнозу: тренд, сезонність й межі невизначеності. Пропустіть будь-яку й прогноз стає оманливим.


Тренд: нахил попиту протягом місяців або років. Часто моделюється з лінійною регресією для коротких вікон, експоненціальною або частковою лінійною для експоненціального зростання. Лінія тренду відповідає на питання 'куди загалом направлений попит?'


Сезонність: циклічні відомості на кількох часових масштабах. Щоденна (пік трафіку в після полудня), щотижнева (піки в вихідні), річна (Black Friday, період розрахунку податків, навчальний рік). Мультиплікативна сезонність масштабується з трендом; адитивна сезонність додає постійний зміщення.


Межи невизначеності: конус прогнозу. Прогноз без меж — це припущення. Справжні прогнози публікують центральну оцінку з явними верхніми й нижніми межами, зазвичай при 90% або 95% впевненості. Конус розширюється, коли ви проектуєте далі в майбутнє. Прогноз на 4 тижні може мати межи ±10%; прогноз на 12 місяців часто має межи ±50%.


Розділення зростання бізнесу від технічного попиту: прогнози планування потужності прогнозують технічне навантаження, але команди бізнесу прогнозують дохід, реєстрацію або кампанії. Завданням планувальника потужності є переведення прогнозів бізнесу в технічний попит: зростання реєстрацій на 30% може означати 30% більше викликів API, але це може означати 80% більше, якщо нові користувачі користуються системою більш активно, або тільки 15%, якщо вони конвертуються з нижчими показниками. Коефіцієнт конверсії має значення так само, як базовий прогноз бізнесу.

Прогноз: лінія тренду, сезонні хвилі, розширюючийся конус

Прогнозування трафіку в день розпродажу

Ваш сервіс обслуговує сайт електронної комерції. Трафік Black Friday минулого року був у 5 разів більше за середній листопад, утримував протягом 12 годин. Бізнес виріс на 40% на рік. Маркетинг запускає платну промоцію, очікується додатково 20% до трафіку Black Friday цього року.

Оцініть пік Black Friday цього року як кратну середньому місячному показнику в цей момент. Покажіть вашу роботу. Потім запропонуйте специфічні верхні й нижні межи для прогнозу й поясніть, які реальні події можуть подовжити фактичний попит за межами цих меж.

Знання вашого потолку

Знайдіть потолок перед продакшеном

Прогнозування розповідає вам, що наближається. Тести потолку розповідають вам, чи система може це обслужити. Олспоу розглядає тестування потолку як невід'ємний вхід у планування потужності: ви не знаєте вашу справжню потужність, поки не протестували її під контрольованим навантаженням.

Три типи тестів потолку:

- Синтетичний тест навантаження: генератор навантаження (k6, Locust, JMeter, vegeta) спрямовує трафік на цільовий сервіс на стейджингу. Збільшуйте навантаження, поки щось не зламається. Точка розриву — це потолок. Найкраще для ізольованого тестування сервісу.

- Навчання з продакшену: навмисно зменште потужність у продакшені (дренаж відсотка серверів, убивання регіону) й спостеріжте, як решта потужності обробляє реальний трафік. Тести справжньої поведінки продакшену, включаючи несподівані взаємодії. Найвища впевненість, але найвищий ризик.

- Тінь навантаження: повторіть реальний трафік продакшену на цільовому сервісу, запущеному паралельно продакшену. Захоплює справжні закономірності навантаження (рідкісна комбінація запитів, дивні агенти користувачів) без впливу на користувачів. Сильна середина.


Запас — буфер між поточним навантаженням і потолком. Правила SRE:

- 50% запасу в стійкому стані для одноregional сервісу (так, щоб відмова регіону не вичерпала выживший регіон)

- 30% запасу для multi-region сервісу з redundancy N+2

- 100%+ запасу, наближаючись до відомих пікових подій (Black Friday, фіналів спорту)


Запас — це не відходи. Це вартість того, щоб не викликати інженерів о 3 ночі, не втратити клієнтів під час піку й не страждати від каскадної відмови, коли один регіон не працює. Фінансові команди іноді просять скоротити запас; інженери потужності повинні сформулювати вартість роботи в обмеженому режимі, щоб зробити цю розмову фактичною, а не емоційною.

Буфер запасу: поточне навантаження, потолок, й розрив між ними

Проектування тесту потолку

Ви успадковуєте сервіс без задокументованого потолку потужності. Поточне навантаження продакшену — 800 запитів на секунду на 12 серверах, середнього ЦП 35%. Маркетинг оголошує кампанію за 6 тижнів, очікується управління трафіком до піку 3000 RPS.

Спроектуйте програму тесту потолку на наступні 4 тижні. Вкажіть типи тестів, метрики, які визначають 'зламаність', цільовий запас і дію, яку ви виконуєте залежно від того, чи тест потолку розкриває достатню потужність. Будьте конкретні щодо того, що ви робите, якщо тест потолку показує, що поточні 12 серверів не можуть обробити 3000 RPS.

Вгору, назовні, чи діагональ

Коли додати потужність, додати коробки, чи обидва

Три основні стратегії масштабування, кожна з різними профілями вартості й надійності:


Вертикальне масштабування (масштабування вгору): більші машини. Замініть 8-ядерні сервери 32-ядерними серверами. Найпростіший шлях; працює, поки не досягнете меж однієї машини. Одна точка відмови залишається. Вартість зростає нелінійно: 32-ядерна машина часто коштує більше, ніж 4-кратна 8-ядерна.


Горизонтальне масштабування (масштабування назовні): більше машин. Додайте сервери за балансувальником навантаження. Потужність масштабується лінійно з кількістю серверів. Режими відмови змінюються: ви повинні обробляти розподілену координацію, але відмова одного сервера більше не знищує сервіс. Операційна складність зростає.


Діагональне масштабування (термін Олспоу): спочатку масштабуйте вгору до комфортного розміру на сервер, потім масштабуйте назовні звідти. Поєднує простіші операції великих серверів з надійністю багатьох серверів. Більшість сервісів продакшену живуть у території діагонального масштабування.


Зарезервована проти на запит ціна: хмарні провайдери винагороджують передбачуваність. Зарезервована потужність на 30-60% дешевша за на запит, але потребує зобов'язання на 1-3 роки. Планувальники потужності зазвичай фіксують стійкий попит із зарезервованою потужністю й вибухають у на запит для пиків. Неправильна оцінка цього розділення може витратити гроші (надмірна резервація) або наділити бюджет сюрпризом (недостатня резервація під час піків).


Spot інстанції й вибірні робочі навантаження: на 60-90% дешевші за на запит, але можуть бути повернені з повідомленням на хвилини. Придатні для пакетних завдань, аналітики, тренувального навантаження, або будь-якого сервісу, розробленого для витончених переривань. Трафік продакшену, орієнтований на користувача, зазвичай уникає spot.

Шлях діагонального масштабування: малі до середніх коробок потім горизонтальне масштабування

Вибір шляху масштабування

Ваш сервіс перетворення відео працює на 8 середніх хмарних інстанціях (8 ядер кожна). Ви очікуєте 3-кратного зростання протягом наступних 6 місяців. Навантаження — це ЦП-обмежене, паралелізовується за відео, & кожне перетворення відео займає 90 секунд кінець-у-конець. Зарезервовані інстанції коштують 50% на запит. Spot інстанції коштують 30% на запит, але можуть бути припинені з повідомленням за 2 хвилини.

Рекомендуйте стратегію масштабування на наступні 6 місяців. Вкажіть розміри інстанцій, які ви вибираєте, комбінацію зарезервованих/на запит/spot, & обґрунтуйте кожен шматок комбінації проти характеристик навантаження. Визначте найбільший ризик у вашому плані & запропонуйте одне пом'якшення.

Кар'єри в плануванні потужності

Де вміння планування потужності платять

Планування потужності рідко є назвою посади саме по собі. Вміння з'являються під кількома назвами ролей:


Інженер надійності сайту: планування потужності — основна відповідальність SRE. Більшість команд SRE мають одного або двох інженерів, які спеціалізуються на потужності, власні моделі прогнозування, тести потолку й автоматизація комплектування.


Інженер хмарної вартості / FinOps: це більш нова роль, зосереджена на оптимізації витрат хмари. Поєднує планування потужності з фінансовим моделюванням, переговорами контрактів й управлінням портфелем зарезервованих інстанцій. Платить надзвичайно добре в великих компаніях, орієнтованих на хмару, тому що рахунки хмари часто є другою найбільшою витратою після заробітної плати.


Інженер продуктивності: зосереджується на ефективності за вузлом й тестуванні потолку. Завданням: витягти більше потужності з того ж обладнання через профілювання, оптимізацію й архітектурні зміни. Глибокі системи й знання мови-runtime.


Спеціаліст з планування потужності: у дуже великих компаніях (Google, Meta, Amazon, Netflix) існують виділені команди планування потужності. Вони володіють моделями прогнозування по всьому флоту, переговорюють закупівлі в масштабі й координують із фінансами багаторічні дорожні карти обладнання.


Вміння, яке складається: часовий ряд аналіз (R, Python statsmodels, Prophet), теорія чергування (M/M/1, M/M/c, закон Маленького), принаймні один інструмент управління конфігурацією, принаймні одна панель витрат хмари й здатність написати звіт прогнозування, який CFO може розуміти й діяти на основі. Технічні вміння отримують вам інтерв'ю; навички спілкування отримують вам бюджет.

Кар'єри потужності: SRE, FinOps, Performance, Specialist

Завершення

Що ви тепер знаєте

Планування потужності — це неперервна дисципліна, не річна вправа. Ви охопили:

- коридор між недостатньою кількістю серверів та надмірним комплектуванням

- навантаження проти завантаження як два виміри вимірювання

- тренд, сезонність й межи невизначеності як три шари кожного прогнозу

- тести потолку (синтетичні, тінь, пожежна вправа) як єдиний спосіб знання справжної потужності

- буфери запасу й чому вони не є відходами

- діагональне масштабування й рішення про цену зарезервованих/на запит/spot

- шляхи кар'єри, де ці вміння отримують бюджет авторитету


Два ідеї мають найбільше значення. Прогнозуйте з межами, ніколи з одиничними точками. і вимірюйте ваш потолок перед продакшеном. Несіть ці два вперед і решта слідує.


Рекомендоване читання: 'The Art of Capacity Planning' Олспоу (O'Reilly, друге видання 2017), відповідні розділи в книзі Google SRE (вільно доступна на sre.google/books/), і 'Systems Performance' Бренданов Гріґґ для базової системної роботи. Урок-супутник з геометрії йде глибше в зорову структуру: закон Маленького як область, криві чергування, схили трендів й конверти запасу.