Target, l'un des plus grands détaillants des États-Unis avec plus de 1 800 magasins, faisait face à un défi complexe : l'orchestration des charges de travail sur plusieurs environnements - du cloud public aux centres de données internes en passant par les sites en périphérie dans les magasins. Kubernetes était déjà utilisé ponctuellement, mais s'avérait trop complexe et trop coûteux en exploitation. La décision s'est finalement portée sur HashiCorp Nomad, ce qui a permis d'accélérer considérablement les cycles de développement et de simplifier l'infrastructure. Ce succès illustre un schéma récurrent dans le secteur : les entreprises reconnaissent de plus en plus la valeur des solutions d'orchestration légères et efficaces, qui se concentrent sur l'essentiel.
L'orchestration de conteneurs devient un élément critique des infrastructures IT modernes. Alors que de plus en plus d'entreprises modernisent leur paysage applicatif et adoptent des architectures cloud-native, elles sont confrontées au défi de gérer efficacement un nombre croissant de flux de travail. Cependant, de nombreuses organisations constatent que les solutions d'orchestration courantes, avec leur complexité, leur forte consommation de ressources et leurs courbes d'apprentissage abruptes, entravent plutôt qu'elles ne favorisent l'efficacité opérationnelle. La conséquence logique en est une augmentation des coûts d'exploitation, des cycles de développement plus longs et une surcharge excessive des équipes IT.
De plus, il ne suffit souvent pas d'orchestrer uniquement des conteneurs. Pour les charges de travail s'exécutant sur des serveurs (virtuels ou bare metal), des applications sous forme d'exécutables, des tâches batch ou encore des services Java, il faudrait encore d'autres solutions d'orchestration. Cela entraîne une complexité supplémentaire de l'infrastructure. C'est pourquoi de nombreuses entreprises recherchent des alternatives plus légères et plus efficaces pour l'orchestration de leurs charges de travail.
Place à HashiCorp Nomad.
Nomad s'est imposé comme une alternative élégante et performante pour l'orchestration des charges de travail. Contrairement à Kubernetes, Nomad suit une approche pragmatique : un binaire unique, des API simples et une architecture intuitive permettent aux équipes de se concentrer sur leurs véritables missions, au lieu de se perdre dans l'administration de la plateforme d'orchestration elle-même. De plus, peu importe que les charges de travail soient conteneurisées ou non.
Pourquoi plus simple peut aussi être meilleur : l'approche Nomad
L'orchestration des charges de travail dans les environnements d'entreprise modernes exige un équilibre entre fonctionnalité et complexité. L'expérience de Target l'illustre bien : l'entreprise devait exploiter des applications dans Google Cloud, dans ses propres centres de données et dans plus de 1 800 magasins. Le défi consistait à orchestrer efficacement ces différents environnements de manière centralisée, sans introduire une complexité inutile.
Le choix de Nomad s'est basé sur plusieurs facteurs clés qui se sont révélés déterminants en pratique.
1. Un aspect central était la cohérence : Target utilisait déjà des conteneurs Docker avec Kubernetes dans ses magasins, et la possibilité de réutiliser ces mêmes conteneurs dans d'autres environnements représentait une grande valeur ajoutée. Cela évitait la nécessité de créer des paquets RPM distincts ou d'autres formats de déploiement.
2. La rapidité des déploiements a également joué un rôle important. Les équipes de développement de Target avaient besoin de pouvoir déployer et tester rapidement de nouvelles versions, en particulier pendant la période intense entre le début de la saison du Black Friday et Noël. Avec Nomad, elles pouvaient effectuer des déploiements en quelques minutes, contre des cycles de déploiement de 30 minutes ou plus avec leurs processus basés sur RPM et Docker.
3. L'intégration native avec l'écosystème HashiCorp existant s'est révélée être un autre avantage décisif. Target disposait déjà d'une infrastructure fonctionnelle avec Consul pour la découverte de services et le DNS, ainsi que Vault pour la gestion des secrets. L'intégration fluide de Nomad dans cet écosystème a permis à l'équipe de continuer à exploiter ces composants éprouvés.
4. Le support multi-régions était essentiel pour l'infrastructure distribuée de Target. Avec des centres de données on-premise dans le Minnesota et une présence cloud dans les régions US-Central et US-East, l'équipe devait être en mesure de déployer des charges de travail à l'échelle du groupe et par région, tout en conservant une configuration fédérée et un suivi efficace.
5. Enfin, l'intégration avec Terraform était un facteur clé. Les équipes de Target utilisaient déjà des pipelines de déploiement établis basés sur Terraform, et la possibilité de les conserver et de les réutiliser pour les déploiements Nomad a grandement facilité son adoption.
Optimisation des ressources et workloads mixtes
Une utilisation efficace des ressources est essentielle pour les entreprises travaillant avec des workloads variés. Nomad propose une solution d'orchestration performante qui permet une utilisation optimisée des ressources et une gestion flexible des workloads mixtes.
Utilisation optimale des ressources
Nomad repose sur un algorithme de Bin-Packing efficace, qui distribue de manière optimale les ressources des serveurs en insérant intelligemment les tâches plus petites dans les capacités libres existantes. Cela réduit les ressources inutilisées et maximise l'efficacité du cluster. Dans les environnements de calcul haute performance (HPC) ou pour les entreprises avec des workloads très fluctuants, Nomad garantit que le matériel coûteux est pleinement exploité.
- Attribution dynamique des ressources : les workloads sont placés en fonction des besoins en temps réel afin d'éviter les périodes d'inactivité.
- Amélioration de l'efficacité : le placement intelligent des tâches réduit les besoins matériels, ce qui diminue les coûts d'exploitation.
- Répartition de la charge : les workloads peuvent être automatiquement déplacés vers des nœuds moins chargés afin d'assurer une utilisation équilibrée du système.
Prise en charge des workloads mixtes
L'un des atouts de Nomad est sa capacité à orchestrer simultanément différents types de workloads. Alors que Kubernetes est principalement conçu pour les applications conteneurisées, Nomad peut également gérer des applications autonomes, des tâches batch, des microservices (conteneurs) et des processus critiques.
- Traitement batch & workloads HPC : idéal pour les instituts de recherche ou les entreprises nécessitant une forte puissance de calcul ponctuelle pour des traitements de données intensifs.
- Microservices & applications cloud-native : les architectures distribuées modernes bénéficient de l'API simple et de la configuration déclarative de Nomad.
- Applications legacy & processus système : contrairement à Kubernetes, Nomad permet également d'orchestrer efficacement des workloads non conteneurisés.
Simplification des opérations
Nomad simplifie l’exploitation grâce à une architecture minimaliste reposant sur un seul binaire et aucune dépendance externe. Cela réduit la charge administrative et facilite l’adoption d’une solution d’orchestration performante, notamment pour les petites équipes IT.
Grâce à cette combinaison d'efficacité des ressources et de prise en charge flexible des workloads, Nomad constitue une plateforme polyvalente adaptée aussi bien aux environnements cloud dynamiques qu'aux infrastructures IT traditionnelles.
Planification à l’échelle de l’entreprise et Bin Packing
Le moteur de planification de Nomad se distingue fondamentalement des autres solutions d'orchestration par son approche pragmatique et efficace. Au cœur de son fonctionnement, Nomad utilise un scheduler distribué basé sur le protocole de consensus Raft. Cela permet de coordonner rapidement et de manière fiable les décisions de planification sur un cluster. Target a mis en place cette architecture avec des clusters de trois nœuds par région, où un serveur agit en tant que leader et les deux autres en tant que followers pouvant prendre immédiatement le relais en cas de défaillance. Les clusters à cinq nœuds sont encore plus adaptés aux scénarios nécessitant une haute disponibilité maximale : ces cinq nœuds peuvent être répartis sur différentes zones de défaillance ou centres de données et continuer à fonctionner normalement même si le leader du cluster tombe en panne, car les followers restants peuvent élire un nouveau leader - ce qui ne serait plus possible avec un cluster de trois nœuds en raison du manque de quorum.
Ce qui rend le scheduler de Nomad particulièrement performant, c'est son algorithme avancé de Bin-Packing, déjà mentionné dans la section précédente. Alors que de nombreuses solutions d'orchestration utilisent des stratégies de placement basiques, souvent inefficaces en termes de répartition des ressources, Nomad adopte une approche multidimensionnelle. Il prend simultanément en compte le processeur, la mémoire, les ports réseau et même des ressources personnalisées. Chez Target, cela a conduit à une utilisation bien plus efficace des ressources : avec seulement huit nœuds par cluster, l’entreprise a pu exécuter une grande variété de workloads sans entraîner la surallocation matérielle et réseau souvent observée sur d’autres plateformes comme VMware ou Kubernetes.
Les décisions de planification reposent sur un système sophistiqué de contraintes et d'affinités. Les développeurs peuvent définir précisément les exigences de leurs workloads, telles que les besoins en matériel, la topologie réseau ou la localisation géographique. Le scheduler prend en compte ces contraintes ainsi que l'état actuel du cluster pour effectuer des placements optimaux. Chez Target, cela s'est avéré particulièrement crucial pour gérer les déploiements multi-régions entre leurs centres de données du Minnesota et les régions Google Cloud.
Un exemple concret de l’implémentation chez Target illustre la puissance du scheduler : l’entreprise exécute une pile ELK complète (Elasticsearch, Logstash, Kibana) sur Nomad, traitant environ 300 Go de logs quotidiennement. Cela démontre la flexibilité du scheduler dans la gestion de différents types de workloads - des applications stateless aux systèmes complexes et stateful comme Elasticsearch. Le scheduler détecte automatiquement les exigences spécifiques de ces workloads variés et les place de manière optimale sur l'infrastructure disponible.
Un autre point clé est la capacité du scheduler à gérer des instances préemptibles. Target expérimente cette fonctionnalité dans son environnement de staging, ce qui lui permet d'exploiter des instances cloud bon marché et interrompables, tandis que le scheduler assure automatiquement la continuité du service. Cet exemple montre comment le moteur de planification de Nomad permet non seulement une efficacité technique, mais aussi des économies de coûts directes.
Fonctionnalités de niveau entreprise
Nomad Enterprise étend la version open-source de Nomad avec des fonctionnalités supplémentaires spécialement conçues pour répondre aux exigences des grandes entreprises. En particulier dans des environnements complexes et distribués, Nomad Enterprise révèle tout son potentiel en offrant une évolutivité, une sécurité et une gouvernance accrues.
Gouvernance et gestion multi-cloud
L'un des plus grands défis pour les entreprises ayant des infrastructures distribuées à l'échelle mondiale est la gestion efficace des clusters sur plusieurs régions et fournisseurs cloud. Nomad Enterprise propose une architecture de clusters fédérés performante :
- Clusters fédérés sur plusieurs régions et fournisseurs cloud : les entreprises peuvent exploiter plusieurs clusters Nomad dans différentes régions ou environnements cloud et les gérer de manière centralisée. Par exemple, un cluster peut fonctionner en on-premise, un autre sur Oracle Cloud Infrastructure (OCI) à Francfort réparti sur trois centres de données, et un autre encore sur Amazon Web Services (AWS). Ensemble, ils forment un pool d’applications. Cela permet une distribution flexible des workloads en fonction de la proximité géographique, des ressources adaptées à chaque application, des exigences de latence, des conditions de licence des logiciels ou des exigences de conformité globales.
- Contrôle indépendant des déploiements par région : chaque région peut fonctionner et être gérée indépendamment, garantissant ainsi qu'une panne ou une erreur dans une région n'affecte pas les autres clusters. En parallèle, des politiques globales peuvent être administrées de manière centralisée. Concrètement, cela signifie que notre cluster Nomad on-premise peut également déployer et gérer des workloads sur OCI ou AWS. Les données correspondantes sont répliquées entre le centre de données local et les environnements cloud, à l'exception des tokens, des politiques ACL régionales et des politiques Sentinel appliquant les directives métier (nous y reviendrons dans un chapitre suivant).
- Validation et processus de déploiement automatisés : Nomad Enterprise permet de valider et de déployer automatiquement les workloads en production, réduisant ainsi les erreurs manuelles et augmentant la fiabilité des mises en production.
Haute disponibilité et scalabilité
Pour les applications critiques, une haute disponibilité est essentielle. Nomad Enterprise fournit des fonctionnalités supplémentaires qui améliorent la résilience et la scalabilité des clusters Nomad :
- Clusters à trois ou cinq nœuds par région pour la haute disponibilité : afin d'assurer une disponibilité continue, les serveurs Nomad sont organisés en clusters avec au moins trois nœuds par région. Cela garantit que même en cas de panne d'un ou plusieurs serveurs, les nœuds restants assurent la continuité des opérations.
- Consensus automatique pour les décisions de planification : Nomad utilise le protocole de consensus Raft pour prendre des décisions de planification de manière fiable et efficace sur l’ensemble du cluster. En cas de basculement du leader, un nouveau leader est automatiquement élu pour garantir une disponibilité continue.
- Scalabilité flexible des nœuds clients : Nomad peut adapter dynamiquement le nombre de nœuds clients en fonction des besoins en workloads, permettant ainsi aux entreprises d'optimiser l'utilisation des ressources et de réduire les coûts d'exploitation.
Application des politiques et conformité réglementaire
Dans les secteurs réglementés comme la finance, la santé ou l'administration publique, le respect strict des normes de sécurité et de conformité est crucial. Nomad Enterprise intègre HashiCorp Sentinel, une solution puissante pour l’application des politiques (« Policy Enforcement »), en permettant la définition et l'automatisation des règles directement dans le processus d’orchestration. Les exigences réglementaires et les politiques de sécurité internes peuvent ainsi être appliquées de manière efficace. Les entreprises bénéficient d’une solution de validation des politiques automatisée et évolutive, qui s’intègre parfaitement dans les workflows existants et les stratégies de conformité. Sentinel est également intégré à Terraform, Vault et Consul, permettant ainsi d’étendre l’implémentation du concept de Policy-as-Code à tous les niveaux de l’infrastructure.
Sentinel : Application des politiques pour Nomad Enterprise
Sentinel est un framework basé sur des politiques qui permet aux administrateurs de définir des règles granulaires sous forme de code et de les appliquer automatiquement via Nomad. Les politiques Sentinel s’appuient sur le système de listes de contrôle d’accès (ACL) existant de Nomad et permettent un contrôle précis sur la soumission et l’exécution des jobs.
Principales fonctionnalités de Sentinel dans Nomad Enterprise :
- Contrôle granulaire des politiques : les politiques Sentinel peuvent imposer des restrictions sur les jobs exécutés, s'assurer que seuls certains conteneurs sont utilisés, ou encore appliquer d'autres exigences de conformité.
- Structure déclarative des politiques : les politiques sont définies dans le langage Sentinel, conçu pour être lisible et rapide à exécuter. La complexité des règles peut être ajustée selon les besoins, mais doit être optimisée pour ne pas impacter les performances.
- Utilisation détaillée des objets : les politiques Sentinel peuvent interagir avec divers objets de l’écosystème Nomad, y compris les définitions de jobs, les jobs existants, les tokens ACL et les namespaces. Cela permet de mettre en place des mécanismes de validation et d'application très précis.
Gestion et application des politiques Sentinel
La gestion des politiques Sentinel s’effectue via l’interface CLI de Nomad, avec plusieurs niveaux d’application (« Enforcement Levels ») disponibles :
- Advisory Policies : elles génèrent uniquement des avertissements lorsqu’un job enfreint une règle, mais n’empêchent pas son exécution.
- Soft-Mandatory Policies : les jobs enfreignant une règle peuvent toujours être exécutés, mais uniquement après approbation explicite.
- Hard-Mandatory Policies : ici, les jobs qui ne respectent pas les règles définies sont strictement bloqués et ne peuvent pas être exécutés.
Par exemple, une politique peut être appliquée comme suit :
nomad sentinel apply -level=soft-mandatory compliance-policy policy.sentinel
Cas pratique : restriction des exécutions de jobs
Un scénario courant consiste à garantir que seuls certains drivers de job peuvent être utilisés afin de minimiser les risques de sécurité. Une politique Sentinel pourrait exiger que seul le driver « exec » (utilisé pour l’orchestration d’exécutables) soit autorisé et empêcher l’exécution de jobs utilisant des drivers non autorisés comme « docker » ou « raw_exec » :
main = rule { all_drivers_exec } all_drivers_exec = rule { all job.task_groups as tg { all tg.tasks as task { task.driver is "exec" } } }
Intégration avec Terraform pour les politiques Sentinel
Terraform peut être utilisé pour automatiser la gestion des politiques. Avec la ressource nomad_sentinel_policy
, les politiques Sentinel peuvent être intégrées directement dans les processus Infrastructure-as-Code.
resource "nomad_sentinel_policy" "enforce_exec_driver" { name = "restrict-to-exec" policy = file("restrict-to-exec.sentinel") enforcement_level = "hard-mandatory" }
Cela garantit que la politique souhaitée est appliquée de manière cohérente à l’échelle de l’entreprise.
Comparaison entre Nomad et Kubernetes
Nomad se distingue particulièrement par sa simplicité, sa flexibilité et son efficacité, tandis que Kubernetes se démarque par ses fonctionnalités avancées en matière de réseau, de stockage et de monitoring. Les entreprises doivent évaluer, en fonction de leurs cas d’usage, quelle solution correspond le mieux à leur infrastructure et à leurs besoins. Bien que Kubernetes soit largement considéré comme la norme pour l’orchestration des conteneurs, de plus en plus d’entreprises adoptent HashiCorp Nomad comme alternative plus légère, moins complexe et offrant un support plus large pour différents types de workloads.
Fonctionnalités et avantages de Nomad
Nomad présente plusieurs avantages qui le rendent particulièrement attractif pour les entreprises recherchant une solution d’orchestration simple, flexible et peu gourmande en ressources :
- Simplicité de déploiement : Nomad est plus rapide et plus facile à mettre en place que Kubernetes, car il ne nécessite qu’un seul binaire pour les clients et les serveurs, avec une configuration moins complexe.
- Flexibilité des workloads : Alors que Kubernetes se concentre principalement sur les applications conteneurisées, Nomad, comme mentionné précédemment, permet également de gérer efficacement des workloads non conteneurisés ainsi que des systèmes legacy.
- Simplicité opérationnelle : L’architecture de Nomad est plus légère et nécessite moins d’efforts de gestion. Les équipes peuvent ainsi se concentrer davantage sur le développement des applications plutôt que sur l’administration de la plateforme.
- Moins de ressources organisationnelles requises : La simplicité de gestion de Nomad implique également un besoin réduit en personnel. Kubernetes est une plateforme exigeante en compétences et en ressources humaines, dont le déploiement et la maintenance ne sont rentables que pour des infrastructures à grande échelle. De nombreuses entreprises doivent recruter du personnel supplémentaire uniquement pour gérer leurs clusters Kubernetes et analyser les incidents. En revanche, les exigences organisationnelles pour adopter Nomad sont nettement moins contraignantes.
- Faible consommation de ressources : Nomad nécessite moins de ressources système que Kubernetes, ce qui en fait une solution idéale pour l’Edge Computing, les environnements IoT et les systèmes aux ressources limitées. Associé à une réduction des besoins en personnel, cela entraîne également une diminution des coûts d’infrastructure, avec un impact direct sur le coût total de possession (TCO) et le retour sur investissement (ROI).
- Intégration native avec l’écosystème HashiCorp : Grâce à son intégration étroite avec HashiCorp Consul pour la découverte de services et Vault pour la gestion des secrets, les entreprises peuvent exploiter efficacement leurs stacks HashiCorp existants.
- Support multi-régions natif : Nomad prend en charge les déploiements multi-régions et multi-cloud de manière native, alors que Kubernetes nécessite une configuration complexe et des couches de gestion supplémentaires pour cette fonctionnalité.
Défis
Malgré ses nombreux avantages, Nomad présente aussi des défis, notamment en comparaison avec Kubernetes :
- Load Balancing : Kubernetes intègre nativement des fonctionnalités de load balancing via kube-proxy et Ingress. Nomad, en revanche, nécessite des solutions externes pour cette fonctionnalité. Une option populaire est Traefik, qui s’intègre directement avec Nomad. Pour ceux qui recherchent une prise en charge complète par HashiCorp, l’intégration avec HashiCorp Consul est recommandée.
- Gestion du réseau et des politiques : Kubernetes offre des fonctionnalités réseau avancées, comme les Network Policies pour le contrôle du trafic. Nomad doit s’appuyer sur HashiCorp Consul, des outils tiers ou Sentinel (disponible uniquement dans la version Enterprise) pour fournir des fonctionnalités similaires.
- Support du Service Mesh : Kubernetes peut être étendu avec des solutions de Service Mesh comme Istio ou Linkerd. Bien que Nomad fonctionne avec Consul, il n’offre pas en natif toutes les fonctionnalités avancées d’un Service Mesh basé sur Kubernetes.
- Monitoring et logging : Kubernetes intègre des solutions natives pour le monitoring et le logging, tandis que Nomad repose principalement sur des outils externes pour la supervision et l’enregistrement des logs.
- Approche de configuration : Kubernetes adopte un modèle de configuration déclaratif, qui est plus facile à gérer pour les grandes infrastructures. Nomad utilise une approche procédurale, qui offre un contrôle plus granulaire mais peut devenir plus complexe à gérer à mesure que l’environnement s’agrandit.
- Solutions de stockage persistant : Kubernetes propose un large éventail de solutions de stockage persistant, incluant des options locales, cloud et réseau. La gestion du stockage par Nomad est plus limitée, car elle délègue cette responsabilité au système d’exploitation ou à la plateforme de conteneurisation sous-jacente, comme Docker. Cela peut entraîner une charge de travail supplémentaire dans des environnements complexes et hétérogènes.
Cette comparaison montre que Nomad se distingue principalement par sa légèreté, sa simplicité, sa flexibilité et son efficacité, tandis que Kubernetes excelle grâce à ses fonctionnalités avancées et intégrées en matière de réseau, de stockage et de monitoring.
Avantages pratiques pour les équipes de développement
L’expérience de Target et d’autres clients de HashiCorp montre que Nomad ne simplifie pas seulement la gestion de l’infrastructure, mais apporte également des avantages significatifs aux équipes de développement. Les améliorations suivantes se sont révélées particulièrement précieuses dans les opérations quotidiennes :
- Accélération des cycles de développement : Nomad permet de faire passer de nouveaux services beaucoup plus rapidement de la phase de Proof-of-Concept (PoC) à la production. La possibilité de déployer et de tester des workloads facilement a considérablement réduit le time-to-market des nouvelles fonctionnalités et applications.
- Déploiements simplifiés : L’utilisation de Nomad réduit le temps de déploiement habituel de plusieurs heures à quelques minutes. En période de forte charge, comme avant la saison du Black Friday dans le commerce de détail, cela permet aux entreprises de déployer des modifications en temps réel sans perturber l’exploitation en cours ni rencontrer de goulots d’étranglement en matière de ressources.
- Optimisation de l’utilisation des ressources : Grâce à l’algorithme de Bin-Packing efficace de Nomad, l’utilisation des serveurs est optimisée, permettant de mélanger différentes architectures et types de serveurs, tout en réduisant considérablement les besoins en matériel. Cela entraîne des économies significatives et mesurables sur les coûts d’infrastructure.
- Prise en charge flexible des workloads : Alors que Kubernetes est principalement optimisé pour les applications conteneurisées, Nomad permet l’orchestration de divers types de workloads - des applications Java traditionnelles aux microservices modernes. Target a ainsi pu unifier la gestion de tous ses workloads sur une seule plateforme, sans nécessiter de solutions d’orchestration supplémentaires.
- Déploiements Blue-Green : Afin de minimiser les interruptions de service lors des mises à jour, Target utilise des déploiements Blue-Green au niveau du datacenter. Les nouvelles versions sont déployées en parallèle de la version existante et ne sont mises en production qu’après des tests réussis. En cas de problème, il est possible de revenir immédiatement à la version précédente.
Ces fonctionnalités et améliorations démontrent que Nomad Enterprise est une solution performante et simple à utiliser pour les entreprises recherchant une plateforme d’orchestration moderne, hautement disponible et rentable.
Intégration avec l’écosystème HashiCorp
L’un des principaux atouts de Nomad est son intégration native avec d’autres outils HashiCorp. Target et d’autres clients exploitant des infrastructures critiques tirent pleinement parti de ces synergies :
- Consul pour la découverte de services et la configuration dynamique
- Vault pour la gestion des secrets et des identifiants dynamiques
- Terraform pour l’Infrastructure-as-Code et les déploiements automatisés
Cette intégration permet la mise en place d’un pipeline entièrement automatisé, où les développeurs soumettent des modifications via Git, qui sont ensuite automatiquement validées et déployées par des processus CI/CD.
Exemple : Pipeline de déploiement automatisée
Les développeurs travaillent dans un environnement basé sur Git, où toutes les modifications du code applicatif et de l’infrastructure sont versionnées. Le workflow typique se déroule comme suit :
- Modification du code & commit : Un développeur pousse une nouvelle version d’une application dans un dépôt Git. Il peut s’agir d’une mise à jour d’une API microservice ou d’un ajustement de configuration.
- Déclenchement automatique du pipeline CI/CD : Un système de build comme GitHub Actions ou Jenkins détecte la modification et exécute un pipeline incluant plusieurs étapes :
- Build & tests : L’application est compilée avec les dernières modifications et packagée sous forme d’image conteneurisée ou de binaire.
- Scan de sécurité & récupération des secrets : Vault est utilisé pour fournir des secrets dynamiques, évitant ainsi le stockage de credentials en dur dans le code ou les pipelines.
- Validation de l’infrastructure : Terraform est exécuté pour s’assurer que tous les composants nécessaires à l’infrastructure sont correctement provisionnés.
- Déploiement avec Nomad :
- Une fois la compilation réussie, un fichier de job Nomad est généré ou mis à jour.
- Le CLI Nomad ou une combinaison Terraform-Nomad est utilisé pour enregistrer et déployer le nouveau job.
- Consul prend automatiquement en charge la découverte des services, permettant aux nouvelles instances d’être immédiatement reconnues.
- Déploiement Blue-Green & basculement du trafic :
- Grâce à la stratégie de déploiement progressif de Nomad, la nouvelle version est lancée en parallèle de l’existante.
- Lorsque tous les contrôles de santé sont validés, le trafic est basculé vers la nouvelle version via le load balancing de Consul ou Traefik.
- En cas de problème, un retour arrière automatique est possible.
- Monitoring & optimisation :
- Prometheus ou d’autres outils d’observabilité collectent les métriques de déploiement, accessibles via l’API REST intégrée de Nomad.
- Si nécessaire, les ressources peuvent être ajustées dynamiquement avec Terraform et l’auto-scaling de Nomad.
Avantages de cette pipeline
- Automatisation complète : Aucun déploiement manuel, ce qui réduit les sources d’erreur et accélère le processus.
- Sécurité renforcée : Vault garantit que les credentials ne sont jamais stockés dans la base de code ou dans le pipeline CI/CD.
- Rollback rapide & risque minimal : Grâce aux déploiements Blue-Green et à la découverte de services via Consul, les versions défectueuses peuvent être annulées sans interruption.
- Utilisation efficace des ressources : Terraform optimise l’approvisionnement de l’infrastructure, tandis que Nomad, grâce au Bin Packing, assure une répartition optimale des workloads sur les serveurs.
Ce workflow permet de déployer de nouvelles versions en quelques minutes et d’adapter dynamiquement l’infrastructure aux besoins changeants – un atout clé, en particulier dans les environnements hautement dynamiques.
Perspectives : L’avenir de l’orchestration des workloads
L’avenir des infrastructures IT sera de plus en plus marqué par l’Edge Computing, les stratégies multi-cloud et les workloads hybrides. La roadmap de HashiCorp pour Nomad met en évidence plusieurs évolutions prometteuses :
- Prise en charge des GPU multi-instance NVIDIA, versionnage des Golden Jobs, NUMA, quotas pour les périphériques (déjà introduits avec Nomad 1.9)
- Infrastructure Lifecycle Management (ILM) pour simplifier la gestion de l’infrastructure avec Terraform, Packer et Waypoint
- Métadonnées dynamiques des nœuds pour améliorer la flexibilité dans l’administration des environnements Nomad
- Identité des workloads pour renforcer la sécurité en étendant la gestion des identités et en intégrant Vault et Consul
Nomad offre une solution d’orchestration de workloads performante et pragmatique. Les entreprises qui investissent aujourd’hui dans des solutions d’orchestration efficaces et évolutives bénéficieront de coûts opérationnels réduits, de cycles de développement plus courts et d’une productivité accrue des équipes.
Contactez-nous pour plus d’informations ! Nous analysons votre cas d’usage précis, élaborons un scénario adapté et vous conseillons dans le choix de la plateforme la plus optimale pour vos besoins.