Quelle plateforme cloud devriez-vous choisir ?  – Informatique CloudSavvy
Agence web » Actualités du digital » Quelle plateforme cloud devriez-vous choisir ? – Informatique CloudSavvy

Quelle plateforme cloud devriez-vous choisir ? – Informatique CloudSavvy

CloudFoundry et Kubernetes sont deux technologies open source utilisées pour exécuter des applications dans le cloud. Choisir la bonne plateforme pour vos déploiements est un choix important pour maximiser les performances, la maintenabilité et la productivité de vos développeurs.

Dans cet article, nous comparerons les caractéristiques de CloudFoundry et de Kubernetes. Que vous utilisiez déjà l’un des deux, que vous essayiez de faire le choix pour votre prochain projet ou que vous soyez simplement curieux de savoir en quoi ils diffèrent, nous explorerons leurs capacités et expliquerons leurs cas d’utilisation.

Définir les plateformes

CloudFoundry est présenté comme une plate-forme de développement pour les applications cloud natives. Kubernetes fournit une orchestration de conteneurs de niveau production. Les deux sont utilisés pour déployer des applications dans des environnements cloud, mais ils abordent chacun cet objectif dans une direction différente.

CloudFoundry est une plateforme complète en tant que service (PaaS). Il fournit une expérience de développement entièrement automatisée fondée sur le modèle buildpack. Lorsque vous utilisez la CLI de CloudFoundry pour cf push (déployez) votre application, le service détecte les langages de programmation, les frameworks et les technologies de support que vous utilisez. Il fournit automatiquement l’infrastructure cloud appropriée pour servir votre projet.

Kubernetes n’est pas considéré comme un PaaS à part entière. Il est axé sur l’orchestration des conteneurs, la pratique de mise à l’échelle et de distribution des instances de conteneur sur plusieurs nœuds physiques. Le déploiement sur Kubernetes est une approche plus pratique dans laquelle vous définissez l’infrastructure dont vos conteneurs ont besoin.

CloudFoundry est conscient des éléments internes de votre application : il extrait des informations significatives sur le fonctionnement de votre projet, puis les utilise pour assembler automatiquement des composants d’infrastructure avec un minimum de conseils obligatoires. En revanche, Kubernetes est un cadre générique pour le déploiement conteneurs. Il n’a aucune connaissance inhérente des exigences de votre application ; le changement de vocabulaire des « applications » aux « conteneurs » illustre comment Kubernetes fonctionne avec des unités plus petites que vous combinez pour créer des systèmes complets.

Avantages de CloudFoundry

CloudFoundry vous offre une plate-forme de déploiement d’applications qui s’exécute sur n’importe quel cloud majeur. Kubernetes propose un modèle similaire à une plate-forme, mais il se concentre sur les charges de travail conteneurisées. CloudFoundry ajoute de la valeur en vous offrant des fonctionnalités intégrées au niveau de l’application, réduisant ainsi le travail que vous devez effectuer lors du câblage des composants.

Des fonctionnalités telles que le routage du trafic, l’équilibrage de charge et le DNS sont intégrées à vos déploiements et configurées via la CLI CloudFoundry ou un simple fichier de configuration dans votre référentiel. Avec Kubernetes, vous devez ajouter manuellement des composants tels que des services et des entrées pour acheminer le trafic vers vos conteneurs, en assemblant efficacement une pile réseau à partir de zéro.

Une installation CloudFoundry fournit un marché de services prêts à être ajoutés à votre application. Celles-ci vont des bases de données et des files d’attente de messages aux passerelles API et aux intégrations avec des plates-formes tierces. Cela permet d’étendre rapidement et facilement votre pile avec des composants externes. Kubernetes n’a rien de comparable ; chaque composant doit être empaqueté en tant que conteneur et ajouté manuellement à votre cluster.

CloudFoundry inclut d’autres fonctionnalités pratiques pour l’authentification et la gestion des utilisateurs. Kubernetes n’est pas non plus comparable dans ce domaine : les applications doivent implémenter leurs propres mécanismes d’authentification et vous êtes responsable de la sécurisation de votre cluster à l’aide de jetons et de règles RBAC.

Avantages de Kubernetes

Là où Kubernetes excelle, c’est en matière de mise à l’échelle adaptable et de réplication. Les modules de conteneurs sont facilement distribués sur les nœuds physiques sans affecter la connectivité du réseau ou les relations avec d’autres services. CloudFoundry a également une mise à l’échelle, mais l’accent est mis sur application signifie qu’il est moins granulaire et moins idéal pour une mise à l’échelle automatique rapide en fonction de la charge de composants spécifiques (bien que cela soit possible avec le module de mise à l’échelle automatique.)

Kubernetes bénéficie d’une communauté open source active qui ne cesse de se développer et de créer des produits adjacents. L’intérêt pour Kubernetes a augmenté rapidement au cours des dernières années, une tendance qui n’est pas partagée par CloudFoundry. L’approche générique adoptée par Kubernetes en fait une technologie plus largement applicable, encourageant à son tour son adoption. Il vous sera plus facile d’embaucher des ingénieurs Kubernetes qualifiés car ils sont plus nombreux.

Kubernetes a une architecture extensible où vous apportez exactement ce dont vous avez besoin. Vous êtes libre de remplacer les composants de votre distribution Kubernetes et d’ajouter de nouveaux types de ressources fondamentales à utiliser dans vos déploiements. Cela vous permet de garder le contrôle de l’architecture de votre application et laisse votre infrastructure accessible et ouverte au changement.

CloudFoundry est une solution très opiniâtre qui fait le plus gros du travail à votre place ; cela accélère le déploiement initial, mais vous offre moins de possibilités de remplacer des composants, d’ajouter des remplacements et de faire évoluer votre stratégie au fil du temps. Une fois que vous avez choisi CloudFoundry, vous devez vous adapter à sa façon de travailler pour continuer à profiter de ses avantages. Kubernetes impose moins de restrictions sur l’apparence de votre infrastructure. Il peut être facilement adapté à des environnements hautement spécialisés.

Modèles de déploiement

Vous pouvez voir le modèle application vs conteneur dans la pratique en examinant comment les déploiements fonctionnent réellement sur les deux plates-formes différentes. Voici un déploiement de base équivalent effectué d’abord sur CloudFoundry, puis sur Kubernetes.

CloudFoundry

Avec CloudFoundry, vous installez le cf CLI, accédez à votre répertoire de travail et exécutez la commande suivante :

cf push my-app

Cela créera et déploiera votre projet à l’aide de l’instance CloudFoundry auprès de laquelle votre CLI est authentifiée. L’application sera nommée my-app. CloudFoundry détectera votre type de code source, acquerra les buildpacks appropriés, créera votre application et la lancera dans votre infrastructure cloud.

Les déploiements sont configurés avec un simple fichier YAML appelé manifest.yml:

applications:
  - name: my-app
    instances: 4
    env:
      EXAMPLE_VARIABLE: example

Fonctionnement cf push contre un répertoire avec ce manifeste déploierait quatre répliques de votre application. le EXAMPLE_VARIABLE sera accessible depuis votre code source.

Kubernetes

Comme Kubernetes fonctionne avec des conteneurs, vous avez besoin d’une image pour votre application avant de pouvoir commencer. Vous devrez écrire un Dockerfile et utiliser docker build pour le construire :

docker build -t my-app:latest .

Une fois que vous avez votre image, vous pouvez écrire un ensemble de manifestes Kubernetes décrivant les objets à créer dans votre cluster :

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 4
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app-container
          image: my-app:latest
          env:
            - name: EXAMPLE_VARIABLE
              value: "example"

Ce manifeste crée un déploiement du my-app:latest image de conteneur qui exécutera quatre répliques simultanément. Il fixe également le EXAMPLE_VARIABLE variable d’environnement, la rendant disponible dans les conteneurs en cours d’exécution.

Vous pouvez désormais utiliser Kubectl, la CLI Kubernetes, pour lancer vos instances de conteneur dans votre cluster connecté :

kubectl apply -f manifest.yml

Ces deux exemples de déploiement minimaux illustrent les différences de concept, de flux de travail et d’expérience de développeur entre les deux technologies. Les procédures de construction automatisées de CloudFoundry se traduisent par une expérience de déploiement sans friction qui est facilement configurée avec des indicateurs CLI ou un simple fichier YAML.

Kubernetes vous charge de créer les composants de votre application dans des images de conteneur, puis de définir comment ils doivent s’exécuter dans votre cluster. Vous avez besoin de beaucoup plus de configuration initiale, ce qui est en partie responsable de la réputation de Kubernetes d’être complexe et difficile à apprendre. Persévérer vous récompense avec la capacité de façonner exactement votre infrastructure autour de votre application ; avec CloudFoundry, vous pouvez finir par adapter votre application pour qu’elle fonctionne dans les limites de la plate-forme.

Utilisation des deux plates-formes

Les deux technologies n’existent pas dans des silos complètement séparés. Il est possible d’exécuter CloudFoundry au Kubernetes, un modèle dans lequel la plateforme lance des charges de travail dans le cluster Kubernetes sur lequel elle est elle-même déployée.

Dans Kubernetes, les conteneurs sont l’unité de base. Cela crée une attente selon laquelle vous accepterez la responsabilité de créer et de fournir des images de conteneur pour vos charges de travail. Le modèle au niveau de l’application de CloudFoundry est un concept supérieur qui comporte des couches d’abstractions supplémentaires pour créer et préparer des déploiements pour vous. Ce sont deux stratégies distinctes qui peuvent toutes deux ajouter de la valeur à l’expérience de développement en fonction de ce que vous créez.

Combiner les technologies peut être une approche viable qui vous permet d’accéder aux avantages uniques des deux. Vous pouvez utiliser CloudFoundry pour des applications simples qui fonctionnent avec une infrastructure standardisée. Les projets nécessitant un système plus personnalisé pourraient être déployés directement sur le cluster Kubernetes sous-jacent, libérant ainsi la flexibilité d’une infrastructure autogérée.

Conclusion

CloudFoundry et Kubernetes sont deux plates-formes cloud natives en lice pour attirer l’attention des développeurs et des équipes d’exploitation. Ce que vous devez choisir dépend de l’application que vous créez, du degré de contrôle manuel que vous souhaitez sur votre infrastructure et de vos objectifs à long terme pour votre service.

CloudFoundry est un excellent moyen de déployer rapidement n’importe quelle application sans avoir à penser aux composants de l’infrastructure. La plupart des applications « fonctionnent simplement » après un seul cf push, réduisant considérablement le temps de configuration initiale et la courbe d’apprentissage par rapport à Kubernetes. Vous n’avez pas besoin de penser à maintenir l’infrastructure au fil du temps ou à mettre à jour des éléments de votre pile : si votre code source se construit avec succès, il peut être déployé sur CloudFoundry.

Kubernetes vous rapproche de votre infrastructure. Vous êtes responsable de la cartographie de l’architecture de votre système et de la détermination des composants dont vous avez besoin pour un déploiement réussi. Cela prend du temps et signifie que vous devez apprendre les concepts et les abstractions de Kubernetes avant de pouvoir commencer. L’avantage est une flexibilité accrue et la possibilité de créer une infrastructure qui correspond plus précisément aux exigences de votre application.

CloudFoundry est le meilleur lorsque vous voulez le plus haut niveau d’automatisation et une conception avisée. Il facilite les déploiements rapides de grandes applications de manière cohérente et reproductible. Les applications CloudFoundry nécessitent relativement peu de maintenance au fil du temps, ce qui leur permet d’être gérées par des équipes d’exploitation plus petites. À l’inverse, Kubernetes est une exigence de maintenance plus lourde, mais est devenu la norme pour l’exécution de systèmes fortement conteneurisés en production. C’est le bon choix lorsque vous avez besoin de personnalisation, de flexibilité et d’une visibilité claire sur les composants de votre infrastructure.