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: Як це виглядає
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. Вона порівнює значення одного і того ж параметра.
Switch node
У Node-red, на відміну від Corezoid, існує можливість створити два асинхронні потоки, якщо значення параметра, який ми перевіряємо, відповідає у двох і більше перевірках.
Switch node
Switch node
У Corezoid це нода називається Сonditions і реалізована за аналогією з if/else if. В одній ноді можна порівнювати різні вирази.
Condition node
Доступ можна порівнювати на рівно, нерівно, більше, менше, використовувати регулярні висловлювання і порівнювати різні типи даних.
Condition node
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 або оголосити їх у ноді.
Request node
У відповідь можна отримати не тільки JSON об’єкт, але і UTF-8 і binary. Залежно від того, з якими даними ми зібралися працювати.
Request nodes responses
У Corezoid за цю функцію відповідає нода API Call.. Вона підтримує всі методи, але на відміну від Node-RED у відповідь можна отримати тільки JSON.
API Call node
Оголошення змінної. Set Parameter (Corezoid) vs Change (Node-Red)
Set Parameterдозволяє додавати в заявку нові параметри, встановлювати значення та змінювати значення існуючих параметрів.
Також за допомогою цієї ноди можна виконувати функції:
Set parameter node
В Node-RED Change виконує ті ж функції що і Set Parameter Corezoid, а також дає можливість перейменовувати і видаляти параметр. При установці властивості значення може бути результатом виразу JSONata (декларативна мова запитів та перетворення з відкритим вихідним кодом для даних JSON), яке виконує в тому числі й математичну функцію. Плюсом є можливість зберігати/змінювати значення параметра в пам’яті додатка, щоб звертатися до нього багаторазово.
Change node
Ноди виконання коду. API Code (Corezoid) vs Function (Node Red)
І в Corezoid і Node-RED є можливість виконувати код. Corezoid працює з JavaScript та Erlang, за допомогою ноди API Code.
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-RED | Corezoid |
---|---|---|
Цена | 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 режим | Да | Да |
Возможность логировать код | Да | Нет |
Метаданные | JSON | JSON |
Нативное логирование | Info,debug,error + fatal, warn, trace, off | Info,debug,error |
API для создания нод и процессов | Да | Да |
Неограниченная масштабируемость | Да (если разработан как stateless приложение) Обеспечивает неограниченное масштабирование и встроенную устойчивость для обработки пиковых нагрузок. | Нет |
Возможность разрабатывать в разных окружениях | Да, возможно создавать неограниченное количество окружений | Нет, разработка ведется в одной среде |
Поддержка систем управления версиями | Да | Нет |
Управление версиями потока | Да, через встроенный интерфейс GitHub | Нет |
Инструменты импорта/экспорта | Да, как весь процесс так и отдельные ноды | Да, но только весь процесс целиком |
Интеграция баз данных | Да, через библиотеки. Поддерживаются как SQL, так и no SQL | Нет (только через API либо при подключении репозиториев) |
Нативный дашборд | Да, но его нужно построить: дашборд | Да |
Нативная база данных | Нет, но можно сохранять данные в память приложения | Да |
Поддержка пользовательских нод | Да | Нет |
Богатая библиотека с пакетами | Да Основное преимущество: сообщество всегда публикует различные решения и утилиты Node-RED | Нет |
Умение писать код | Да, Javascript | Да, Javascript, Earlang |
Любите цікавий та корисний контент? Заходьте на Наш Блог, де ми висвітлюємо важливі останні тренди та тенденції фінтех світу.
Давайте поспілкуємося. Укажіть Ваші контакти і ми звяжемося на протязі 24 годин.