Coût et efficacité entre iFaaS et FaaS (AWS) dans la création d'applications sans serveur

Nov 25 2022
L'architecture sans serveur est une conception de système puissante qui permet aux développeurs de créer et d'exécuter du code sans gérer de serveurs et sans payer pour des services cloud inactifs. AWS est l'un des plus grands fournisseurs de services cloud, où vous pouvez créer un système sans serveur robuste.

L'architecture sans serveur est une conception de système puissante qui permet aux développeurs de créer et d'exécuter du code sans gérer de serveurs et sans payer pour des services cloud inactifs.

AWS est l'un des plus grands fournisseurs de services cloud, où vous pouvez créer un système sans serveur robuste. Cependant, il y a trois perspectives ci-dessous que nous aimerions aborder sur les différences entre Lolo Code (fonction d'intégration en tant que service) et AWS (fonction en tant que service) dans la création d'applications sans serveur.

  • Coût
  • Performance
  • Efficacité

Tarification AWS

AWS vous propose une approche de tarification à l'utilisation. En d'autres termes, vous paierez pour combien vous avez utilisé les ressources AWS.

Exemple de tarification AWS

Une API est utilisée dans une application Web sans serveur qui appelle Lambda pour renvoyer un contenu de page Web dynamique. Le site reçoit 10 000 pages chargées par minute. Chaque demande d'API est de 12 Ko et la réponse est de 46 Ko.

Ce sera un total de 432 millions de requêtes par mois.

Coûts mensuels = 418,8 USD (0,97 USD par million) * en coûts Amazon API Gateway (sans Lambda ni DynamoDB)

Tarification des codes Lolo

Lolo Code vous propose également un modèle de paiement à l'utilisation, mais c'est plus simple, vous payez le nombre d'événements que votre application doit traiter simultanément plutôt que le total des événements.

Vous pouvez souscrire à 1 Application avec 1 LCU (ou Replica) avec 256 Mo de mémoire et 0,125 cœurs (CPU) à partir de 9 euros par mois. Le niveau gratuit comprend deux applications avec 1 LCU chacune, mais vous oblige à utiliser l'application une fois par semaine pour la faire fonctionner. Si vous souhaitez augmenter vos répliques pour une application gratuite, le prix commence à 9 € chacune.

Exemple de tarification Code Lolo

En prenant le même exemple que ci-dessus pour API Gateway, nous avons effectué quelques calculs.

Si le site reçoit 10 000 pages chargées par minute et que chaque demande d'API est de 12 Ko et que la réponse est de 46 Ko, nous devons traiter 10 000 req/min pour une application Lolo. Cela nécessite 0,131 (cœurs) et 85 Mo de mémoire. Par conséquent, cela nécessite deux répliques à 9 € chacune, mais nous aurons encore de la place pour plus de demandes dans cette application. Le résultat est

Frais mensuels = 18 € de frais mensuels pour l'application Lolo.

Lolo pourrait être considéré comme une combinaison d'AWS Lambda et d'API Gateway. Vous pouvez également utiliser le magasin d'état de Lolo pour stocker le contenu dynamique de votre page Web. De cette façon, il n'y aurait pas de frais cachés. Le total que vous paieriez serait simplement de 18 € par mois.

Performance : Différences entre iFaaS et FaaS

AWS peut offrir tout ce dont vous avez besoin et vous pouvez concevoir une application à grande échelle avec redondance, évolutivité et haute disponibilité. D'autre part, vous devez bien connaître les systèmes de réseau et être familiarisé avec l'architecture AWS pour libérer son potentiel. Serverless a aussi ses inconvénients. L'un d'eux est le fameux "démarrage à froid".

Par exemple, votre application attendra pendant un certain temps jusqu'à ce qu'un conteneur soit prêt à exécuter du code. Cette demande prend plus de temps à traiter car une application sans serveur doit activer la fonction (c'est-à-dire télécharger le code, la bibliothèque, les modules/etc, et initialiser un environnement pour exécuter le code). Ce problème apparaît dans toutes les applications sans serveur, que ce soit dans Lolo Code ou AWS.

AWS

AWS s'est notoirement amélioré depuis la migration des flottes Lambda vers la technologie Firecracker en 2018. Cependant, comme la fonction doit encore tourner, les démarrages à froid prévaudront.

Dans AWS, vous pouvez réveiller Lambda avec un nombre minimum de conteneurs. Mais vous devrez payer un coût supplémentaire pour le faire fonctionner en continu.

Nous avons demandé à un utilisateur de faire un test * sur les démarrages différés d'AWS Lambda cet été (à l'aide d'AWS EU). Le résultat de l'expérience est ci-dessous.

+-----------+--------------------
|   time    | ms      
+-----------+--------------------
| 1 min     | 180 ms           
| 15 min    | 750 ms   
| 3h        | 1467 ms 
| 10h       | 2060 ms               
+-----------+--------------------

Les applications sur Lolo Code ont également le problème "Cold Start", mais votre application Lolo continue de fonctionner jusqu'à ce que vous l'arrêtiez. C'est-à-dire que puisque Lolo Code fonctionne avec des conteneurs, votre application fonctionnera toujours jusqu'à ce que vous l'arrêtiez. Essentiellement, vous ne devriez pas avoir à vous soucier des démarrages à froid.

Cependant, l'utilisateur d'en haut qui a fait le test sur AWS a fait exactement le même test dans Lolo Code. * Ses résultats sont présentés ci-dessous.

+-----------+--------------------
|   time    | ms      
+-----------+--------------------
| 1 min     | 172 ms           
| 15 min    | 210 ms   
| 3h        | 602 ms 
| 10h       | 890 ms               
+-----------+--------------------

Une autre chose à considérer est que si votre script s'exécute trop longtemps, AWS n'est peut-être pas le meilleur choix. Le délai d'expiration maximal d'AWS Lambda est de 900 secondes (15 minutes) alors que Lolo n'a pas de délai d'expiration maximal.

Efficacité : comment créer et gérer une application Serverless ?

La création d'API dans AWS et Lolo Code est simple. Cependant, il y a des différences.

AWS

Dans AWS, vous créez votre fonction Lambda et la connectez ensuite à un autre service, API Gateway, qui servira de déclencheur. Ici, vous avez une fonction anonyme qui se déclenche lorsque quelque chose se produit. C'est l'idéal même du FaaS, une fonction anonyme qui ne se déclenche que lorsqu'un événement se produit.

Comme la fonction est sans état, vous devrez récupérer des données ailleurs, dans ce cas, vous pouvez utiliser AWS DynamoDB pour stocker et récupérer des données.

L'architecture pour créer une API simple avec AWS Serverless

Cela ressemble à une conception évolutive et robuste, cependant, vous devez tenir compte de certains facteurs importants :

  • Comment gérer les changements de code logiciel ?
  • Comment déployer ou personnaliser votre application rapidement ?
  • Par où commencer à vérifier les services en cas de problèmes d'infra ?

Consultez un didacticiel complet sur la création d'une API HTTP avec Lambda, API Gateway et DynamoDB ici .

Code Lolo

Avec Lolo Code, vous pouvez ajouter un déclencheur HTTP, puis utiliser le magasin d'état intégré pour une base de données. Vous pouvez ajouter une nouvelle fonction brute pour agir comme votre lambda (pour suivre le cas d'utilisation exact ci-dessus).

Votre application Lolo peut ressembler à ceci.

Le code dans les blocs de code est simplement du code NodeJS () à l'exception du déclencheur HTTP qui est un déclencheur de modèle partagé par Lolo.

Vous déciderez ce qu'il y a dans les blocs de code en changeant simplement son code (NodeJS) puis en le renommant.

De plus, Lolo Code propose des fonctions de bibliothèque que vous pouvez copier et utiliser des fonctions de modèle existantes et créer vos propres modèles. Pour le cas de l'API, nous pouvons utiliser la fonction Lolo/CRUD API v3 pour créer rapidement une API CRUD. Ce sera plus rapide que de créer le nôtre à partir de zéro.

Créez une API CRUD dans Lolo en utilisant simplement une fonction de bibliothèque fournie par Lolo.

Vous n'avez pas à changer trop de choses à différents endroits. Avec Lolo Code, tout votre travail est au même endroit.

Une fois que vous avez enregistré et exécuté votre application, vous n'avez plus à vous soucier de la maintenance ou de l'approvisionnement de vos propres serveurs pour qu'elle continue de fonctionner (c'est-à-dire qu'elle est complètement « sans serveur »). À moins que vous ne décidiez d'utiliser un environnement d'exécution privé dans votre propre compte de cloud public ou votre centre de données privé. Voir les docs Lolo runtime-d ici . Runtime-d est un binaire autonome qui transforme n'importe quel ordinateur portable ou serveur Linux en runtime Lolo.

Résumé

AWS est une plate-forme cloud répandue, offrant des services complets à partir de centres de données dans le monde entier.

Avec AWS, vous pouvez faire beaucoup de choses, mais cela nécessite également des efforts et du temps décents pour transformer votre idée en application et la déployer sur AWS. Lolo Code vous aidera à accélérer votre développement et à le faire fonctionner à moindre coût. Bien que Lolo Code utilise le cloud AWS pour déployer des applications, il vous offre également la possibilité d'utiliser vos propres runtimes, ce qui le rend indépendant du cloud.

❤️Lolo