Backend-разработчик
Высокие нагрузки, сто тысяч
запросов в секунду, база
данных не справляется…
Что там клиентское
приложение делать? Три
строчки и всё, а они опять
багов насажали…
h,p://www.reddit.com/r/funny/comments/1ecrkg/the_beard_is_as_smooth_as_the_gif/
Клиентский разработчик
Вышла новая версия SDK, надо
проверить на новой модели
xPhone.
Опять там в бэкенде кривой API
придумали, под нагрузкой
падает, а у приложения рейтинг
низкий из-за них…
h,p://www.edge-online.com/features/fearing-hipster-developer/
Ошибки при отправке запроса
• Нет сетевого соединения
• Получен ответ с ошибкой сервера
• Таймаут получения ответа
Неопределенность
• Запрос отправлен, ответ не получен:
• Запрос получен сервером и …
• не обработан
• обработан, но с ошибкой
• обработан успешно
• Запрос не получен
h,p://www.trinityp3.com/2014/04/media-agency-rebate-debate/
Повтор запроса
• Всякий ли запрос можно повторить?
• запрос, не изменяющий состояние
• идемпотентный запрос
• запрос, приводящий к повторному действию
• Можно ли повторить запрос, который привёл к
ошибке API?
Идемпотентность запросов
• Создать(Объект) ⇒ ID1
• Создать(Объект) ⇒ ID2
• Не идемпотентен, повторение - создание
дубликатов
ID на клиенте
• Создать(ID, объект) ⇒ ОК
• Создать(ID, объект) ⇒ ОК (ничего не делает)
Отпечаток запроса
• Создать(объект) ⇒ отпечаток запроса
• Если запрос уже отправлялся, вернуть
предыдущий ответ
• Или выполнить запрос и сохранить ответ по ключу
отпечатка запроса
Прозрачные коды ошибок
• Используйте HTTP-коды ошибок
• Ошибки может генерировать не только backend
• Возвращайте дополнительную информацию
Сетевое взаимодействие
• Используйте HTTP(S), Keep-Alive, Pipelining
• WebSocket для двунаправленного взаимодействия
• Не используйте polling
• Используйте push notifications
• На мобильных устройствах: берегите батарею и
радиоканал
Конфигурация
• Независимость от основной серверной
инфраструктуры
• Включение/отключение функций
• A/B тестирование
• Изменение параметров
• Применение параметров для части пользователей
Мониторинг на стороне backend
• Сбор данных об активности клиента
• Поиск и агрегация по параметрам клиентского
приложения, пользователя, сессии и т.п.
Отслеживание crashей
• Когда и сколько раз произошел сбой?
• Какая версия приложения? Какая платформа?
• Какие сбои самые частые?
Сбор метрик
• Производительность приложения
• Сетевые метрики (по типу сети, географическому
признаку)
• Пользовательская база
• Дополнительные метрики (UX)