Ottimizzare i flussi di lavoro asincroni integrando la coda OCI con le funzioni OCI
Il servizio Coda Oracle Cloud Infrastructure (OCI) ti consente di inviare messaggi tra sistemi in modo asincrono, consentendoti di scollegare i tuoi sistemi e di migliorarne le prestazioni. È progettato per gestire volumi elevati di dati transazionali e garantisce l'elaborazione dei messaggi senza perdite o duplicazioni.
Il servizio Coda OCI è completamente gestito e ridimensionato automaticamente in base al throughput di produttori e consumatori, utilizzando standard aperti per supportare la comunicazione con qualsiasi client o produttore con il minimo sforzo. Le applicazioni serverless spesso si basano su una combinazione di vari servizi (gateway API, funzioni e così via) per funzionare correttamente. Tuttavia, affinché questi componenti distribuiti possano comunicare tra loro, il servizio Coda è fondamentale. Consente inoltre alla tua applicazione di estendere la comunicazione con altri componenti OCI o anche all'esterno di OCI.
Architettura
Questa architettura di riferimento distribuisce un'applicazione Python di esempio in Oracle Container Engine for Kubernetes (OKE), che esegue regolarmente il polling della coda configurata per recuperare i nuovi messaggi, richiama una funzione configurata utilizzando i messaggi recuperati e, al termine dell'esecuzione, rimuove i messaggi dalla coda.
L'applicazione si esegue l'autenticazione come instance_principal quando interagisce con i servizi OCI. Le code e le funzioni possono trovarsi in qualsiasi area e gli OCID coda e funzione devono essere specificati durante la creazione dello stack. Se è necessario aggiornare gli OCID di coda e funzione dopo la distribuzione di Terraform, è possibile modificare l'artifact di distribuzione Kubernetes (parte del progetto DevOps OCI creato).
La distribuzione Terraform include la creazione delle pipeline e dei repository necessari in un servizio DevOps OCI per automatizzare i passi necessari per implementare il codice sorgente dell'applicazione in modo completo. Il codice sorgente dell'applicazione è ospitato in un repository di codici DevOps. L'utente può quindi eseguire il commit del codice nel repository, che attiva l'avvio di una pipeline di build.
Il diagramma riportato di seguito illustra questa architettura di riferimento.
accodamento-fn-automation-arch-oracle.zip
L'architettura è dotata dei componenti elencati di seguito.
- 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).
- Progetto DevOps
Raggruppamento logico di risorse DevOps necessario per implementare un flusso di lavoro CI/CD. Le risorse DevOps possono essere artifact, pipeline di build, pipeline di distribuzione, connessioni esterne, trigger e ambienti. I progetti DevOps semplificano la registrazione, il monitoraggio e le notifiche per tutte le risorse DevOps.
- Pipeline di build
Una pipeline di build accetta un ID di commit dai repository di codici sorgente e utilizza tale codice per eseguire le istruzioni di build. Le pipeline di build definiscono un set di fasi per il processo di creazione, test e compilazione di artifact software, consegna di artifact ai repository OCI e facoltativamente avvio di una distribuzione. È possibile definire il flusso e le istruzioni dell'esecuzione della build nel file delle specifiche di build.
- Repository di codici
Repository Git privati ospitati dal servizio DevOps. Puoi memorizzare, gestire e sviluppare il codice sorgente con i repository di codici DevOps OCI.
- Pipeline di distribuzione
Sequenza di passi per la distribuzione e la distribuzione di un set di artifact in un ambiente di destinazione. Il flusso e la logica della release del software possono essere controllati definendo fasi che possono essere eseguite in serie o in parallelo.
- Fasi di distribuzioneLe fasi sono azioni individuali eseguite durante un'esecuzione di una pipeline. La pipeline di distribuzione DevOps include i seguenti tipi di fasi predefiniti da utilizzare nel processo di rilascio:
- Distribuzione in sequenza: release incrementale a OKE, Functions o gruppi di istanze.
- Attesa: attesa N secondi.
- Approvazione manuale: procedere se l'approvazione è stata fornita; interrompere se l'approvazione è stata rifiutata.
- Richiama funzione: esegue task o integrazioni personalizzati chiamando una funzione e passando un artifact di parametri di richiesta.
- Artifact DevOps
Un artifact DevOps è un riferimento o un puntatore a qualsiasi file, file binario, pacchetto, file manifesto o immagine che costituisce l'applicazione. Quando si crea un artifact, informare Oracle DevOps della posizione di origine dell'artifact effettivo. DevOps supporta OCI Container Image Registry e i repository OCI Artifact Registry.
- Servizi di registrazione e notifica OCI
Il servizio di log OCI memorizza i log correlati alla distribuzione. L'output runtime della distribuzione e i risultati finali della distribuzione vengono visualizzati come voci di log. Il servizio Notifiche OCI offre visibilità sullo stato più recente del progetto di distribuzione e delle relative risorse e intraprende qualsiasi azione necessaria. Ad esempio, si riceve una notifica quando un evento importante, ad esempio una fase di una pipeline di distribuzione in attesa di approvazione. Quando si riceve il messaggio di notifica, è possibile passare alla pipeline di distribuzione DevOps e approvare la fase.
- Ambienti di distribuzione
Un ambiente è una raccolta di risorse di calcolo di un cliente in cui vengono distribuiti gli artifact. Gli ambienti possono essere una funzione, un'istanza di virtual machine (VM) di computazione o Bare Metal o un cluster OKE.
- Cluster OKE: OCI Container Engine for Kubernetes è un servizio completamente gestito, scalabile e ad alta disponibilità che puoi utilizzare per distribuire le tue applicazioni gestite in container nel cloud.
- Istanze di computazione: il servizio OCI Compute consente di eseguire il provisioning e la gestione degli host di computazione nel cloud. Puoi distribuire le istanze di computazione con forme che soddisfano i requisiti delle risorse previsti per CPU, memoria, larghezza di banda della rete e storage.
- Funzioni: Oracle Functions è una piattaforma completamente gestita, multi-tenant, altamente scalabile, on-demand e di tipo "functions-as-a-service". Il servizio si basa su Oracle Cloud Infrastructure di livello enterprise e si basa sul motore open source Fn Project.
Gli ambienti possono trovarsi in aree OCI diverse dall'area della pipeline di distribuzione. Questa separazione consente agli sviluppatori di eseguire la distribuzione in più aree OCI utilizzando la stessa pipeline di distribuzione.
- Gruppi e criteri dinamici IAM
Un gruppo dinamico è un tipo speciale di gruppo che contiene risorse (ad esempio istanze di computazione) che corrispondono alle regole definite dall'utente, pertanto l'appartenenza può cambiare in modo dinamico quando le risorse corrispondenti vengono create o eliminate. Queste istanze agiscono come attori "principali" e possono effettuare chiamate API ai servizi in base ai criteri scritti per il gruppo dinamico.
Un criterio è un documento che specifica chi può accedere a quali risorse e come. L'accesso viene concesso a livello di gruppo e compartimento. Ciò significa che puoi scrivere un criterio che concede a un gruppo un tipo specifico di accesso all'interno di un compartimento specifico o alla tenancy stessa.
Suggerimenti
- Distribuzione
Quando si distribuisce l'architettura tramite Resource Manager, conservare i valori predefiniti il più possibile se non è richiesta alcuna modifica esplicita.
Considerazioni
Quando si distribuisce la soluzione e si utilizza l'applicazione, considerare i seguenti aspetti:
- Distribuzione della soluzione
I privilegi amministrativi sono necessari per impostare i gruppi dinamici necessari e i criteri associati. Il nome utente e il token di autenticazione OCI sono necessari per l'autorizzazione al repository Git DevOps OCI e per l'impostazione dei segreti in OKE.
- Utilizzo dell'applicazione
La regolazione dei parametri dell'applicazione Python può essere gestita nel progetto DevOps creato modificando le variabili all'inizio del programma
queue_automation.py
e impostando il segreto OCIR in OKE.
Distribuisci
Il codice Terraform per questa distribuzione, insieme al codice sorgente dell'applicazione Python, è disponibile in GitHub.
- Fare clic su
Se non si è già collegati, immettere le credenziali della tenancy e dell'utente.
- Selezionare l'area in cui si desidera distribuire lo stack.
- Seguire i prompt visualizzati e le istruzioni per creare lo stack.
- Dopo aver creato lo stack, fare clic su Azioni Terraform e selezionare Pianifica.
- Attendere il completamento del job ed esaminare il piano.
Per apportare eventuali modifiche, tornare alla pagina Dettagli stack, fare clic su Modifica stack e apportare le modifiche necessarie. Eseguire quindi di nuovo l'azione Piano.
- Se non sono necessarie ulteriori modifiche, tornare alla pagina Dettagli stack e fare clic su Azioni Terraform e selezionare Applica.