De nombreux ingénieurs se perdent dans les services d’Azure pour l’exécution de conteneurs. En commençant par les services de conteneur Azure de base, le fournisseur de cloud a rapidement développé d’autres options comme AKS et Azure Container Apps pour donner aux utilisateurs encore plus d’options sur où et comment exécuter des conteneurs.
Un grand nombre de solutions de conteneur en tant que service proposées par Azure répondent aux besoins des entreprises qui cherchent à déplacer des applications monolithiques héritées vers le cloud et les conteneurs, réduisant ainsi la complexité du déploiement et de la gestion des applications en même temps. Mais l’offre d’Azure va bien au-delà.
Vous pouvez trouver de nombreuses informations facilement accessibles sur les offres de services Azure pour l’exécution de conteneurs. Mais il n’y a pas beaucoup de comparaisons directes en termes de prix. À la fin de l’article, nous avons ajouté un tableau de prix normalisés en fonction des ressources de calcul. De cette façon, vous pouvez comparer ces services comme des pommes avec des pommes. Mais d’abord, passons en revue les fonctionnalités de haut niveau de chaque service.
Liste des services de calcul Azure où vous pouvez exécuter des conteneurs
L’offre d’Azure est si large qu’il est facile de se perdre rapidement dans toutes les options disponibles. Pour le calcul, Azure a préparé une répartition pratique de tous les modèles d’hébergement pour les ressources sur lesquelles votre application s’exécute. (1)
Pour exécuter un conteneur sur Azure, vous pouvez choisir parmi les services suivants :
- Machines virtuelles Azure — déployer et gérer des machines virtuelles au sein d’un réseau virtuel Azure. Cette option doit être utilisée en dernier recours s’il n’y a pas d’autre moyen d’atteindre le niveau de personnalisation souhaité. Cela nécessitera de gérer une complexité supplémentaire et de contourner la gestion d’une machine virtuelle par vous-même.
- Service d’applications Azure – un service géré pratique pour héberger toutes sortes d’applications Web, de backends d’applications mobiles, d’API RESTful ou de processus d’automatisation métier.
- Fonctions Azure — il s’agit d’un service géré de fonction en tant que service (FaaS), un choix populaire pour les architectures sans serveur.
- Service Azure Kubernetes — AKS est un service Kubernetes géré pour l’exécution d’applications conteneurisées avec des fonctionnalités d’orchestration avancées et hautement personnalisables.
- Azure Red Hat OpenShift – encore une autre saveur de Kubernetes dans Azure. Red Hat OpenShift offre des fonctionnalités de sécurité et d’observabilité supplémentaires prêtes à l’emploi, mais au prix d’un prix plus élevé.
- Applications de conteneur Azure — ce service géré a été développé sur Kubernetes pour aider les développeurs à simplifier le déploiement d’applications conteneurisées sans se soucier de l’orchestration ou de l’infrastructure.
- Instances de conteneur Azure – un service efficace mais assez basique pour exécuter des conteneurs dans Azure. Vous n’avez pas besoin de vous lancer dans le provisionnement de machines virtuelles ou d’adopter un service de niveau supérieur.
- Applications Azure Spring – un service géré créé et optimisé pour l’hébergement des applications Spring Boot de Java.
- Structure de services Azure — une plate-forme pour les systèmes distribués qui peut s’exécuter dans de nombreux environnements, qu’il s’agisse d’Azure ou sur site. Il a été développé en tant que plate-forme d’orchestration personnalisée Azure bien avant que Kubernetes ne se généralise.
- Lot azur — un service géré pour les applications de calcul parallèle et à haute performance (HPC) à grande échelle. Comme son nom l’indique, il convient principalement aux tâches planifiées.
Présentation des options d’hébergement des conteneurs Azure
Machine virtuelle (c.-à-d. Exécution autonome de conteneurs)
Vous pouvez adopter une approche DIY et provisionner une machine virtuelle Azure, y installer un environnement d’exécution de conteneur et y exécuter vos conteneurs. Mais vous devrez vous occuper de toutes les responsabilités liées à la configuration, à la gestion et à la maintenance.
Opter pour un service géré est plus logique, à moins que vous n’ayez besoin un contrôle total sur le système d’exploitation sous-jacent ou si vous envisagez de personnaliser des éléments d’une manière qui n’est prise en charge par aucun des services PaaS d’Azure. L’exécution d’une machine virtuelle par vous-même doit être utilisée comme le dernier outil de la boîte.
Service d’applications Azure
L’hébergement de conteneurs d’App Service prend principalement en charge les applications Web ou les API. Si c’est votre cas et que vous pouvez le faire fonctionner sans orchestration complexe, cela peut être une bonne option. Vous n’avez pas besoin de gérer autant de gestion et d’obtenir de nombreuses fonctionnalités en échange.
Mais si votre charge de travail est autre chose qu’une application Web ou une API, vous feriez mieux d’utiliser un service différent. App Service ne vous permet pas d’exposer votre service sur des ports ou un trafic différent de HTTP(S). Le service est également un mauvais choix si vous vous attendez à un éclatement à grande échelle.
En termes de prix, App Service n’est qu’un peu plus cher que les machines virtuelles autonomes. Mais ses plans de base et standard ne prennent en charge que les conteneurs Linux. Si vous envisagez d’exécuter Windows, vous aurez besoin du plan Premium V3, qui peut coûter assez cher.
Fonctions Azure
Si vous avez des charges de travail sans serveur basées sur des fonctions ou de courte durée et que vous souhaitez utiliser des conteneurs pour les développer et les déployer, Azure Functions est un excellent choix. Vous obtiendrez toutes les fonctionnalités telles que les intégrations vNet, les déclencheurs et les liaisons.
Cependant, si votre application ne s’intègre pas vraiment dans l’univers sans serveur, il ne sert à rien de choisir Azure Functions.
Qu’en est-il du prix d’Azure Functions ? Les conteneurs personnalisés finissent souvent par nécessiter une prime plus chère ou des niveaux de consommation permanents qui ne manqueront pas d’augmenter vos dépenses. C’est la solution la plus coûteuse lorsque l’on compare le coût des ressources par temps d’exécution. Mais vous n’êtes facturé que pour ce que vous exécutez. Excellente optimisation des coûts lors de l’exécution de demandes peu fréquentes, mais devient extrêmement coûteuse lorsque l’entreprise se développe. Ce comportement a pris de nombreuses personnes au dépourvu
Service Azure Kubernetes (AKS)
Il s’agit du service Kubernetes entièrement géré d’Azure, où vous pouvez toujours personnaliser les machines sur lesquelles vos charges de travail s’exécutent. Un excellent choix pour les conteneurs qui nécessitent une orchestration complète ou qui utilisent des fonctionnalités avancées de Kubernetes.
Cependant, vous avez encore besoin de connaître votre chemin autour des K8 et comment fonctionne le déploiement d’applications sur ce service. Donc, si vous visez à exécuter quelques conteneurs, AKS apportera trop de complexité et de frais généraux. Choisissez plutôt une offre Azure PaaS, comme Azure Container Apps.
Qu’en est-il de la tarification AKS ? La solution coûte autant que les machines virtuelles sur lesquelles vos conteneurs s’exécutent, mais notez qu’un espace est réservé à Kubelet s’exécutant sur chaque nœud.
Azure Red Hat Openshift (ARO)
ARO vous offre un tas de services de gestion et d’intégration supplémentaires en plus de Kubernetes. De plus, il est entièrement intégré à l’écosystème RedHat/IBM. Si vous pouviez les utiliser, super – ARO est votre choix. Si vous ne le faites pas, restez fidèle à un service comme Azure Kubernetes Service.
Il s’agit d’une option coûteuse car vous devez compter dans les coûts du maître, des nœuds d’infrastructure supplémentaires et des licences. Reste que le coût de ce service est justifié pour les entreprises qui regardent les bénéfices supplémentaires :
- Pile d’observabilité gérée prête à l’emploi. Il s’exécute sur les nœuds d’infrastructure susmentionnés. Qui sont automatiquement mis à l’échelle si/quand le cluster grandit.
- Sécurité avancée et gestion des utilisateurs. C’est un environnement plus strict par rapport aux valeurs par défaut de Kubernetes pour tout autoriser au départ.
- La gestion des clusters est abstraite par une couche d’orchestration OpenShift supplémentaire. Il empêche l’accès direct à l’API Kubernetes, réduisant ainsi les possibilités de ce qui pourrait y être personnalisé. C’est un avantage et un inconvénient à la fois, car vous pouvez en faire moins et casser moins aussi.
- Sécurité de niveau entreprise – vous bénéficiez d’une conformité, d’opérations et d’une sécurité optimales avec un SLA de 99,95 % et de nombreuses certifications (PCI DSS, ISO 27001, SOC 2 Type II, etc.).
Applications de conteneur Azure (ACA)
Ce service a été conçu pour offrir les mêmes avantages que AKS mais avec moins de complexité à gérer. Si vous avez besoin d’un orchestrateur et qu’ACA possède les fonctionnalités dont vous avez besoin, allez-y. Vous supprimerez un grand nombre de tâches de gestion et de maintenance de votre emploi du temps. Cela devrait être la première option à examiner si la complexité de Kubernetes n’est pas requise.
Le service est également un bon choix pour les applications qui évoluent de manière dynamique, car il prend en charge la mise à l’échelle HTTP et KEDA, ainsi que la mise à l’échelle à zéro. Si vous voulez plus de contrôle ou si vous avez besoin d’une fonctionnalité qu’ACA n’a pas – AKS est votre prochain pari.
Qu’en est-il des coûts ? ACA vous facture par durée d’exécution du conteneur au lieu de la tarification horaire des machines virtuelles sur lesquelles votre conteneur s’exécute. Comme vous pouvez le voir dans le tableau ci-dessous, cela peut coûter cher, mais vous utiliseriez en fait toutes ces ressources, alors que, dans Kubernetes, votre cluster pourrait fonctionner à moitié vide s’il n’est pas configuré correctement.
Instances de conteneur Azure (ACI)
Cette solution fonctionne bien si vous avez juste besoin d’exécuter un conteneur et pas grand-chose d’autre. L’ACI est également utile pour exécuter de nombreuses instances du même conteneur ou pour augmenter dynamiquement le nombre de conteneurs utilisés. Il est logique de choisir ACI plutôt que d’autres services si vous avez une charge de travail basée sur les tâches qui s’exécute pendant une durée limitée – ou un service à la demande.
Notez qu’ACI n’est pas un orchestrateur. Si vos conteneurs nécessitent une orchestration un peu plus compliquée ou si vous souhaitez avoir plus de contrôle sur le matériel sous-jacent, ACI n’est pas un bon choix. Il en va de même pour des scénarios tels que la mise en réseau privée de conteneur à conteneur.
Une autre limitation est la taille du conteneur. Si vous avez besoin de conteneurs de plus de 4 cœurs et de 16 Go de RAM, ACI ne peut pas vous aider. Un autre problème concerne les images de conteneur volumineuses – si vous en avez, attendez-vous à un temps de démarrage lent – car ACU doit télécharger l’image de conteneur à chaque exécution.
Qu’en est-il de la tarification ? Comme vous pouvez le voir dans le tableau ci-dessous, ACI est légèrement plus cher qu’une VM analogue.
Applications de printemps
Un service entièrement géré pour les développeurs Spring, qui les aide à gérer le cycle de vie des applications Spring Boot. Choisir ce service serait un bon choix pour migrer un projet Spring d’une infrastructure auto-hébergée vers le cloud car cela ne nécessiterait pas beaucoup de dépenses d’ingénierie supplémentaires pour rendre les applications prêtes pour le cloud.
Spring Apps comprend la surveillance et les diagnostics, la gestion de la configuration, la découverte de services, l’intégration CI/CD et les déploiements bleu-vert. Le service est également livré avec son ingénierie, son exploitation et son intégration conjointes de Microsoft et VMware.
Structure de services
Ce…