Una delle proposte di valore più interessanti della piattaforma SnapLogic è la possibilità di eseguire la nostra piattaforma on-premise in un data center o in una piattaforma cloud all'interno di una rete virtuale privata. Tuttavia, il fatto di essere un fornitore di cloud richiede che il lavoro di progettazione effettivo si svolga nel nostro ambiente di studio di progettazione, il che comporta un requisito di connettività tra il nodo e il piano di controllo in cui vengono eseguite le pipeline. L'obiettivo di questo blog post è quello di fornire una descrizione della vita di un nodo Groundplex JCC, di come viene creato, di quali sono i requisiti per funzionare e, soprattutto, dei requisiti di configurazione della rete e delle best practice che riguardano non solo il come ma anche il perché.
Cosa c'è nel nome: Nodo Snaplex JCC?
In poche parole, Snaplex è un runtime. JCC sta per Java Component Container. Come suggerisce il nome, contiene il codice che esegue tutte le pipeline e monitora lo stato di salute del nodo, l'utilizzo e tutti gli aspetti per mantenere il funzionamento regolare. Essenzialmente, ci sono due processi principali in esecuzione all'interno del JCC, Monitor e Process.
Acquisizione del nodo Groundplex
SnapLogic Manager consente di configurare un nodo Snaplex che funga da runtime per l'elaborazione delle pipeline on-premise. Le opzioni per un nodo Snaplex sono le seguenti:
Cosa c'è esattamente nel nodo?
Il nodo è semplicemente un file WAR o un pacchetto Java compilato. Il requisito fondamentale per eseguire il pacchetto è un JDK. L'immagine qui sopra mostra come SnapLogic fornisca quattro opzioni che possono essere eseguite all'interno:
- Server Windows
- Distro Linux
- Pacchetto RPM
- Immagine Docker
I formati disponibili sono pensati per la portabilità e per requisiti infrastrutturali minimi per l'esecuzione del nodo. L'immagine/pacchetto è leggera e può utilizzare diversi software di gestione dei pacchetti per sfruttare l'autoscaling e il bilanciamento del carico in un ambiente Kubernetes. La "Configurazione" è l'istruzione che stabilisce la connettività tra il Groundplex (runtime) e il Control Plane (Design Surface) e viene discussa in seguito.
La piattaforma SnapLogic è un iPaaS in esecuzione su cloud e richiederà una connettività sempre attiva per recuperare i metadati delle istruzioni più recenti necessari per l'esecuzione.
Requisiti della rete
Il nodo è un runtime. Esegue le pipeline di integrazione, le attività pianificate e le attività attivate dalle API, memorizzate come metadati nel piano di controllo di cloud. I dati di connessione mostrati sopra sono le istruzioni per il nodo da "chiamare a casa" quando si avvia. Qui il discorso si fa un po' più tecnico.
La prima chiamata Home
All'avvio, il nodo carica i parametri di connessione e stabilisce una connessione con il Control Plane. Ad oggi, il CP risiede nella regione occidentale degli Stati Uniti, con possibili piani di espansione nelle regioni EMEA e UE.
La prima operazione da fare per il JCC è registrarsi con il Control Plane utilizzando il file "slproz" scaricato sul JCC tramite la stringa di configurazione mostrata sopra. Il processo di registrazione prevede lo scambio di chiavi, i parametri di configurazione della macchina, compreso il tipo di nodo Snaplex, e i certificati TLS. Una volta che il JCC risulta conforme o meno, lo stato viene comunicato al Dashboard in modo che l'utente possa essere avvisato.
Throughput, costo di connessione e proxy
La connessione avviene tramite una libreria HTTP e l'impostazione predefinita prevede che il nodo effettui un check-in ogni 15 minuti per verificare la presenza di eventuali aggiornamenti dal nodo. Questo avviene subito dopo la registrazione, quando il Pannello di controllo firma il certificato TLS con la chiave specifica dell'organizzazione creata al momento della creazione dell'organizzazione. Le connessioni TCP hanno un costo, poiché il TCP può essere molto "chiacchierone" e bloccare le risorse dell'endpoint nel piano di controllo. Pertanto, i valori di timeout sono configurati per chiudere la connessione una volta terminata la conversazione.
Nella maggior parte delle configurazioni, e a meno che non sia abilitata la funzione SnapLogic APIM, il Groundplex JCC si trova dietro un proxy. I server proxy svolgono diverse funzioni, tra cui quella di "nascondere" l'endpoint dalla rete Internet pubblica, applicare criteri e limitare le connessioni. SnapLogic controlla periodicamente lo stato di salute delle connessioni per assicurarne la corretta apertura e chiusura.
Websocket e comunicazioni bidirezionali
Poiché JCC non consente chiamate in entrata e una volta stabilita la connessione tra il nodo e il piano di controllo, viene stabilita una connessione WebSocket dal piano di controllo utilizzando la libreria Python Async per scambiare dati in modo bidirezionale. L'uso del protocollo WebSocket è necessario perché il nodo e il piano di controllo devono rimanere in costante comunicazione, dato che il nodo non conserva informazioni sullo stato, cioè non c'è alcun meccanismo sul nodo per memorizzare i dati di esecuzione, quindi il nodo non è a conoscenza dello stato generale delle pipeline o delle esecuzioni parallele, ecc. Inoltre, poiché gli utenti potrebbero aggiornare le pipeline, gli snap o qualsiasi altro asset della piattaforma SnapLogic, e poiché i dati sono memorizzati nella cache del nodo, una connessione socket aperta deve persistere per garantire che i metadati della pipeline non siano stantii e riflettano tutte le modifiche più aggiornate.
Rimanere in vita e controllare i vicini
Oltre al "check-in" con il piano di controllo, parte della vita della rete JCC è la conoscenza dei suoi vicini. Esistono varie sequenze di "heartbeat" che riportano al piano di controllo varie statistiche come CPU, memoria e disco. Le richieste di riavvio, le nuove versioni di WAR e le chiavi di crittografia per la memorizzazione fanno parte del costante scambio di dati durante la vita del nodo. Tutti questi dati fanno parte di un servizio di monitoraggio che tiene traccia dello stato di salute del nodo e lo riavvia per evitare blocchi o congelamenti. Inoltre, tiene traccia e conserva un elenco di vicini in cui viene controllato che gli altri nodi partecipino alla distribuzione delle esecuzioni delle pipeline tra i nodi.
Gli aggiornamenti di stato vengono inviati ogni 20 secondi al piano di controllo da ogni nodo. I dati comunicano lo stato di salute del nodo, i segnali di telemetria come l'utilizzo della CPU, l'uso della memoria e altri dati sulle prestazioni e sullo stato di salute del sistema, nonché la distribuzione dell'esecuzione della pipeline in base all'utilizzo complessivo del sistema.
Bilanciamento del carico
Il piano di controllo controlla la funzione di bilanciamento del carico per l'esecuzione della pipeline, ma per ottenere il bilanciamento del carico tra i nodi è necessario che un bilanciatore di carico diriga il traffico tra i nodi per ottenere alta disponibilità e failover.
Il processo di monitoraggio all'interno del JCC controllerà costantemente l'utilizzo della CPU e della memoria per una certa soglia (85% per la CPU, 95% per la memoria con l'impostazione di un flag di funzionalità). In questo modo si assicura che il carico sia distribuito uniformemente tra i nodi.
In sintesi, il nodo JCC di SnapLogic Groundplex è un runtime che consente l'esecuzione di pipeline e task di integrazione all'interno della piattaforma SnapLogic, che può essere eseguita on-premises in un data center o all'interno di una rete virtuale privata nel sito cloud. Il nodo è un pacchetto leggero che può essere eseguito su vari sistemi operativi e può essere gestito utilizzando un software di gestione dei pacchetti per l'autoscaling e il bilanciamento del carico. Il nodo stabilisce una connessione con il piano di controllo SnapLogic, dove sono memorizzate le istruzioni della pipeline, attraverso un processo di configurazione che include lo scambio di chiavi e di certificati TLS. La connessione viene mantenuta attraverso check-in regolari, la cui frequenza e durata sono determinate dai valori di timeout. Nella maggior parte delle configurazioni, il nodo può trovarsi dietro un server proxy; l'uso della funzione SnapLogic APIM può consentire al nodo di comunicare direttamente con il Control Plane.