Отвечайте за сервис после deployment
ЗавершеноОпределите полезные сигналы о работе сервиса, решения при инцидентах, восстановление и обслуживание. Сохраняйте ясную ответственность за эксплуатацию после завершения генерации кода.
Издатель TaigaКак мы пишем
Проверьте пониманиеПроверка доступности возвращает HTTP 200, но экспорт не содержит записей из-за ошибки авторизации. Что это показывает?Выполните упражнение
Чему вы научитесь
- Определить сигнал о работе сервиса с точки зрения пользователя.
- Разделить координацию инцидента и техническое расследование.
- Запланировать обслуживание и восстановление как постоянные обязанности.
Определите сервис, от которого зависят пользователи
Deployment делает ПО доступным. Эксплуатация сохраняет его полезность при изменении пользователей, зависимостей, трафика и требований. Генератор кода не устраняет эту постоянную работу.
В вымышленном примере экспорта клиентов пользователям недостаточно доступной страницы. Им нужны разрешённые записи в нужном формате за приемлемое время. Сервис также должен предотвращать доступ к данным другой организации.
Назначьте ответственного до релиза. Укажите, кто реагирует вне обычного рабочего времени, если это входит в обязательства по сервису. Поставщик может выполнять часть работы, но организации по-прежнему нужен ясный порядок принятия решений и обмена информацией.
Выбирайте сигналы, которые помогают действовать
Service-level indicator, или SLI, измеряет определённое свойство работы сервиса. Service-level objective, или SLO, задаёт целевое значение этого показателя за указанный период. Выбирайте его с учётом потребностей пользователей и возможностей эксплуатации.
Рекомендации Google SRE объясняют этот подход и использование бюджета ошибок при решениях о надёжности. Не копируйте целевое значение другого сервиса, не проверив его смысл. Рекомендации по SLO, пример политики бюджета ошибок.
Для экспорта определите, что считается успешным запросом, который разрешено выполнить. Отделяйте ожидаемые отказы в доступе от сбоев системы. Документируйте исключения, чтобы метрика не улучшалась лишь за счёт скрытых сложных запросов.
| Сигнал | Что помогает обнаружить | Важное ограничение |
|---|---|---|
| Проверка публичной доступности | Сервис недоступен | Не проверяет сценарий пользователя, вошедшего в систему |
| Завершение экспорта и задержка | Разрешённые запросы завершаются ошибкой или занимают слишком много времени | Требуется точное определение успеха |
| Проверки отказа в авторизации | Регрессию в важной границе доступа | Охватывают проверенные условия |
| Сигналы ресурсов и зависимостей | Вероятную внутреннюю причину | Сами по себе не описывают влияние на пользователей |
Не записывайте полные результаты экспорта в логи ради лучшей видимости. Собирайте минимум информации, необходимый для диагностики, и защищайте доступ к нему.
Подготовьте реагирование на инциденты
Определите, кто координирует работу, кто расследует инцидент и кто информирует участников. В небольшой команде эти роли можно совмещать, но обязанности должны оставаться ясными. Ведите запись наблюдений и действий.
В рекомендациях Google по реагированию на инциденты координация и коммуникация важны наряду с техническим устранением последствий. Даже технически верное исправление может оставить пользователей без информации или привести к противоречащим друг другу изменениям от нескольких участников. Реагирование на инциденты.
Агент может составлять сводку логов или сравнивать гипотезы в разрешённых границах данных. Срочность инцидента не должна давать ему неограниченные полномочия в production. Для исключительного доступа используйте установленный порядок эскалации.
Отрабатывайте восстановление и выделяйте средства на обслуживание
Проверьте процедуру восстановления на репрезентативных вымышленных данных. Определите, чего не отменяет rollback кода, включая удалённые записи или уже отправленные сообщения. Зафиксируйте время и информацию, необходимые для восстановления сервиса.
Распределите постоянные задачи: обновления зависимостей, пересмотр доступа, продление сертификатов там, где это нужно, изменение мощности и исправление документации. Если ресурсов на обслуживание нет, обязательства продолжают накапливаться и после исчерпания бюджета на запуск.
После инцидента выберите улучшения, которые устраняют наблюдаемые причины. Свяжите их с реализацией и проверкой. Так замыкается жизненный цикл: данные эксплуатации меняют то, что команда будет описывать в спецификациях и разрабатывать дальше.
Выполните упражнение
Составьте одностраничную инструкцию по эксплуатации вымышленного экспорта клиентов. Укажите один показатель работы сервиса с точки зрения пользователя, его целевое значение, получателя оповещения, безопасное первое действие, ограничение восстановления и ответственного за обслуживание. Укажите, чего мониторинг не обнаруживает.
Скачать рабочий лист (Markdown)Если снять этот флажок, весь прогресс, сохранённый в этом браузере, будет удалён.
Прогресс остаётся в этом браузере. Без аккаунта и отслеживания.
Источники и дополнительные материалы
- Google SRE: Implementing SLOs ↗
- Google SRE: Incident Response ↗
- Google SRE: Example Error Budget Policy ↗