Why Is My App SLOw? Defining Reliability in Platform Engineering • Jez Humble • GOTO 2023
Интересный доклад от Jez Humble, техлида SRE команды, которая поддерживает сервисы serverless платформы в Google Cloud. Основная проблематика следующая: в рамках этой платформы надо отслеживать ее работоспособность, но
- Ориентироваться при этом на восприятие клиентов того, насколько хорошо работают их приложения поверх платформы
- Можно ориентироваться на latency приложений, но у них разброс latency в пять порядков (от миллисекунд до сотен секунд)
- Можно ориентироваться на request delivery metrics, которые мерят время от попадания в сетевой слой Google и до доставки запроса до приложения и обратную часть этого цикла - но это чуть искусственная метрика.
В итоге, ребята поставили себе целью придумать метрику со следующими свойствами *- A metric that represents the customer experience
- Combinable across projects / cells / regions
- Can be used to detect anomalies affecting multiple customers (likely platform issues)
- Computationally cheap (high QPS)
- Principle-based*
И они нашли ее опираясь на понимание статистики и используя концепцию стационарности (свойство процесса не менять свои характеристики со временем). Если кратко, то они выделил отдельные когорты запросов по версии приложений, развернутых в serverless платформе. Дальше для каждой когорты проверили укладывается ли распределение ее latency в логнормальное распределение. Если укладывается, то сохранили параметры распределения в базу, если нет, то откинули эту когорту. В итоге, половина нагрузок укладывается в логнормальное распределение. Дальше ребята используют подход 2 сигма для измерения 2 стандартных отклонений от среднего для каждой из когорт и собирают это в график, гда видно каков процент таких рабочих нагрузок с таким большим отклонением. Нормальное состояние платформы характеризуется 2% -5% рабочих нагрузок с отклонениями больше 2 сигма, а вот если этот показатель поднимается до 10%, то это повод для беспокойства. Для построения такого распределения обычно используется 15 минутное окно. Дальше автор рассказывает как это работает в деталях, но мне интересно рассказать еще о выводах, которые Jez подводит в самом конце доклада *- We can reliably detect and measure the impact of platorm regressions
- Reliability is a shared property (between customer & service) -- Reconstruction of end to end behavior is critical
- Metric combinability is critical for analysis
- Variability is what customers actually care about
- Distributed systems ofen produce decorrelation -- We can measure it, and its absence
- Workload correlation can identify proximate causes*
Итого, это интересный доклад для тех, кто строит платформы и хочет выстроить SLO/SLA/SLI с учетом не только своих технических метрик, но и том, как себя чувствуют пользовательские нагрузки внутри платформы.
P.S. Слайды доступны здесь.
#SRE #SystemDesign #Software #Architecture #Metrics #SoftwareArchitecture #Engineering #Math #ContinuousDelivery