Надёжность: сбои, ограничение частоты, наблюдаемость
Не переживайте, если эти слова звучат пугающе — мы объясним каждое по ходу дела. В этом уроке мы учимся говорить на собеседовании о способах сохранять систему стабильной, даже когда что-то идёт не так: о таймаутах (прекращение ожидания ответа по истечении заданного времени, вместо того чтобы застрят
System Design (планирование того, как построить крупное ПО, обслуживающее множество людей) похож на планирование города: дороги, склады, светофоры и ремонтные бригады, чтобы город продолжал гладко работать даже в час пик, когда все выходят одновременно.
- Надёжность и наблюдаемость
- Ключевая идея этого урока: как сохранять систему надёжной (продолжающей работать) и способной видеть, что происходит у неё внутри. Она включает: когда прекратить ожидание (таймауты), когда повторить попытку (повторные попытки), когда временно заблокировать, чтобы предотвратить крах (предохранители), как ограничить число разрешённых запросов (ограничение частоты) и как наблюдать за происходящим с помощью метрик, логов и трассировки (отслеживание запроса).
- Компромисс
- Компромисс — осознанный выбор, при котором вы выигрываете в одном и платите за это другим, как выбор фастфуда вместо домашней еды: вы экономите время, но теряете в качестве. На собеседовании вы объясняете, что выиграли и чего это стоило.
- Эксплуатационная метрика
- Эксплуатационная метрика — число, которое показывает, действительно ли решение работает, когда система запущена и обслуживает реальных пользователей (это называется продакшен). Например: задержка (сколько времени занимает получение ответа), доля ошибок (доля запросов, которые завершаются неудачей), отставание очереди (сколько задач стоит в очереди), доля попаданий в кэш (как часто мы нашли ответ в быстрой памяти) и другие.