Замкните цикл проверенным улучшением
ЗавершеноПревращайте данные production в требования, тесты, контролируемые изменения и измеренные результаты. Определите, что обоснованно можно называть самосовершенствующимся ПО.
Издатель TaigaКак мы пишем
Проверьте пониманиеАгент снижает задержку экспорта, убрав проверки авторизации. Показатель скорости улучшается. Стала ли система лучше?Выполните упражнение
Чему вы научитесь
- Связывать наблюдение при эксплуатации с проверяемым инженерным изменением.
- Разделять восстановление работающей системы, улучшение процесса и обучение модели.
- Измерять заявленное улучшение, не ослабляя его оценку.
Определите цикл, который хотите замкнуть
Во время использования ПО даёт данные: ошибки, задержки, обращения в поддержку, инциденты, обнаруженные при обслуживании проблемы и повторяющуюся ручную работу. Полный жизненный цикл возвращает эти данные в инженерные решения.
Самосовершенствующееся ПО может означать, что автоматизация помогает выявлять, предлагать, реализовывать и проверять изменения. Это не обязательно означает, что модель обучает себя. Укажите, что меняется: код приложения, конфигурация, тесты, инструкции, процесс или параметры модели.
Самовосстановление возвращает известное рабочее состояние. Самосовершенствование меняет систему ради лучшего результата в будущем. Для второго утверждения нужны сравнение и защита от регрессий.
Проследите одно наблюдение через жизненный цикл
Ниже предложен инженерный метод. Это не утверждение, что какой-либо продукт автономно выполняет все шаги.
| Этап | Нужный результат | Вымышленный пример экспорта |
|---|---|---|
| Наблюдение | Доказательства с версией, областью и неопределённостью | Память worker растёт при больших экспортах |
| Диагностика | Проверяемая причина и альтернативные объяснения | Удерживаемые буферы строк могут объяснять рост памяти |
| Спецификация | Желаемый результат и ограничения | Передавать строки потоком без изменения прав или выходных данных |
| Воспроизведение | Тест, выявляющий исходный сбой | Репрезентативный большой синтетический экспорт превышает лимит |
| Изменение | Исправление, доступное для review | Освобождать буферы обработанных строк при потоковой передаче |
| Оценка | Исходный сбой устранён, другие требования сохранены | Проходят тест памяти, сравнение результата, проверки авторизации и повторов |
| Релиз | Контролируемый охват с критериями восстановления | Ограниченное развёртывание артефакта с известным идентификатором |
| Проверка | Сопоставимые данные production и ответственный | Память стабилизируется, а правильность и задержка остаются приемлемыми |
Сохраняйте связи между этими результатами. Действие postmortem «улучшить мониторинг» трудно проверить. Определённые сигнал, ответственный, порог и проверенное реагирование делают завершение наблюдаемым.
Оценивайте независимо от предложения
Агент может создать патч и предложить тесты. Команда всё равно должна проверить, обнаруживают ли эти тесты исходную проблему. Сохраняйте версионируемый набор оценки, который изменение не может незаметно ослабить.
Для вымышленной утечки памяти сравнивайте эквивалентные нагрузки и версии. Включите большие экспорты, отмену, повтор и случаи отказа в доступе. Используйте синтетические данные, отражающие нужную структуру без раскрытия записей клиентов.
Отклоняйте более быстрый экспорт, если он теряет записи, обходит авторизацию или превышает допустимую стоимость. Определите эти ограничения до оптимизации. Иначе система может улучшить выбранную метрику и ухудшить сервис.
Если вы меняете инструкции агента или модель, оцените поведение на репрезентативных задачах и известных сбоях. Сохраните предыдущую версию доступной. Обновление инструкций не доказывает, что лежащая в основе модель обучилась на инциденте.
Выпустите изменение и измерьте результат
Canary release направляет ограниченную группу пользователей на проверяемую версию. Сравнивайте сигналы проверяемой и контрольной версий и определяйте, когда расширять охват или останавливаться. Малый трафик или различающиеся нагрузки могут не дать убедительного сравнения. Рекомендации по canary.
Вымышленная команда фиксирует исходный уровень на неизменной синтетической нагрузке. Она проверяет исправление, выпускает его в утверждённых границах и сравнивает сопоставимые периоды production. Если доказательств всё ещё недостаточно, команда записывает неопределённость, а не объявляет улучшение.
Измеряйте и повторяющуюся ручную работу. Автоматизация может уменьшить рутину, но также требует обслуживания и обработки сбоев. Учитывайте эти расходы при оценке результата. Рекомендации по сокращению рутины.
Сделайте запись обратной связи полезной
Используйте для упражнения следующие поля: наблюдение и версия; исходный уровень; предполагаемая причина; критерии приёмки; проверки регрессий; изменение и review; граница релиза; измеренный результат; ответственный и следующий пересмотр.
Taiga Maintaining связывает находки в репозитории с работой по устранению. Initiatives связывает предполагаемое изменение с планированием и поставкой. Это части цепочки доказательств. Ответственный за ваш сервис по-прежнему должен проверить deployment и эксплуатационный результат. Maintaining, Initiatives.
Зрелая фабрика ПО связывает эту работу между продуктами. По мере роста автоматизации сохраняйте ясными права принятия решений и критерии оценки. Итоговое доказательство — проверенное улучшение сервиса, а не рост числа сгенерированных изменений.
Выполните упражнение
Заполните запись обратной связи из урока для вымышленной утечки памяти. Определите исходный уровень, приёмочный тест, проверки регрессий, границу релиза, измерение в production и ответственного. Добавьте правило отклонения более быстрого, но менее правильного экспорта.
Скачать рабочий лист (Markdown)Если снять этот флажок, весь прогресс, сохранённый в этом браузере, будет удалён.
Прогресс остаётся в этом браузере. Без аккаунта и отслеживания.
Источники и дополнительные материалы
- Google SRE: Postmortem Culture ↗
- Google SRE: Canarying Releases ↗
- Google SRE: Eliminating Toil ↗
- Taiga docs: Maintaining ↗
- Taiga docs: Initiatives ↗