Мы учли бизнес-задачи, стоящие перед клиентом, и постарались упростить процедуру сбора данных с контроллера.
В проекте мы предложили пять разделов — «Статистика», «События», «Павильоны», «Партнеры», «Счета».
У заказчика уже был выбран и установлен контроллер. Он отслеживает состояние разных датчиков и опирается на физические принципы и измерения величин, которые кодируются в самом примитивном формате, чтобы определить более абстрактные (и релевантные для пользователя) параметры состояния павильона. Кроме того, у контроллера в силу вычислительных способностей не было возможности реализовать шифрование для обмена информацией по https.
Мы предложили выделить из монолитной архитектуры приложения микросервис-шлюз, написанный на FastAPI, который бы брал на себя ответственность за обработку незашифрованных http-соединений, а также конвертацию присылаемых контроллером величин из низкоуровневого байтового формата в привычный для REST API и хорошо читаемый человеком json.
Монолитная часть приложения (Django+DRF) при этом оставалась ответственной за весь остальной функционал и продолжала использовать безопасный транспорт, поскольку без шифрования платформа не смогла бы работать с чувствительными данными пользователей.
Далее нами был разработан протокол обмена данными, который принимал соединение от контроллера и перенаправлял стандартизированный запрос на монолитное приложение. Там осуществлялась обработка, регистрация событий и привязка к конкретным павильонам.