К основному содержимому
к презентации
краткая расшифровка2023Fellow

Проектируем надежные системы — стоит ли игра свеч

Доклад построен вокруг пяти вопросов: почему про надёжность забывают, как выбрать и контролировать уровень риска, как проектировать и разворачивать надёжные системы, как их эксплуатировать и как создать культуру надёжности. Александр Поломодов проходит путь от определений availability и reliability до каталога паттернов и таблицы архетипов развёртывания.

Стачка · Нижний Новгород6 минут

Конспект собран по описанию материала в каталоге и проверенным слайдам. По ссылкам ниже — полная расшифровка и запись.

Основная линия материала
01

Три причины, по которым про надёжность забывают

Автор сразу разводит два термина. Availability — процент времени, когда система доступна пользователям; reliability — вероятность того, что система соответствует требуемому уровню производительности. Тут же оговорка: в отрасли эти слова используют вольно и часто как синонимы. Дальше идут три причины забывчивости: invisibility — надёжность, как и безопасность, по большей части невидима, пока всё идёт хорошо; assessment — добиваться идеальной надёжности непрактично, поэтому нужен риск-менеджмент и оценка стоимости негативных событий; evolution — система неизбежно усложняется по мере роста функциональности и масштаба.

Уровень риска предлагается выбирать не для компании целиком, а по классу приложения. Из white paper «Deployment Archetypes for Cloud Applications» берётся деление на business critical с прямым влиянием на бизнес и жёсткими требованиями к доступности и задержкам, line of business — поддерживающие процессы вроде ETL/ELT и пайплайнов CI/CD, где важна скорость выполнения, и internal applications вроде HR и офисной автоматизации. Автор оговаривается, что компании обычно дробят эту классификацию мельче под собственную стратегию SLA.

02

Святая троица SLI, SLO, SLA и два взгляда мониторинга

Определения взяты из книги Google по SRE. SLI — количественная мера аспекта предоставляемого сервиса: задержка, доля ошибок, пропускная способность, доступность. SLO — целевое значение или диапазон для SLI: либо «SLI не выше цели», либо коридор между нижней и верхней границей. SLA — контракт с пользователями, включающий последствия при невыполнении SLO. Признак различия простой: если у нарушения нет явных последствий, перед вами SLO, а не SLA.

Мониторинг делится на white-box, показывающий внутреннее состояние системы, и black-box, отражающий восприятие пользователем. В качестве готовых наборов метрик автор называет Four Golden Signals от Google и RED Method Тома Уилки. Обе схемы работают на ту же цель, ради которой заводились SLO: заметить нарушение обещания раньше, чем о нём сообщит пользователь.

03

От fault domains до dummy-режима и сколько это стоит

Ключевых концепций надёжности четыре: fault domains — наборы компонентов, отказывающих как единая точка, отсюда репликация между зонами и регионами, балансировка и минимизация времени старта и остановки; шардирование приложений и данных между fault domains; инкрементальные откатываемые выкладки в production; управление зависимостями с учётом их доступности и моделей отказа. Отдельно разбираются данные: durability, доступность через асинхронную репликацию с eventual consistency или синхронную со strong и резервные копии. Цели RPO и RTO задают модель развёртывания, а доступность, добавленная задним числом, означает переделку архитектуры вплоть до полного переписывания.

Каталог паттернов дан со ссылкой на доклад Александра Кривощёкова из Yandex Go: retries только для идемпотентных запросов, с экспоненциальной задержкой и вероятностным выбором интервала; deadlines — таймауты на стороне клиента, согласованные по всей цепочке вызовов; rate limiting через token bucket, leaky bucket или sliding window counter; circuit breaker, отключающий запросы к сломанному провайдеру по порогу ошибок; rich client с оговоркой, что массовое его применение переусложняет систему; dummy как упрощённый аварийный режим. Замыкает раздел таблица архетипов: движение по ней вправо повышает и надёжность, и стоимость.

Выводы

Что стоит унести с собой

  1. 01Про надёжность забывают по трём причинам: она невидима, пока всё работает; идеальной надёжности не бывает, нужен риск-менеджмент; система усложняется сама по мере эволюции.
  2. 02Уровень риска задаётся классом приложения и фиксируется в SLI, SLO и SLA; SLO становится SLA только тогда, когда у нарушения есть явные последствия.
  3. 03Цели RPO и RTO вместе с fault domains, шардированием и управлением зависимостями определяют архитектуру: заложить доступность позже дороже, чем сразу.
  4. 04Паттерны от повторов с экспоненциальной задержкой до dummy-режима идут с оговорками, а более надёжный архетип развёртывания всегда дороже.

Источники

Поделиться
TelegramLinkedIn