Сентябрь 2019 — Заметка №3

Пишут, что у Теслы были проблемы c приложением, часть людей разлогинило и нельзя было открыть машину.

Это интересный пример того, как недостаточно хорошо сдизайнили для кризиса. Такие штуки возникают вокруг время от времени. Когда по какой-то причине где-то там в облаке приложению не ответили, а приложение решает что все пропало.

Если открыть приложение Аэрофлота на плохом интернете, то после долгой попытки войти в аккаунт, тебя может разлогинить. Когда в поездке на плохом аэропортном вайфае решаешь посмотреть следующие рейсы, а тебе показывают крутилку долгое время и потом выбрасывают из аккаунта — это весьма раздражает. Ну очевидно я хочу, чтобы приложение показало мне сразу старые данные и не пыталось сразу меня логинить при каждом открытии.

Или вот несколько месяцев назад у Яндекс.Такси был маштабный сбой. Я как раз заказывал такси. Приложение не смогло получить мои платежные данные (привязанные кредитки) и сбросило оплату в “наличные”. Хорошо, что я это заметил! Было бы неприятно в конце поездки спорить с таксистом об оплате и думать где взять наличные (у меня их не было с собой). У меня ~400 поездок в год, приложение об этом знает. Ну уж если приложение не смогло получить платежные данные, то оно могло и в долг меня свозить один раз, пока проблема на серверах не починилась, а потом доснять нужную сумму.

Подобная проблема была и у нас в Эквиде как-то в прошлом. У нас есть интеграции с разными системами, все наши интеграции работаю поверх нашего же API. И вот в одной штуке была логика “если API запрос вернул 404, значит аккаунт удалили, надо в этой интеграции удалить данные для этого аккаунта — они уже не нужны”. Все было хорошо, пока не случилась другая проблема из-за которой небольшое время API запросы выдавали 404 для всех аккаунтов. Ну интеграция и начала дисконнектить аккаунты у себя. Заметили и быстро восстановили, но было неприятно.

С тех пор я запомнил штуку, что отсутствие API ответа не равно API ответу с отсутствием. Если с сервера ничего не пришло (например на запрос верификации токена) — это не повод разлогинивать, может там все упало? Или плохой интернет? Надо моделировать ситуации, когда все идет не так и убедиться, что мы их правильно обрабатываем.