13 мар. 2019 г.
Всем привет! Не так давно сделал любопытное техническое задание. Задача - описать архитектуру gps трекера. Конкретно - умного ошейника для собак. Нужно было описать работу серверной части. Предусмотреть запись активности, запись gpx трека, возможность просмотра статистики. Добавить возможность получения текущего местоположения, получение списка устройств в указанной области, отправку push уведомлений. Также нужно было продумать реализацию функционала совместных прогулок.
Задание не предполагает написания кода. Но, тем не менее, оказалось достаточно сложным и интересным. Не очень понравилось, что предлагается полностью продумать вообще всю архитектуру проекта. В какой-то момент даже возникло предположение, что работодатель хочет составить архитектуру силами соискателей. Но, после более детальлного изучения вакансии, отбросил эту мысль.
Сама задача интересная. В тестовом задании описал простейшее решение. Фактически, используется не самое оптимальное решение "в лоб".
Создатели тестового задания предполагали использование геотемпорального индекса. Похоже, что термин придуман ими же. В интернете не нашел его определения. Основная идея в том, что данные местоположения разбиваются на небольшие секции. Разбиение происходит по timestamp и координатам. Фактически, шардирование. В результате поиск осуществляется в конкретном шарде. В некоторых случаях может понадобиться переключение между шардами.
Тестовое задание приняли. Прошел техническое собеседование. Правда, работать в эту компанию в итоге не пошел. Зато остались приятные впечатления от тестового задания.
Пример доступен на github.
Задание: https://github.com/antonshell/gpx-tracker-architcture/blob/master/SPECIFICATION.md
Мое решение: https://github.com/antonshell/gpx-tracker-architcture
На этом пока все. Спасибо за внимание!