Fremtidssikker integrasjon med Node-RED

Kjetil Mjøs

Kjetil Mjøs - Teknologi

13 Mai, 2022 - 5 min lesing

Gapit Nordics har drevet med industrielle integrasjoner siden 2016. Vår samling av standardiserte programvareintegrasjoner har vokst til over 200 i skrivende stund.

For å utnytte moderne programvareverktøy utviklet vi disse integrasjonene som docker-containere. På slutten av 2021 bestemte vi oss gradvis for å bygge våre integrasjoner rundt Node-RED i stedet for å bygge våre containere.

Med en velprøvd produksjonskode med lang merittliste, var det ingen enkel beslutning å ta. Denne artikkelen vil fremheve hvordan og hvorfor vi kom til løsningen om å bytte.

showcase-image

Hva er Node-RED

Node-RED er en åpen kildekode, svært tilpassbar, flow-basert integrasjonsmotor med et stort økosystem av samfunnsbaserte plugins. Konfigureringen av flows gjøres i nettleseren. Denne arkitekturen gjør den også ideell for å kjøre på en server uten skjerm. Flowen kan eksporteres og importeres i et JSON-format, noe som gjør det enkelt å flytte. Node-RED har eksistert siden 2013 og startet som et sideprosjekt fra Nick O'Leary og Dave Conway-Jones, som begge jobber hos IBM. I 2019 ble det tatt under vingen til OpenJS-stiftelsen, og sikret prosjektstabilitet.

node-red-flow

Hvorfor bytte til Node-RED

Vi i Gapit Nordics mener at Node-RED er integrasjonsverktøyet for fremtiden. Den er perfekt for moderne integrasjoner der du trenger å samle inn data fra ulike APIer og industriell utstyrsdata.

Node-RED er et avansert verktøy, men har fordelen av visuelle flows for programmering. Visuelle flows gjør det lettere for personer med industriell erfaring innen automatiseringsprogramvare å begynne å kode uten bakgrunn i informatikk. Dette er også grunnen til at vi ser at flere og flere automasjonsselskaper som Wago og Schneider Electric omfavner Node-RED og bygger det inn i kontrollerene sine. Det er til og med en økning av nye automasjonsselskaper som Revolution Pi som bruker Node-RED kombinert med en Raspberry pi for å utvikle en ny type IO-kontroller. Node-RED kan være verktøyet som kan erstatte det gamle "ladder logic" språket i automatiseringsverdenen.

Våre kunder har spurt flere ganger om de kan gå inn og gjøre små endringer i integrasjoner. Gapit Nordics’ skreddersydde integrasjoner er enkle å tilpasse for kodere, men for folk som ikke er kjent med moderne koding, kan det være vanskelig med YAML og andre språk for å tilpasse dette. På den andre siden er Node-RED enkel å bruke, og alt kundene våre trenger å gjøre er å logge inn på en nettside, gjøre endringene og trykke på distribusjon.

Ettersom tiden går, vil flere og flere se fordelene med å bruke Node-RED. Bedrifter som bruker sin gamle skreddersydde legacy-integrasjon vil falle bak og miste kunder. Gapit Nordics er helt overbevist om at et integrasjonsverktøy som Node-RED er fremtiden. Fordelen med at vi bytter nå er at vi får mange års erfaring med Node-RED før konkurrentene våre. Dette gjør at vi kan levere tjenester til våre kunder som krever integrasjoner utført i det åpne verktøyet Node-RED.

Begrensninger med Node-RED

Node-RED kan høres ut som det perfekte verktøyet, men det er noen begrensninger vi må ta tak i.

For det første er det ikke tidsdeterministisk. Hvis du leser data hvert sekund, kan du ikke være 100 % sikker på at data leses hvert sekund. Det er ikke et problem når man leser data, men det er et problem for å kontrollere systemer. Si at du vil kontrollere en prosess, og at du må åpne og lukke en ventil nøyaktig hvert 2. sekund for at prosessen skal være stabil. Det er en type applikasjon der du ikke bør bruke Node-RED. Denne typen applikasjoner er bedre egnet for et dedikert kontrollsystem eller en sanntids Linux-kernel.

Node.js, som Node-RED er bygget på, er et utmerket språk for asynkron kommunikasjon, noe som betyr at det kan kjøre forskjellig kode mens det venter på forespørselen. Den fortsetter på den andre koden og går tilbake for å utføre resten av koden som trengs når et svar er mottatt. Det er en fin måte å øke hastigheten på, men den er fortsatt "single-threaded". For eksempel kan hver container kjøre i separate "threads" når du kjører docker-containere, noe som gir parallelle arbeidsbelastninger og økt hastighet. "Multi-threading" er ikke et reelt problem før du starter med store arbeidsmengder. Men det er fortsatt et problem å vurdere når du designer systemet ditt.

Hvordan vi hjelper Node-RED med å lykkes

Når vi satser på Node-RED som den fremtidige integrasjonsplattformen, må vi gjøre hva som helst for å få Node-RED-plattformen til å være best. Å spre ordet og la folk få vite om Node-RED er en av tingene vi kan gjøre for å øke bruken.

Et annet område vi i Gapit jobber med er å utvikle høykvalitetskode for industrielle integrasjoner. Et av Node-REDs mål i fremtiden er å øke kommersiellt bruk. Å ha robust samfunnskode for industrielle integrasjoner er nøkkelen til å få dette til å fungere. Industrielle applikasjoner trenger pålitelige systemer og programvare som fungerer år etter år.

Loggføringsproblemer, heve funksjonsforespørsler og hjelp til å svare på spørsmål fra fellesskapet er noe alle åpen kildekode-prosjekter er interessert i. Vi i Gapit Nordics ønsker å hjelpe Node-RED til å være den beste platformen for integrasjoner.

Vi satser på Node-RED fordi det er verktøyet våre kunder fortjener.