Экскурсия в backend Интернета вещей Владимир Плизга Tibbo Systems ✗ Я – Владимир Плизгá ✗ 2011-2021: ЦФТ (Java) ✗ бэкенд Интернет-банков ✗ 2021-⏳: Tibbo Systems (Java) ✗ бэкенд IoT-платформы Toparvion toparvion.pro 2 План зоопарка доклада ★ Примерно так, только про IIoT ★ А еще про IoT-платформу 3 http://www.spbzoo.ru/posetitelyam/afisha-meropriyatiya/18-avgusta-leningradskij-zoopark-otprazdnuet-den-rozhdeniya-nam-ispolnitsya-153-goda/ IoT-платформа по частям 1 Fleet Management Каким его никто не видел Знакомьтесь! ЕЕ ЗОВУТ МАЯ 7 И она не одна Мая Мура Шура Бойка Жаба . . . Cow_6 Cow_7 Cow_N 8 1 Задачи пастуха ✗ Вовремя отвести всех на выпас ✗ Никого не про🐐ять ✗ Вовремя всех собрать и отвести обратно 1 Частный случай Fleet Management’а 9 Дух цифровой трансформации Еще недавно здесь висел обычный колокольчик https://taigaiot.com/ixocat 10 Трекер двигательной активности КРС ★ Масса <300 г ★ Приемник GPS/ГЛОНАСС ★ Протокол передачи LoRaWAN 1.0.3 class A https://taigaiot.com/ixocat 11 LoRaWAN – Long Range Wide Area Network https://www.itweb.co.za/content/Pero3qZgzRLvQb6m 12 Как получить данные с устройства по LoRaWan https://lora-alliance.org/wp-content/uploads/2020/11/what-is-lorawan.pdf 13 Вариант архитектуры бэкенда ✗ Платформа/язык – Java ✗ т.к. надо запускаться где попало AggreGate ✗ Подход – pub-sub ✗ т.к. иначе устанем опрашивать ✗ Прикладной протокол – MQTT ThingWorx ✗ т.к. (см. далее) 15 MQTT – Message Queuing Telemetry Transport ✗ Работает (в т.ч.) поверх TCP/IP ✗ Специально для полевых устройств ✗ Поддержан в проекте Eclipse Paho (в т.ч. Java) https://mqtt.org/assets/img/mqtt-logo.svg 16 IoT-платформа по частям IoT-платформа по частям 1 1 Полиглотность интеграций Выбираем хранилище (1/2) ✗ Однотипные данные поступают часто и много ✗ Чтений значительно меньше ✗ Транзакционность и ACID не нужны ⇒ Колоночное NoSQL-хранилище 20 Выбираем хранилище (2/2) ✗ Benchmarking Cassandra Scalability on AWS — Over a million writes per second (Netflix) ✗ Платформа должна быть “коробочной” ✗ Но масштабирование важно сохранить ⇒ https://upload.wikimedia.org/wikipedia/commons/a/a0/Cassandra_logo.png 21 ... it's an unsupported setup. We do not support embedding C* in a container (i.e. a JVM not controlled "by us"). IMO, supporting C* in such an environment will cause other issues. https://issues.apache.org/jira/browse/CASSANDRA-13396 22 Плюсы развертывания Cassandra в разных вариантах Embedded External ★ Только одна JVM ★ Разные JVM ★ Нулевой сетевой лаг ★ Масштабируемость ★ Единство настроек ★ Гибкость настроек 23 Вариант компромисса на примере AggreGate 24 Когда Embedded уже не торт (1/3) 25 Когда Embedded уже не торт (2/3) 26 Когда Embedded уже не торт (3/3) 🧐 27 IoT-платформа по частям 1 1 Полиглотность интеграций IoT-платформа по частям 1 Полиглотность интеграций 1 2 2 Гибкое хранение Общая картина Cow_1 Cow_2 IoT платформа (Paho @ Java) LoR aWA N TT MQ Mobile UI Web UI Базовая станция Cow_3 Cow_N Cassandra Desktop UI 31 А на самом деле ★ Мобильное приложение под iOS и Android ★ Бэкенд на AggreGate ★ Обновление координат каждые несколько минут https://tumar.winext.kz/ 33 Путевые заметки ✗ Важен выбор не языка, а его экосистемы ✗ (не)Критичность данных решает многое ✗ Коровы тоже прыгают 34 2 Интеллектуальный анализ машинных данных ЧАЯНДИНСКОЕ МЕСТОРОЖДЕНИЕ ЯКУТИЯ https://www.rogtecmagazine.com/газпром-нефть-начала-разработку-не/?lang=ru 71 Установка Электроприводного Центробежного Насоса ★ Служит для откачки нефти, воды, газа, … ★ Имеет длину до 50 м http://oilloot.ru/84-oborudovanie-truby-materialy-dlya-nefti-i-gaza/1 25-konstruktsiya-i-tekhnicheskie-kharakteristiki-modulej-uetsn 72 Разновидности обслуживания Реактивное обслуживание Упреждающее Прогностическое обслуживание обслуживание 74 Причем здесь IoT [платформа]? Получение Обработка ModBus, OPC, BacNet, SNMP, COM, MQTT, … Статистика, ML, корреляция, фильтрация, … Выдача GUI, e-mail, PDF, REST API, SOAP, SMS, … Удобно делать одним инструментом 76 Как реализуется прогностическое обслуживание ТТХ Взять в работу Измерения IoT платформа (модуль ML) Наблюдения Вероятности поломок Журналы работ Оператор Учесть Забить 77 А что под капотом? (AggreGate) ✗ Поддержаны 3 типа задач ML: ✗ регрессия ✗ классификация ✗ обнаружение аномалий ✗ Библиотека Weka ✗ база знаний называется “Weka Wiki” https://en.wikipedia.org/wiki/File:Weka_(software)_logo.png 81 А если не Java? Как насчёт Python? ✗ Поддерживается библиотека JEP ✗ Java Embedded Python ✗ Работает через JNI и CPython API ✗ потому что важна скорость ✗ Полагается на библиотеку Pandas https://upload.wikimedia.org/wikipedia/commons/thumb/c/c3/ Python-logo-notext.svg/240px-Python-logo-notext.svg.png 83 IoT-платформа по частям 1 Полиглотность интеграций 1 2 2 Гибкое хранение IoT-платформа по частям 1 Полиглотность интеграций 1 2 2 Гибкое хранение 3 3 Языковой интероп А вот что видят операторы 88 Путевые заметки ✗ Прогностические ТОиР применяются не от хорошей жизни ✗ Обработка машинных данных – богатая область для методов ML ✗ ИИ, конечно, хорошо, но Михалыч знает лучше гибридные модели надежнее 91 4 Нормализация, или Как связать несвязуемое Что мы иумеем ✗ Собирать данные с устройств (🐮) ✗ Интеллектуально обрабатывать их (⛽) ✗ Красиво визуализировать (🧐1) 1 Игрушечная линия по производству сахара demo.aggregate.digital 94 IoT-платформа по частям 1 Полиглотность интеграций 1 2 2 Гибкое хранение 3 3 Языковой интероп IoT-платформа по частям 1 Полиглотность интеграций 1 2 2 Гибкое хранение 3 4 4 Визуализация 3 Языковой интероп Недостающее звено Хорошо иметь отдельные “кубики”. Но как построить из этого, например, цифровую шину предприятия? 🤔 98 Ответ: нормализация данных https://aggregate.digital/ru/technology/architecture/unified-data-model.html 99 Единая модель данных (AggreGate) ✗ Содержит нормализованные данные ✗ Организует данные в контексты ✗ В каждом контексте: ✗ функции ✗ события ✗ переменные 100 Переменная в единой модели – это: ❏ Примитив ❏ Объект ❏ Массив ❏ Таблица ✅ 101 Формат таблицы изнутри ★ Содержит список ее полей с их типами ★ Обеспечивает валидацию данных таблицы https://aggregate.digital/ru/technology/architecture/unified-data-model.html 104 За чей счет банкет? ✗ Транзиентный кэш ✗ RAM (SoftReference) ✗ Персистентный кэш ✗ File / RDBMS / NoSQL ✗ Строковая сериализация ✗ с прозрачным сжатием 105 Дерево контекстов ★ Контекст – логический контейнер данных от устройства или ресурса ★ Сильно облегчает групповые действия https://aggregate.digital/ru/technology/architecture/unified-data-model.html 106 Распределенная архитектура ★ Метод горизонтального масштабирования AggreGate ★ Может сочетаться с отказоустойчивым кластером https://aggregate.digital/ru/technology/architecture/distributed-architecture.html 108 IoT-платформа по частям 1 Гибкое хранение 1 2 2 Полиглотность ввода/вывода 3 4 4 Визуализация 3 Языковой интероп IoT-платформа по частям 1 Гибкое хранение 1 2 2 Полиглотность ввода/вывода 5 Нормализация 5 3 4 4 Визуализация 3 Языковой интероп 4½ Реальные примеры применения единой модели данных Переменная (скаляр) Содержание газа в воздухе https://aggregate.digital/ru/customers.html 114 Переменная (кортеж) Геопозиция объекта https://aggregate.digital/ru/customers.html 115 Переменная (таблица) Список сетевых интерфейсов https://aggregate.digital/ru/customers.html 116 Событие (адрес машины) Исчерпание зерна в кофемашине https://aggregate.digital/ru/customers.html 119 Функция (номер замка) Управление замком https://aggregate.digital/ru/customers.html 120 IoT-платформа по частям 1 Гибкое хранение 1 2 2 Полиглотность ввода/вывода 5 Нормализация 5 3 4 4 Визуализация 3 Языковой интероп IoT-платформа по частям 1 Гибкое хранение 1 6 Модульность 6 2 2 Полиглотность ввода/вывода 5 Нормализация 5 3 4 4 Визуализация 3 Языковой интероп Путевые заметки ✗ Нормализация – основа гибкости платформы ✗ Избыточность базовых структур данных оправдана ✗ Большинство устройств можно представить в единой модели данных 123 5 Выводы Что сейчас было? ✗ Кейсы применения IoT ✗ сельское хозяйство (NoSQL-хранилище) ✗ нефтегазовая промышленность (ML) ✗ Обобщение ✗ единая модель данных (переменные) 126 И что же такое IoT платформа? ✗ Общепринятого определения нет ✗ Но есть неплохие попытки его дать: ✗ https://www.gartner.com/en/information-technology/glossary/iot-platforms ✗ https://www.link-labs.com/blog/what-is-an-iot-platform ✗ https://www.softwaretestinghelp.com/best-iot-platforms/ ✗ “IoT-платформа – это инструмент, который… 128 … empowering businesses … by mining valuable insights from the connected world.” Victor Polyakov, CEO Tibbo Systems 130 Где узнать больше? ✗ О типах IoT-устройств вообще (англ): ✗ https://www.iot-now.com/world-of-iot/ ✗ О значении терминов в IoT (рус): ✗ https://iot.ru/wiki/ ✗ О том, что не удалось нагуглить: ✗ Hard: https://iot.stackexchange.com/ ✗ Soft: https://stackoverflow.com/tags/iot/ 131 Спасибо! Время для вопросов Владимир Плизгá Toparvion toparvion.pro ⬆ слайды ⬆ aggregate.digital https://toparvion.pro/event/2022/highload/ 133 Credits Special thanks to all the people who made and released these awesome resources for free: ✗ Presentation template by SlidesCarnival 135