AWS Lambda ou Amazon EC2 : lequel choisir ?
Amazon figure parmi les leaders dans la fourniture de services cloud variés, avec plusieurs dizaines de services à son actif, un nombre qui ne cesse d’augmenter. Amazon EC2 est l’un des services Amazon les plus populaires ; il constitue le pilier de la plateforme de cloud computing d’Amazon, lancée en 2006. Si Amazon EC2 est aujourd’hui largement utilisé, la popularité d’un autre service d’Amazon, appelé Lambda (lancé en 2014), ne cesse quant à elle de croître. L’article de blog d’aujourd’hui compare les plateformes AWS Lambda et EC2 afin de vous aider à faire le bon choix pour votre environnement.
< span data-sheets-value= »{ » 1 « :2, » 2 « : »
« } » data-sheets-userformat= »{ » 2 « :17089, » 3 « :{ » 1 « :0}, » 9 « :1, » 10 « :1, » 12 « :0, » 17 « :1} »>
</span>
Qu’est-ce qu’AWS EC2 ?
AWS EC2 (Amazon Web Services Elastic Compute Cloud) est un service qui permet d’utiliser des machines virtuelles, appelées « instances EC2 », dans le cloud et qui offre une grande évolutivité. Vous pouvez modifier l’espace disque, les performances du processeur, la mémoire, etc. à tout moment, selon vos besoins. Vous pouvez sélectionner une image de base avec le système d’exploitation (OS) de votre choix préinstallé (tel que Linux ou Windows), puis configurer la plupart des paramètres du système d’exploitation et installer des applications personnalisées. Vous disposez d’un accès root à vos instances Amazon EC2 et pouvez créer des utilisateurs supplémentaires. Gérez tout ce dont vous avez besoin et contrôlez entièrement vos instances EC2, y compris leur redémarrage et leur arrêt. Le service web AWS EC2 appartient à la catégorie « Infrastructure as a Service » (IaaS). AWS EC2 peut être utilisé pour l’hébergement cloud : vous pouvez déployer des serveurs sous forme de machines virtuelles (instances) dans le cloud.
Qu’est-ce qu’AWS Lambda ?
AWS Lambda est une plateforme de calcul qui vous permet d’exécuter un morceau de code écrit dans l’un des langages de programmation pris en charge (Java, JavaScript ou Python) lorsqu’un déclencheur lié à un événement est activé. Vous n’avez pas besoin de configurer un serveur virtuel ni un environnement pour exécuter une application que vous avez écrite. Il vous suffit d’insérer votre code de programme (appelé fonction Lambda dans ce cas) dans l’interface AWS Lambda, d’associer la fonction Lambda à l’événement et d’exécuter l’application dans le cloud lorsque cela est nécessaire, sans avoir à vous soucier de la gestion des serveurs ni de la configuration de l’environnement. De cette manière, vous pouvez vous concentrer sur votre application, et non sur la gestion des serveurs — c’est pourquoi AWS Lambda est qualifié de « sans serveur ».
Un événement déclenchant l’exécution de votre application peut être le téléchargement d’un fichier vers un compartiment Amazon S3, la modification de tables DynamoDB, la réception d’une requête HTTP vers le service API Gateway, etc. Une fois la fonction configurée pour s’exécuter après un événement, votre application sera exécutée automatiquement à chaque nouvel événement.
En termes de classification, Lambda est une implémentation du modèle « Function as a Service » (FaaS) proposée par Amazon. Le tableau ci-dessous vous permet de visualiser et de comparer les niveaux de gestion associés à chaque type de service, en partant de l’utilisation de serveurs physiques. Les niveaux les plus bas (gestion requise par l’utilisateur) sont indiqués en vert, tandis que les niveaux supérieurs (gestion assurée par le fournisseur) sont indiqués en bleu. Ainsi, lorsque vous utilisez des serveurs physiques, vous pouvez gérer le matériel ainsi que tous les niveaux supérieurs. Lorsque vous utilisez une infrastructure en tant que service (IaaS) telle qu’AWS EC2, vous pouvez gérer les systèmes d’exploitation sur les machines virtuelles fournies (instances EC2). Au niveau de la Plateforme en tant que service (PaaS), vous pouvez exécuter votre application, qui doit être compilée avant son exécution. Lorsque vous utilisez une solution de Fonction en tant que service (FaaS) telle qu’AWS Lambda, vous n’avez pas besoin de compiler votre application : il vous suffit d’insérer votre code dans l’interface fournie par le MSP (fournisseur de services gérés). Le Saas (Software as a Service), mentionné à titre de comparaison dans le tableau, vous permet uniquement d’utiliser des applications prêtes à l’emploi (développées par des fournisseurs) dans le cloud via un client léger ou un navigateur web.
AWS EC2 vs Lambda : cas d’utilisation
AWS EC2 offre un large éventail de cas d’utilisation, car presque tout peut être configuré lorsque vous utilisez ce service. Les cas d’utilisation les plus courants d’Amazon EC2 sont les suivants :
- Hébergement de sites web
- Développement et test d’applications ou d’environnements complexes
- Calcul haute performance
- Reprise après sinistre
Cas d’utilisation généraux d’AWS Lambda :
- Automatisation de tâches
- Traitement d’objets téléchargés sur Amazon S3
- Analyse des journaux en temps réel
- Filtrage et transformation des données en temps réel
Prenons un exemple concret. Imaginez que votre site web utilise un compartiment Amazon S3 pour stocker son contenu, notamment des images, des vidéos, des fichiers audio, etc. Lorsqu’une nouvelle image ou une nouvelle vidéo est mise en ligne, vous devez créer une image d’aperçu pour votre page web, qui servira de lien vers l’image ou la vidéo en taille réelle. Créer manuellement ces images d’aperçu peut s’avérer fastidieux et chronophage. Dans ce cas, vous pouvez créer une fonction Lambda capable de redimensionner automatiquement l’image à partir de celle qui a été mise en ligne, de la renommer et de stocker l’image cible dans le répertoire approprié. Vous pouvez configurer la fonction Lambda pour qu’elle s’exécute immédiatement après l’événement de mise en ligne du fichier image d’origine vers le compartiment Amazon S3 utilisé par votre site web.
AWS EC2 vs Lambda : principe de fonctionnement
EC2 . Comme vous vous en souvenez peut-être, lorsque vous utilisez AWS EC2, vous travaillez avec des machines virtuelles (VM) appelées « instances EC2 ». Vous pouvez ajouter du matériel virtuel (disques virtuels, interfaces réseau, processeurs, mémoire) à une instance EC2, ainsi que démarrer, arrêter et redémarrer une instance VM. Les instances EC2 peuvent fonctionner avec deux types de stockage : Elastic Block Storage (EBS) et les compartiments S3. Vous pouvez utiliser une image préconfigurée avec un système d’exploitation déjà installé et créer votre image Amazon Machine Image (AMI) personnalisée. Le service cloud EC2 assure l’évolutivité automatique et l’équilibrage de charge. Les instances EC2 peuvent fonctionner en association avec la plupart des autres services web Amazon, tels que S3, ECS, Route53, CloudWatch, etc. .
Lambda . Lorsque vous utilisez AWS Lambda, votre application (fonction Lambda) s’exécute dans un conteneur de manière transparente pour vous. Le conteneur contient du code et des bibliothèques. Les ressources sont fournies par Amazon en fonction des besoins de l’application, et l’évolutivité est automatique et transparente. Vous ne pouvez contrôler ni le conteneur exécutant votre application, ni l’instance EC2 sur laquelle ce conteneur s’exécute (vous n’en savez rien, car l’infrastructure sous-jacente n’est pas accessible aux utilisateurs d’Amazon Lambda). Reportez-vous au tableau ci-dessus.
AWS Lambda peut être considéré comme un framework d’EC2 Container Service (ECS) qui utilise des conteneurs pour exécuter un morceau de code représentant votre application. Le cycle de vie de chaque conteneur est court. La fonction Lambda en cours d’exécution n’enregistre pas son état. Si vous souhaitez enregistrer des résultats, ceux-ci doivent être conservés dans un système de stockage de données, par exemple dans un compartiment Amazon S3. Il est possible de configurer un réseau virtuel pour une fonction Lambda, par exemple pour se connecter à Amazon RDS (Amazon Relational Database Service). Lambda se compose de plusieurs éléments : des couches, un environnement de fonction et un gestionnaire. Les déclencheurs sont les éléments qui activent Lambda. Lambda est une fonction unique qui est exécutée en réponse à des requêtes provenant de déclencheurs.
Liste complète des déclencheurs disponibles :
- API Gateway
- AWS IoT
- Alexa Skills Kit
- Alexa Smart Home
- Application Load Balancer
- CloudFront
- CloudWatch Événements
- CloudWatch Logs
- CodeCommit
- Cognito Sync Trigger
- DynamoDB
- Kinesis
- S3
- SNS
- SQS
API Gateway est un service spécialisé qui permet aux développeurs de connecter diverses applications non-AWS à des applications AWS et à d’autres ressources.
AWS EC2 vs Lambda : versions/instantanés
EC2 . Un système complexe de instantanés est disponible pour les volumes EBS (Elastic Block Storage) des instances EC2. Vous pouvez créer des instantanés incrémentiels et revenir à l’état souhaité d’une instance EC2. Les instantanés multi-volumes peuvent être utilisés pour des Workloads critiques, par exemple des bases de données utilisant plusieurs volumes EBS.
Lambda . Un système de gestion des versions pratique est pris en charge pour une meilleure gestion des fonctions Lambda. Vous pouvez attribuer un numéro de version à chaque copie de code mise en ligne, puis ajouter des alias pointant vers la version de code appropriée. Chaque numéro de version commence à 1 et augmente de manière incrémentielle. Vous pouvez classer les fonctions Lambda en catégories telles que « alpha », « bêta » et « production », par exemple. Le nom de ressource Amazon (ARN) est attribué à chaque version d’une fonction Lambda lors de sa publication et ne peut pas être modifié par la suite.
AWS EC2 vs Lambda : Sécurité
EC2 . Vous devez prendre soin de vos instances EC2 et de tous les composants qu’elles contiennent. Vous pouvez configurer manuellement un pare-feu pour votre instance EC2 – Amazon fournit le pare-feu VPC (Virtual Private Cloud) pour contrôler le trafic et garantir la sécurité des instances EC2 dans le cloud. Vous pouvez installer et configurer manuellement un logiciel antivirus pour vos instances EC2, créer des rôles IAM, définir des autorisations, créer des groupes de sécurité, etc. AWS Systems Manager Patch Manager vous permet d’installer automatiquement les mises à jour du système d’exploitation et les correctifs de sécurité. Vous pouvez configurer AWS pour qu’il effectue un instantané avant l’installation d’un correctif ou d’une mise à jour afin d’éviter d’éventuels problèmes. Créez des paires de clés pour accéder aux instances EC2 si nécessaire. Vous devez accorder davantage d’attention à la sécurité lorsque vous utilisez AWS EC2 par rapport à AWS Lambda.
Lambda . Il existe des autorisations d’accès aux services AWS auxquelles Lambda a accès par défaut. Le rôle IAM sert à définir les services qui doivent être disponibles pour une fonction Lambda. Pour chaque fonction Lambda, vous devez configurer le rôle IAM au nom duquel la fonction Lambda sera lancée. Cela signifie qu’après avoir configuré le rôle IAM, vous pourrez connecter votre fonction Lambda aux services Amazon définis sans avoir à utiliser de clés ou d’autres paramètres d’autorisation.
Il est possible de configurer le chiffrement entre une fonction Lambda et S3, ainsi qu’entre une passerelle API et Lambda, à l’aide d’une clé KMS. Lorsque vous créez une fonction Lambda, une clé de chiffrement par défaut est générée. Il est toutefois recommandé de créer votre propre clé KMS.
Contrairement aux instances EC2, les fonctions Lambda ne nécessitent pas de mises à jour de sécurité ni de correctifs. Les conteneurs et les systèmes d’exploitation sous-jacents sont mis à jour automatiquement par Amazon. C’est là l’avantage des fonctions Lambda en termes de sécurité.
AWS EC2 vs Lambda : performances et disponibilité
EC2 . Une fois mise sous tension, une instance Amazon EC2 continue de fonctionner jusqu’à ce que vous l’arrêtiez manuellement ou que vous planifiez une tâche d’arrêt. Lorsqu’une instance EC2 est en cours d’exécution, une application s’exécute presque instantanément sur cette instance. Vous pouvez exécuter autant d’applications que vous le souhaitez simultanément, à condition que les performances de votre instance EC2 le permettent. L’exécution d’applications sur des instances EC2 constitue une bonne solution lorsque celles-ci doivent fonctionner régulièrement tout au long de la journée.
Lambda . Une fonction Lambda est toujours disponible, mais elle ne s’exécute pas en permanence. Par défaut, la fonction Lambda est inactive. Lorsqu’un déclencheur lié à un événement est activé, votre application (fonction Lambda) est lancée. La durée maximale d’exécution de la fonction Lambda (délai d’expiration) est limitée à 900 secondes (15 minutes). Il n’est donc pas recommandé d’exécuter des applications de longue durée sur AWS Lambda. Si vous devez exécuter des applications dont l’exécution complète nécessite plus de 900 secondes ou dont la durée d’exécution est variable, envisagez d’utiliser AWS EC2. Une autre limite pour une fonction Lambda en cours d’exécution est la quantité maximale de mémoire, qui est de 3 008 Mo.
Entre 1 000 et 3 000 instances Lambda peuvent être exécutées simultanément, selon la région. Contactez le support AWS si vous souhaitez exécuter davantage d’instances simultanément.
Le délai entre l’envoi d’une requête et l’exécution de l’application peut atteindre 100 millisecondes pour AWS Lambda, contrairement aux applications s’exécutant sur des instances EC2 qui ne présentent pas un tel délai. 100 ms ne représentent pas un temps considérable, mais pour certains types d’applications, ce délai peut s’avérer critique. Si votre application doit télécharger des données depuis un compartiment Amazon S3, un délai supplémentaire de 1 à 3 secondes peut être nécessaire avant l’exécution de l’application. Tenez compte de ce délai lorsque vous envisagez d’utiliser AWS Lambda pour exécuter des applications.
Le temps de démarrage à froid constitue un inconvénient des fonctions Lambda. Une latence survient lorsqu’une fonction n’a pas été exécutée pendant une période prolongée ; il faut alors du temps pour démarrer un conteneur et exécuter la fonction dans Amazon Cloud. L’utilisation d’AWS Lambda pour exécuter des applications peut constituer une bonne solution lorsque vos charges de travail sont irrégulières et que les applications doivent être exécutées à différents moments de la journée, avec de longues pauses entre chaque exécution.
AWS Lambda vs EC2 : modèle de tarification
Les services cloud EC2 et Lambda fonctionnent tous deux selon le principe du paiement à l’utilisation. Examinons toutefois les détails et les différences.
EC2 . Vous payez pour la durée d’exécution de votre instance AWS EC2, que la fonction ou l’application soit exécutée ou non. Le prix par heure dépend des performances du processeur, de la quantité de mémoire, des performances de la carte graphique et de la capacité de stockage utilisées par l’instance EC2. Lorsque vous avez besoin que votre fonction ou votre application soit toujours disponible en raison d’un nombre élevé de requêtes régulières, l’utilisation d’instances AWS EC2 peut s’avérer plus judicieuse d’un point de vue financier.
Lambda . Vous payez en fonction du nombre d’exécutions de l’application et du temps nécessaire pour mener à bien chaque exécution. Le prix par seconde d’exécution d’une application dépend de la quantité de mémoire allouée à celle-ci et s’élève à 0,00001667 $ par gigaoctet-seconde. La durée d’exécution de l’application est calculée depuis le démarrage de celle-ci jusqu’au renvoi du résultat ou jusqu’à l’arrêt en cas de dépassement du délai d’attente. Le temps est arrondi à la centaine de millisecondes supérieure. Lorsque vous avez besoin d’une disponibilité à la demande, le coût d’utilisation d’AWS Lambda pour exécuter des fonctions ou des applications peut s’avérer plus avantageux.
Conclusion
AWS EC2 est un service qui incarne l’infrastructure cloud traditionnelle (IaaS) et vous permet d’exécuter des instances EC2 sous forme de VMs, de configurer des environnements et d’exécuter des applications personnalisées.
AWS Lambda est la mise en œuvre du modèle « Function as a Service » (FaaS) par Amazon, qui vous permet d’exécuter votre application sans avoir à vous soucier de l’infrastructure sous-jacente. AWS Lambda vous offre une architecture sans serveur et vous permet d’exécuter un bout de code dans le cloud après le déclenchement d’un événement. En utilisant AWS Lambda, vous disposez d’une fonction évolutive, légère et peu coûteuse, avec un contrôle de version. Vous pouvez ainsi vous concentrer sur l’écriture du code, et non sur la configuration de l’infrastructure.
Si vous avez constaté que votre application passe beaucoup de temps en inactivité sur une instance EC2 toujours fonctionnant, envisagez d’utiliser AWS Lambda : vous n’aurez ainsi pas à payer pour ce temps d’inactivité lorsqu’aucune requête n’est envoyée pour exécuter l’application. En revanche, si le nombre de requêtes régulières pour exécuter votre application est élevé, il peut être préférable de réaliser le déploiement de celle-ci sur une instance EC2 toujours fonctionnant.
L’utilisation d’AWS EC2 est satisfaisante pour exécuter des applications hautes performances, des applications à exécution prolongée et celles qui ne doivent subir aucun retard au démarrage. Si vous utilisez des instances EC2, n’oubliez pas de les sauvergarder pour éviter toute perte de données. NAKIVO Backup & Replication est une solution de protection des données tout-en-un capable de protéger les instances EC2, ainsi que les machines virtuelles VMware vSphere, les machines virtuelles Hyper-V et les serveurs physiques.
