Distribuire i microservizi con un database convergente e Helidon
Architettura
Questa architettura mostra le risorse e la topologia necessarie per utilizzare i microservizi con Cloud Infrastructure, Oracle Database convergente e Helidon.
Un Oracle Database convergente è un database ottimizzato con supporto nativo per i tipi di dati moderni, i componenti del data center chiave e i paradigmi di sviluppo più recenti. Ad esempio, un database convergente supporta i dati spaziali per la consapevolezza della posizione, JSON per le aree di memorizzazione documenti, IoT per l'integrazione dei dispositivi, le tecnologie in-memory per l'analisi in tempo reale e i dati relazionali tradizionali. Fornendo supporto per tutti questi tipi di dati, un database convergente può eseguire tutti i tipi di carichi di lavoro da IoT a Blockchain a Analytics e Machine Learning. Può anche gestire qualsiasi paradigma di sviluppo, compresi i microservizi.
L'architettura dei microservizi ha tre livelli principali– il livello di messaggistica, il livello di applicazione e il livello di database- per portare agilità, scala orizzontale e robustezza alle applicazioni aziendali. Questa architettura di riferimento dispone di componenti basati su standard disponibili nel cloud Oracle Gen 2 per creare microservizi robusti utilizzando Oracle Database come layer di persistenza.
Il livello di messaggistica è un meccanismo di trasporto basato su Java Message Service (JMS) integrato nel database, nelle code di eventi transazionali (TEQ) o su Kafka, ad esempio il servizio di streaming Oracle Cloud Infrastructure.
- Monitoraggio e avviso degli eventi: Grafana e Prometheus
- Osservabilità e Tracciamento: Kiali e Jaeger
- Applicazioni tradizionali: Java Enterprise Edition e Oracle Weblogic
- Microservizi Java: Java, helidon.io e Oracle GraalVM Enterprise
- Microservizi Polyglot: node.js e pitone
- Mesh di servizio con Oracle Container Engine for Kubernetes: Istio, Kubernetes e Docker
Il livello di database è costituito da due istanze di elaborazione delle transazioni autonome (ATP-1 e ATP-2). L'architettura utilizza dati relazionali, dati spaziali, documenti, testo e dati JSON nel database convergente e messaggistica transazionale incorporata nel database per i microservizi per semplificare i flussi di lavoro.
Il seguente diagramma è un esempio di architettura di microservizi per un'applicazione di consegna di alimenti mobile online.

Descrizione dell'immagine helidon_microservices_db_architecture.png
L'architettura ha i seguenti componenti:
- Load balancer
Il servizio Oracle Cloud Infrastructure Load Balancing fornisce la distribuzione automatica del traffico da un singolo punto di accesso a più server nel backend.
- Container Engine for Kubernetes
Oracle Cloud Infrastructure Container Engine for Kubernetes è un servizio completamente gestito, scalabile e altamente disponibile che è possibile utilizzare per distribuire le applicazioni containerizzate nel cloud. Specificare le risorse di calcolo richieste dalle applicazioni e Container Engine for Kubernetes eseguirne il provisioning su Oracle Cloud Infrastructure in una tenancy esistente. Container Engine for Kubernetes utilizza Kubernetes per automatizzare la distribuzione, la scalabilità e la gestione delle applicazioni containerizzate tra cluster di host.
- Connettore servizio per Kubernetes
Connettere il database Oracle Autonomous Transaction Processing a Oracle Container Engine for Kubernetes con OCI Service Broker for Kubernetes.
OCI Service Broker for Kubernetes è un'implementazione dell'API Open Service Broker. OCI Service Broker for Kubernetes consente in modo specifico di interagire con i servizi Oracle Cloud Infrastructure dai cluster Kubernetes. Include tre adattatori broker di servizi da associare ai seguenti servizi Oracle Cloud Infrastructure: storage degli oggetti, elaborazione autonoma delle transazioni, Autonomous Data Warehouse e Oracle Streaming Service.
È possibile aggiungere OCI Service Broker for Kubernetes ai cluster creati con Oracle Cloud Infrastructure Container Engine for Kubernetes per interagire con i servizi Oracle Cloud Infrastructure elencati in precedenza. Quando si aggiunge OCI Service Broker for Kubernetes a un cluster, non è necessario eseguire manualmente il provisioning e la disattivazione del provisioning dei servizi Oracle Cloud Infrastructure ogni volta che si distribuisce o si annulla la distribuzione di un'applicazione sul cluster. È invece possibile interagire con i servizi Oracle Cloud Infrastructure utilizzandokubectl
per richiamare le API Open Service Broker implementate da OCI Service Broker per Kubernetes. - Registro
Oracle Cloud Infrastructure Registry è un registro gestito da Oracle che consente di semplificare il flusso di lavoro da sviluppo a produzione. Registry semplifica la memorizzazione, la condivisione e la gestione degli artifact di sviluppo, ad esempio le immagini di Docker. L'architettura altamente disponibile e scalabile di Oracle Cloud Infrastructure consente di distribuire e gestire in modo affidabile le applicazioni.
- Storage degli oggetti
Lo storage degli oggetti consente di accedere rapidamente a grandi quantità di dati strutturati e non strutturati di qualsiasi tipo di contenuto, inclusi backup del database, dati analitici e contenuti ricchi come immagini e video. Utilizzare lo storage standard per lo storage "caldo" a cui è necessario accedere rapidamente, immediatamente e frequentemente. Utilizzare lo storage di archivio per lo storage "freddo" che si conserva per lunghi periodi di tempo e raramente o raramente accedere.
- Microservizi
Utilizzare Istio Service Mesh per collegare i microservizi con un proxy al fine di fornire informazioni di trace visualizzate in Kiali.
Utilizzare Jaeger per tracciare e Kiali per l'osservabilità della maglia Istio.
- Helidon
Utilizzare le annotazioni Helidon MicroProfile per monitorare lo stato e la vita dei microservizi.
- Autonomous Transaction Processing
Oracle Autonomous Transaction Processing è un servizio di database a gestione automatica, protezione automatica e riparazione automatica ottimizzato per i carichi di lavoro di elaborazione delle transazioni. Non è necessario configurare o gestire alcun hardware o installare alcun software. Oracle Cloud Infrastructure gestisce la creazione del database, nonché il backup, l'applicazione di patch, l'aggiornamento e il tuning del database.
Il seguente diagramma è un esempio del flusso di lavoro di un'architettura di microservizi per un'applicazione di consegna di alimenti mobile online.

Descrizione dell'immagine microservices_converged_db.png
In questa architettura vengono visualizzati i passi riportati di seguito.
- Ricerche dei clienti on-line recensioni e effettua un ordine. Il microservizio Order Service ha una funzione Cerca recensioni. Le richieste di revisione della ricerca e gli ordini vengono inviati tramite un load balancer al microservizio Order Service. Il servizio ordini comunica con il database.
- La ricerca dei dati di testo e JSON e l'analisi dei sentimenti vengono inviate alla funzione Cerca recensioni.
- I microservizi Order Service e Check Inventory Service comunicano tra loro mediante messaggistica transazionale.
- Il servizio ordini invia un ordine di consegna per la richiesta di consegna al microservizio di consegna.
- Il calcolo spaziale per consegne singole o multiple viene inviato dal database alla funzione Mapping instradamento del servizio di consegna.
- L'analitica operativa a basso codice viene inviata dal database al dashboard Analytics.
Suggerimenti
Le vostre esigenze potrebbero differire dall'architettura descritta qui. Utilizzare i suggerimenti riportati di seguito come punto di partenza.
- Semplicità
L'architettura amplifica la necessità di semplicità nella progettazione del layer di persistenza per i microservizi con un database convergente Oracle. I modelli di sicurezza del database sono un buon punto di partenza per ottenere la sicurezza di autenticazione e autorizzazione. Inoltre, l'utilizzo del backup e dell'elevata disponibilità del database semplifica lo sviluppo dei microservizi.
Una buona comprensione dell'applicazione guida l'accesso ai dati per ogni microservizio con la progettazione su contesti delimitati e l'accoppiamento allentato all'interno della moltitudine di questi servizi. Iniziare con l'isolamento a livello di schema.
Il corretto dimensionamento del microservizio è importante per rendere più gestibili le dipendenze dei dati.
La messaggistica transazionale basata su eventi, costruita all'interno del database Converged, consente un collegamento allentato tra microservizi, preservando al contempo esattamente una volta che la messaggistica, fornendo un'implementazione efficiente di transazioni eventualmente coerenti tra microservizi (dette saghe).
- Osservabilità e gestibilità
L'osservabilità e la gestibilità con annotazioni Helidon e l'uso di strumenti di tracciamento consentono l'automazione nel funzionamento su scala di un'applicazione basata su microservizi. Si tratta di un'area per progettare bene, sia a livello di applicazione che a livello di database, soprattutto quando il carico sui microservizi cresce e sono necessarie regolazioni per prestazioni e disponibilità su scala.
- Estendibilità
La contabilizzazione dei microservizi gestiti da Oracle Cloud Infrastructure Container Engine for Kubernetes consente l'estensibilità del livello dell'applicazione. Sebbene non sia sempre consigliabile che ogni microservizio disponga di un proprio database, è certamente possibile con l'architettura del database convergente. Spesso l'isolamento a livello di schema tra microservizi fornisce un buon isolamento dalle inutili dipendenze dei dati.
- Sicurezza
Un database convergente fornisce un elevato livello di sicurezza che un'applicazione può utilizzare per fornire ruoli a livello utente, autenticazione, autorizzazione e cifratura dei dati. L'accesso sicuro dei microservizi è fornito anche da Helidon in combinazione con la sicurezza nel livello di persistenza.
- Scala
Questa architettura aggiunge istanze di microservizi utilizzando Oracle Container Engine for Kubernetes per gestirle e un load balancer per consentire l'uso di più istanze per ogni servizio senza problemi. La disponibilità e la scalabilità sono affrontate utilizzando questo paradigma per i microservizi. Il database fornisce una semplice scalabilità autonoma a un determinato livello (da 2 a 48 unità di calcolo Oracle (OCPU) per sistema di database), che può funzionare per la maggior parte delle applicazioni.
Considerazioni
Quando si distribuisce questa architettura di riferimento, prendere in considerazione i seguenti punti.
- Prestazioni
Ridimensiona le prestazioni dell'applicazione in orizzontale aggiungendo istanze aggiuntive per il microservizio e gestisci con Kubernetes.
Scala le prestazioni del database osservando il carico del database nella console delle prestazioni di Oracle Autonomous Transaction Processing e aumentando il numero di OCPU (fino a 48 in ATP-Shared).
- Sicurezza
La sicurezza per i microservizi segue la sicurezza fornita da Helidon Microservices e dal modello di sicurezza Oracle Database: autenticazione, autorizzazione, controllo dell'accesso delle risorse. Oracle consiglia alle applicazioni di utilizzare per quanto possibile i meccanismi di applicazione della sicurezza del database.
- Disponibilità
L'alta disponibilità ha due parti, il livello di applicazione e il livello di dati.
La disponibilità dell'applicazione viene ottenuta mediante contenitori senza conservazione dello stato, la risposta da parte di Kubernetes e il recupero di qualsiasi stato dai metadati di livello intermedio o dal database.
Il database in standby fisico per i database collegabili in tutti i domini di disponibilità Oracle Cloud o in tutte le aree è consigliato per le architetture ad alta disponibilità. Esaminare i parametri di High Availability di Oracle Database per altri suggerimenti.
- Costo
L'economia cloud si applica a questa architettura di riferimento dei microservizi. Tutti i componenti sono disponibili in Oracle Cloud Infrastructure come servizio gestito e si paga per quanto si utilizza anziché pagare per l'hardware di provisioning.
Distribuzione
Il codice Terraform per questa architettura di riferimento è disponibile su GitHub. È possibile scaricare il codice da GitHub al computer, personalizzare il codice e distribuire l'architettura utilizzando Terraform CLI.
- Distribuzione con il codice Terraform in GitHub:
- Andare a GitHub.
- Duplicare o scaricare il repository nel computer locale.
- Seguire le istruzioni contenute nel documento
README
.
- Distribuire utilizzando Oracle LiveLabs Building Microservices con Oracle Converged Database Workshop.
Ulteriori informazioni
Per ulteriori informazioni, consultare le risorse riportate di seguito.
- Creazione di microservizi con Oracle Converged Database Workshop
- Guida introduttiva ai microservizi
- Helidon Microservices
- Jaeger Tracing
- Mesh servizio Istio e Service Management
- Gestione delle mesh di servizio Kiali per Istio
- Code eventi transazionali e Guida utente accodamento avanzato
- Panoramica Oracle Database High Availability
- Oracle Database Security Guide
Log delle modifiche
Questo log elenca solo le modifiche significative:
Giugno 14, 2021 |
|