Сделайте единый фасад для событий и ошибок, адаптеры провайдеров и дисковую очередь доставки со статусом по каждому получателю.
Разработать сервис для сбора и передачи аналитических данных
Сделайте единый фасад для событий и ошибок, адаптеры провайдеров и дисковую очередь доставки со статусом по каждому получателю.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
В системе задействованы три внешних аналитических провайдера: Firebase, Mixpanel и Flurry. Требуется спроектировать сервис, который будет принимать события вместе с их параметрами, а ошибки фиксировать как отдельные сущности, отличные от обычных событий. Сервис должен корректно работать в офлайн‑режиме: все накопленные данные следует хранить локально и автоматически отправлять провайдерам, как только появится подключение к сети.
Ответ
Сделайте единый фасад для событий и ошибок, адаптеры провайдеров и дисковую очередь доставки со статусом по каждому получателю.
API разделяет track(Event) и record(ErrorReport), а запись содержит UUID, время, версию схемы и разрешённые параметры без секретов. Сначала сохраните её транзакционно локально; затем отправляйте партиями и отмечайте успех каждого провайдера отдельно. Повторы используют backoff, ограничения размера/срока хранения и event-id, если получатель умеет дедупликацию. Сетевой статус — лишь подсказка: успех подтверждает отправка, а не наличие Wi-Fi. iOS не гарантирует немедленную фоновую доставку при закрытом приложении. Flurry объявил прекращение Analytics с 15 марта 2024 года, поэтому в новом проекте этот исторический адаптер заменяют поддерживаемым сервисом.
Источник: www.flurry.com.