Integrare le funzioni OCI e i servizi Evento OCI per pubblicare messaggi in flussi OSS privati.

L'architettura cloud nativa basata sugli eventi sfrutta le risorse e gli eventi cloud come il principale meccanismo di comunicazione tra i servizi. Consente sistemi scalabili, resilienti e agili scollegando i componenti e consentendo reazioni in tempo reale agli eventi. Utilizza lo streaming di eventi e l'elaborazione serverless per la comunicazione e l'elaborazione distribuite basata sugli eventi.

Oracle Cloud Infrastructure Events è un potente strumento per creare l'automazione in base alle modifiche di stato in varie risorse cloud. Ci consente di creare regole che forniscono eventi a risorse OCI specifiche come Oracle Cloud Infrastructure Streaming, OCI Functions e Oracle Cloud Infrastructure Notifications.

In alcuni scenari, è necessario pubblicare messaggi in flussi privati. Sebbene gli eventi OCI siano in grado di distribuire gli eventi direttamente agli endpoint di streaming pubblico, al momento non supportano la consegna dei messaggi direttamente agli endpoint di streaming privati, poiché gli endpoint privati possono essere risolti solo all'interno della stessa VCN ed eventi OCI non hanno accesso per eseguire il push dei messaggi a un flusso privato. Ciò può tuttavia essere ottenuto utilizzando le funzioni OCI come tipo di azione nella regola eventi.

Questa architettura di riferimento offre una panoramica completa su come sfruttare le funzioni OCI con gli eventi OCI per distribuire i messaggi agli endpoint in streaming privati.

Architettura

Questa architettura di riferimento descrive come utilizzare le funzioni OCI e gli eventi OCI per pubblicare messaggi in un endpoint di streaming OSS privato ogni volta che un file viene creato o aggiornato in Oracle Cloud Infrastructure Object Storage.

Il diagramma dell'architettura illustra il flusso di dati, che inizia con il caricamento di un file in un bucket specifico in Storage degli oggetti OCI. Gli eventi OCI vengono attivati in base a condizioni di regole evento definite. L'evento emesso richiama quindi una funzione che estrae i dati dai file caricati e pubblica sia i messaggi di dati che di evento in un endpoint di streaming privato configurato in Funzioni OCI. È importante tenere presente che il servizio e la funzione di streaming devono essere creati nella stessa rete cloud virtuale (VCN) e nella stessa subnet privata per garantire che la funzione OCI possa accedere all'endpoint del messaggio di streaming privato.

Il diagramma riportato di seguito illustra questa architettura di riferimento.



oci-functions-events-integration-diagram-oracle.zip

Prima di iniziare

  1. Impostare l'applicazione Funzioni OCI e il servizio Streaming OCI (pool e flusso di flussi).
  2. Acquisire le seguenti informazioni. Questi valori sono necessari per configurare le variabili di ambiente per le funzioni OCI.
    • ID utente

      OCID dell'utente con cui eseguire l'autenticazione.

    • ID tenancy

      OCID tenancy. Disponibile nel profilo utente.

    • Impronta digitale

      Verrà utilizzato per eseguire l'autenticazione all'API OCI.

    • Area

      Identificativo dell'area in cui creare le richieste.

    • Chiave privata API

      Posizione file chiave privata API.

    • OCID flusso

      OCID flusso OSS.

    • Token di autorizzazione

      Token di autenticazione da impostazioni utente.

    • Endpoint flusso

      Endpoint flusso OSS (ottenuto da "endpoint messaggi" dalla schermata delle informazioni sul flusso).

L'architettura è dotata dei componenti elencati di seguito.

  • Tenancy

    Una tenancy è una partizione sicura e isolata che Oracle imposta all'interno di Oracle Cloud quando ti iscrivi a Oracle Cloud Infrastructure. Puoi creare, organizzare e amministrare le tue risorse in Oracle Cloud all'interno della tua tenancy. Una tenancy è sinonimo di azienda o organizzazione. In genere, un'azienda avrà una singola tenancy e ne rifletterà la struttura organizzativa all'interno di tale tenancy. Una singola tenancy in genere è associata a una singola sottoscrizione e una singola sottoscrizione in genere ha una sola tenancy.

  • Area

    Un'area Oracle Cloud Infrastructure è un'area geografica localizzata che contiene uno o più data center, definiti domini di disponibilità. Le regioni sono indipendenti da altre regioni e grandi distanze possono separarle (in tutti i paesi o anche in continenti).

  • Compartimento

    I compartimenti sono partizioni logiche tra più aree all'interno di una tenancy di Oracle Cloud Infrastructure. Usare i compartimenti per organizzare le risorse in Oracle Cloud, controllare l'accesso alle risorse e impostare le quote di utilizzo. Per controllare l'accesso alle risorse in un determinato compartimento, definisci i criteri che specificano chi può accedere alle risorse e quali azioni può eseguire.

  • Domini di disponibilità

    I domini di disponibilità sono data center standalone indipendenti all'interno di un'area geografica. Le risorse fisiche in ciascun dominio di disponibilità sono isolate dalle risorse presenti negli altri domini di disponibilità, che offrono tolleranza agli errori. I domini di disponibilità non condividono l'infrastruttura, ad esempio alimentazione o raffreddamento o la rete interna del dominio di disponibilità. È pertanto improbabile che l'eventuale guasto di un dominio di disponibilità influenzi gli altri domini di disponibilità nell'area.

  • domini di errore

    Un dominio di errore è un gruppo di hardware e infrastruttura all'interno di un dominio di disponibilità. Ogni dominio di disponibilità dispone di tre domini di errore con alimentazione e hardware indipendenti. Quando distribuisci risorse su più domini di errore, le tue applicazioni possono tollerare errori fisici del server, manutenzione del sistema e errori di alimentazione all'interno di un dominio di errore.

  • Rete cloud virtuale (VCN) e subnet

    Una VCN è una rete personalizzabile e definita dal software configurata in un'area Oracle Cloud Infrastructure. Analogamente alle reti di data center tradizionali, i VCN offrono il controllo completo sull'ambiente di rete. Una VCN può avere più blocchi CIDR non sovrapposti che puoi modificare dopo aver creato la VCN. Puoi segmentare una VCN nelle subnet che possono essere definite nell'area o in un dominio di disponibilità. Ogni subnet è composta da un intervallo contiguo di indirizzi che non si sovrappongono alle altre subnet nella VCN. Puoi modificare le dimensioni di una subnet dopo la creazione. Una subnet può essere pubblica o privata.

  • Lista di sicurezza

    Per ogni subnet, puoi creare regole di sicurezza che specifichino l'origine, la destinazione e il tipo di traffico che deve essere consentito all'interno e all'esterno della subnet.

  • Gateway del servizio

    Il gateway di servizi fornisce l'accesso da una VCN ad altri servizi, come Oracle Cloud Infrastructure Object Storage. Il traffico dalla VCN al servizio Oracle viaggia sulla struttura di rete Oracle e non attraversa mai Internet.

  • Storage degli oggetti

    Lo storage degli oggetti garantisce un accesso rapido a grandi quantità di dati strutturati e non strutturati di qualsiasi tipo di contenuto, inclusi backup del database, dati analitici e contenuti avanzati, ad esempio immagini e video. Puoi memorizzare i dati in tutta sicurezza e poi recuperarli direttamente da Internet o dall'interno della piattaforma cloud. Puoi ridimensionare lo storage in modo trasparente senza alcun peggioramento a livello di prestazioni o affidabilità dei servizi. Utilizza lo storage standard per lo storage "hot" a cui devi accedere in modo rapido, immediato e frequente. Utilizzare lo storage di archivio per lo storage "freddo" che si mantiene per lunghi periodi di tempo e raramente può accedere.

  • Eventi

    I servizi Oracle Cloud Infrastructure emettono eventi, ovvero messaggi strutturati che descrivono i cambiamenti nelle risorse. Gli eventi vengono emessi per le operazioni di creazione, lettura, aggiornamento o eliminazione (CRUD), le modifiche allo stato del ciclo di vita delle risorse e gli eventi di sistema che influiscono sulle risorse cloud.

  • Streaming

    Il servizio di streaming di Oracle Cloud Infrastructure offre una soluzione di storage completamente gestita, scalabile e duratura che consente di includere flussi di dati continui e a elevato volume che puoi utilizzare ed elaborare in tempo reale. Puoi utilizzare la soluzione Streaming per l'inclusione di dati a elevato volume, ad esempio log dell'applicazione, telemetria operativa, dati di click-stream Web o per altri casi d'uso in cui i dati vengono prodotti ed elaborati in maniera continua e sequenziale in un modello di messaggistica di pubblicazione/sottoscrizione.

  • Funzioni

    Oracle Cloud Infrastructure Functions è una piattaforma completamente gestita, multi-tenant, altamente scalabile, on-demand e Functions-as-a-Service (FaaS). Si basa sul motore open source di 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.

  • Log
    Logging è un servizio altamente scalabile e completamente gestito che fornisce l'accesso ai seguenti tipi di log delle risorse nel cloud:
    • Log di audit: log correlati agli eventi emessi dal servizio di audit.
    • Log dei servizi: log emessi da singoli servizi quali gateway API, eventi, funzioni, bilanciamento del carico, storage degli oggetti e log di flusso VCN.
    • Log personalizzati: log che contengono informazioni di diagnostica da applicazioni personalizzate, altri provider cloud o da un ambiente on premise.

Suggerimenti

Utilizzare i seguenti suggerimenti come punto di partenza per implementare questa architettura di riferimento utilizzando le funzioni OCI e gli eventi OCI. I requisiti potrebbero essere diversi dall'architettura descritta qui.
  • VCN

    Quando crei una rete VCN, determina il numero di blocchi CIDR necessari e la dimensione di ogni blocco in base al numero di risorse che intendi collegare alle subnet nella VCN. Usa blocchi CIDR che si trovano nello spazio di indirizzi IP privati standard.

    Selezionare i blocchi CIDR che non si sovrappongono ad altre reti (in Oracle Cloud Infrastructure, nel data center on premise o in un altro provider cloud) a cui si intende impostare connessioni private.

    Dopo aver creato una VCN, puoi modificarne, aggiungere e rimuovere i blocchi CIDR.

    Quando si progettano le subnet, tenere in considerazione il flusso di traffico e i requisiti di sicurezza. Collegare tutte le risorse all'interno di un livello o ruolo specifico alla stessa subnet, che può essere utilizzata come limite di sicurezza.

  • Cloud Guard

    Duplicare e personalizzare le ricette predefinite fornite da Oracle per creare ricette personalizzate di rilevatori e rispondenti. Queste ricette consentono di specificare il tipo di violazione della sicurezza che genera un'avvertenza e quali azioni possono essere eseguite su di esse. Ad esempio, potresti voler rilevare i bucket di storage degli oggetti che hanno visibilità impostata sul pubblico.

    Applica Cloud Guard a livello di tenancy per coprire l'ambito più ampio e ridurre l'onere amministrativo derivante dalla gestione di più configurazioni.

    È inoltre possibile utilizzare la funzione Lista gestita per applicare determinate configurazioni ai rilevatori.

  • Funzioni OCI

    La funzione OCI in questa architettura è stata sviluppata con Python. Le funzioni OCI supportano più linguaggi di programmazione ed è possibile utilizzare il linguaggio desiderato per sviluppare e distribuire le funzioni.

  • Servizio di streaming OCI

    Il pool di flussi viene creato utilizzando una subnet privata in una VCN. Il flusso viene creato utilizzando questo pool di flussi. Assicurarsi di creare la funzione nella stessa rete VCN del flusso OSS privato e disporre di tutti gli accessi necessari.

    Lo streaming sfrutta anche l'ecosistema Kafka Connect per interfacciarsi direttamente con i prodotti di prima parte e di terze parti utilizzando i connettori predefiniti di sorgente e lavandino Kafka. Per ulteriori informazioni sull'uso di Kafka Connect, vedere Ulteriori informazioni.

  • Memorizzazione degli oggetti OCI

    Questa architettura utilizza lo storage degli oggetti standard per caricare un file. Assicurarsi di abilitare "Emetti eventi oggetto" in modo da poter attivare anche il servizio. Si consiglia inoltre di usare bucket privati per dati riservati.

  • Eventi OCI

    In questa architettura, gli eventi OCI sono configurati per ascoltare le modifiche apportate nello storage degli oggetti OCI per gli eventi "Object Create" e "Object Update". Il servizio viene richiamato dopo che l'oggetto viene caricato nello storage degli oggetti OCI e chiama la funzione per l'elaborazione.

Considerazioni

Quando si implementa questa architettura di riferimento, è importante tenere conto dei seguenti aspetti.

  • Prestazioni

    Eventi OCI, Funzioni OCI e Streaming OCI sono altamente scalabili. Considerare la possibilità di regolare il numero di partizioni e flussi, in base alla dimensione e al numero dei file previsti.

  • Sicurezza

    Usare i criteri per limitare l'accesso alle risorse OCI.

    Per lo storage degli oggetti OCI, la cifratura è abilitata per impostazione predefinita e non può essere disattivata.

    Tutti gli accessi alle funzioni distribuite in Funzioni OCI vengono controllati mediante Oracle Cloud Infrastructure Identity and Access Management (IAM), che consente sia ai privilegi di gestione delle funzioni che di richiamo delle funzioni di essere assegnati a utenti e gruppi di utenti specifici.

    Si consiglia di memorizzare i segreti e i dati riservati in OCI Vault. Considerare la possibilità di utilizzare OCI Vault per memorizzare le chiavi API e il token di autenticazione utilizzati per l'autorizzazione con i servizi OCI.

  • Disponibilità

    Oracle garantisce l'alta disponibilità delle funzioni OCI, degli eventi OCI, degli log OCI e dei log OCI, cloud nativi e completamente gestiti. Lo streaming OCI include le seguenti funzionalità ad alta disponibilità:

    • Flusso costante di dati di log
    • Servizio multithread e scalabile orizzontalmente
    • Ingestione quasi in tempo reale
    • Resilienza contro interruzioni a breve termine
    • Ottimizzato per un utilizzo efficiente dei dati
  • Costo

    Si paga solo per le risorse utilizzate durante l'esecuzione di una funzione.

Distribuisci

Il repository GitHub contiene il codice OCI Functions che implementa questa architettura di riferimento.

  1. Vai a GitHub.
  2. Duplicare o scaricare il repository sul computer locale.
  3. Seguire le istruzioni riportate nel documento README.

Visualizza altro

Ulteriori informazioni sulle funzioni OCI, sugli eventi OCI e sullo Streaming OCI.

Esaminare le risorse aggiuntive riportate di seguito.

Conferme

Authors: Shan Duraipandian

Contributors: John Sulyok