Takamol : Déployer Kubernetes et des microservices pour une plate-forme des RH gouvernementales sur Oracle Cloud

Pour aider à faire correspondre les citoyens en âge de travailler avec les employeurs du gouvernement et du secteur privé, Takamol Holding, basée à Riyad, exécute sa plate-forme de services de formation professionnelle, de mise à niveau et de développement des talents dans une infrastructure hybride, où son environnement en nuage exécute plusieurs grappes Kubernetes dans le moteur Kubernetes pour OCI (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.

Comme l'infrastructure sur place de Takamol s'est révélée trop coûteuse à exploiter et à entretenir, Takamol a décidé de lancer ses nouvelles plates-formes de main-d'œuvre et de développement économique 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 Jeddah, 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 en nuage rapidement et sans temps d'arrêt. Dans sa location OCI, Takamol peut rapidement s'adapter aux heures de pointe et aux heures creuses, offrant un soutien juste à temps au coût le plus bas possible.

Voici les points saillants du déploiement natif en nuage de Takamol sur OCI :

  • Architecture basée sur des conteneurs utilisant le moteur Kubernetes pour OCI
  • Ajustement automatique des pods horizontaux (HPA) pour répondre à la demande élevée pendant les heures de pointe
  • Accès réseau sans confiance
  • Pare-feu d'application Web NGINX
  • Pour ses composants avec état, 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 sans confiance et sont authentifiés au moyen de leur propre authentification unique avant d'accéder au réseau en nuage virtuel (VCN).

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

Au sein de la grappe Kubernetes, Takamol utilise plusieurs outils à code source libre pour traiter les demandes des utilisateurs, notamment NGINX, un serveur mandataire inverse, un équilibreur de charge et une passerelle d'API. Ces services sont adaptés à l'ensemble de la grappe Kubernetes à l'aide de l'ajustement automatique de pod horizontal (HPA) pour répondre aux 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 externe, ce qui facilite leur déploiement, leur mise à l'échelle automatique et leur gestion dans la grappe Kubernetes.

Takamol utilise également Argo CD, un outil déclaratif, GitOps, de livraison continue pour Kubernetes. À l'aide d'Argo CD, 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 dans un sous-réseau privé. Plutôt que de mettre à jour des applications, Argo CD lit à partir d'un référentiel Gitlab pour déployer de nouveaux services, sans fournir d'accès direct à Gitlab pour mettre à jour le cluster. Pour ses composants avec état, Takamol utilise PostgreSQL pour sa base de données et RabbitMQ pour la mise en file d'attente des messages.

L'équilibreur de charge, la grappe Kubernetes et les outils à code source libre 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. À l'aide des journaux de flux VCN d'Oracle et d'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. Au cours des prochains mois, Takamol prévoit d'envoyer ses journaux de flux de VCN au moyen d'Oracle Cloud Infrastructure Functions pour transmettre les journaux de réseau à la solution SEIM.

  • Environ 90 % de l'architecture de Takamol a été construite à l'aide de l'infrastructure en tant que code (IaC) du fournisseur Terraform pour Oracle Cloud Infrastructure à code source libre avec leurs propres modules intégrés. Cette approche réduit l'effort humain nécessaire pour déployer et gérer l'infrastructure, ce qui permet des changements plus rapides avec un risque d'erreur humaine considérablement réduit.
  • Tous les services des 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 un stockage à long terme pour la base de données tout en prenant en charge la récupération jusqu'à un point dans le temps (PIT).
  • Oracle Cloud Infrastructure Object Storage est utilisé par les microservices, les mesures, les journaux OKE et les exécutants GitLab pour mettre les données en mémoire cache. Il fournit également des sauvegardes de base de données à long terme et rentables de leurs bases de données PostgreSQL.
  • Les politiques Oracle Cloud Infrastructure Registry et Oracle Cloud Infrastructure Identity and Access Management aident Takamol à contrôler l'accès des utilisateurs aux référentiels. Auparavant, la société utilisait Docker Hub, qui n'offrait pas un contrôle détaillé comme OCI. En outre, avec le registre OCI, Takamol utilise la fonction intégrée d'analyse de sécurité.
  • Takamol utilise Loki, une base de données chronologique pour les journaux, Prometheus pour la collecte des mesures, Tempo pour les traces et Grafana pour la visualisation, qui sont tous centralisés dans le cluster OKE unique.

Le diagramme suivant illustre cette architecture de référence.



takamol-oci-arch-oracle.zip

Pour un état et une feuille de route futurs, Takamol envisage de déplacer davantage de services vers des services gérés et natifs en nuage :

  • Exécutez un site de récupération après sinistre à partir de la région Oracle Cloud de Neom.
  • Tirez parti de la recherche dans Oracle Cloud Infrastructure avec OpenSearch pour 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 de balayage de vulnérabilités Oracle Cloud Infrastructure pour rechercher les vulnérabilités, en particulier dans les images docker.

L'architecture comprend les composants suivants :

  • Location

    Une location est une partition sécurisée et isolée qu'Oracle configure 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'une société ou d'une organisation. Habituellement, une société aura une seule location et reflétera sa structure organisationnelle au sein de cette location. Une seule location 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 localisée qui contient 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 (dans différents pays ou continents).

  • Compartiment

    Les compartiments sont des partitions logiques inter-régions dans une location Oracle Cloud Infrastructure. Utilisez des compartiments pour organiser, contrôler l'accès et définir des quotas d'utilisation pour vos ressources Oracle Cloud. Dans un compartiment donné, vous définissez des politiques 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 indépendants et autonomes dans une région. Les ressources physiques de chaque domaine de disponibilité sont isolées des ressources des autres domaines de disponibilité, ce qui garantit la tolérance aux pannes. Les domaines de disponibilité ne partagent pas les éléments d'infrastructure (alimentation ou refroidissement, par exemple) ni le réseau de domaines de disponibilité interne. Par conséquent, une défaillance d'un domaine de disponibilité ne devrait pas affecter les autres domaines de disponibilité de la région.

  • Domaine d'erreur

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

  • Réseau en nuage virtuel (VCN) et sous-réseau

    Un VCN est un réseau défini par logiciel personnalisable que vous avez configuré dans une région Oracle Cloud Infrastructure. Comme les réseaux en nuage virtuels traditionnels, ils vous offrent un contrôle sur votre environnement de réseau. Un VCN peut disposer de plusieurs blocs CIDR sans chevauchement que vous pouvez modifier après avoir créé le VCN. Vous pouvez segmenter un VCN en sous-réseaux, dont la portée peut concerner une région ou un domaine de disponibilité. Un sous-réseau est constitué d'un intervalle contigu d'adresses qui ne chevauchent pas les autres sous-réseaux dans le réseau en nuage 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 spécifient 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 au moyen de passerelles.

  • Passerelle Internet

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

  • Passerelle de service

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

  • Équilibreur de charge

    Le service Oracle Cloud Infrastructure Load Balancing permet une répartition automatisée du trafic à partir d'un point d'entrée unique vers plusieurs serveurs dorsaux.

  • Moteur Kubernetes

    Oracle Cloud Infrastructure Kubernetes Engine pour (Moteur Kubernetes pour OCI ou OKE) est un service entièrement géré, évolutif et hautement disponible que vous pouvez utiliser pour déployer vos applications conteneurisées dans le nuage. Vous indiquez les ressources de calcul dont vos applications ont besoin et Kubernetes Engine les provisionne sur Oracle Cloud Infrastructure dans une location existante. OKE utilise Kubernetes pour automatiser le déploiement, l'ajustement et la gestion des applications conteneurisées sur les grappes d'hôtes.

  • Calcul

    Avec le service Calcul pour Oracle Cloud Infrastructure, vous pouvez provisionner et gérer des hôtes pour les calculs dans le nuage. Vous pouvez lancer des instances de calcul avec des formes qui répondent à vos besoins en ressources d'UC, de mémoire, de bande passante de réseau et de 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

    Le centre de connecteurs de service Oracle Cloud Infrastructure est une plate-forme de bus de messages en nuage qui orchestre le déplacement des données entre les services dans 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 de spécifier une tâche (telle qu'une fonction) à exécuter sur les données avant leur transmission au service cible.

    Vous pouvez utiliser le centre de connecteurs du service Oracle Cloud Infrastructure pour créer rapidement un cadre d'agrégation de journalisation pour les systèmes de gestion des informations et des événements de sécurité (SIEM).

  • Registre

    Oracle Cloud Infrastructure Registry est un registre géré par Oracle qui vous permet de simplifier votre flux de travail, du développement à la mise en 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 permet de déployer et de gérer vos applications en toute confiance.

  • Service de gestion des identités et des accès (GIA)

    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 du domaine d'identité. Chaque domaine d'identité IAM OCI représente une solution autonome de gestion des identités et des accès ou une population d'utilisateurs différente.

  • Politique

    Une politique Oracle Cloud Infrastructure Identity and Access Management spécifie qui peut accéder à quelles ressources, et comment. L'accès est accordé au niveau du groupe et du compartiment, ce qui permet d'écrire une politique qui donne à un groupe un type d'accès spécifique à un compartiment spécifique ou à la location.

  • Oracle Cloud Infrastructure Vault

    Oracle Cloud Infrastructure Vault vous permet de gérer, de manière centralisée, les clés de chiffrement qui protègent vos données et les données d'identification de clé secrète que vous utilisez pour sécuriser l'accès à vos ressources dans le nuage. Vous pouvez utiliser le service de chambre forte pour créer et gérer des chambres fortes, des clés et des clés secrètes.

  • Protection d'infrastructure en nuage

    Vous pouvez utiliser Oracle Cloud Guard pour surveiller et maintenir la sécurité de vos ressources dans Oracle Cloud Infrastructure. Le service de protection d'infrastructure en nuage utilise des recettes de détecteur que vous pouvez définir pour examiner vos ressources afin de détecter les faiblesses en matière de sécurité et pour surveiller les opérateurs et les utilisateurs pour certaines activités risquées. Lorsqu'une mauvaise configuration ou une activité non sécurisée est détectée, le service de protection d'infrastructure en nuage recommande des actions correctives et aide à effectuer ces actions, en fonction des recettes de répondant que vous pouvez définir.

  • Journalisation
    Le service de journalisation est un service hautement évolutif entièrement géré qui permet d'accéder aux types de journal suivants à partir de vos ressources en nuage :
    • Journaux du service de vérification : Journaux liés aux événements émis par le service de vérification.
    • Journaux de service : Journaux émis par des services individuels tels que passerelle d'API, événements, fonctions, équilibreur de charge, stockage d'objets et journaux de flux VCN.
    • Journaux personnalisés : Journaux contenant des informations de diagnostic provenant d'applications personnalisées, d'autres fournisseurs de services infonuagiques ou d'un environnement sur place.
  • Stockage d'objets

    Le service de stockage d'objets pour Oracle Cloud Infrastructure offre un accès rapide à de grandes quantités de données structurées et non structurées de tous types, notamment des sauvegardes de base de données, des données analytiques et du contenu riche, comme des images et des vidéos. Vous pouvez stocker des données en toute sécurité, puis les extraire directement à partir d'Internet ou de la plate-forme en nuage. Vous pouvez adapter le stockage sans que la performance ou la fiabilité des services soit affectée. Utilisez le stockage standard pour le stockage "à chaud" auquel vous devez accéder rapidement, immédiatement et fréquemment. Utilisez le stockage d'archives pour le stockage "à froid" que vous retenez pendant de longues périodes et auquel vous accédez rarement.

  • Analyse

    Oracle Analytics Cloud est un service en nuage public évolutif et sécurisé qui permet aux analystes d'affaires de disposer de fonctions d'analyse de pointe en libre-service, qui utilisent l'intelligence artificielle, pour la préparation et la visualisation de données, la production de rapports d'entreprise, l'analyse augmentée et le traitement et la génération de langues naturelles. Grâce à Oracle Analytics Cloud, vous bénéficiez également de fonctionnalités flexibles de gestion du service, notamment une configuration rapide, une mise à l'échelle et des correctifs faciles, ainsi qu'une gestion automatisée du cycle de vie.

Informations complémentaires

Pour en savoir plus sur les caractéristiques de cette architecture.

Confirmation

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

    Équipe Takamol : Mohammed BinSabbar