Сбои: откуда берутся, что делать и кто виноват?

Дмитрий Масленников

Руководитель центра надежности ИС Т-Банк

Про SRE

SRE — все, что связано со сбоями и надежностью

Работа с настройками

Масштабный сбой в мобильном банке на Android

11 декабря 2020

На Android не отображались счета и продукты на главном экране

Пострадало около 300 тысяч пользователей

Написали РБК, ТАСС и Коммерсант

Причины

  • Добавили новый продукт, но заполнили не все поля
  • Продукты добавлялись простым редактированием JSON
  • Не было валидации на сервере
  • Не было валидации на клиенте (мобильное приложение)
  • Мобильное приложение Android не отображало все продукты, а не только один невалидный
  • Мобильные приложения кешировали список продуктов на сутки
  • Возможность принудительного сброса кеша не была предусмотрена

Выводы

  • Надо валидировать настройки приложения, даже если их меняет опытный администратор
  • Мобильное приложение должно валидировать данные, пришедшие с сервера
  • Мобильное приложение должно уметь работать с частично валидными данными
  • Надо уметь управлять кешированием на мобильном приложении
  • В мобильное приложение надо предусмотреть возможность коммуникации с пользователями во время сбоев

Каскадный сбой от маленькой утилиты

17 февраля 2021

Filebeat

Простая утилита для загрузки логов

Filebeat обычно используется для загрузки логов в Elastic Search

17 февраля в 15:08

Filebeat загрузил CPU одной из нод Hazelcast на 100%

Распространение влияния

  1. Hazelcast начал медленно отвечать, а затем у него закончились файловые дескрипторы
  2. Основной API начал медленно отвечать на запросы или отвечать с ошибкой
  3. Системы обращающиеся к API начали посторять запросы
    • Еще больше увеличили нагрузку на API
    • Увеличили нагрузку на соседние системы (которые надо вызывать совместно с API, или которые вызывает API в процессе работы)

Влияние на Банк

  • Ошибки при входе в мобильные приложения
  • Не загружались счета
  • Не работали платежи и переводы

Влияние на Страховую

  • Невозможно было рассчитать, оформить продлить и облатить ОСАГО

Влияние на Инвестиции

  • Трудно войти в приложение
  • Пользователи не видели свои счета
  • Не получалось получить информацию о ценных бумагах
  • Не возможно купить или продать бумаги, виставить лимитные заявки

Влияние на другие сервисы

  • Не работал голосовой помощник
  • Нельзя было записать телефонный разговор
  • На колценнтр скопилась огромная очередь
  • Внимание со стороны регулятора
  • Просели рейтинги приложений в AppStore и Google Play

Выводы

  • Вспомогательные приложения должны быть ограничены по максимальному использованию ресурсов
  • Надо очень внимательно продумывать работу приложений во время сбоев, особенно при повторных вызовах
  • Необходим план действий во время масштабных сбоев, включая работу поддержки и PR

Почему так происходит?

Мир несовершенен
Мы можем повлиять только на поведение людей, поэтому все "интересные" причины — "человечесикй фактор"

Причины сбоев

  1. Ошибка или недоработка в программном коде
  2. Ошибка или недоработка в архитектуре приложения
  3. Ошибка или недоработка в архитектуре системы
  • Код разработан внутри компании
  • Код взят из открытого проекта
  • Код куплен у сторонней компании
  • Технический долг (проблема уже была известна и решение тоже было известно)
  • Проблема была известна, но не знаем, как это решить
  • О проблеме узнали впервые

Причины сбоев

  1. Недоработка в процессах работы
  • Процесс ошибочен
  • Процесс подталкивает сотрудника к ошибке или некорректному поведению
  • Технический долг (проблема уже была известна и решение тоже было известно)
  • Проблема была известна, но не знаем, как это решить
  • О проблеме узнали впервые

Причины сбоев

  1. Ошибка сотрудника при проведении плановых и других работ по обслуживанию систем
  2. Ошибка при использовании сервиса сотрудниками компании
  • Интерфейс провоцирует ошибку
  • Отсутствует защита от некорректных действий

Причины сбоев

  1. Проблема в коммуникации
  • Некорректно поставлена или понята задача
  • Некорректная документация (отсутствует, устарела, с ошибками)
  • Не получено важное уведомление
  • Недостаточное обучение или отсутствие контроля обучения

Причины сбоев

  1. Игнорирование риска при желании достигнуть цели любой ценой
  • Игнорирование риска при давлении от руководства

Причины сбоев

  1. Прямая человеческая проблема — выгорание, депрессия, конфликты и т.п.

Причины сбоев

  1. Не предотвратили умышленное причинение вреда
  • Сотрудниками
  • Третьими лицами
  1. Недокументированное отклонение в работе внешнего сервиса

Необвинительная культура

Спасибо!

Вопросы?