Streaming dei dati IoT in un Autonomous Database mediante funzioni senza server

I carichi di lavoro che utilizzano dispositivi Internet of Things (IoT) devono scalare in modo efficiente in tempo reale. Quando distribuisci un numero maggiore di dispositivi e sensori, il volume e la vasta gamma di dati in streaming devono crescere. Utilizza funzioni serverless e un database autonomo in Oracle Cloud per automatizzare e ridimensionare l'elaborazione di dati IoT in streaming.

Architettura

In questa architettura, i dati dei dispositivi IoT passano da un gateway API a funzioni senza server, che utilizzano il servizio Streaming per caricare i dati in un database autonomo in Oracle Cloud. Gli utenti esterni al cloud possono accedere ai dati tramite un server Web basato su Flask-based in esecuzione su un'istanza di Oracle Cloud Infrastructure Compute.

Il seguente diagramma illustra questa architettura.



oci-arch-iot-streaming-oracle.zip

L'architettura ha i seguenti componenti:

  • Area

    Un'area Oracle Cloud Infrastructure è un'area geografica localizzata che contiene uno o più data center, denominati domini di disponibilità. Le regioni sono indipendenti da altre regioni, e vaste distanze possono separarle (tra paesi o addirittura continenti).

  • Rete cloud virtuale (VCN) e subnet

    Un VCN è una rete customizzabile e definita dal software impostata in un'area Oracle Cloud Infrastructure. Come le tradizionali reti di data center, i VCN ti danno il controllo completo sul tuo ambiente di rete. Un VCN può avere più blocchi CIDR non sovrapposti che è possibile modificare dopo la creazione di VCN. È possibile segmentare un VCN in subnet, che possono essere definite in un'area o in un dominio di disponibilità. Ogni subnet è costituita da un intervallo contiguo di indirizzi che non si sovrappongono alle altre subnet in VCN. È possibile modificare le dimensioni di una subnet dopo la creazione. Una subnet può essere pubblica o privata.

    In questa architettura, il database autonomo e una funzione per impostare il database sono collegati a una subnet privata. L'istanza di calcolo che ospita il server Web e le funzioni che elaborano i flussi vengono distribuite in una subnet pubblica.

  • Gruppi di sicurezza di rete (NSG)

    I NSG fungono da firewall virtuali per le risorse cloud. Con il modello di sicurezza zero-trust di Oracle Cloud Infrastructure, tutto il traffico viene negato ed è possibile controllare il traffico di rete all'interno di un VCN. Un NSG è costituito da un set di regole di sicurezza in entrata e in uscita che si applicano solo a un set specificato di VNIC in un singolo VCN.

    L'accesso al database e al server Web in questa architettura è controllato tramite NSG separati.

  • Gateway API

    Oracle API Gateway ti consente di pubblicare le API con endpoint privati accessibili dalla tua rete e che puoi esporre alla rete Internet pubblica, se necessario. Gli endpoint supportano la convalida, la trasformazione delle richieste e delle risposte API, CORS, l'autenticazione e l'autorizzazione e il limite delle richieste.

  • Streaming

    Oracle Cloud Infrastructure Streaming fornisce una soluzione di memorizzazione completamente gestita, scalabile e durevole per l'ingestione di flussi di dati continui ad alto volume che è possibile consumare e elaborare in tempo reale. È possibile utilizzare Streaming per l'ingestione di dati ad alto volume, ad esempio i log delle applicazioni, la telemetria operativa, i dati di click-stream Web o per altri casi d'uso in cui i dati vengono prodotti ed elaborati in modo continuo e sequenziale in un modello di messaggistica pubblica-subscribe.

  • Funzioni

    Oracle Functions è una piattaforma completamente gestita, multi-tenant, altamente scalabile, su richiesta, Functions-as-a-Service (FaaS). È alimentato dal motore open source Fn Project. Le funzioni consentono di distribuire il codice e di chiamarlo direttamente o attivarlo in risposta agli eventi. Oracle Functions utilizza i container Docker ospitati in Oracle Cloud Infrastructure Registry.

  • Autonomous Database

    Questa architettura utilizza un database autonomo (Oracle Autonomous Data Warehouse o Oracle Autonomous Transaction Processing) con un endpoint privato.

    Oracle Autonomous Data Warehouse è un servizio di database self-driving, self-securing e self-repairing ottimizzato per i carichi di lavoro di data warehousing. 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.

    Oracle Autonomous Transaction Processing è un servizio di database self-driving, self-securing e self-repairing 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.

  • Server Web

    In questa architettura, un endpoint di micro-framework Flask viene distribuito su un'istanza di computazione. L'applicazione basata su Flask-based può esporre i dati nel database autonomo come contenuto Web dinamico.

Suggerimenti

Utilizzare i suggerimenti riportati di seguito come punto di partenza. Le vostre esigenze potrebbero differire.

  • dimensionamento VCN

    Quando si crea un VCN, determinare il numero di blocchi CIDR richiesti e la dimensione di ciascun blocco in base al numero di risorse che si prevede di associare alle subnet in VCN. Utilizzare blocchi CIDR che si trovano all'interno dello spazio degli indirizzi IP privati standard.

    Selezionare blocchi CIDR che non si sovrappongono a nessun'altra rete (in Oracle Cloud Infrastructure, nel data center in locale o in un altro provider cloud) a cui si intende impostare connessioni private.

    Dopo aver creato un VCN, è possibile modificare, aggiungere e rimuovere i blocchi CIDR.

  • Calcola forme

    In questa architettura viene utilizzata un'immagine Oracle Linux 7.8 e la forma VM.Standard2.1 per il server Web basato su Flash. Scegliere una forma appropriata per le esigenze delle risorse dell'applicazione.

  • Funzioni del gateway API

    Gli endpoint di API Gateway supportano la convalida delle API, la trasformazione delle richieste e delle risposte, CORS, l'autenticazione e l'autorizzazione e la limitazione delle richieste. Scegli le caratteristiche che si adattano alle tue esigenze aziendali e IT.

  • Partizionamento flusso

    Il servizio Streaming fornisce un log di messaggi partizionato e di sola aggiunta: un flusso. Una partizione è una sezione di un flusso. Le partizioni consentono di distribuire un flusso dividendo i messaggi su più nodi. È possibile posizionare ogni partizione su un computer separato per consentire a più consumer di leggere da un flusso in parallelo. Per carichi di lavoro di grandi dimensioni e ad alta intensità di computer, prendere in considerazione l'aumento del numero di partizioni.

  • Versione Autonomous Database

    Utilizzare l'ultima versione disponibile per il database autonomo.

Considerazioni

Quando si implementa questa architettura, prendere in considerazione i requisiti per i seguenti parametri:

  • Limitazione richiesta

    Dopo aver creato il gateway API e distribuito una o più API, è possibile limitare la velocità con cui i client front-end possono inviare richieste ai servizi backend. Decidere il limite del tasso di richiesta in base all'esigenza di mantenere alta disponibilità e un uso equo proteggendo le risorse backend da troppe richieste. Potrebbe inoltre essere necessario impedire attacchi o controlli da parte di denial-of-service (DoS) e limitare il consumo di risorse. In definitiva, si applica un limite di velocità a livello globale a tutti gli instradamenti in una specifica di distribuzione API.

  • Limiti di servizio

    Durante la progettazione dell'architettura, prendere in considerazione i limiti del servizio per i servizi di streaming e Funzioni. Consulta la documentazione sui limiti del servizio riportata nella sezione Esplora altri argomenti.

  • Scalabilità
    • Database

      È possibile scalare manualmente il numero di core CPU del database su o giù in qualsiasi momento. La funzione di ridimensionamento automatico dei database autonomi consente al database di utilizzare fino a tre volte il numero di core della CPU corrente in qualsiasi momento. Con l'aumentare della domanda, il ridimensionamento automatico aumenta automaticamente il numero di core in uso. I database autonomi consentono di scalare la capacità di memorizzazione in qualsiasi momento senza compromettere la disponibilità o le prestazioni.

    • Applicazione

      È possibile scalare l'applicazione Flask utilizzando il pool di istanze e le funzioni di ridimensionamento automatico.

      I pool di istanze consentono di eseguire il provisioning e creare più istanze di calcolo in base alla stessa configurazione all'interno della stessa area.

      Utilizzare il ridimensionamento automatico per regolare automaticamente il numero di istanze di calcolo in un pool di istanze in base alle metriche delle prestazioni, ad esempio l'utilizzo della CPU. Il ridimensionamento automatico consente di fornire prestazioni coerenti per gli utenti durante periodi di elevata domanda e ridurre i costi quando la domanda è bassa.

    • Funzioni

      Oracle Functions crea e rimuove automaticamente i contenitori delle funzioni in base al carico della richiesta. Si paga solo quando le funzioni vengono richiamate e per la durata di esecuzione.

  • Disponibilità applicazione

    I domini di errore forniscono la migliore resilienza all'interno di un dominio di disponibilità. Se è necessaria una maggiore disponibilità, prendere in considerazione l'utilizzo di più domini di disponibilità o più aree ove possibile.

  • Backup
    • Database

      Oracle Cloud Infrastructure esegue automaticamente il backup dei database autonomi e conserva i backup per 60 giorni. È possibile ripristinare e recuperare il database in qualsiasi momento durante il periodo di conservazione. È inoltre possibile creare backup manuali per completare i backup automatici. I backup manuali vengono memorizzati in un bucket Oracle Cloud Infrastructure Object Storage creato e conservati per 60 giorni.

    • Applicazione

      Il servizio Oracle Cloud Infrastructure Block Volumes consente di creare backup point-in-time dei dati su un volume a blocchi. È possibile ripristinare questi backup a nuovi volumi in qualsiasi momento.

      È inoltre possibile utilizzare il servizio per eseguire un backup punto-in-time e resistente al crash di un volume di avvio senza interruzione dell'applicazione o tempi di inattività. I volumi di avvio e blocco hanno le stesse funzionalità di backup.

  • Sicurezza
    • Controllo dell'accesso

      Utilizzare i criteri per limitare chi può accedere alle risorse nel cloud e alle azioni che possono eseguire.

    • Sicurezza della rete

      Il servizio Networking offre due funzionalità firewall virtuali che utilizzano regole di sicurezza per controllare il traffico a livello di pacchetto: liste di sicurezza e gruppi di sicurezza di rete (NSG). Un NSG è costituito da un set di regole di sicurezza in entrata e in uscita che si applicano solo a un set di VNIC di vostra scelta in un singolo VCN. Ad esempio, è possibile scegliere tutte le istanze di calcolo che fungono da server Web nel livello Web di un'applicazione multilivello in VCN.

      Le regole di sicurezza NSG funzionano come le regole dell'elenco di sicurezza. Tuttavia, per l'origine o la destinazione di una regola di sicurezza NSG, è possibile specificare un NSG anziché un blocco CIDR. È quindi possibile scrivere facilmente regole di sicurezza per controllare il traffico tra due NSG nello stesso VCN o il traffico all'interno di un singolo NSG. Quando si crea un sistema di database, è possibile specificare uno o più NSG. È inoltre possibile aggiornare un sistema di database esistente per utilizzare uno o più NSG.

Distribuisci

Il codice Terraform per questa architettura di riferimento è disponibile in GitHub. È possibile estrarre il codice in Oracle Cloud Infrastructure Resource Manager con un solo clic, creare lo stack e distribuirlo. In alternativa, scaricare il codice da GitHub nel computer, personalizzare il codice e distribuire l'architettura utilizzando Terraform CLI.

  • Distribuisci utilizzando Oracle Cloud Infrastructure Resource Manager:
    1. Fare clic su Distribuisci in Oracle Cloud

      Se non si è già connessi, immettere la tenancy e le credenziali utente.

    2. Rivedere e accettare i termini e le condizioni.
    3. Selezionare l'area in cui distribuire lo stack.
    4. Seguire i prompt e le istruzioni visualizzate sullo schermo per creare lo stack.
    5. Dopo aver creato lo stack, fare clic su Azioni Terraform e selezionare Piano.
    6. Attendere il completamento del job e rivedere il piano.

      Per apportare eventuali modifiche, tornare alla pagina Dettagli stack, fare clic su Modifica stack e apportare le modifiche necessarie. Eseguire nuovamente l'azione Piano.

    7. Se non sono necessarie ulteriori modifiche, tornare alla pagina Dettagli stack, fare clic su Azioni Terraform e selezionare Applica.
  • Distribuzione con Terraform CLI:
    1. Andare a GitHub.
    2. Scaricare o clonare il codice sul computer locale.
    3. Seguire le istruzioni contenute nel README.

Esplora altro

Ulteriori informazioni sull'utilizzo di funzioni serverless per i carichi di lavoro nel cloud.

Log modifiche

Questo log elenca solo le modifiche significative: