Les conteneurs sont devenus sans aucun doute un mot à la mode technologique ces dernières années. L’émergence et l’essor de la technologie de conteneurisation, ainsi que l’architecture de microservices, DevOps et les concepts cloud-natifs qu’elle a engendrés, ont eu un impact profond sur l’industrie du logiciel.
Les conteneurs offrent de nombreux avantages. Leur encapsulation complète, leur déploiement pratique et leur démarrage et ordonnancement légers ont contribué à leur adoption généralisée. Associés à des systèmes d’orchestration, les conteneurs simplifient la gestion et l’itération des applications, quelle que soit la complexité du système. De plus, les applications conteneurisées présentent une excellente portabilité, s’exécutant de manière transparente dans tout environnement disposant d’un runtime de conteneur conforme aux normes.
Les conteneurs légers et le cloud computing élastique se complètent parfaitement. La capacité d’adaptation des conteneurs à divers environnements d’exploitation et leur démarrage rapide, couplés à l’énorme évolutivité des ressources de l’expansion dynamique du cloud, permettent aux applications conteneurisées basées sur le cloud de passer à des milliers d’instances en peu de temps. Par conséquent, le cloud constitue une plateforme idéale pour les applications conteneurisées, facilitant leur exécution et leur expansion.
Avant la reconnaissance généralisée de Docker, les fournisseurs de cloud exploraient et utilisaient déjà des technologies semblables aux conteneurs. La nature multi-locataire du cloud nécessite une isolation des environnements, ce qui fait des fournisseurs de cloud à la fois des utilisateurs et des bénéficiaires de la conteneurisation. Si certains ont opté pour des solutions propriétaires, tous n’ont pas directement adopté Docker.
Par exemple, AWS Elastic Beanstalk utilisait une technologie de type conteneur privée pour isoler les applications Web. Par la suite, il a étendu la prise en charge des applications empaquetées sous forme de conteneurs Docker.
Avec l’essor de Docker, les principaux fournisseurs de cloud public ont unanimement commencé à proposer des services PaaS standardisés liés aux conteneurs, en les améliorant continuellement. Retracer l’évolution du PaaS pour conteneurs révèle des étapes de développement distinctes.
Initialement, les plates-formes cloud pour conteneurs privilégiaient l’exécution transparente des conteneurs Docker dans le cloud. Ces services visaient principalement à aider les utilisateurs à créer des clusters de machines virtuelles sous-jacents, allégeant ainsi la charge de la gestion manuelle des machines virtuelles. Cependant, à mesure que les applications conteneurisées devenaient plus complexes, l’orchestration est devenue un besoin pressant. En conséquence, les fournisseurs ont introduit et renforcé leurs solutions d’orchestration de conteneurs.
À l’époque où les frameworks d’orchestration se faisaient concurrence, certains fournisseurs ont adopté une approche multifacette. Par exemple, Azure Container Service de Microsoft prenait en charge Docker Swarm, Apache Mesos (DC/OS) et Kubernetes. D’autres, comme AWS avec son Elastic Container Service (ECS), ont opté pour des méthodes d’orchestration propriétaires afin d’améliorer l’intégration avec leurs services cloud existants.
Comme nous le savons, Kubernetes est sorti vainqueur de la bataille des frameworks d’orchestration, devenant ainsi la norme de facto. Les fournisseurs de cloud ont rapidement changé de cap, en donnant la priorité à la prise en charge de Kubernetes dans le cloud et en lançant des services spécifiques à Kubernetes tels qu’Amazon Elastic Kubernetes Service (EKS) et Azure Kubernetes Service (AKS). De même, Alibaba Cloud a progressivement abandonné le support de Swarm dans son service de conteneurs, se concentrant sur l’édition Kubernetes (ACK).
Le support cloud de la technologie des conteneurs a évolué en parallèle avec l’écosystème des conteneurs, les fournisseurs de cloud jouant un rôle important en tant que participants et facilitateurs. Par exemple, Google Kubernetes Engine (GKE) sur Google Cloud, étant « né et élevé » dans cet écosystème, a toujours constitué la référence en matière de services Kubernetes basés sur le cloud.
Les services Kubernetes basés sur le cloud offrent plusieurs avantages distincts par rapport aux clusters Kubernetes auto-hébergés.
Tout d’abord, en raison de la nature multi-locataire du cloud, de nombreux services Kubernetes basés sur le cloud éliminent le besoin de provisionner des nœuds Master. Les utilisateurs n’ont qu’à créer et payer pour les nœuds Worker, tandis que la plateforme cloud fournit et gère les nœuds Master, réduisant ainsi la consommation de ressources et les coûts opérationnels.
Deuxièmement, malgré sa complexité, Kubernetes possède une conception abstraite exceptionnelle qui permet des extensions étendues et flexibles. Les fournisseurs de cloud ont massivement investi dans ce domaine, permettant à divers composants IaaS et PaaS de leurs plateformes de s’intégrer de manière transparente à l’écosystème Kubernetes, favorisant une intégration plus étroite.
Par exemple, dans le domaine des Ingress Controllers, couramment utilisés pour diriger le trafic externe, il existe des implémentations de contrôleurs d’équilibrage de charge cloud telles que AWS ALB Ingress Controller et Azure AKS Application Gateway Ingress Controller. Ces contrôleurs créent des instances de services PaaS correspondantes pour servir le cluster Kubernetes.
De plus, au niveau StorageClass, où les politiques d’allocation dynamique des volumes de stockage sont définies dans Kubernetes, il est possible de spécifier l’utilisation de services de stockage par blocs cloud pour provisionner et monter un stockage persistant à la demande.
Du point de vue de la flexibilité architecturale, les services Kubernetes basés sur le cloud introduisent un autre avantage : les déploiements multi-clusters.
Avec la baisse des barrières à l’entrée pour la création de clusters Kubernetes, s’il existe une faible interdépendance entre les unités commerciales, des clusters Kubernetes distincts peuvent être créés pour chaque unité. Cette approche améliore l’isolation et permet une mise à l’échelle indépendante de différents clusters.
De Docker à Kubernetes, l’évolution continue de l’écosystème des conteneurs a ouvert la voie aux technologies cloud-natives. Les développeurs ne sont pas seuls dans leur quête d’apprentissage et d’adoption de la technologie des conteneurs. Les fournisseurs de cloud computing rivalisent également pour se positionner comme les plateformes optimales d’exécution des conteneurs, en introduisant une myriade de services liés aux conteneurs pour attirer les utilisateurs de conteneurs vers leurs clouds.
Fait intéressant, il existe une relation subtile entre les conteneurs et certains services cloud activement promus par les fournisseurs. Il y a un élément de compétition et de substitution en jeu.
De la même manière que certaines fonctionnalités PaaS peuvent être reproduites à l’aide d’IaaS, les conteneurs, avec leur grande liberté de construction et leurs mécanismes pratiques d’empaquetage et de déploiement, peuvent partiellement remplacer certains composants réutilisables au sein du cloud. De plus, les conteneurs peuvent être orchestrés dans le cadre d’un système plus vaste, servant ainsi de moyen pour atténuer l’enfermement propriétaire.
Malgré la menace potentielle que les conteneurs font peser sur certains services cloud spécifiques, le cloud computing a une fois de plus démontré sa neutralité technologique. Les plateformes cloud ont ouvertement embrassé et soutenu l’exécution des conteneurs, allant même jusqu’à les désigner comme des services clés pour le développement. Donner aux utilisateurs le choix illustre l’inclusivité du cloud.
Novita AI est la plateforme cloud tout-en-un qui propulse vos ambitions en IA. API intégrées, sans serveur, instance GPU - les outils rentables dont vous avez besoin. Éliminez l’infrastructure, commencez gratuitement et faites de votre vision de l’IA une réalité.
Lectures recommandées :
