Анотація

Node-RED, і Corezoid – ефективні low code інструменти та середовища візуального програмування, які значно спрощують роботу розробника. Їх порівняння показує, що Node-RED має ряд очевидних переваг, які роблять його вигіднішим у довгостроковій перспективі. Основні переваги: ​​це безкоштовно, на Udemy можна переглянути понад 6000 навчальних відео для розробників з різним рівнем досвіду, є можливість реєструвати код, створювати необмежену кількість середовищ та виконувати необмежену масштабованість у разі потреби.

Крім того, Node-RED використовує технологію «платформа як послуга», яка дуже корисна, оскільки PaaS допомагає розробляти, запускати та керувати своїми програмами без необхідності формувати та підтримувати інфраструктуру. Крім того, немає потреби виконувати оновлення програмного забезпечення або проводити регулярне технічне обслуговування обладнання. Node-RED надає всі необхідні середовища для складання та розгортання проекту. Більше того, є відкрита бібліотека з готовими пакетами, а також можливість використовувати як SQL, так і не SQL бази даних.

На закінчення, порівняння Node-RED та Corezoid показало, що кожне з цих середовищ має свою специфіку, а також переваги та недоліки, проте Node-RED виглядає більш вигідною та гнучкою, що дозволяє адаптуватися до проектів різного масштабу та складності.

Навіщо це потрібно?

Для розробки рішень у сфері фінансів крім класичних мов програмування, таких як Java, Javascript і Python, також використовуються інструменти візуального програмування, що дозволяє не лише програмістам, а також фахівцям з менш глибоким знанням мов програмування автоматизувати процеси. На даний момент два найпопулярніші інструменти це Node-Red та Corezoid. Їх ми розглянемо.

 

Як це працює?

Node-RED flow: How it looks

Node-RED flow: Як це виглядає

 

Corezoid flow: How it looks

Corezoid flow: Як це виглядає

 

І в Node-Read і в Corezoid розробка відбувається в браузерному редакторі, де користувачі працюють з нодами, вибудовуючи їх у гілки процесів, формуючипотік. Нода є набором функцій, які виконують певні дії та/або перевірки. Після відпрацювання ноди, на виході ми отримуємо заявку – JSON об’єкт, який буде направлений у наступну ноду. В яку саме залежить від результату, отриманого в цій ноді і описаної логіки. Створені потоки завантажуються в середовище виконання одним натисканням клавіші.

Також Обидві системи надають можливість писати код у редакторі як альтернативу візуальному програмуванню.

 

Corezoid це платне рішення, створене компанією Middleware, написане мовою erlang. Має нижчий поріг входження порівняно із своїм конкурентом. Corezoid відразу поставляється з повним набором інструментів для старту роботи, що є великим плюсом, тому що користувачам не потрібно окремо розгортати сервер, базу даних та систему черг – створили пробний обліковий запис і можна приступати до роботи. У створенні даної платформи використовується stateful підхід, у якому дані зберігаються у самих нодах, що може викликати проблеми з оновленням та масштабуванням. Як приклад – у кожної ноди Corezoid є свій ідентифікатор, і при зміні даного ідентифікатора дані з цієї ноди будуть втрачені.

 

Node-RED це Open Source рішення створене компанією IBM та написане на Node.js. Поріг входження вище, тому що з базами даних, сервером та чергами, а також з тим, як їх підключити користувачам доведеться розбиратися самим. У Node-RED використовується stateless підхід, при якому всі дані зберігаються окремо від програмного коду, що є плюсом при масштабуванні та оновленнях.

 

Основні ноди 

Перевірка умов. Switch (Node-Red) vs Conditions (Corezoid)

І в Corezoid і в Node-RED існує нода, яка дозволяє направити заявку з різних гілок процесу в залежності від виконання умов.

У Node-RED ця нода реалізована за аналогією зі switch Javascript. Вона порівнює значення одного і того ж параметра.

Node-RED vs Corezoid

Switch node

У Node-red, на відміну від Corezoid, існує можливість створити два асинхронні потоки, якщо значення параметра, який ми перевіряємо, відповідає у двох і більше перевірках.

Node-RED vs Corezoid

Switch node

Node-RED vs Corezoid

Switch node

У Corezoid це нода називається Сonditions і реалізована за аналогією з if/else if. В одній ноді можна порівнювати різні вирази.

Node-RED vs Corezoid

Condition node

Доступ можна порівнювати на рівно, нерівно, більше, менше, використовувати регулярні висловлювання і порівнювати різні типи даних.

Node-RED vs Corezoid

Condition node

Node-RED vs Corezoid

Condition node

 Обробка http запитів. Http request (Node-Red) vs API Call (Corezoid)

Ще одна пара часто використовуваних нод, які постачаються з коробки – ноди для обробки http запитів. У Node-Red це http request node, Corezoid – API Call. 

У http request ноду можна динамічно передати всі параметри, включаючи Method, URL, Headers або оголосити їх у ноді. 

Node-RED vs Corezoid

Request node

У відповідь можна отримати не тільки JSON об’єкт, але і UTF-8 і binary. Залежно від того, з якими даними ми зібралися працювати.  

Node-RED vs Corezoid

Request nodes responses

У Corezoid за цю функцію відповідає нода API Call.. Вона підтримує всі методи, але на відміну від Node-RED у відповідь можна отримати тільки JSON.

Node-RED vs Corezoid

API Call node

 

Оголошення змінної. Set Parameter (Corezoid) vs Change (Node-Red)

Set Parameterдозволяє додавати в заявку нові параметри, встановлювати значення та змінювати значення існуючих параметрів.

Також за допомогою цієї ноди можна виконувати функції: 

  • Читання параметрів вузла – повертає значення лічильника заявок у ноді, або значення параметра із заявки, що зберігається в Corezoid.
  • Значення параметрів — повертає значення параметра заявки із зазначеного процесу (можливий пошук заявок, які зберігаються в процесах Corezoid).
  • Час і дата — функції перетворення та форматування та дати/часу.
  • Математичні — повертають результат математичних дій (складання, віднімання, множення та поділу) констант та/або параметрів.
Node-RED vs Corezoid

Set parameter node

 

В Node-RED Change виконує ті ж функції що і Set Parameter Corezoid, а також дає можливість перейменовувати і видаляти параметр. При установці властивості значення може бути результатом виразу JSONata (декларативна мова запитів та перетворення з відкритим вихідним кодом для даних JSON), яке виконує в тому числі й математичну функцію. Плюсом є можливість зберігати/змінювати значення параметра в пам’яті додатка, щоб звертатися до нього багаторазово. 

Node-RED vs Corezoid

Change node

 

Ноди виконання коду. API Code (Corezoid) vs Function (Node Red)

І в Corezoid і Node-RED є можливість виконувати код. Corezoid працює з JavaScript та Erlang, за допомогою ноди API Code.

Node-RED vs Corezoid

Code node

На відміну від Node-RED, у якому процес зупиниться у разі виникнення помилки в ноді, що відповідає за виконання коду – у Corezoid можливо встановити значення часового інтервалу, при досягненні якого заявка піде далі по процесу в тому випадку, якщо нода API Code не відповідає. У Node-RED можна використовувати try/catch для обробки помилок або всередині ноди з кодом або за допомогою ноди catch.

У Node-RED дана нода виконання коду називається Function і дає можливість працювати лише з Javascript. Усередині Function можна прописати switch і налаштувати кілька виходів із цієї функції, це допомагає суттєво скоротити кількість додаткових нод та уникнути візуального перевантаження.

Основною відмінністю та беззастережним плюсом Node-RED є можливість поставити будь-яку бібліотеку – у Corezoid кількість бібліотек заздалегідь задано та обмежено. 

Також, в Node-RED можна виконувати код при старті програми, і розділяти потік на кілька потоків, виконуючи дії асинхронно. Це зручно у випадках коли нам потрібно виконати кілька дій паралельно, наприклад, зберегти ім’я користувача в базу даних при цьому продовжуючи рухатися по потоку.

 

Збереження даних

Плюсом Corezoid – є те, що він надає базу даних, всі заявки які надходять у ваш потік – можна зберігати в ноді Callback, до яких потім – можна звертатися через ноду set param (або API Corezoid) – дані в нодах зберігаються у форматі JSON. 

У Node-RED можна зберігати дані в пам’яті програми, але якщо воно впаде – дані будуть видалені. У пам’яті часто зберігається або кеш або дані, що записуються при старті програми.

 

Кастомні Ноди

Так як Node-RED є Open Source рішенням – він дозволяє встановлювати кастомні ноди, написані сторонніми розробниками – Corezoid дозволяє використовувати тільки Core ноди. АЛЕ у Corezoid існує нода GIT Call яка дозволяє підключати та виконувати код з Git-репозиторіїв. У новій версії розробники додали підтримку підключення до приватних репозиторій і розширили список мов до 5: JS, Python, Go, PHP, Java.

 

Робота із запитами

У Node-RED можна створювати свої власні API за допомогою нод http-in і http-response – в першій ноді можна вказати ендпоінт на який будуть надходити запити, в другій можна передавати будь-яку відповідь і будь-який статус код.

У Corezoid такої можливості немає. Запити в потік прокидати все ж таки можна, але відповідь на них завжди буде з тим самим статусом і повідомленням. 

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

 

Системи Управління Версіями

Остання тема, яку хотілося б згадати це оточення і системи управліннями версіями. 

Для Node-RED доступна робота процесу на кількох оточеннях (наприклад, dev, stage, prod) і підтримує системи розподілу версій, такі як Git.

Це дозволяє вести розробку локально або в тестовому середовищі, а також дає можливість повернути версію і повернути процес до стану, коли в нього були внесені зміни.

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

 

Підсумок

І Corezoid та Node-RED це два відмінні інструменти візуального програмування. Їх основними відмінностями є ціна, поріг входу та можливість кастомізації.

 

Corezoid підійде компаніям, які хочуть самотужки і якнайшвидше автоматизувати бізнес процеси. Співробітники цих компаній швидше зможуть розібратися з продуктом та почати будувати перші процеси за рахунок нижчого порога входу. Мінусами є плата за використання продукту, а також недостатня гнучкість інструментів.

 

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

 

Таблиця порівняння основних показників для наочного порівняння, а також корисні посилання:

 

СистемаNode-REDCorezoid
Цена100% бесплатно
(проект с открытым исходным кодом)
Существует бесплатная пробная версия на 30 дней.

Минимальная версия стоит 30 долларов.
Привязка к поставщику решенийНетVendor-lock-in
Кто создалIBM (США)Middleware (США)
Дата запуска16 октября 2013 г. - 0.2.0– v0.14точная дата не найдена
Клиентский портфельSense Tecnic, Agilite, Go-IoT, Spirit, Opto 22 и многие другиеWestern Union, Visa, Mastercard, Viber и многие другие
Качество документацииВысокаяВысокая
Справочный центр и поддержкаЕсть только блог и форумЕсть возможность обращаться в саппорт на почту
Обсуждения сообщества и форумовФорум, активный
Канал команды Slack
Не найдено
Курсы UdemyДа, почти 6 тысяч видеоНет
Стабильные релизыДаДа
Концепция как услугиPaaS (платформа как услуга)SaaS (Программное обеспечение как услуга)
Разнообразие руководств по установкеОбширный список возможностейПростая, бесплатная пробная страница регистрации
Чтобы хостить на своем сервере возможно подать заявку
Поддержка локального копированияДа, документация
Требуется предварительная установка Node.js
Нет
Поддержка NPMДаНет, но есть возможность подключать сторонние репозитории
Облачная средаIBM (Bluemix), AWS, MS-Azure и т. д.AWS, MS-Azure и т. д.
Редактор потоков ВебВеб
Схема цепочек потокаСлева направоСлева направо
Сверху вниз
Уровень удобства интерфейса пользовательского интерфейсаВысокийВысокий
Debug режимДаДа
Возможность логировать кодДаНет
МетаданныеJSONJSON
Нативное логированиеInfo,debug,error + fatal, warn, trace, offInfo,debug,error
API для создания нод и процессовДаДа
Неограниченная масштабируемостьДа (если разработан как stateless приложение)
Обеспечивает неограниченное масштабирование и встроенную устойчивость для обработки пиковых нагрузок.
Нет
Возможность разрабатывать в разных окруженияхДа, возможно создавать неограниченное количество окруженийНет, разработка ведется в одной среде
Поддержка систем управления версиямиДаНет
Управление версиями потокаДа, через встроенный интерфейс GitHubНет
Инструменты импорта/экспортаДа, как весь процесс так и отдельные нодыДа, но только весь процесс целиком
Интеграция баз данныхДа, через библиотеки.
Поддерживаются как SQL, так и no SQL
Нет (только через API либо при подключении репозиториев)
Нативный дашбордДа, но его нужно построить: дашбордДа
Нативная база данныхНет, но можно сохранять данные в память приложенияДа
Поддержка пользовательских нодДаНет
Богатая библиотека с пакетамиДа
Основное преимущество: сообщество всегда публикует различные решения и утилиты Node-RED
Нет
Умение писать кодДа, JavascriptДа, Javascript, Earlang

 

Любите цікавий та корисний контент? Заходьте на Наш Блог, де ми висвітлюємо важливі останні тренди та тенденції фінтех світу.