Jump to section

Cos'è un service register?

Copia URL

Un registro dei servizi è un database per lo storage di strutture dati necessarie per la comunicazione a livello di applicazione. Si tratta di una posizione centralizzata dove gli sviluppatori possono registrare e trovare gli schemi usati per ogni applicazione.

Le soluzioni Red Hat® Integration offrono tecnologie per l'integrazione progettate per connettere applicazioni e dati.

La progettazione dei software moderni si basa su microservizi distribuiti e a basso accoppiamento che scambiano dati attraverso interfacce di programmazione delle applicazioni (API).

Per le imprese di grandi dimensioni il passaggio continuo di dati da un'applicazione all'altra, sia all'interno dell'azienda sia oltre i confini aziendali, è essenziale per il buon funzionamento dell'azienda stessa. È quindi fondamentale garantire l'integrità di questi dati e assicurarsi che le varie applicazioni siano effettivamente in grado di utilizzarli. Tutto ciò si ottiene con un registro dei servizi.

Un sistema di messaggistica per la trasmissione di dati, come Apache Kafka ad esempio, non fornisce una verifica intrinseca dei dati. Cosa succede quindi se un producer trasmette dati che non sono utilizzabili? Se ad esempio aggiunge o elimina un campo o cambia il formato dei dati? Le conseguenze possono essere anche molto gravi. Infatti un consumer di dati non informato dei cambiamenti non è in grado di elaborare i dati nel modo corretto e questo può portare, nella peggiore delle ipotesi, all'arresto dell'intero sistema.

Il consumer deve conoscere la struttura dei dati, o schema, che utilizza il producer prima che avvenga lo scambio di dati e deve essere informato di ogni successiva modifica allo schema. Solo così i dati possono evolvere senza danneggiare il sistema di messaggistica.

Il producer potrebbe inviare lo schema al consumer manualmente, ad esempio allegandolo a un'email. Ma le operazioni eseguite a mano sono complicate, soggette a errori e difficili da verificare, con il rischio concreto che il servizio smetta di funzionare e non sia possibile risalire alle cause del problema.

Un registro dei servizi invece fornisce queste informazioni attraverso una piattaforma facilmente accessibile. Si tratta di una posizione centralizzata dove gli sviluppatori di applicazioni producer registrano gli schemi delle loro applicazioni e gli sviluppatori di applicazioni consumer trovano gli schemi che servono alle loro applicazioni. Tra gli schemi archiviabili nel registro dei servizi ci sono Apache Avro, JSON Schema e Google Protocol Buffer.

Oltre agli schemi, nel registro dei servizi si possono archiviare altre risorse, o "artefatti", come ad esempio le specifiche API per la comunicazione sincrona a livello di applicazione. Più cresce il numero e la complessità dei servizi, più la presenza di un registro dei servizi si dimostra utile.

Anche se il registro dei servizi è una tecnologia che esiste da diversi anni, solo negli ultimi tempi è tornato a essere oggetto di interesse proprio grazie ai vantaggi che apporta allo sviluppo di microservizi. Funge infatti da singola fonte di attendibilità sulla struttura dati di ciascuna applicazione, accettata dagli sviluppatori di applicazioni producer e da quelli di applicazioni consumer. Il registro dei servizi supporta un approccio "contract first". Anziché programmare l'applicazione e poi, solo come elemento secondario, stabilire un contratto che permetta la comunicazione con altre applicazioni o organizzazioni, il registro dei servizi specifica subito il contratto, compresi input, output, specifiche del payload ed eventualmente anche le regole di convalida. Definire a priori e in modo chiaro queste informazioni evita che sorgano dubbi sul funzionamento delle interazioni.

Per spiegare il funzionamento di un registro dei servizi si può analizzare il caso di Apache Kafka. Il registro dei servizi è infatti la soluzione ottimale per questo sistema di messaggistica che non fornisce ai consumer né la struttura dati in automatico né alcun tipo di verifica dei dati. Non analizzando né leggendo i dati, Apache Kafka non consuma risorse essenziali ed è in grado di distribuire i dati direttamente ai consumer in modo tempestivo. Se perdesse tempo a verificare i dati, le sue performance peggiorerebbero. Quindi la mancanza di governance dei dati non rappresenta uno svantaggio per Apache Kafka, anzi gli garantisce ottime prestazioni.

È comunque necessario implementare una forma di governance sulla struttura dei dati per assicurare che le applicazioni consumer riescano a utilizzare i dati nel modo corretto. La soluzione è un registro dei servizi, che non solo fornisce regole ma si occupa anche di applicarle.

Consumer e producer si scambiano dati tramite Apache Kafka; il registro dei servizi permette loro di documentare, condividere e concordare a priori i metadati che definiscono il traffico, evitando così eventuali errori relativi ai dati. I metadati sono disponibili in forma di schema e sono archiviati nel registro dei servizi.

Lo sviluppatore di un'applicazione producer registra uno schema nel registro dei servizi. Il registro dei servizi garantisce che il producer rispetti le specifiche di quello schema e rifiuta tutti i dati non conformi allo schema registrato.

Gli schemi possono essere registrati dai singoli sviluppatori di applicazioni producer, come descritto sopra, ma anche dalle organizzazioni per renderli disponibili a tutti i membri del team di sviluppo. In questo secondo caso entrambi sviluppatori di applicazioni producer e di applicazioni consumer usano il registro dei servizi come una libreria.

Gli sviluppatori di applicazioni consumer sfruttano il registro dei servizi come una libreria per recuperare gli schemi che sceglieranno per consentire alle proprie applicazioni di usare i dati delle applicazioni producer. E, quando gli schemi subiscono delle modifiche, il registro dei servizi fornisce ai consumer la versione più aggiornata.

Grazie al registro dei servizi, il team di sviluppo e l'azienda in generale possono ottenere i seguenti vantaggi:

Indipendenza della struttura dati dalle applicazioni

Il registro dei servizi permette di disaccoppiare la struttura dati dalle applicazioni, e condividere e gestire le strutture dati e le descrizioni API in fase di runtime utilizzando un'interfaccia REST.

Dati di qualità superiore

Un registro dei servizi convalida lo schema e rileva eventuali errori nei dati per garantirne l'integrità. Il registro dei servizi può contenere regole per verificare che i contenuti caricati siano validi dal punto di vista sintattico e semantico e che siano compatibili con le versioni precedenti e successive. Inoltre impedisce ai producer di inviare dati non conformi allo schema.

Singola fonte di attendibilità documentata

Il registro dei servizi rappresenta una singola fonte di attendibilità, convalidata e accettata da tutte le parti coinvolte.

Sviluppo più efficiente

Il registro dei servizi permette un riutilizzo coerente degli schemi e delle progettazioni API, facendo risparmiare tempo agli sviluppatori di applicazioni producer e di applicazioni consumer.

Risparmio sui costi

Rilevando gli errori relativi ai dati all'inizio del ciclo di vita applicativo, e non in fase di runtime, il registro dei servizi permette di ridurre i costi, che sarebbero più onerosi se si dovessero correggere gli errori più avanti nel processo di sviluppo.

Keep reading

Articolo

Cosa si intende per integrazione?

Cos'è l'integrazione? Scopri cos'è, come introdurla e i vantaggi che offre se abbinata all'open source.

Articolo

Come funziona Apache Kafka?

Apache Kafka è una piattaforma per il data streaming distribuita che permette di pubblicare, sottoscrivere, archiviare ed elaborare flussi di record in tempo reale.

Articolo

Cos'è un'API?

API è l'abbreviazione di interfaccia di programmazione delle applicazioni (application programming interface), un insieme di definizioni e protocolli per la creazione e l'integrazione di software applicativi.

Scopri di più sull'integrazione

Prodotti

Set completo di tecnologie per l'integrazione e la messaggistica.

Accelera la distribuzione e lo sviluppo applicativo.

Trasforma il tuo business e soddisfa le richieste di un mercato in costante evoluzione.

Semplifica l'esperienza nel cloud ibrido e riduci i costi operativi e la complessità della distribuzione di applicazioni cloud native.

Scopri come progettare. distribuire ed eseguire le applicazioni in maniera sicura in ambienti cloud ibridi su larga scala.

Risorse

Ebook

Creare un'infrastruttura agile per dare vita a un'azienda adattiva

Formazione

Corso di formazione gratuito

Red Hat Agile Integration Technical Overview