SRE. Рецепты выживания в продакшене для инженера по надежности. Наталья Савенкова
не контролируете происходящее и не можете знать, где и когда оно взорвёт ваш продакшен.
Запланируйте потратить на это исследование какое-то разумное количество времени. Нет нужды копаться до истины любой ценой – ситуация может никогда не повториться. Хотя бы убедитесь, что вы приложили достаточно усилий для выявления причины.
Запишите факты, события, скриншоты, логи – всю информацию, которую сможете собрать. Если не получится разобраться в этот раз, то эти данные помогут хотя бы установить связь разных проявлений в будущем.
Потратьте время на предотвращение катастрофы, если она уже начала стучаться в вашу дверь.
28. Устраняйте возможность массовых операций
Если у вас есть инструмент манипуляций с вашим продакшеном типа командной строки или набора любимых скриптов, не оставляйте в них легкодоступную возможность выполнить действие сразу на всём продакшене. Если для запуска команды в консоли вы можете опционально указать некую группу серверов, а по умолчанию операция будет выполнена везде – у вас в руке граната. Вы обязательно ошибётесь и в важный момент забудете указать конкретный хост или группу, опечатаетесь в параметре и шарахнете команду на всё. А чтобы такого не происходило – не надо иметь такую возможность вообще либо нужно делать её чуть сложнее (с дополнительным подтвержением, например).
И самый главный совет: после запуска опасных массовых операций не покидайте рабочее место до тех пор, пока они не отработают и вы не убедитесь в полученном результате.
29. Правильно рассчитывайте запас мощности
Вернёмся немного к вопросам запаса мощностей. Любые простаивающие ресурсы это, без сомнений, затраты – вы за них платите, а никакой пользы они не приносят.
При этом какой-то запас мощности держать всё равно придётся. На что опираться при этих расчётах?
Для начала нужно описать свои сценарии: в каких случаях и какой объем нагрузки нужно выдерживать. Затем нужно оценить сценарий и продолжительность процедуры масшабирования. Если у вас масштабирование устроено по принципу “жмём кнопку, платим сколько угодно, через минуту получаем мощности”, то у вас нет этой проблемы.
Если ваше масштабирование устроено иначе, то запас какой-то иметь придётся, хотя бы на выживание во время масштабирования.
Что включить в расчеты:
– Неожиданный пользовательский трафик, который вы хотите выдерживать. Сюда же входят маркетинговые кампании.
– Выход из строя части инфраструктуры. У любого поставщика услуг есть какие-то гарантии, ознакомьтесь с ними.
– Сломанная часть продакшена в результате неудачного релиза. Здесь всё зависит от вашей процедуры релиза.
– Ещё какие-то особые локальные сценарии.
То есть, нужно понимать, как обслуживать высокий уровень трафика при частично потерянной инфраструктуре из-за провайдера и во время релиза. Вы можете сказать: “Если у нас не будет работать часть инфраструктуры или будет высокий трафик, мы не