Takamol: Bereitstellung von Kubernetes und Microservices für eine Government HR-Plattform auf Oracle Cloud

Um Bürger im erwerbsfähigen Alter sowohl mit Arbeitgebern im öffentlichen als auch im privaten Sektor in Einklang zu bringen, betreibt die in Riad ansässige Takamol Holding ihre Plattform für Dienstleistungen in den Bereichen Ausbildung, Weiterbildung und Talententwicklung in einer hybriden Infrastruktur, in der ihre Cloud-Umgebung mehrere Kubernetes-Cluster in der OCI Kubernetes Engine (OKE) ausführt.

Takamol wurde 2013 als Abteilung des saudi-arabischen Ministeriums für Humanressourcen und soziale Entwicklung gegründet und hat fast ein Jahrzehnt damit verbracht, Personalprogramme im ganzen Königreich zu modernisieren.

Da die On-Premises-Infrastruktur von Takamol zu teuer für Betrieb und Wartung war, entschied sich Takamol, seine neuen Arbeits- und Wirtschaftsentwicklungsplattformen mit einer containerbasierten Microservices-Architektur auf Oracle Cloud Infrastructure (OCI) zu starten. Heute nutzen Hunderttausende von Menschen täglich die Plattformen von Takamol, um eine Erwerbstätigkeit zu finden, sich zu bewerben und sich darauf vorzubereiten. Vor kurzem migrierte Takamol eine Spendenplattform, die sowohl von institutionellen als auch von einzelnen Gebern genutzt wird.

In der Oracle Cloud-Region in Jeddah unterstützt die Plattform von Takamol 5000 gleichzeitige Benutzer und Prozesse mit bis zu 10.000 Anforderungen pro Minute. Takamol nutzt die verwalteten Services von OCI, um Updates auf seinen Cloud-nativen Plattformen schnell und ohne Ausfallzeiten zu automatisieren. In seinem OCI-Mandanten kann Takamol in Spitzenzeiten schnell vertikal skalieren und zu Off-Peak-Zeiten horizontal skalieren. So erhalten Sie Just-in-Time-Support zu den niedrigsten Kosten.

Zu den Highlights der Cloud-nativen Bereitstellung von Takamol auf OCI gehören:

  • Containerbasierte Architektur mit der OCI Kubernetes Engine
  • Horizontale Pod-Autoskalierung (HPA) zur Deckung der hohen Nachfrage während der Spitzenzeiten
  • Zero-Trust-Netzwerkzugriff
  • NGINX-Web Application Firewall
  • Für die zustandsbehafteten Komponenten verwendet Takamol PostgreSQL für die Datenbank und RabbitMQ für das Message Queuing

Architektur

Die Ingenieure von Takamol Holding verbinden sich mit einem Tool für den Netzwerkzugriff ohne Vertrauen und werden über ihr eigenes Single Sign-On authentifiziert, bevor sie Zugriff auf das virtuelle Cloud-Netzwerk (VCN) erhalten.

Plattformbenutzer werden über Oracle Cloud Infrastructure Load Balancing weitergeleitet, das Benutzeranforderungen über drei separate Faultdomains hinweg verwaltet. Benutzeranforderungen werden dann an den Ingress-Controller von Oracle Cloud Infrastructure Kubernetes Engine (OKE) gesendet, wo sie geprüft werden, bevor sie an ihr endgültiges Ziel weitergeleitet werden.

Im Kubernetes-Cluster verwendet Takamol mehrere Open-Source-Tools zur Verarbeitung von Benutzeranforderungen, einschließlich NGINX, einem Reverse-Proxy-Server, einem Load Balancer und einem API-Gateway. Diese Services werden über das Kubernetes-Cluster hinweg mit horizontaler Pod-Autoskalierung (HPA) skaliert, um hohe Anforderungen in Spitzenzeiten zu erfüllen. Takamol verwendet auch eine Layer-7-App zum Schutz von Denial-of-Service (DoS) und eine App zum Schutz von WAF durch F5 NGINX. Die meisten Anwendungen von Takamol sind nach dem 12-Faktoren-Modell zustandslos, sodass sie keine anwendungsinternen Caches oder Speicher benötigen. Stattdessen verwenden die Anwendungen von Takamol externe Speicherservices, sodass sie im Kubernetes-Cluster einfach bereitgestellt, automatisch skaliert und verwaltet werden können.

Takamol verwendet auch Argo CD, ein deklaratives GitOps-Tool für die kontinuierliche Bereitstellung von Kubernetes. Mit Argo CD kann Takamol seine Workloads deklarativ bereitstellen, ohne direkten Zugriff auf das Cluster zu gewähren. Dadurch kann das Cluster in einem privaten Subnetz bereitgestellt werden. Anstatt dass Entwickler Anwendungen aktualisieren, liest Argo CD aus einem Gitlab-Repository, um neue Services bereitzustellen, ohne Gitlab direkten Zugriff zum Aktualisieren des Clusters zu gewähren. Für die zustandsbehafteten Komponenten verwendet Takamol PostgreSQL für die Datenbank und RabbitMQ für das Message Queuing.

Der Load Balancer, das Kubernetes-Cluster und die Open-Source-Tools befinden sich jeweils in separaten Subnetzen. Obwohl diese voneinander isoliert sind, können sie Informationen über Kommunikationsports senden und empfangen. Mit den Oracle VCN-Flowlogs und einem SEIM Security Operations Center (SOC) kann Takamol die Kommunikation zwischen den verschiedenen Subnetzen virtualisieren, ohne zusätzliche Tools installieren zu müssen. In den kommenden Monaten plant Takamol, seine VCN-Flowlogs über Oracle Cloud Infrastructure Functions zu senden, um Netzwerklogs an die SEIM-Lösung bereitzustellen.

  • Etwa 90% der Architektur von Takamol wurden mit Infrastructure-as-Code (IaC) aus dem Open-Source-Terraform-Provider von Oracle Cloud Infrastructure mit eigenen intern erstellten Modulen erstellt. Dieser Ansatz reduziert den menschlichen Aufwand für die Bereitstellung und Verwaltung der Infrastruktur und ermöglicht schnellere Änderungen bei deutlich reduziertem Risiko menschlicher Fehler.
  • Alle Services in den Entwicklungs-, Test- und Vorproduktionsumgebungen von Takamol werden als Produktionsumgebung repliziert. Keine dieser Umgebungen ist miteinander verbunden. Dadurch wird die Konsistenz zwischen den Umgebungen sichergestellt.
  • Datenbankbackups werden mit pgbackrest durchgeführt. Dabei werden Backups in Oracle Cloud Infrastructure Block Volumes archiviert und gespeichert. Dies ermöglicht einen langfristigen Speicher für die Datenbank bei gleichzeitiger Unterstützung des Point-in-Time-(PIT-)Recoverys.
  • Oracle Cloud Infrastructure Object Storage wird von Microservices, Metriken, OKE-Logs und GitLab-Läufern zum Zwischenspeichern von Daten verwendet. Außerdem bietet es kostengünstige, langfristige Datenbankbackups ihrer PostgreSQL-Datenbanken.
  • Mit den Oracle Cloud Infrastructure Registry- und Oracle Cloud Infrastructure Identity and Access Management-Policys kann Takamol den Benutzerzugriff auf die Repositorys kontrollieren. Zuvor nutzte das Unternehmen Docker Hub, das nicht so fein granulierte Kontrolle bereitstellte wie OCI. Darüber hinaus verwendet Takamol mit OCI Registry die integrierte Sicherheits-Scan-Funktion.
  • Takamol verwendet Loki, eine Zeitreihendatenbank für Logs, Prometheus für die Metrikerfassung, Tempo für Traces und Grafana für die Visualisierung, die alle im einzelnen OKE-Cluster zentralisiert sind.

Das folgende Diagramm veranschaulicht diese Referenzarchitektur.



takamol-oci-arch-oracle.zip

Für einen zukünftigen Zustand und eine Roadmap will Takamol mehr Services in verwaltete und native Cloud-Services verlagern:

  • Führen Sie eine Disaster Recovery-Site aus der Oracle Cloud-Region in Neom aus.
  • Nutzen Sie die Oracle Cloud Infrastructure-Suche mit OpenSearch, um eine verteilte, vollständig verwaltete und wartungsfreie Volltextsuche zu erhalten.
  • Nutzen Sie Oracle Autonomous Data Warehouse für Datenbank-Workloads.
  • Mit dem Oracle Cloud Infrastructure Vulnerability Scanning-Service können Sie nach Sicherheitslücken suchen, insbesondere in Docker-Images.

Die Architektur umfasst die folgenden Komponenten:

  • Tenancy

    Ein Mandant ist eine sichere und isolierte Partition, die Oracle in Oracle Cloud einrichtet, wenn Sie sich für Oracle Cloud Infrastructure registrieren. Sie können Ihre Ressourcen in Oracle Cloud in Ihrem Mandanten erstellen, organisieren und verwalten. Ein Mandant ist ein Synonym für ein Unternehmen oder eine Organisation. In der Regel verfügt ein Unternehmen über einen einzigen Mandanten und spiegelt seine Organisationsstruktur innerhalb dieses Mandanten wider. Ein einzelner Mandant ist in der Regel mit einem einzelnen Abonnement verknüpft, und ein einzelnes Abonnement hat in der Regel nur einen Mandanten.

  • Region

    Eine Oracle Cloud Infrastructure-Region ist ein lokalisierter geografischer Bereich, der mindestens ein Data Center enthält, das als Availability-Domain bezeichnet wird. Regionen sind unabhängig von anderen Regionen, und große Entfernungen können sie trennen (über Länder oder sogar Kontinente).

  • Compartment

    Compartments sind regionsübergreifende logische Partitionen innerhalb eines Oracle Cloud Infrastructure-Mandanten. Mit Compartments können Sie Nutzungs-Quotas für Ihre Oracle Cloud-Ressourcen organisieren, den Zugriff kontrollieren und festlegen. In einem bestimmten Compartment definieren Sie Policys, die den Zugriff kontrollieren und Berechtigungen für Ressourcen festlegen.

  • Availability-Domain

    Availability-Domains sind eigenständige, unabhängige Data Center innerhalb einer Region. Die physischen Ressourcen in jeder Availability-Domain sind von den Ressourcen in den anderen Availability-Domains isoliert, was eine Fehlertoleranz sicherstellt. Availability-Domains haben keine gemeinsame Infrastruktur wie Stromversorgung oder Kühlung oder das interne Availability-Domainnetzwerk. Daher sollte ein Fehler in einer Availability-Domain sich nicht auf die anderen Availability-Domains in der Region auswirken.

  • Faultdomain

    Eine Faultdomain ist eine Gruppierung aus Hardware und Infrastruktur innerhalb einer Availability-Domain. Jede Availability-Domain umfasst drei Faultdomains mit unabhängiger Stromversorgung und Hardware. Wenn Sie Ressourcen auf mehrere Faultdomains verteilen, können Ihre Anwendungen physische Serverausfälle, Systemwartungen und Stromausfälle innerhalb einer Faultdomain tolerieren.

  • Virtuelles Cloud-Netzwerk (VCN) und Subnetze

    Ein VCN ist ein anpassbares, softwaredefiniertes Netzwerk, das Sie in einer Oracle Cloud Infrastructure-Region einrichten können. Wie herkömmliche Data Center-Netzwerke erhalten Sie mit VCNs die Kontrolle über Ihre Netzwerkumgebung. Ein VCN kann mehrere sich nicht überschneidende CIDR-Blöcke aufweisen, die Sie nach dem Erstellen des VCN ändern können. Sie können ein VCN in Subnetze segmentieren, die sich auf eine Region oder eine Availability-Domain beschränken. Jedes Subnetz besteht aus einem Bereich zusammenhängender Adressen, die sich nicht mit anderen Subnetzen im VCN überschneiden. Sie können die Größe eines Subnetzes nach der Erstellung ändern. Ein Subnetz kann öffentlich oder privat sein.

  • Sicherheitsliste

    Für jedes Subnetz können Sie Sicherheitsregeln erstellen, die Quelle, Ziel und Typ des Traffics angeben, der im Subnetz und aus dem Subnetz zugelassen werden muss.

  • Routentabelle

    Virtuelle Routentabellen enthalten Regeln zum Weiterleiten von Traffic von Subnetzen an Ziele außerhalb eines VCN, in der Regel über Gateways.

  • Internetgateway

    Das Internetgateway ermöglicht Traffic zwischen den öffentlichen Subnetzen in einem VCN und dem öffentlichen Internet.

  • Servicegateway

    Das Servicegateway bietet Zugriff von einem VCN auf andere Services, wie Oracle Cloud Infrastructure Object Storage. Der Traffic vom VCN zum Oracle-Service wird über die Oracle-Netzwerkstruktur geleitet und durchläuft nicht das Internet.

  • Load Balancer

    Der Oracle Cloud Infrastructure Load Balancing-Service ermöglicht automatisierte Trafficverteilung von einem einzelnen Einstiegspunkt auf mehrere Server im Backend.

  • Kubernetes Engine

    Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine oder OKE) ist ein vollständig verwalteter, skalierbarer und hoch verfügbarer Service, mit dem Sie Ihre Containeranwendungen in der Cloud bereitstellen können. Sie geben die Compute-Ressourcen an, die Ihre Anwendungen benötigen, und Kubernetes Engine stellt sie in Oracle Cloud Infrastructure in einem vorhandenen Mandanten bereit. OKE automatisiert mit Kubernetes das Deployment, die Skalierung und die Verwaltung containerisierter Anwendungen über Cluster von Hosts hinweg.

  • Compute

    Mit Oracle Cloud Infrastructure Compute können Sie Compute-Hosts in der Cloud bereitstellen und verwalten. Sie können Compute-Instanzen mit Ausprägungen starten, die Ihre Ressourcenanforderungen für CPU, Speicher, Netzwerkbandbreite und Speicher erfüllen. Nach dem Erstellen einer Compute-Instanz können Sie sicher darauf zugreifen, die Compute-Instanz neu starten, Volumes zuordnen und trennen und die Compute-Instanz beenden, wenn Sie sie nicht mehr benötigen.

  • Service-Connectors

    Oracle Cloud Infrastructure Service Connector Hub ist eine Cloud-Nachrichtenbusplattform, die das Verschieben von Daten zwischen Services in OCI orchestriert. Mit Service-Connectors können Sie Daten aus einem Quellservice in einen Zielservice verschieben. Mit Service-Connectors können Sie auch optional eine Aufgabe (wie eine Funktion) angeben, die für die Daten ausgeführt werden soll, bevor sie an den Zielservice zugestellt werden.

    Mit Oracle Cloud Infrastructure Service Connector Hub können Sie schnell ein Loggingaggregations-Framework für Security Information and Event Management-(SIEM-)Systeme erstellen.

  • Registrierung

    Oracle Cloud Infrastructure Registry ist eine von Oracle verwaltete Registry, mit der Sie Ihren Workflow von der Entwicklung bis zur Produktion vereinfachen können. Die Registry erleichtert Ihnen das Speichern, Freigeben und Verwalten von Entwicklungsartefakten wie Docker-Images. Die hochverfügbare und skalierbare Architektur von Oracle Cloud Infrastructure stellt sicher, dass Sie Ihre Anwendungen zuverlässig bereitstellen und verwalten können.

  • Identity and Access Management (IAM)

    Oracle Cloud Infrastructure Identity and Access Management (IAM) ist die Zugriffskontrollebene für Oracle Cloud Infrastructure (OCI) und Oracle Cloud Applications. Mit der IAM-API und der Benutzeroberfläche können Sie Identitätsdomains und die Ressourcen innerhalb der Identitätsdomain verwalten. Jede OCI-IAM-Identitätsdomain stellt eine eigenständige Identity and Access Management-Lösung oder eine andere Benutzerpopulation dar.

  • Policy

    Eine Oracle Cloud Infrastructure Identity and Access Management-Policy gibt an, wer auf welche Ressourcen zugreifen kann und wie. Der Zugriff wird auf Gruppen- und Compartment-Ebene erteilt. Sie können also eine Policy schreiben, die einer Gruppe einen bestimmten Zugriffstyp in einem bestimmten Compartment oder dem Mandanten erteilt.

  • Oracle Cloud Infrastructure Vault

    Mit Oracle Cloud Infrastructure Vault können Sie die Verschlüsselungsschlüssel, die Ihre Daten schützen, und die Secret-Zugangsdaten, mit denen Sie den Zugriff auf Ihre Ressourcen in der Cloud sichern, zentral verwalten. Mit dem Vault-Service können Sie Vaults, Schlüssel und Secrets erstellen und verwalten.

  • Cloud Guard

    Mit Oracle Cloud Guard können Sie die Sicherheit Ihrer Ressourcen in Oracle Cloud Infrastructure überwachen und verwalten. Cloud Guard verwendet Detektorrezepte, die Sie definieren können, um Ihre Ressourcen auf Sicherheitsschwächen zu untersuchen und Operatoren und Benutzer auf bestimmte riskante Aktivitäten zu überwachen. Wenn eine falsche Konfiguration oder unsichere Aktivität erkannt wird, empfiehlt Cloud Guard Korrekturmaßnahmen und unterstützt Sie bei der Ausführung dieser Aktionen basierend auf den Responder-Rezepten, die Sie definieren können.

  • Logging
    Logging ist ein hoch skalierbarer und vollständig verwalteter Service, der Zugriff auf die folgenden Logtypen von Ihren Ressourcen in der Cloud ermöglicht:
    • Auditlogs: Logs zu Ereignissen, die vom Audit-Service ausgegeben werden.
    • Servicelogs:: Logs, die von einzelnen Services wie API Gateway, Events, Functions, Load Balancing, Object Storage und VCN-Flowlogs ausgegeben werden.
    • Benutzerdefinierte Logs: Logs, die Diagnoseinformationen von benutzerdefinierten Anwendungen, andere Cloud-Provider oder eine On-Premise-Umgebung enthalten.
  • Objektspeicher

    Mit Oracle Cloud Infrastructure Object Storage können Sie schnell auf große Mengen an strukturierten und unstrukturierten Daten eines beliebigen Inhaltstyps zugreifen, darunter Datenbankbackups, Analysedaten und umfangreiche Inhalte, wie Bilder und Videos. Sie können Daten sicher und geschützt speichern und dann direkt aus dem Internet oder aus der Cloud-Plattform abrufen. Sie können den Speicher skalieren, ohne dass die Performance oder Servicezuverlässigkeit beeinträchtigt wird. Verwenden Sie Standardspeicher für "guten" Speicher, auf den Sie schnell, sofort und häufig zugreifen müssen. Verwenden Sie Archivspeicher für "Cold Storage", den Sie über lange Zeiträume beibehalten und auf den Sie nur selten zugreifen.

  • Analyse

    Oracle Analytics Cloud ist ein skalierbarer und sicherer Public Cloud-Service, mit dem Business Analysts moderne, KI-gesteuerte Selfservice-Analysefunktionen für Datenvorbereitung, Visualisierung, Unternehmensberichte, erweiterte Analysen sowie natürliche Sprachverarbeitung und -generierung erhalten. Mit Oracle Analytics Cloud erhalten Sie außerdem flexible Serviceverwaltungsfunktionen, darunter schnelles Setup, einfache Skalierung und Patches sowie automatisiertes Lebenszyklusmanagement.

Danksagungen

  • Autoren: Robert Huie, Sasha Banks-Louie
  • Mitwirkende: Tim Graves, Faisal Alsanie, Robert Lies

    Takamol Team: Mohammed BinSabbar