Takamol : déploiement de Kubernetes et de microservices pour une plate-forme RH pour le gouvernement sur Oracle Cloud

Pour aider les citoyens en âge de travailler à faire correspondre les employeurs du gouvernement et du secteur privé, Takamol Holding, basée à Riyad, gère sa plate-forme de services de formation professionnelle, de perfectionnement et de développement des talents dans une infrastructure hybride, où son environnement cloud exécute plusieurs clusters Kubernetes dans OCI Kubernetes Engine (OKE).

Fondé en 2013 comme une division du ministère saoudien des Ressources humaines et du Développement social, Takamol a passé près d'une décennie à moderniser les programmes de ressources humaines dans tout le royaume.

L'infrastructure sur site de Takamol s'étant révélée trop coûteuse à exploiter et à maintenir, Takamol a décidé de lancer ses nouvelles plates-formes de développement économique et de main-d'œuvre en utilisant une architecture de microservices basée sur des conteneurs exécutée sur Oracle Cloud Infrastructure (OCI). Aujourd'hui, des centaines de milliers de personnes utilisent quotidiennement les plateformes de Takamol, ce qui leur permet de trouver, d'appliquer et de se préparer à un emploi rémunéré. Récemment, Takamol a migré une plateforme de dons, qui est utilisée par les donateurs institutionnels et individuels.

Dans la région Oracle Cloud de Djeddah, la plate-forme de Takamol prend en charge 5000 utilisateurs et processus simultanés, jusqu'à 10 000 demandes par minute. Takamol utilise les services gérés d'OCI pour automatiser les mises à jour de ses plates-formes natives du cloud rapidement et sans temps d'arrêt. Dans sa location OCI, Takamol peut rapidement évoluer pendant les pics d'activité et à des heures creuses, fournissant un support juste à temps au coût le plus bas possible.

Les points forts du déploiement natif cloud de Takamol sur OCI sont les suivants :

  • Architecture basée sur des conteneurs à l'aide d'OCI Kubernetes Engine
  • Redimensionnement automatique horizontal de pod (HPA) pour répondre à une demande élevée pendant les heures de pointe
  • Accès réseau de confiance zéro
  • Pare-feu d'applications Web NGINX
  • Pour ses composants avec conservation de statut, Takamol utilise PostgreSQL pour sa base de données et RabbitMQ pour la mise en file d'attente des messages.

Architecture

Les ingénieurs de Takamol Holding se connectent à un outil d'accès réseau de confiance zéro et sont authentifiés via leur propre connexion unique avant d'accéder au réseau cloud virtuel (VCN).

Les utilisateurs de plate-forme sont acheminés via Oracle Cloud Infrastructure Load Balancing, qui administre les demandes utilisateur sur trois domaines de pannes distincts. Les demandes utilisateur sont ensuite envoyées au contrôleur d'entrée Oracle Cloud Infrastructure Kubernetes Engine (OKE), où elles sont inspectées avant d'être acheminées vers leur destination finale.

Dans le cluster Kubernetes, Takamol utilise plusieurs outils open source pour traiter les demandes utilisateur, notamment NGINX, un serveur proxy inverse, un équilibreur de charge et une passerelle d'API. Ces services sont mis à l'échelle dans le cluster Kubernetes en utilisant le redimensionnement automatique de pod horizontal (HPA) pour répondre à des demandes élevées pendant les heures de pointe. Takamol utilise également une application de couche 7 qui protège le déni de service (DoS), ainsi qu'une application qui protège WAF par F5 NGINX. La plupart des applications de Takamol sont sans état, suivant le modèle des 12 facteurs, de sorte qu'elles ne nécessitent pas de caches ou de stockage dans l'application. Au lieu de cela, les applications de Takamol utilisent des services de stockage externes, ce qui les rend faciles à déployer, à redimensionner automatiquement et à gérer dans le cluster Kubernetes.

Takamol utilise également Argo CD, un outil déclaratif de livraison continue GitOps pour Kubernetes. A l'aide du CD Argo, Takamol peut déployer ses charges de travail de manière déclarative, sans fournir d'accès direct au cluster, ce qui permet de déployer son cluster sur un sous-réseau privé. Plutôt que de mettre à jour les applications, Argo CD lit à partir d'un référentiel Gitlab pour déployer de nouveaux services, sans fournir un accès direct à Gitlab pour mettre à jour le cluster. Pour ses composants avec conservation de statut, Takamol utilise PostgreSQL pour sa base de données et RabbitMQ pour la mise en file d'attente des messages.

L'équilibreur de charge, le cluster Kubernetes et les outils open source se trouvent chacun dans des sous-réseaux distincts. Bien qu'ils soient isolés les uns des autres, ils peuvent envoyer et recevoir des informations via des ports de communication. En utilisant les journaux de flux Oracle VCN et un centre d'opérations de sécurité (SOC) SEIM, Takamol peut virtualiser les communications entre les différents sous-réseaux sans avoir à installer d'outils supplémentaires. Dans les mois à venir, Takamol prévoit d'envoyer ses journaux de flux VCN via Oracle Cloud Infrastructure Functions pour fournir des journaux réseau à la solution SEIM.

  • Environ 90 % de l'architecture de Takamol a été créée à l'aide de l'infrastructure en tant que code (IaC) du fournisseur Terraform Oracle Cloud Infrastructure open source avec ses propres modules internes. Cette approche réduit les efforts humains nécessaires pour déployer et gérer l'infrastructure, permettant des changements plus rapides avec un risque d'erreur humaine considérablement réduit.
  • Tous les services dans les environnements de développement, de test et de préproduction de Takamol sont répliqués en tant qu'environnement de production. Aucun de ces environnements n'est interconnecté. Cela garantit la cohérence entre les environnements.
  • Les sauvegardes de base de données sont effectuées à l'aide de pgbackrest, qui archive et stocke les sauvegardes dans Oracle Cloud Infrastructure Block Volumes. Cela permet le stockage à long terme de la base de données tout en prenant en charge la récupération jusqu'à un point dans le temps.
  • Oracle Cloud Infrastructure Object Storage est utilisé par les microservices, les mesures, les journaux OKE et les exécutants GitLab pour mettre en cache les données. Il fournit également des sauvegardes de base de données rentables et à long terme de leurs bases de données PostgreSQL.
  • Les stratégies Oracle Cloud Infrastructure Registry et Oracle Cloud Infrastructure Identity and Access Management aident Takamol à contrôler l'accès utilisateur aux référentiels. Auparavant, l'entreprise utilisait Docker Hub, qui ne fournissait pas un contrôle aussi précis qu'OCI. De plus, avec OCI Registry, Takamol utilise la fonctionnalité d'analyse de sécurité intégrée.
  • Takamol utilise Loki, une base de données de séries temporelles pour les journaux, Prometheus pour la collecte de mesures, Tempo pour les traces et Grafana pour la visualisation, qui sont tous centralisés dans le cluster OKE unique.

Le schéma suivant illustre cette architecture de référence.



takamol-oci-arch-oracle.zip

Pour un état et une feuille de route futurs, Takamol cherche à transférer davantage de services vers des services gérés et natifs du cloud :

  • Exécutez un site de récupération après sinistre à partir de la région Oracle Cloud à Neom.
  • Tirez parti d'Oracle Cloud Infrastructure Search avec OpenSearch pour obtenir un moteur de recherche en texte intégral distribué, entièrement géré et sans maintenance.
  • Tirez parti d'Oracle Autonomous Data Warehouse pour les charges de travail de base de données.
  • Utilisez le service Oracle Cloud Infrastructure Vulnerability Scanning pour rechercher des vulnérabilités, en particulier dans les images docker.

L'architecture comprend les composants suivants :

  • Tenancy

    Une location est une partition sécurisée et isolée configurée par Oracle dans Oracle Cloud lors de votre inscription à Oracle Cloud Infrastructure. Vous pouvez créer, organiser et administrer vos ressources dans Oracle Cloud au sein de votre location. Une location est synonyme d'entreprise ou d'organisation. En général, une entreprise dispose d'une seule location et reflète sa structure organisationnelle au sein de cette location. Une location unique est généralement associée à un seul abonnement, et un seul abonnement n'a généralement qu'une seule location.

  • Région

    Une région Oracle Cloud Infrastructure est une zone géographique précise, incluant un ou plusieurs centres de données, appelés domaines de disponibilité. Les régions sont indépendantes les unes des autres et de grandes distances peuvent les séparer (entre pays, voire continents).

  • Compartiment

    Les compartiments sont des partitions logiques inter-régionales au sein d'une location Oracle Cloud Infrastructure. Utilisez des compartiments afin d'organiser, de contrôler l'accès et de définir des quotas d'utilisation pour les ressources Oracle Cloud. Dans un compartiment donné, vous définissez des stratégies qui contrôlent l'accès et définissent des privilèges pour les ressources.

  • Domaine de disponibilité

    Les domaines de disponibilité sont des centres de données autonomes indépendants au sein d'une région. Les ressources physiques de chaque domaine de disponibilité sont isolées de celles des autres, ce qui garantit la tolérance aux pannes. Les domaines de disponibilité ne partagent ni infrastructure (par exemple, alimentation, système de refroidissement), ni réseau de domaine de disponibilité interne. Par conséquent, une panne sur un domaine de disponibilité ne doit pas affecter les autres domaines de disponibilité de la région.

  • Domaine de pannes

    Un domaine de pannes est un regroupement de matériel et d'infrastructures au sein d'un domaine de disponibilité. Chaque domaine de disponibilité comporte trois domaines de pannes avec du matériel et une alimentation indépendants. Lorsque vous répartissez les ressources entre plusieurs domaines de pannes, vos applications peuvent tolérer les pannes physiques du serveur, la maintenance du système et les pannes d'alimentation au sein d'un domaine de pannes.

  • Réseau cloud virtuel (VCN) et sous-réseaux

    Un VCN est un réseau personnalisable défini par logiciel que vous configurez dans une région Oracle Cloud Infrastructure. Comme les réseaux de centre de données traditionnels, les réseaux cloud virtuels vous donnent le contrôle sur l'environnement réseau. Un réseau cloud virtuel peut comporter plusieurs blocs CIDR qui ne se chevauchent pas et que vous pouvez modifier après l'avoir créé. Vous pouvez segmenter un réseau cloud virtuel en plusieurs sous-réseaux ciblant une région ou un domaine de disponibilité. Chaque sous-réseau est composé d'une plage contiguë d'adresses qui ne chevauchent pas celles des autres sous-réseaux du réseau cloud virtuel. Vous pouvez modifier la taille d'un sous-réseau après sa création. Un sous-réseau peut être public ou privé.

  • Liste de sécurité

    Pour chaque sous-réseau, vous pouvez créer des règles de sécurité qui indiquent la source, la destination et le type de trafic qui doivent être autorisés à entrer et à sortir du sous-réseau.

  • Table de routage

    Les tables de routage virtuelles contiennent des règles pour acheminer le trafic des sous-réseaux vers des destinations en dehors d'un VCN, généralement via des passerelles.

  • Passerelle Internet

    La passerelle Internet autorise le trafic entre les sous-réseaux publics d'un VCN et le réseau Internet public.

  • Passerelle de service

    La passerelle de service fournit un accès à partir d'un VCN à d'autres services, tels qu'Oracle Cloud Infrastructure Object Storage. Le trafic entre le VCN et le service Oracle passe par la structure du réseau Oracle et ne traverse pas Internet.

  • Equilibreur de charge

    Le service Oracle Cloud Infrastructure Load Balancing fournit une répartition de trafic automatique à partir d'un seul point d'entrée vers plusieurs serveurs dans le back-end.

  • Kubernetes Engine

    Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine ou OKE) est un service entièrement géré, évolutif et hautement disponible que vous pouvez utiliser pour déployer vos applications en conteneur vers le cloud. Indiquez les ressources de calcul requises par vos applications et Kubernetes Engine les provisionne sur Oracle Cloud Infrastructure dans une location existante. OKE utilise Kubernetes pour automatiser le déploiement, le redimensionnement et la gestion des applications en conteneur dans les clusters d'hôtes.

  • Compute

    Avec Oracle Cloud Infrastructure Compute, vous pouvez provisionner et gérer des hôtes de calcul dans le cloud. Vous pouvez lancer des instances de calcul avec des formes qui répondent à vos besoins en ressources pour l'UC, la mémoire, la bande passante réseau et le stockage. Après avoir créé une instance de calcul, vous pouvez y accéder en toute sécurité, la redémarrer, attacher et détacher des volumes, et y mettre fin lorsque vous n'en avez plus besoin.

  • Connecteurs de service

    Oracle Cloud Infrastructure Service Connector Hub est une plate-forme cloud Message Bus qui orchestre les déplacements de données entre des services OCI. Vous pouvez utiliser des connecteurs de service pour déplacer des données d'un service source vers un service cible. Les connecteurs de service vous permettent également d'indiquer éventuellement une tâche (telle qu'une fonction) à effectuer sur les données avant qu'elles ne soient transmises au service cible.

    Vous pouvez utiliser Oracle Cloud Infrastructure Service Connector Hub afin de créer rapidement une structure d'agrégation de journalisation pour les systèmes SIEM (gestion des informations et des événements de sécurité).

  • Registry

    Oracle Cloud Infrastructure Registry est un registre géré par Oracle qui vous permet de simplifier votre workflow du développement jusqu'à la production. Le registre vous permet de stocker, de partager et de gérer facilement des artefacts de développement, tels que des images Docker. L'architecture hautement disponible et évolutive d'Oracle Cloud Infrastructure vous garantit un déploiement et une gestion fiables des applications.

  • Identity and Access Management (IAM)

    Oracle Cloud Infrastructure Identity and Access Management (IAM) est le plan de contrôle d'accès pour Oracle Cloud Infrastructure (OCI) et Oracle Cloud Applications. L'API IAM et l'interface utilisateur vous permettent de gérer les domaines d'identité et les ressources au sein du domaine d'identité. Chaque domaine d'identité OCI IAM représente une solution autonome de gestion des identités et des accès ou une population d'utilisateurs différente.

  • Règle

    Une stratégie Oracle Cloud Infrastructure Identity and Access Management indique qui peut accéder à quelles ressources et comment. L'accès est accordé au niveau d'un groupe et d'un compartiment, ce qui signifie que vous pouvez écrire une stratégie qui offre à un groupe un type d'accès spécifique dans un compartiment donné ou dans la location.

  • Oracle Cloud Infrastructure Vault

    Oracle Cloud Infrastructure Vault permet de gérer de manière centralisée les clés de cryptage qui protègent vos données et les informations d'identification de clé secrète utilisées pour sécuriser l'accès à vos ressources dans le cloud. Vous pouvez utiliser le service Vault pour créer et gérer des coffres, des clés et des clés secrètes.

  • Cloud Guard

    Vous pouvez utiliser Oracle Cloud Guard pour surveiller et maintenir la sécurité de vos ressources dans Oracle Cloud Infrastructure. Cloud Guard utilise des recettes de détecteur que vous pouvez définir pour examiner les faiblesses de sécurité de vos ressources et pour surveiller les opérateurs et les utilisateurs afin de détecter certaines activités à risque. Lorsqu'une erreur de configuration ou une activité non sécurisée est détectée, Cloud Guard recommande des actions correctives et vous aide à effectuer ces actions, en fonction des recettes de répondeur que vous pouvez définir.

  • Logging
    Logging est un service hautement évolutif et entièrement géré qui permet d'accéder aux types de journal suivants à partir des ressources du cloud :
    • Journaux d'audit : journaux liés aux événements émis par le service Audit.
    • Journaux de service : journaux émis par des services individuels tels qu'API Gateway, Events, Functions, Load Balancing, Object Storage et les journaux de flux VCN.
    • Journaux personnalisés : journaux contenant des informations de diagnostic issues d'applications personnalisées, d'autres fournisseurs cloud ou d'un environnement sur site.
  • Object Storage

    Oracle Cloud Infrastructure Object Storage fournit un accès rapide à de grandes quantités de données, structurées ou non, de tout type de contenu, y compris des sauvegardes de base de données, des données analytiques et du contenu enrichi tel que des images et des vidéos. Vous pouvez stocker les données, puis les extraire directement à partir d'Internet ou de la plate-forme cloud, et ce, en toute sécurité. Vous pouvez redimensionner le stockage sans dégradation des performances ni de la fiabilité des services. Utilisez le stockage standard pour le stockage "à chaud" auquel vous devez accéder rapidement, immédiatement et fréquemment. Utilisez le stockage d'archive pour le stockage "à froid" que vous conservez pendant de longues périodes et auquel vous accédez rarement.

  • Analyses

    Oracle Analytics Cloud est un service cloud public évolutif et sécurisé qui permet aux analystes d'entreprise de bénéficier de fonctions d'analyse modernes en libre-service basées sur l'IA, à des fins de préparation des données, de visualisation, de reporting d'entreprise, d'analyse augmentée, ainsi que de traitement et de génération du langage naturel. Avec Oracle Analytics Cloud, vous bénéficiez également de fonctionnalités de gestion des services flexibles, notamment une configuration rapide, une mise à l'échelle et des correctifs faciles, ainsi qu'une gestion automatisée du cycle de vie.

Accusés de réception

  • Auteurs : Robert Huie, Sasha Banks-Louie
  • Contributeurs : Tim Graves, Faisal Alsanie, Robert Lies

    Équipe Takamol : Mohammed BinSabbar