Інженерія стійкості: Проектування з урахуванням збоїв у багаторегіональних хмарних розгортаннях.
Орієнтований на виробництво підхід до проектування розподілених систем, які залишаються працездатними, коли регіони, бази даних, мережі та зовнішні залежності неминуче виходять з ладу.
Mihail Leybuk-GalinСистемний архітекторПоділитися статтею
1. Невдача – це архітектурна вимога
Хмарна інфраструктура створює враження, що резервування усуває збої. Це не так. Керовані сервіси, зони доступності, реплікація та автоматичне масштабування просто змінюють ймовірність та форму збою.
Виробничі системи все ще стикаються з мережевими розділами, виснаженням потужностей, зламаними розгортаннями, збоями облікових даних, інцидентами баз даних, збоями залежностей, помилками операторів та повними регіональними збоями. Проектування стійкості починається з припущення, що кожна залежність зрештою стане недоступною.
2. Вибір правильної багаторегіональної стратегії
Багаторегіональна інфраструктура не передбачає автоматично активну архітектуру. Правильна топологія залежить від цілей відновлення, вимог до узгодженості, географії користувачів, операційної зрілості та бізнес-витрат, пов'язаних з простоєм.
Багаторегіональна програма та топологія даних
Відкрити повнорозмірне зображенняАктивно-пасивні схеми забезпечують простіші гарантії узгодженості та меншу операційну складність. Активно-активні розгортання можуть зменшити регіональну затримку та забезпечити швидшу зміну трафіку, але створюють складніші проблеми щодо володіння записом, реплікації, вирішення конфліктів та обробки інцидентів.
Прагматичним компромісом часто є активно-активні обчислення без урахування стану в поєднанні з явним володінням записом зі збереженням стану.
3. Проектування даних для регіональних невдач
Обчислення відносно легко реплікувати. Стан – ні. База даних повинна відповідати на питання, яких можуть уникнути репліки програм: який регіон володіє записом, як швидко реплікуються дані, що відбувається під час мережевого розділу та яка копія стає авторитетною після відновлення після відмови.
Дві метрики повинні впливати на ці рішення: цільова точка відновлення (RPO) та цільовий час відновлення (RTO). Вони перетворюють розпливчасті очікування щодо «високої доступності» на чіткі бізнес-вимоги.
resilience.yaml
service:
request_timeout: 4.5s
database:
primary_region: eu-central
replication: async
max_replication_lag: 30s
dependencies:
timeout: 500ms
retries: 2
backoff: exponential
jitter: true
circuit_breaker:
failure_threshold: 10
open_for: 30sСинхронна реплікація зменшує потенційну втрату даних, але безпосередньо впливає на міжрегіональну мережеву затримку на шляху запису. Асинхронна реплікація захищає локальну затримку запису, водночас приймаючи вимірне вікно точки відновлення. Правильний компроміс залежить від домену.
4. Запобігання переростанню локальних невдач у глобальні
Багаторегіональні архітектури часто зазнають глобальних невдач, оскільки нібито незалежні регіони продовжують мати спільну критичну залежність. Глобально спільний кеш, служба автентифікації, база даних, постачальник конфігурації або зовнішня інтеграція можуть непомітно стерти цінність географічної надлишковості.
Автоматичні вимикачі
Зупинити збій залежності від споживання робочих процесів та поширення затримки по всій системі.
Явні тайм-аути
Кожна віддалена залежність повинна мати обмежений термін виконання, узгоджений із загальним бюджетом затримки запиту.
Перегородки
Розділіть пули робочих процесів, черги та ресурси підключення, щоб одна перевантажена функція не могла вичерпати всю програму.
Витончена деградація
Збережіть критично важливі шляхи користувачів, тимчасово видаливши рекомендації, аналітику, персоналізацію чи інші додаткові можливості.
Стійкість набуває сенсу лише після перевірки цих сценаріїв. Регіональні відпрацювання збоїв, впровадження залежностей, експерименти з затримкою та ігрові дні перетворюють архітектурні припущення на перевірену операційну поведінку.
5. Results & Metrics
Стійку архітектуру слід оцінювати за швидкістю відновлення, ризиком втрати даних, доступністю критичного шляху та обсягом збоїв, а не лише за кількістю регіонів, показаних на схемі архітектури.
- Цільова програма резервного перемикання
- 90с
- Цільовий RPO
- <30с
- Критична ціль API
- 99.99%
Багаторегіональну інфраструктуру легко намалювати, але складно експлуатувати. Найпотужніші системи визначають, які збої вони можуть витримувати, які можливості можуть погіршитися, скільки даних може тимчасово опинитися під загрозою та як платформа повертається до стабільного стану після відновлення після відмови.