SRE. Рецепты выживания в продакшене для инженера по надежности. Наталья Савенкова
не "отвечаю через раз", это "отвечаю всегда, но не полной функциональностью".
Желательно иметь несколько уровней деградации:
– всё плоховатенько – будем отключать эти малозаметные блоки, типа “сопутствующие товары” и “такие же как вы покупают”
– всё становится хуже – будем отключать функциональность по нарастающей важности, например “дата доставки” или “превью при наведении”
– все совсем плохо – отдаём статику типа “вот наши лучшие товары, на сайте технические работы”
Согласуйте со своим продакт-оунером сценарий деградации, напишите немного кода и сделайте выключатели, которые будете активировать по заранее согласованной с продакт-оунером последовательности. Он тоже хочет, чтобы сайт работал, пусть не в полную силу.
Деньги: заранее оцените ваши возможности по быстрому масштабированию сервиса в случае необходимости. Любое железо стоит деньги. Согласуйте это количество денег с тем, кто отвечает за финансы. А-то может легко получиться так, что вы очень элегантно обработаете рекламную акцию, получите заказы, но все заработанные деньги уйдут на оплату облачных квот.
16. Кэши и заглушки
Это продолжение темы про деградацию. Если у вас есть всякие реал-тайм данные, которые вы готовите на каждый запрос пользователя, имейте в виду: тот сервис, откуда вы их реал-тайм берете, обязательно перестанет работать. Если хотите жить красиво – имейте какой-то универсальный дефолтный вариант ответа. Если вы для каждого пользователя показываете "Такие же как вы покупали вот это", то в случае поломки начните показывать "Топ-5 покупок в нашем магазине". Это точно лучше, чем не показывать ничего.
Этот же способ можно использовать для режима осознанной деградации: если сервису тяжеловато, то переключитесь на показ данных из кешей в тех местах, где он уместен.
Состав этих кешей и заглушек необходимо согласовать с продакт-оунером.
17. Fallback или "последний шанс"
Теперь представим себе ситуацию, что вы уже отмасштабировали всё, что могли, выключили всю функциональность, которую в принципе можно было выключить, и это всё равно не помогает. Здесь появляется Тыква!
Тыква – это народное название для страницы последней надежды (fallback). В беспощадной борьбе с "502: Bad Gateway" (или другими ошибками про невозможность обработать запрос) выигрывает тот, кто сдаётся последним.
Подготовьте какую-то статическую страницу или набор страниц на тот случай, если всё пойдёт совсем плохо, и отправляйте туда пользователей, запросы которых не удалось обслужить. Состав страницы согласуйте с продакт-оунером.
Из чего можно сделать тыкву:
– если это сайт новостей, то периодически генерируйте статическую страницу с "Топ лучших новостей планеты всей"
– если это интернет-магазин, пусть там будет одна страница с вашим лучшим товаром и что-то полезное на javascript
– сделайте на странице "тетрис", в конце концов – это будет хотя бы забавно
– укажите