Takamol: Implementa Kubernetes e microservizi per una piattaforma HR governativa su Oracle Cloud

Per aiutare a far corrispondere i cittadini in età lavorativa ai datori di lavoro sia del settore pubblico che privato, Takamol Holding, con sede a Riyadh, gestisce la propria piattaforma di servizi di formazione, up-skilling e sviluppo dei talenti in un'infrastruttura ibrida, in cui il suo ambiente cloud esegue più cluster Kubernetes in OCI Kubernetes Engine (OKE).

Fondata nel 2013 come divisione del Ministero delle Risorse Umane e dello Sviluppo Sociale dell'Arabia Saudita, Takamol ha trascorso quasi un decennio a modernizzare i programmi delle risorse umane in tutto il regno.

Poiché l'infrastruttura on-premise di Takamol si è rivelata troppo costosa da gestire e mantenere, Takamol ha deciso di lanciare le sue nuove piattaforme di lavoro e sviluppo economico utilizzando un'architettura di microservizi basata su container in esecuzione su Oracle Cloud Infrastructure (OCI). Oggi, centinaia di migliaia di persone utilizzano quotidianamente le piattaforme di Takamol, consentendo loro di trovare, applicare e prepararsi per un lavoro retribuito. Recentemente, Takamol ha migrato una piattaforma di donazioni, utilizzata sia da donatori istituzionali che individuali.

Nell'area Oracle Cloud di Gedda, la piattaforma di Takamol supporta 5000 utenti e processi simultanei fino a 10.000 richieste al minuto. Takamol utilizza i servizi gestiti di OCI per automatizzare gli aggiornamenti alle sue piattaforme cloud native in modo rapido e senza tempi di inattività. Nella sua tenancy OCI, Takamol può eseguire rapidamente lo scale-up durante i periodi di picco e lo scale-down nei periodi di non picco, fornendo supporto just-in-time al costo più basso possibile.

I punti salienti della distribuzione cloud nativa di Takamol su OCI includono:

  • Architettura basata su container che utilizza OCI Kubernetes Engine
  • Ridimensionamento automatico dei pod orizzontali (HPA) per soddisfare l'elevata domanda durante le ore di punta
  • Accesso alla rete zero-trust
  • firewall per applicazioni Web NGINX
  • Per i componenti con conservazione dello stato, Takamol utilizza PostgreSQL per il database e RabbitMQ per l'accodamento dei messaggi

Architettura

Gli ingegneri di Takamol Holding si connettono a uno strumento di accesso alla rete zero-trust e vengono autenticati tramite il proprio Single Sign-On prima di accedere alla rete cloud virtuale (VCN).

Gli utenti della piattaforma vengono instradati tramite Oracle Cloud Infrastructure Load Balancing che amministra le richieste degli utenti in tre domini di errore separati. Le richieste degli utenti vengono quindi inviate al controller in entrata Oracle Cloud Infrastructure Kubernetes Engine (OKE), dove vengono ispezionate prima di essere instradate alla destinazione finale.

Nel cluster Kubernetes, Takamol utilizza più strumenti open source per elaborare le richieste degli utenti, tra cui NGINX, un server proxy inverso, un load balancer e un gateway API. Questi servizi vengono ridimensionati nel cluster Kubernetes utilizzando il ridimensionamento automatico dei pod orizzontali (HPA) per soddisfare esigenze elevate durante le ore di punta. Takamol utilizza anche un'app di livello 7 per proteggere l'app di negazione del servizio (DoS), insieme a un'app per proteggere WAF da F5 NGINX. La maggior parte delle applicazioni di Takamol sono stateless, seguendo il modello a 12 fattori, quindi non richiedono cache o storage in-application. Al contrario, le applicazioni di Takamol utilizzano servizi di storage esterni, il che le rende facilmente distribuibili, scalabili automaticamente e gestibili all'interno del cluster Kubernetes.

Takamol utilizza anche Argo CD, uno strumento dichiarativo di distribuzione continua GitOps per Kubernetes. Utilizzando Argo CD, Takamol può distribuire i propri carichi di lavoro in modo dichiarativo, senza fornire l'accesso diretto al cluster, il che rende possibile la distribuzione del cluster in una subnet privata. Anziché aggiornare le applicazioni, Argo CD legge da un repository Gitlab per distribuire nuovi servizi, senza fornire l'accesso diretto Gitlab per aggiornare il cluster. Per i componenti con conservazione dello stato, Takamol utilizza PostgreSQL per il proprio database e RabbitMQ per l'accodamento dei messaggi.

Il load balancer, il cluster Kubernetes e gli strumenti open source si trovano ciascuno in subnet separate. Sebbene questi siano isolati l'uno dall'altro, possono inviare e ricevere informazioni attraverso le porte di comunicazione. Utilizzando i log di flusso della VCN Oracle e un centro operativo di sicurezza SEIM (SOC, Security Operations Center), Takamol può virtualizzare le comunicazioni tra le diverse subnet senza dover installare strumenti aggiuntivi. Nei prossimi mesi, Takamol prevede di inviare i propri log di flusso VCN tramite Oracle Cloud Infrastructure Functions per distribuire i log di rete alla soluzione SEIM.

  • Circa il 90% dell'architettura di Takamol è stata costruita utilizzando l'infrastruttura come codice (IaC) dal provider Terraform Oracle Cloud Infrastructure open source con i propri moduli costruiti in-house. Questo approccio riduce lo sforzo umano necessario per implementare e gestire l'infrastruttura, consentendo modifiche più rapide con un rischio significativamente ridotto di errore umano.
  • Tutti i servizi degli ambienti di sviluppo, test e preproduzione di Takamol vengono replicati come ambiente di produzione. Nessuno di questi ambienti è interconnesso. Ciò garantisce la coerenza tra gli ambienti.
  • I backup del database vengono eseguiti utilizzando pgbackrest, che archivia e memorizza i backup in Oracle Cloud Infrastructure Block Volumes. Ciò consente lo storage a lungo termine per il database supportando il ripristino point-in-time (PIT).
  • Oracle Cloud Infrastructure Object Storage viene utilizzato da microservizi, metriche, log OKE e GitLab runner per inserire nella cache i dati. Fornisce inoltre backup di database a lungo termine e a costi contenuti dei propri database PostgreSQL.
  • Le policy di Oracle Cloud Infrastructure Registry e Oracle Cloud Infrastructure Identity and Access Management aiutano Takamol a controllare l'accesso degli utenti ai repository. In precedenza, l'azienda utilizzava Docker Hub, che non forniva un controllo dettagliato come OCI. Inoltre, con OCI Registry, Takamol utilizza la funzione di scansione della sicurezza integrata.
  • Takamol utilizza Loki, un database di serie temporale per i log, Prometheus per la raccolta delle metriche, Tempo per le tracce e Grafana per la visualizzazione, tutti centralizzati nel singolo cluster OKE.

Il seguente diagramma illustra questa architettura di riferimento.



takamol-oci-arch-oracle.zip

Per un futuro stato e roadmap, Takamol sta cercando di spostare più servizi in servizi gestiti e cloud nativi:

  • Esegui un sito di disaster recovery dall'area Oracle Cloud di Neom.
  • Sfrutta Oracle Cloud Infrastructure Search con OpenSearch per un motore di ricerca full-text distribuito, completamente gestito e senza manutenzione.
  • Sfrutta Oracle Autonomous Data Warehouse per i carichi di lavoro del database.
  • Utilizza il servizio di analisi delle vulnerabilità di Oracle Cloud Infrastructure per analizzare le vulnerabilità, in particolare nelle immagini docker.

L'architettura presenta i seguenti componenti:

  • 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 risorse in Oracle Cloud all'interno della tua tenancy. Una tenancy è sinonimo di azienda o organizzazione. Di solito, un'azienda avrà una singola tenancy e rifletterà la sua struttura organizzativa all'interno di quella tenancy. Una singola tenancy viene in genere associata a una singola sottoscrizione e una singola sottoscrizione in genere ha una sola tenancy.

  • Area

    Un'area geografica 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 grandi distanze possono separarle (tra paesi o addirittura continenti).

  • Compartimento

    I compartimenti sono partizioni logiche tra più aree all'interno di una tenancy Oracle Cloud Infrastructure. Usare i compartimenti per organizzare, controllare l'accesso e impostare le quote d'uso per le risorse Oracle Cloud. In un determinato compartimento, si definiscono i criteri che controllano l'accesso e impostano i privilegi per le risorse.

  • Dominio di disponibilità

    I domini di disponibilità sono data center standalone e indipendenti all'interno di un'area geografica. Le risorse fisiche in ciascun dominio di disponibilità sono isolate dalle risorse negli altri domini di disponibilità, il che fornisce 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, un errore in un dominio di disponibilità non dovrebbe influire sugli altri domini di disponibilità nell'area.

  • Dominio di errore

    Un dominio di errore consiste in 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 le 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. Come le tradizionali reti di data center, le reti VCN consentono di controllare l'ambiente di rete. Una VCN può avere più blocchi CIDR non sovrapposti che è possibile modificare dopo aver creato la VCN. Puoi segmentare una 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 nella VCN. È possibile 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 specificano l'origine, la destinazione e il tipo di traffico che devono essere consentiti all'interno e all'esterno della subnet.

  • Tabella di instradamento

    Le tabelle di instradamento virtuali contengono regole per instradare il traffico dalle subnet alle destinazioni esterne a una VCN, in genere attraverso i gateway.

  • Gateway Internet

    Il gateway Internet consente il traffico tra le subnet pubbliche in una VCN e la rete Internet pubblica.

  • 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 viene instradato sul fabric di rete Oracle e non attraversa Internet.

  • Load balancer

    Il servizio Oracle Cloud Infrastructure Load Balancing fornisce la distribuzione automatica del traffico da un unico punto di accesso a più server nel back-end.

  • Motore Kubernetes

    Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine o OKE) è un servizio completamente gestito, scalabile e ad alta disponibilità che puoi utilizzare per distribuire le tue applicazioni containerizzate nel cloud. Puoi specificare le risorse di computazione richieste dalle tue applicazioni e Kubernetes Engine le esegue sul Oracle Cloud Infrastructure in una tenancy esistente. OKE utilizza Kubernetes per automatizzare l'implementazione, la scalabilità e la gestione di applicazioni containerizzate tra cluster di host.

  • Calcolo

    Con Oracle Cloud Infrastructure Compute, puoi eseguire il provisioning e gestire gli host di computazione nel cloud. Puoi avviare istanze di computazione con forme che soddisfano i requisiti delle risorse per CPU, memoria, larghezza di banda di rete e storage. Dopo aver creato un'istanza di computazione, è possibile accedervi in modo sicuro, riavviarla, collegare e scollegare volumi e arrestarla quando non è più necessaria.

  • Connettori servizio

    Oracle Cloud Infrastructure Service Connector Hub è una piattaforma di bus di messaggi cloud che orchestra lo spostamento dei dati tra i servizi in OCI. È possibile utilizzare i connettori servizio per spostare i dati da un servizio di origine a un servizio di destinazione. I connettori servizio consentono inoltre di specificare facoltativamente un task (ad esempio una funzione) da eseguire sui dati prima che vengano consegnati al servizio di destinazione.

    È possibile utilizzare Oracle Cloud Infrastructure Service Connector Hub per creare rapidamente un framework di aggregazione dei log per i sistemi SIEM (Security Information and Event Management).

  • Registro

    Oracle Cloud Infrastructure Registry è un registro gestito da Oracle e che ti 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 Docker. L'architettura altamente disponibile e scalabile di Oracle Cloud Infrastructure ti assicura di poter distribuire e gestire le tue applicazioni in modo affidabile.

  • Identity and Access Management (IAM)

    Oracle Cloud Infrastructure Identity and Access Management (IAM) è il piano di controllo dell'accesso per Oracle Cloud Infrastructure (OCI) e Oracle Cloud Applications. L'API IAM e l'interfaccia utente consentono di gestire i domini di Identity e le risorse all'interno del dominio di Identity. Ogni dominio di Identity IAM OCI rappresenta una soluzione standalone per la gestione delle identità e degli accessi o una popolazione di utenti diversa.

  • Criterio

    Un criterio di Oracle Cloud Infrastructure Identity and Access Management specifica chi può accedere a quali risorse e come. L'accesso viene concesso a livello di gruppo e compartimento. Ciò significa che è possibile scrivere un criterio che fornisce a un gruppo un tipo specifico di accesso all'interno di un compartimento specifico o alla tenancy.

  • Oracle Cloud Infrastructure Vault

    Oracle Cloud Infrastructure Vault ti consente di gestire centralmente le chiavi di cifratura che proteggono i tuoi dati e le credenziali segrete utilizzate per proteggere l'accesso alle tue risorse nel cloud. È possibile utilizzare il servizio Vault per creare e gestire vault, chiavi e segreti.

  • Cloud Guard

    Puoi utilizzare Oracle Cloud Guard per monitorare e gestire la sicurezza delle tue risorse in Oracle Cloud Infrastructure. Cloud Guard utilizza ricette del rilevatore che è possibile definire per esaminare le risorse per individuare eventuali punti deboli della sicurezza e per monitorare operatori e utenti per determinate attività rischiose. Quando viene rilevata una configurazione errata o un'attività non sicura, Cloud Guard consiglia azioni correttive e aiuta a eseguire tali azioni, in base alle ricette dei rispondenti che è possibile definire.

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

    Lo storage degli oggetti Oracle Cloud Infrastructure fornisce 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 come immagini e video. Puoi memorizzare e quindi recuperare i dati direttamente da Internet o dall'interno della piattaforma cloud. Puoi ridimensionare lo storage senza alcun deterioramento delle prestazioni o dell'affidabilità del servizio. Utilizza lo storage standard per lo storage "caldo" a cui è necessario accedere rapidamente, immediatamente e frequentemente. Utilizza lo storage di archivio per lo storage "freddo" che conservi per lunghi periodi di tempo e a cui accedi raramente o raramente.

  • Analitica

    Oracle Analytics Cloud è un servizio di cloud pubblico scalabile e sicuro che offre agli analisti aziendali moderne funzionalità di analitica self-service basate sull'intelligenza artificiale per la preparazione, la visualizzazione dei dati, il reporting aziendale, l'analisi migliorata e l'elaborazione e la generazione del linguaggio naturale. Oracle Analytics Cloud ti offre anche funzionalità di gestione dei servizi flessibili, tra cui configurazione rapida, facile scalabilità e applicazione di patch e gestione automatizzata del ciclo di vita.

Visualizza altro

Ulteriori informazioni sulle caratteristiche di questa architettura.

conferme

  • Autori: Robert Huie, Sasha Banks-Louie
  • Contributori: Tim Graves, Faisal Alsanie, Robert Lies

    Team Takamol: Mohammed BinSabbar