Про те, як застосувати Node.js для серверної частини Інтернету речей. Розбираємося з питаннями безпеки і показуємо пару реальних прикладів інтеграції платформи в IoT.

Навіщо і як будувати Інтернет речей з Node.js

1. Оцінка стану ринку

У 2019 ринкова виручка IoT досягла 212 мільярдів доларів. У світі налічується близько 26,7 мільярда підключених пристроїв IoT. До 2025 року це число досягне 75,4 мільярда.

За оцінками ООН, на лютий 2020 року чисельність населення становить 7,7 мільярда чоловік. У середньостатистичної людини є близько 3-4 пристроїв IoT. Напевно у вас є хоча б одby з таких пристроїв: смарт-годинник, фітнес-трекер, смарт-ТВ або, може бути, навіть «розумна» машина.

Очікується, що в 2025 році чисельність населення досягне 8,1 мільярда чоловік і на кожну людину припадатиме 9-10 IoT-пристроїв.

Думаємо, ви вже зрозуміли до чого ми хилимо. Напевно ви були б не проти приєднатися до цього ринку і тим більше, щоб ваш IoT-пристрій буd одним з тих дев'яти-десяти, що будуть у кожного.

Статистичні дані отримані від Statista і ООН.

2. Вибір правильного фреймворка

Клієнтська частина IoT-пристроїв представлена самим апаратним забезпеченням. Вона написана на C, C ++ , Lua та інших низькорівневих мовах програмування. Через апаратні обмеженя з цим нічого не поробиш.

Поряд з високою продуктивністю, користувачі IoT-пристроїв віддають пріоритет низької вартості і енергоефективності. Тому додатки для пристроїв слід писати на низькорівневих мовах. Принаймні, поки що.

Але ви ніяк не обмежені у виборі фреймворка і мови програмування для серверної частини IoT-додатків. На наш погляд, Node.js - правильний вибір. І ось чому.

2.1. Швидкість і продуктивність

Так як будь-який IoT-пристрій постійно працює з динамічними даними, потрібен фреймворк, здатний працювати з додатками, що працюють в режимі реального часу і з великими об'ємами даних.

Node.js працює на високоефективному і масштабованому JavaScript движку V8 від Google. Внаслідок цього Node.js є основною платформою для роботи з додатками, що працюють в режимі реального часу і постійно змінюваними даними.

2.2. Node.js легко інтегрується з протоколами IoT

Додатки інтернету речей активно використовують протокол MQTT для обміну повідомленнями між пристроями. Для транспортування і інкапсуляції цей протокол задіє WebSockets. Як MQTT, так і WebSockets добре підтримуються і легко інтегруються з Node.JS.

2.3. Модулі Node.js полегшують розробку IoT

У Node.js є npm (менеджер пакетів, англ. Node Package Manager) з безліччю корисних пакетів для IoT-пристроїв. Існує близько 80 пакетів для Intel IoT Edison, Arduino і Raspberry Pi. Крім того, він містить більше 30 пакетів для різних датчиків, маячків і модулів.

2.4. Ресурсоефективність і масштабованість

Розробники вважають за краще працювати з Node.js, так як він не вимагає великого обсягу ресурсів. Процесор і оперативна пам'ять не перевантажені. Крім того, Node.js має високу масштабованість, що абсолютно необхідно для більшості сучасних компаній.

3. Уникаємо підводних каменів

Вхід в нішу IoT може привести вас до успіху. Перша і найголовніша задача, яку ви повинні вирішити, - безпека.

3.1. Безпечна аутентифікація

Існує безліч інструментів для аутентифікації в Node.js: токени, JWT, Auth0 і т.д. Кожен з них має свої переваги і недоліки. Для початку подивимося на них з точки зору IoT.

Токени ефективні, але не на 100% безпечні. Вони є відмінним способом налаштування аутентифікації, так як дозволяють ідентифікувати конкретного користувача і прийняти рішення про те, надавати чи забороняти йому доступ. Токен може бути зашифрований будь-яким алгоритмом.

Однак, апаратне забезпечення (сканери, датчики, хаби і інші штуки IoT) мають зберігати цей токен або дані логіна в прошивці. Це означає, що зловмисники можуть вкрасти токен, якщо у них є фізичний доступ до апаратних засобів. Те ж саме стосується JWT і Auth0.

З іншого боку, ви можете використовувати будь-які інструменти для аутентифікації на стороні сервера і інтегрувати такий інструмент в платформу Node.js. Є багато npm-пакетів, які дозволяють зробити це вручну: Auth0, Passport і JWT. Є також пакети для інтеграції з хмарними IoT-сервісами: @ azure-iot / authentication , aws-iot-device-sdk і т.д.

Продовження

georgiy.serdyuk
Георгий Сердюк

Коментарі доступні тільки зареєстрованим користувачам

вхід / реєстрація

Рекомендації