AWS Lambda vs Amazon EC2 : lequel choisir ?
Amazon est l’un des leaders dans la fourniture de services cloud diversifiés, avec plusieurs dizaines de services à son actif, et ce chiffre ne cesse d’augmenter. Amazon EC2 est l’un des services Amazon les plus populaires. Il constitue l’élément principal de la plateforme de cloud computing Amazon présentée en 2006. Amazon EC2 est aujourd’hui largement utilisé, mais la popularité d’un autre service Amazon appelé Lambda (lancé en 2014) est également en pleine croissance. L’article publié aujourd’hui sur notre blog compare les plateformes AWS Lambda et EC2 afin de vous aider à faire le bon choix pour votre environnement.
Qu’est-ce qu’AWS EC2 ?
AWS EC2 (Amazon Web Services Elastic Compute Cloud) est un service qui permet d’utiliser des instances Amazon EC2 dans le cloud et offre une grande évolutivité. Vous pouvez modifier l’espace disque, les performances du processeur, la mémoire, etc. à tout moment. Vous pouvez sélectionner l’image de base avec le système d’exploitation (OS) préinstallé nécessaire, 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 pour 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. La catégorie de service Web AWS EC2 est connue sous le nom d’Infrastructure as a Service (IaaS). AWS EC2 peut être utilisé pour l’hébergement cloud : vous pouvez effectuer le déploiement de serveurs sous forme de machines virtuelles (instances) dans le cloud.
Qu’est-ce qu’AWS Lambda ?
AWS Lambda est une plateforme informatique 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 et un environnement pour exécuter une application que vous avez écrite. Il 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 les applications dans le cloud lorsque cela est nécessaire, sans vous soucier de la gestion du serveur et de la configuration de l’environnement. De cette façon, vous pouvez vous concentrer sur votre application, et non sur la gestion du serveur. C’est pourquoi AWS Lambda est qualifié de « sans serveur ».Un événement après lequel votre application est exécutée peut être le téléchargement d’un fichier vers le compartiment Amazon S3, la modification de tables DynamoDB, la réception d’une requête HTTP vers le service API Gateway, etc. Après avoir configuré une fonction à exécuter lorsqu’un événement se produit, votre application sera exécutée automatiquement après chaque nouvel événement. En ce qui concerne la classification, Lambda est une implémentation de Function as a Service (FaaS) par Amazon. Dans le tableau ci-dessous, vous pouvez voir le niveau de gestion pour chaque type de service à partir de l’utilisation de serveurs physiques et les comparer. Les niveaux les plus bas (gestion des utilisateurs requise) sont indiqués en vert et les niveaux supérieurs (gestion des fournisseurs fournie) sont indiqués en bleu. Ainsi, lorsque vous utilisez des serveurs physiques, vous pouvez gérer le matériel et 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 d’être exécutée. Lorsque vous utilisez une 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 (fournisseurs de services gérés). Le Saas (Software as a Service), mentionné à titre comparatif dans le tableau, vous permet uniquement d’utiliser des applications prêtes à l’emploi (applications créées par des fournisseurs) dans le cloud par un client léger ou par 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é lors de l’utilisation de ce service. Les cas d’utilisation les plus courants d’AWS EC2 sont les suivants :
- Hébergement de sites web
- Développement et test d’applications ou d’environnements complexes
- Calcul haute performances
- Reprise après sinistre
Cas d’utilisation généraux d’AWS Lambda :
- Automatisation des tâches
- Traitement des objets téléchargés vers Amazon S3
- Analyse des journaux en temps réel
- Filtrage et transformation des données en temps réel
Prenons un exemple particulier. Imaginez que votre site Web utilise un compartiment Amazon S3 pour stocker le contenu du site, notamment des images, des vidéos, des fichiers audio, etc. Lorsqu’un nouveau fichier image ou vidéo est téléchargé, vous devez créer une image d’aperçu pour votre page Web qui servira de lien vers le fichier image ou vidéo de taille réelle. Créer manuellement des images d’aperçu peut être une tâche fastidieuse et chronophage. Dans ce cas, vous pouvez créer une fonction Lambda qui redimensionne automatiquement l’image en fonction de la photo téléchargée, renomme cette image et stocke l’image cible dans le répertoire approprié. Vous pouvez configurer la fonction Lambda pour qu’elle s’exécute immédiatement après le téléchargement du fichier image original 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 (VMs) 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 travailler 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 installé et créer votre image Amazon Machine Image (AMI) personnalisée. Le service cloud EC2 offre une évolutivité automatique et un équilibrage de charge. Les instances EC2 peuvent travailler conjointement 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 qui est transparent 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 le conteneur est exécuté (vous ne savez rien à leur sujet, 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 les résultats, ceux-ci doivent être conservés dans un 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 fonctionnel et un gestionnaire. Les déclencheurs sont des activateurs Lambda. Lambda est une fonction qui est exécutée par des requêtes from déclencheurs. Liste complète des déclencheurs disponibles :
- Passerelle API
- AWS IoT
- Kit de compétences Alexa
- Alexa Maison intelligente
- Équilibreur de charge d’applications
- CloudFront
- Événements CloudWatch
- Journaux CloudWatch
- CodeCommit
- Déclencheur Cognito Sync
- DynamoDB
- Kinesis
- S3
- SNS
- SQS
API Gateway est un service spécial 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 d’instantanés est disponible pour les volumes EBS (Elastic Block Storage) des instances EC2 d’AWS. 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 les charges de travail critiques, par exemple les bases de données qui utilisent plusieurs volumes EBS.. 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 téléchargée, puis ajouter des alias qui renvoient à la version de code appropriée. Chaque numéro de version commence à partir de 1 et augmente progressivement. Vous pouvez classer les fonctions Lambda en alpha, bêta et production, par exemple. Le nom de ressource Amazon est attribué à chaque version de la fonction Lambda lors de sa publication et ne peut être modifié ultérieurement.
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 Amazon EC2. Amazon fournit un pare-feu VPC (Virtual Private Cloud) pour contrôler le trafic et garantir la sécurité des instances Amazon 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 prenne un instantané avant d’installer un correctif ou 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.. Il existe des autorisations pour les services AWS auxquels 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 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 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 avec une clé KMS. Lorsque vous créez une fonction Lambda, une clé de chiffrement par défaut est générée. Cependant, il est recommandé de créer votre propre clé KMS. Par rapport 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’avantage de l’utilisation des fonctions Lambda en termes de sécurité.
AWS EC2 vs Lambda : Performances et disponibilité
EC2. Après avoir mis sous tension une instance EC2, celle-ci fonctionne jusqu’à ce que vous l’arrêtiez manuellement ou que vous planifiiez une tâche d’arrêt. Lorsqu’une instance EC2 est en cours d’exécution, une application est exécutée presque instantanément sur cette instance. Vous pouvez exécuter autant d’applications que vous le souhaitez simultanément si les performances de votre instance EC2 le permettent. L’exécution d’applications sur des instances EC2 est une bonne solution lorsque les applications doivent être exécutées régulièrement tout au long de la journée.. Une fonction Lambda est toujours disponible, mais elle ne fonctionne 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 à longue durée d’exécution dans AWS Lambda. Si vous devez exécuter des applications qui nécessitent plus de 900 secondes pour s’exécuter correctement ou des applications dont le temps 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 égale à 3008 Mo. Entre 1000 et 3000 instances Lambda peuvent être exécutées simultanément, selon la région. Contactez le support AWS si vous souhaitez exécuter plusieurs 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 exécutées sur des instances EC2 qui ne présentent pas ce type de délai. 100 ms, ce n’est pas long, mais pour certains types d’applications, ce délai peut être critique. Si votre application doit télécharger certaines données from un compartiment Amazon S3, un délai supplémentaire de 1 à 3 secondes peut être nécessaire avant l’exécution de l’application. Gardez à l’esprit ce délai lorsque vous prévoyez d’utiliser AWS Lambda pour exécuter des applications. Le temps de démarrage à froid est un inconvénient des fonctions Lambda. La latence se produit lorsqu’une fonction n’est pas exécutée pendant une période prolongée et qu’il faut 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 être une bonne solution lorsque vous avez des charges de travail irrégulières et que les applications doivent être exécutées à différents moments du jour, avec de longues pauses entre les exécutions.
AWS Lambda vs EC2 : modèle tarifaire
Les services cloud EC2 et Lambda fonctionnent tous deux selon le principe du paiement à l’utilisation. Cependant, examinons les détails et les différences.EC2. Vous payez pour le temps pendant lequel votre instance AWS EC2 est en cours d’exécution, que la fonction/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ée par l’instance EC2. Lorsque votre fonction/application doit être 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 rationnelle financièrement.. Vous payez pour un certain nombre d’exécutions d’applications et le temps nécessaire pour terminer l’exécution. Le prix par seconde d’exécution d’applications dépend de la quantité de mémoire allouée à celles-ci et s’élève à 0,00001667 $ par gigaoctet-seconde. Le temps d’exécution de l’application est compté from le démarrage de l’application jusqu’au retour du résultat ou jusqu’à l’arrêt après expiration du délai. Temps est arrondi au nombre multiple de 100 ms le plus proche. Lorsque vous avez besoin d’une disponibilité à la demande, le prix d’utilisation d’AWS Lambda pour exécuter des fonctions/applications peut être plus avantageux.
Conclusion
AWS EC2 est un service qui représente l’infrastructure cloud traditionnelle (IaaS) et vous permet d’exécuter des instances EC2 en tant que VMs, de configurer des environnements et d’exécuter des applications personnalisées. AWS Lambda est la mise en œuvre de Function as a Service 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 l’activation d’un déclencheur d’événement. Lorsque vous utilisez AWS Lambda, vous disposez d’une fonction évolutive, compacte et peu coûteuse avec contrôle de version. Vous pouvez vous concentrer sur l’écriture de code, et non sur la configuration de l’infrastructure. Si vous avez calculé que votre application passe beaucoup de temps inactif sur une instance EC2 qui fonctionne toujours, envisagez d’utiliser AWS Lambda, qui vous permet de ne pas payer pour le temps d’inactivité s’il n’y a pas de demandes d’exécution d’une application. Si votre application fait l’objet d’un nombre élevé de requêtes régulières, il peut être préférable de procéder à son déploiement sur une instance EC2 qui fonctionne toujours. AWS EC2 est satisfaisant pour exécuter des applications hautes performances, des applications à exécution longue et les applications qui ne doivent pas présenter de retard au démarrage. Si vous utilisez des instances AWS EC2, n’oubliez pas de les sauvergarder pour éviter de perdre vos données. NAKIVO Backup & Replication est une solution tout-en-un de protection des données qui peut protéger les instances EC2 en plus des machines virtuelles VMware vSphere, Hyper-V et des serveurs physiques.