Charges de travail .NET sur AWS App Runner

MODULE 1

Module 1 : Conteneurs et calcul sans serveur sur AWS

 MODULE D'APPRENTISSAGE

Présentation

AWS App Runner est un service de calcul AWS entièrement géré qui permet aux développeurs de déployer facilement et rapidement des applications web et des API, à grande échelle et sans aucune expérience préalable en matière d'infrastructure.

Objectifs d'apprentissage

Dans ce module, vous allez :

  • En savoir plus sur les conteneurs et la technologie sans serveur.
  • Étudier les services de calcul AWS qui prennent en charge les conteneurs et les solutions sans serveur.
  • Découvrir comment déterminer si AWS App Runner convient à vos charges de travail.

Deux thèmes populaires aujourd'hui sont les conteneurs et le sans serveur. Les conteneurs facilitent la gestion de votre infrastructure sous-jacente, que ce soit sur site ou dans le cloud. Près de 80 % de tous les conteneurs dans le cloud fonctionnent aujourd'hui sur AWS. Le sans serveur gère l'infrastructure pour vous, ce qui permet à votre équipe de se concentrer sur les priorités de l'entreprise. AWS fournit de nombreux services pour les conteneurs et les services sans serveur, et le choix de celui qui convient à votre cas d'utilisation peut être déterminé après avoir examiné certaines considérations clés.

 Durée

30 minutes

Conteneurs

Ne serait-il pas agréable de regrouper votre application, ainsi que sa configuration, son environnement d'exécution et ses dépendances, dans un seul ensemble bien rangé ? C'est ce en quoi consistent les conteneurs : ils fournissent un moyen standard de joindre le code, les configurations et les dépendances de votre application en un seul objet. Ils partagent un système d'exploitation installé sur le serveur et s'exécutent en tant que processus à ressources isolées, assurant des déploiements rapides, fiables et cohérents, quel que soit l'environnement. 

Conteneurs comparés aux Machines virtuelles

Pour comprendre les conteneurs, parlons d'abord des machines virtuelles afin de pouvoir les comparer. À l'époque où les serveurs physiques dominaient, un serveur était un environnement unique. Il était livré avec une certaine quantité de mémoire, de stockage et de matériel réseau, exécutait un système d'exploitation spécifique et desservait une seule organisation. Puis la virtualisation est arrivée, qui a permis d'émuler un ordinateur dans un logiciel. Votre « serveur » peut désormais être une machine virtuelle (VM), adaptée au système d'exploitation et aux ressources dont votre organisation et votre application ont besoin. Une couche logicielle appelée hyperviseur crée, exécute et gère les machines virtuelles et les associe au matériel physique, avec une efficacité élevée. Le serveur physique peut exécuter plusieurs machines virtuelles pour plusieurs locataires, ce qui réduit les coûts d'infrastructure globaux. Aujourd'hui, les machines virtuelles occupent une place prépondérante dans l'entreprise et constituent la base du cloud computing.

Les conteneurs offrent certains des mêmes avantages que les machines virtuelles, mais ils sont plus portables et plus efficaces. Les conteneurs sont un moyen d'empaqueter une application avec ses dépendances, ses bibliothèques et ses paramètres. Plusieurs conteneurs partagent un système d'exploitation hôte et s'exécutent en tant que processus isolés. Alors que les machines virtuelles virtualisent le matériel et sont généralement mesurées en gigaoctets, les conteneurs virtualisent le système d'exploitation et sont généralement mesurés en mégaoctets. Cela les rend légers, portables et efficaces. Les conteneurs sont particulièrement adaptés aux microservices, avec une philosophie commune de composants logiciels légers et indépendants.

Plus que les machines virtuelles, les conteneurs modifient la façon dont les développeurs travaillent car ils sont conçus comme une unité de déploiement logiciel. Les développeurs créent des conteneurs et les déploient dans le cadre de leur travail. Les conteneurs et les machines virtuelles ne sont pas une question de choix. Vous pouvez souvent les utiliser ensemble, vous offrant ainsi le meilleur des deux mondes. Les nombreux services AWS qui prennent en charge les conteneurs les exécutent sur des machines virtuelles.

Les conteneurs partagent un système d'exploitation installé sur le serveur et s'exécutent en tant que processus à ressources isolées, assurant des déploiements rapides, fiables et cohérents, quel que soit l'environnement. Que vous déployiez localement sur votre ordinateur portable ou en production, l'expérience restera la même, mis à part les paramètres d'environnement et secrets.

Référence : Conteneurs AWS

Types de conteneurs

Plateforme Docker

Docker est une plateforme logicielle qui vous permet de concevoir, tester et déployer des applications rapidement. Docker définit un conteneur comme « un processus en environnement de test sur votre machine qui est isolé de tous les autres processus de la machine hôte. Cette isolation tire parti des espaces de noms du noyau et des groupes de contrôle, des fonctionnalités qui existent depuis longtemps sous Linux. Docker s'est efforcé de rendre ces fonctionnalités accessibles et faciles à utiliser. »

Les avantages de l'utilisation de Docker incluent une accélération du code d'expédition, la standardisation des opérations des applications, la fluidité du code et des économies grâce à une utilisation efficace des ressources. En moyenne, les utilisateurs de Docker envoient 7 fois plus souvent des logiciels que ceux qui ne l'utilisent pas. Vous pouvez standardiser vos opérations de déploiement, de dépannage et de restauration des conteneurs. Le passage des machines locales à la production est simple et direct. Vous pouvez exécuter davantage de code sur chaque serveur à l'aide de conteneurs, ce qui vous permet d'économiser de l'argent.

Les applications .NET modernes (écrites en .NET Core 3.1 ou .NET 5+) peuvent fonctionner sous Linux et sont compatibles avec les conteneurs Docker.

Les services AWS qui prennent en charge les conteneurs Docker incluent AWS App Runner, Amazon Elastic Container Service (ECS) et Amazon Elastic Kubernetes Service (EKS), AWS Fargate sur ECS ou EKS et AWS Lambda.

Référence : AWS Docker

Conteneurs Linux

Les conteneurs Docker Linux s'exécutent sur des hôtes Linux. Les applications .NET modernes (écrites en .NET Core 3.1 ou .NET 5+) peuvent s'exécuter sur des conteneurs Linux, mais pas sur les anciennes applications .NET Framework, qui nécessitent Windows.

Les services AWS qui prennent en charge les conteneurs Linux incluent AWS App Runner, Amazon Elastic Container Service (ECS), Amazon Elastic Kubernetes Service (EKS), AWS Fargate sur ECS ou EKS et AWS Lambda.

Conteneurs Windows

Les conteneurs Windows prennent en charge les systèmes d'exploitation Microsoft Windows. Les conteneurs Windows ne peuvent pas s'exécuter sur des instances de conteneurs Linux, et c'est également l'inverse qui se produit.

Les services AWS qui prennent en charge les conteneurs Windows incluent Amazon Elastic Container Service (ECS), Amazon ECS sur AWS Fargate et Amazon Kubernetes Service (EKS). AWS App Runner ne prend pas en charge les conteneurs Windows.

Référence : conteneurs Windows Amazon EC2

Avantages des conteneurs

Les conteneurs offrent de nombreux avantages concrets :

Légèreté

Les conteneurs sont des progiciels légers. Ils sont nettement plus petits que les machines virtuelles car ils n'incluent pas d'image du système d'exploitation client. Au lieu de cela, les conteneurs partagent un système d'exploitation avec leur hôte. C'est pourquoi les conteneurs démarrent généralement plus rapidement que les machines virtuelles.

Standardisé et portable

Les conteneurs fournissent un environnement logiciel cohérent et portable. Cela vous permet de standardiser les opérations de déploiement, d'investigation des problèmes et de restauration.

Déplacez-vous en douceur

Les conteneurs se déplacent en toute fluidité. Vous pouvez déplacer des applications conteneurisées des machines locales vers les environnements de production, et des environnements sur site vers le cloud. Les conteneurs peuvent simplifier la mise en œuvre des pipelines CI/CD grâce à leur cohérence et à leurs fonctionnalités de contrôle de version.

Expédiez plus rapidement

L'effet combiné de conteneurs légers et portables qui peuvent être déplacés facilement est l'agilité. Vous pouvez développer plus rapidement lorsque vous travaillez avec des conteneurs, car ils éliminent le temps consacré aux dépendances logicielles, à la configuration des environnements et à la résolution des différences entre les environnements. En moyenne, les utilisateurs de Docker envoient 7 fois plus souvent des logiciels.

Économies conséquentes

Les conteneurs vous permettent d'exécuter davantage de code sur chaque instance de serveur. Cela améliore l'utilisation et vous permet d'économiser de l'argent.

Références : AWS | Qu'est-ce que Docker ?, AWS | Conteneurs

Avantages des conteneurs sur AWS

AWS est une destination cloud populaire pour les conteneurs. Près de 80 % de tous les conteneurs dans le cloud fonctionnent aujourd'hui sur AWS. Outre les avantages inhérents aux conteneurs, vous bénéficiez également de ces avantages lorsque vous hébergez des conteneurs sur AWS. 

Sécuriser

AWS propose plus de 200 services et fonctionnalités clés en matière de sécurité, de conformité et de gouvernance. AWS gère vos conteneurs avec une isolation de sécurité renforcée et les dernières mises à jour de sécurité. Vous pouvez définir des autorisations de sécurité détaillées pour chaque conteneur.

Fiables

AWS fournit une infrastructure mondiale qui comprend 69 zones de disponibilité réparties dans 22 régions, ce qui vous permet de gérer des conteneurs dans le monde entier. Tous les services de conteneurs AWS sont soumis à un contrat de niveau de service (SLA).

Choix

AWS propose un large choix de services de conteneurs, notamment des services gérés et des services sans serveur. Cela inclut le service Amazon Elastic Container Registry (ECR), Amazon Elastic Container Service (ECS), Amazon Elastic Kubernetes service (EKS), AWS Fargate, Amazon Elastic Compute Cloud (EC2) et AWS App Runner.

AWS fournit également l'outil App2Container (A2C), qui aide à conteneuriser et à migrer les applications .NET et Java existantes.

Intégration à AWS

Les services de conteneurs AWS sont profondément intégrés à AWS. Cela permet à vos applications de conteneurs de tirer parti des services AWS pour la mise à l'échelle automatique, la mise en réseau, la sécurité et la surveillance. Vous bénéficiez de l'agilité des conteneurs combinée à l'élasticité et à la sécurité d'AWS.

Référence : AWS Containers Deep Dive

Cas d'utilisation pour les conteneurs

Voici quelques cas d'utilisation courants pour les conteneurs.

Microservices

Les microservices constituent une approche du développement logiciel, dans laquelle le logiciel se compose de petits services indépendants qui communiquent via des API bien définies. Ces services sont détenus par de petites équipes auto-contenues. Les architectures de microservices facilitent la mise à l'échelle des applications et accélèrent leur développement. Cela permet d'innover et d'accélérer les délais de mise sur le marché des nouvelles fonctionnalités. Les conteneurs constituent une stratégie populaire pour les microservices. Les applications monolithes peuvent être divisées en microservices, en composants indépendants dans des conteneurs.

Traitement par lots

Le traitement par lots et les tâches Extract-Transform-Load (ETL) conviennent parfaitement aux conteneurs. Ils peuvent être démarrés rapidement et exécutés selon un calendrier ou en réponse à des événements. Ils peuvent évoluer de manière dynamique pour répondre à la demande.

Machine Learning

Utiliser des conteneurs pour rapidement dimensionner des modèles de machine learning à des fins de formation et d'inférence et les exécuter à proximité de vos sources de données sur n'importe quelle plateforme.

Applications hybrides

Les conteneurs vous permettent de normaliser le déploiement du code, ce qui facilite la création de flux de travail pour les applications qui s'exécutent entre les environnements sur site et les environnements de cloud. 

Migration d'applications vers le cloud

Les conteneurs facilitent la migration « lift-and-shift » vers le cloud. Vous pouvez facilement regrouper des applications entières dans des conteneurs, ce qui vous permet de les déplacer vers le cloud sans modifier le code. Vous pouvez tirer parti de l'élasticité du cloud pour mettre les conteneurs à l'échelle.

Référence : AWS | Microservices

Sans serveur

Les technologies sans serveur vous permettent de créer et d'exécuter des applications sans avoir à vous soucier des serveurs. AWS propose des services gérés pour l'hébergement de code, la gestion des données et l'intégration d'applications qui ne nécessitent pas de gestion de serveurs. Ils sont dotés d'un autoscaling, d'une haute disponibilité intégrée et d'un modèle de facturation à l'utilisation. 

Avantages de la technologie sans serveur

Les technologies sans serveur vous permettent de vous concentrer sur votre application et vos clients au lieu de gérer l'infrastructure.

Supprimer les frais généraux opérationnels

Grâce aux technologies sans serveur, vous n'avez pas à gérer la gestion de l'infrastructure, le provisionnement des capacités et l'application de correctifs. Cette suppression des frais généraux opérationnels permet à vos équipes de publier rapidement, obtenir des commentaires et itérer pour une commercialisation plus rapide.

Mettre à l'échelle

Les technologies sans serveur peuvent passer automatiquement d'une demande nulle à une demande maximale. Cela vous permet de vous adapter rapidement aux besoins des clients.

Réduire vos coûts

Les technologies sans serveur peuvent passer automatiquement d'une demande nulle à une demande maximale. Cela vous permet de vous adapter aux besoins des clients plus rapidement que jamais.

Créez de meilleures applications plus facilement

Les technologies sans serveur ont intégré des intégrations à d'autres services AWS. Vous pouvez vous concentrer sur la création de votre application au lieu de la configurer.

Référence : AWS | Sans serveur

Cas d'utilisation de la technologie sans serveur

Les technologies sans serveur sont parfaitement adaptées aux cas d'utilisation courants suivants :

Applications web

Les applications Web, notamment les API Web et les microservices, sont facilement créées à l'aide de technologies sans serveur. Les services informatiques sans serveur s'adapteront automatiquement à votre trafic Web.

Traitement de données

Vous pouvez traiter des données à quasiment n'importe quelle échelle grâce à des technologies de données sans serveur telles qu'Amazon Simple Storage Service (S3), Amazon DynamoDB, Amazon Relational Database Service Proxy (RDS Proxy) et Amazon Aurora sans serveur.

Traitement par lots

Les technologies sans serveur peuvent exécuter des tâches par lots selon un calendrier ou en réponse à un événement.

Ingestion d'événements

Vous pouvez exécuter des fonctions sans serveur pour traiter, indexer ou analyser les données non structurées entrantes et appliquer des services de machine learning.

Services de calcul AWS pour conteneurs

Maintenant que vous comprenez les conteneurs et le sans serveur, examinons les services de calcul AWS qui prennent en charge les conteneurs, dont certains sont également compatibles avec le mode sans serveur. Tous ces services prennent en charge les conteneurs Docker Linux, et certains prennent également en charge les conteneurs Windows. Vous pouvez consulter la liste complète des services et outils AWS pour les conteneurs sur la page Conteneurs AWS. Vous n'avez pas besoin de connaître tous les détails de ces services, mais vous devez comprendre ce qui les différencie les uns des autres.

Registre des conteneurs : Amazon ECR

Amazon Elastic Container Registry (ECR) vous permet de stocker, de partager et de déployer des logiciels de conteneur, en public ou en privé. Vous transférez généralement vos conteneurs vers ECR, où ils se trouvent à proximité des services de calcul de conteneurs AWS tels qu'AWS App Runner, Amazon ECS ou Amazon EKS.

Orchestration de conteneurs : Amazon ECS, Amazon EKS et AWS Fargate

Ces services hébergent des conteneurs et les orchestrent, ce qui signifie qu'ils automatisent le provisionnement, le déploiement, la mise en réseau, la mise à l'échelle, la disponibilité et la gestion du cycle de vie des conteneurs.

Amazon Elastic Container Service (ECS) est un service d'orchestration de conteneurs entièrement géré qui vous permet de déployer, gérer et mettre à l'échelle des applications conteneurisées en toute simplicité. Vous pouvez exécuter des conteneurs hautement sécurisés, fiables et évolutifs sur ECS.

Amazon Elastic Kubernetes Service (EKS) est un service de conteneurs géré qui permet l'exécution et la mise à l'échelle des applications Kubernetes dans le cloud ou sur site. Kubernetes est un système open source conçu pour automatiser le déploiement, la mise à l'échelle et la gestion des applications conteneurisées. EKS est le moyen le plus sûr de démarrer, d'exécuter et de mettre à l'échelle Kubernetes.

AWS Fargate est un calcul sans serveur pour conteneurs. Amazon ECS et Amazon EKS sont tous deux disponibles sous forme sans serveur et selon un modèle de tarification différent lorsque vous les combinez avec AWS Fargate.

Outre la gestion des conteneurs dans le cloud, Amazon ECS et Amazon EKS peuvent également gérer des applications de conteneurs sur site, via les services Amazon ECS Anywhere ou Amazon EKS Anywhere.

Fonctions sans serveur : AWS Lambda

AWS Lambda est un service sans serveur piloté par les événements qui permet d'exécuter des fonctions. Il prend en charge les conteneurs.

Contrôle au niveau du serveur : instances Spot Amazon EC2 et EC2

Ces options permettent de mieux contrôler les détails de l'infrastructure, mais constituent également le moyen le moins géré d'exécuter des conteneurs sur AWS.

Amazon Elastic Compute Cloud (Amazon EC2) est un service Web qui fournit une capacité de calcul sécurisée et redimensionnable dans le cloud. Vous pouvez exécuter des conteneurs avec un contrôle au niveau du serveur sur EC2. Pour ce faire, vous allez allouer des instances EC2 et y installer Docker.

Si vos applications sont tolérantes aux pannes, vous pouvez les exécuter sur des instances Spot Amazon EC2, qui sont disponibles avec une réduction allant jusqu'à 90 %. Les instances Spot vous permettent de profiter des capacités EC2 non utilisées dans le cloud AWS. Pour utiliser des instances spot, votre application doit être interrompue. Vous pouvez envisager des instances spot pour l'analyse des données, les tâches par lots, le traitement en arrière-plan ou les tâches facultatives.

Applications Web simples : AWS Lightsail

AWS Lightsail convient aux applications conteneurisées simples que vous souhaitez exécuter pour un prix mensuel fixe. C'est un bon choix pour les étudiants, les petites entreprises et les start-ups qui disposent d'un petit site Web et d'une base de données pour être opérationnels dans le cloud. 

Entièrement géré : AWS App Runner

Enfin, nous sommes arrivés au sujet de ce cours, AWS App Runner. App Runner est un service entièrement géré qui permet aux développeurs de déployer facilement et rapidement des applications web et des API conteneurisées, à grande échelle et sans aucune expérience préalable en matière d'infrastructure. App Runner est également sans serveur, ce qui vous permet de bénéficier simultanément des avantages des conteneurs et du mode sans serveur. App Runner peut exécuter des charges de travail .NET modernes sur des conteneurs Linux.

Choisir un service de calcul AWS

Maintenant que nous avons examiné les services de calcul AWS pour les conteneurs, passons en revue quelques questions clés qui vous aideront à déterminer si AWS App Runner ou un autre service convient à votre application. Le tableau 1 présente les considérations relatives aux services AWS.

Tableau 1 : Tableau de décision relatif aux services de calcul des conteneurs AWS

Êtes-vous novice en matière de conteneurs ou avez-vous déjà de l'expérience avec les conteneurs ?

Si vous êtes novice en matière de conteneurs, pensez à AWS App Runner. Il s'agit de l'option de service la plus performante et ne nécessite aucune expérience préalable en matière d'infrastructure.

Avez-vous besoin de conteneurs Windows ?

Si vous souhaitez exécuter des applications .NET Framework héritées dans un conteneur, vous serez limité aux conteneurs Windows. Les services AWS qui prennent en charge les conteneurs Windows sont Amazon ECS, Amazon ECS utilisant AWS Fargate et Amazon EKS. Si vous utilisez un .NET moderne, vous pouvez utiliser des conteneurs Linux et n'importe quel service de calcul AWS prenant en charge les conteneurs.

L'orchestration de conteneurs est-elle un besoin actuel ou futur ?

Il existe une grande différence entre une application à conteneur unique et une combinaison de conteneurs qui doivent être orchestrés. Si vous disposez d'un ensemble complexe de conteneurs et que vous avez besoin d'une gestion à vie, pensez à Amazon ECS ou Amazon EKS. 

Le sans serveur vous convient-il ?

Si votre application correspond aux cas d'utilisation sans serveur et que vous êtes à l'aise avec l'idée de laisser AWS gérer l'infrastructure et le modèle de paiement sans serveur, envisagez ces options AWS Lambda, AWS App Runner ou AWS Fargate.

  1. Si votre application comprend des fonctions pilotées par des événements, vous pouvez utiliser AWS Lambda.
  2. Si vous avez besoin d'une orchestration, vous devez utiliser AWS Fargate avec Amazon ECS ou Amazon EKS.
  3. Si vous préférez un service entièrement géré, choisissez AWS App Runner.

Principaux points à retenir

Vous devez maintenant avoir une compréhension de base des conteneurs et du sans serveur et de leurs avantages respectifs. Vous avez découvert les différents services de calcul AWS et ce qui les différencie. Vous avez également appris quelles questions poser pour déterminer le service de calcul AWS adapté à une charge de travail.

Conclusion

Dans ce module, vous avez d'abord découvert les conteneurs : en quoi ils diffèrent des machines virtuelles, et les conteneurs Docker Linux par rapport aux conteneurs Windows. Ils sont légers, standardisés et portables, faciles à déplacer, vous permettent d'expédier plus rapidement et peuvent vous faire économiser de l'argent. Les conteneurs sur AWS sont sécurisés, fiables, pris en charge par un large éventail de services de conteneurs et profondément intégrés à AWS.

Ensuite, vous avez découvert les technologies sans serveur, qui vous permettent de créer des applications sans avoir à penser aux serveurs. Les avantages incluent la suppression des frais d'exploitation, l'autoscaling, la réduction des coûts et la création d'applications plus facile grâce à des intégrations intégrées à d'autres services AWS. Les cas d'utilisation sont les applications Web, le traitement des données, le traitement par lots et l'ingestion d'événements.

Vous avez découvert les services de calcul AWS pour les conteneurs et comment choisir un service de calcul. Vous avez appris qu'AWS App Runner est un service entièrement géré pour l'hébergement de conteneurs qui est également sans serveur.

Cette page vous a-t-elle été utile ?