Проекты в сфере агротехнологий быстро выходят за рамки «фермы с датчиками». Как только появляется необходимость стабильно управлять микроклиматом, питанием и циклами роста, без полноценной информационной системы это превращается в набор разрозненных решений.
В Agrotechfarm на момент старта уже использовались датчики и исполнительные устройства, однако данные поступали в разных форматах, с разной частотой и без централизованной обработки. Это создавало задержки в принятии решений и ограничивало возможность автоматизации.
Ключевой задачей стало создание системы, которая не просто собирает данные, а превращает их в управляемый технологический процесс.
В основе решения лежит событийно-ориентированная архитектура с возможностью обработки телеметрии в реальном времени. Мы исходили из того, что система должна корректно работать при постоянном потоке данных от десятков и сотен устройств.
Backend был реализован на Java с использованием современных фреймворков для построения отказоустойчивых сервисов. Основной задачей серверной части стала нормализация входящих данных, их агрегация и подготовка к хранению и визуализации.
Отдельное внимание уделили механизму приема данных. Устройства передают информацию с разной периодичностью и могут временно терять соединение. Поэтому была реализована буферизация и повторная доставка данных, чтобы избежать потерь и обеспечить целостность системы.
В качестве основной СУБД выбрана Oracle, что позволило обеспечить надежное хранение и транзакционную целостность данных. Это особенно важно для сценариев, где на основе показаний датчиков принимаются управляющие воздействия.
Структура базы данных проектировалась с учетом высокочастотной записи и последующей аналитики. Мы разделили «сырые» данные и агрегированные показатели, что позволило снизить нагрузку на запросы визуализации и ускорить работу интерфейса.
Дополнительно были реализованы механизмы архивирования и очистки данных, чтобы система сохраняла производительность при длительной эксплуатации.
Для обеспечения гибкости развертывания система была полностью контейнеризирована с использованием Docker. Это позволило изолировать сервисы, упростить управление зависимостями и обеспечить воспроизводимость окружений.
Такой подход особенно важен для проектов, где требуется быстрое масштабирование или перенос системы между инфраструктурами. Мы реализовали сценарии развертывания, которые позволяют запускать систему как в тестовой, так и в промышленной среде с минимальными изменениями.
Кроме того, контейнеризация упростила обновление компонентов системы без остановки ключевых сервисов.
Клиентская часть была реализована на React с акцентом на работу в режиме реального времени. Интерфейс должен был не просто отображать данные, а помогать оператору быстро принимать решения.
Мы реализовали динамическое обновление показателей без перезагрузки страницы, а также систему визуальных индикаторов, позволяющих мгновенно выявлять отклонения от нормы.
Отдельное внимание уделили UX: в агротехнических системах важно, чтобы интерфейс был понятен не только ИТ-специалистам, но и технологам.
Система не ограничивается мониторингом. На основе поступающих данных пользователь может управлять параметрами выращивания: изменять режимы подачи питательных растворов, регулировать микроклимат и настраивать сценарии работы оборудования.
Для этого была реализована логика обратной связи — изменения, внесенные через интерфейс, транслируются в управляющие команды для устройств. При этом учитываются ограничения и текущие параметры, чтобы избежать некорректных состояний системы.
Такой подход позволяет постепенно переходить от ручного управления к автоматизированным сценариям.
В результате Agrotechfarm получил систему, которая объединяет все уровни — от датчиков до пользовательского интерфейса — в единую цифровую платформу.
Сократилось время реакции на изменения параметров, повысилась стабильность технологического процесса и появилась возможность масштабировать производство без пропорционального увеличения операционных затрат.
Архитектура системы позволяет в дальнейшем внедрять предиктивную аналитику, машинное обучение и более сложные сценарии автоматизации.
С технической точки зрения проект стал примером того, как правильно выстроенная backend-архитектура и работа с данными напрямую влияют на эффективность реального производства.