Интернет вещей (IoT) преобразует бизнес, делая его информационно-ориентированным. В рамках IoT идет обмен информацией между различными устройствами с отправкой данных по разного рода сетям как внутри инфраструктуры компании, так и в облаке. Данные с устройств сохраняются, отправляются клиентам или применяются в аналитических целях. Довольно трудно разработать приложение, способное обработать весь этот поток данных в режиме реального времени. Корпоративные приложения осуществляют сбор временных рядов данных, имеющих ценность только в том случае, если их правильно группировать и анализировать, однако возможность эффективно хранить и анализировать такие данные в обычных базах данных часто отсутствует. Данные с датчиков и устройств поступают с большой скоростью, в огромных объемах и разнообразных форматах. В этой ситуации нужна база данных, которая умеет быстро считывать и записывать ряды данных, распределенных по времени. Можно значительно упростить эту задачу, если использовать набор технологий, специально предназначенных для извлечения пользы из IoT-данных. Проведя интервью с директорами компании Basho Technologies, мы выделили пять технологий, которые понадобятся компаниям для разработки IoT-приложения.
Вычислительные средства (Spark, Impala, Storm и пр.)
IoT-приложения работают внутри распределенной инфраструктуры. Серверные кластеры занимаются поглощением, анализом и хранением больших объемов данных, получаемых от групп подключенных устройств. В связи с этим IoT-приложения нуждаются в наборе вычислительных средств, которые в режиме реального времени могут параллельно обрабатывать распределенные массивы данных. Такие средства (как, например, Apache Spark, Apache Storm и Impala) позволяют разработчикам обращаться к непрерывным потокам данных и выполнять запросы к ним оперативным и масштабируемым способом. Вычислительные решения способствуют более быстрому анализу, даже применительно к большим объемам информации.
Базы данных (Riak, Cassandra, MongoDB)
В IoT-мире базы данных должны уметь не только обрабатывать непрерывные операции чтения и записи, но еще и дополнять возможности вычислительных средств стека приложений. База данных должна демонстрировать надежную работу при обработке запросов и выдаче данных, благодаря чему остальные инструменты в стеке смогут эффективно работать. Самое главное, базы данных для IoT-приложений должны быть спроектированы специально для записи и запрашивания IoT-данных. Миллионы датчиков генерируют петабайты данных, которыми компании желают воспользоваться в своих целях. База данных, составляющая костяк архитектуры, должна легко масштабироваться и всегда четко реагировать на запросы, не приводя к неоправданному замедлению в работе или проблемам из-за устаревания данных.
Системы очередей (RabbitMQ and Kafka)
IoT-приложения имеют дело с громадными массивами данных, генерируемыми датчиками и устройствами. Данные при этом отсылаются либо в режиме реального времени, либо пакетами (обычно пакеты формируются в определенный момент в цепочке операций инфраструктуры). Средства хранения и анализа ограничены в плане объемов информации, которую они в состоянии принять в режиме реального времени, по сравнению с объемами, которые нужно обрабатывать здесь и сейчас. Организация очередей приобретает большую важность при работе с большими массивами данных в нескольких приложениях одновременно, а также в случае необходимости объединить данные из множества разрозненных источников. Kafka и RabbitMQ являются популярными примерами менеджеров очередей, с помощью которых решается эта проблема.
Фреймворки приложений (Akka and Spring)
Фреймворки упрощают жизнь разработчикам. Решения наподобие Akka и Spring помогают программистам абстрагироваться от сложной архитектуры и сосредоточиться на более важных задачах. Такие фреймворки особенно хорошо прижились в компаниях, придающих большое значение высокой производительности, в условиях, когда ощутимый простой в работе приложения по причине его сбоя может выбить из колеи весь бизнес. К примеру, фреймворку Akka особенно хорошо удается справляться с неисправностями, даже когда миллионы различных действий выполняются одновременно, как в случае резких скачков активности набора сервисов, обрабатывающих IoT-данные.
Управление ресурсами / Операционные среды (Mesos)
IoT-приложение — очень ресурсоемкая затея. По мере того, как растет пользовательская база приложения, одновременно должна расти и его инфраструктура, иначе приложение не сможет продолжать работу. На ум сразу приходит волна сетевых отказов игры Pokemon Go. Инструменты вроде Mesos помогают компаниям лучше контролировать свой уровень использования ресурсов, чтобы спрогнозировать момент, когда понадобится их масштабировать. В условиях сложных распределенных систем бывает трудно эффективно решить задачу управления ресурсами. Среда Mesos, которую иногда называют операционной системой дата-центров, может снизить расходы на инфраструктуру и значительно упростить и удешевить такие критические процессы, как масштабирование распределенных рабочих нагрузок.