Cloud Run est une solution Serverless pour l’hébergement de containers

Cloud Run permet d’avoir des services hébergés dans des containers avec une approche serverless. Ce service, qui peut être catégorisé dans le CaaS (Container as a Service) a été dévoilé en avril 2019 au Google Cloud Next.

Source-based vs. container-based

Source-based signifie que ce qui est déployé est le code source. Le code est ensuite compilé par la solution de build l’infrastructure serverless. Les avantages de cette méthode sont la facilité et la rapidité d’utilisation.

Cloud Run est une approche basée sur les conteneurs (container-based). Cette approche est destinée aux équipes qui se concentrent sur le développement basé sur des conteneurs. L’idée est que les conteneurs assurent la séparation des tâches entre le développeur et la plate-forme sur laquelle le conteneur fonctionne.

Le développeur doit créer et exécuter un exécutable qui ouvre un port pour les requêtes HTTP. L’exécutable est opéré par un conteneur qui s’exécute sur la plate-forme. Le “contrat d’exécution” du conteneur est stable. Il n’est pas susceptible de changer au fil du temps. Ce contrat est matérialisé par un fichier Docker.

L’approche basée sur le conteneur est plus complexe que l’approche basée sur le source. Elle présente cependant un grand avantage : la garantie que ce qui est exécuté en production est conforme à ce qui a été testé. Cette garantie est possible parce que c’est l’équipe de développeurs qui a créé l’exécutable et non l’infrastructure serverless du fournisseur de cloud.

Cloud Run, le déploiement basé sur les conteneurs

Avec Cloud Run, un conteneur est envoyé et en retour une URL HTTPS est retournée. Les autres solutions serverless fonctionne avec un paradigme un peu différent.

En effet, pour AWS lambda, Cloud Functions, ou App Engine l’approche se base sur le code source : au lieu d’envoyer un container, ce qui est uploader sur la plateforme est le code, charge à la plateforme de compiler le code. Le déploiement proposé par Clour Run est plus fiable, plus portable.

Cloud Run comparé aux autres produits serverless de Google

Cloud Run propose une fonctionnement s’appyant sur les avancées récentes. Il offre une grande portabilité, une scalabilité importante et un système de prix intéressant. Il y a donc quelques avantages à utiliser Cloud Run par rapport à AppEngine.

Scalabilité de Cloud Run

Cloud Run propose une approche originale pour traiter les pics de charge. En effet la scalabité de Cloud Run s’appuie sur le nombre de requêtes qu’un conteneur doit traiter en parallèle. Ceci permet une approche plus pro-active.

Cloud Run est basé sur Knative et peut fonctionner en mode managé

Cloud Run est construit à partir de Knative, une surcouche open-source à Kubernetes pour les applications “serverless”. Cela permet de choisir d’exécuter los conteneurs soit entièrement gérés avec Cloud Run, soit dans un cluster Google Kubernetes Engine avec Cloud Run sur GKE.

Cloud Run est-il “serverless” ?

Faire fonctionner des conteneurs avec Cloud Run n’est pas tout à fait comparable à l’expérience PaaS fournie par les plates-formes “function-as-a-service” telles que Cloud Function ou App Engine. Cependant l’approche en est très proche.

Une “véritable” plate-forme serverless doit fournir une abstraction complète de l’infrastructure d’hébergement ainsi qu’une tarification à la carte. Le provisionnement doit être simple et immédiat. Il doit offrir une évolutivité automatique en fonction du nombre de demandes. Idéalement, une plate-forme serverless doit pouvoir descendre à zéro ressource consommée en l’absence de toute requête.

Avec ces principes, Google Cloud Run est très proche d’une véritable proposition “serverless”. Il permet aux utilisateurs de bénéficier d’une évolutivité automatique avec la possibilité de descendre jusqu’à zéro instance.

Les solutions Container Serverless sur AWS et Azure

Les principaux fournisseurs de cloud computing disposent chacun de leur offre container de type Serverless. Elles permettent toutes de faire fonctionner les conteneurs sans avoir à gérer l’infrastructure d’orchestration. Azure a été le premier avec Container Instances, Amazon propose AWS Fargate et Google propose Cloud Run.

Chacun de ces services offre une proposition assez similaire : faire fonctionner les conteneurs à la demande et les supprimer s’ils ne sont plus utilisés. La facturation est basée sur l’utilisation, qu’elle soit basée sur la mémoire, le temps CPU ou le nombre de requêtes. Ses solutions permettent de ne pas se soucier des détails liés à la construction et à la maintenance des nœuds et des clusters.

Cloud Run et Anthos

Il est aussi possible d’éxécuter des containers Cloud Run dans un cluster Anthos. Ceci permet d’étendre les possibilités de Cloud Run aux autres cloud providers (Amazon Web Services, Azure) ou à une infrastructure onPremise.

Liens intéressants