Costo ed efficienza tra iFaaS e FaaS (AWS) nella realizzazione di app serverless
L'architettura serverless è un potente design di sistema che consente agli sviluppatori di creare ed eseguire codice senza gestire i server e senza pagare per servizi cloud inattivi.
AWS è uno dei maggiori fornitori di servizi cloud, dove puoi creare un robusto sistema Serverless. Tuttavia, ci sono tre prospettive di seguito che vorremmo toccare sulle differenze tra Lolo Code (funzione di integrazione come servizio) e AWS (funzione come servizio) nella creazione di app serverless.
- Costo
- Prestazione
- Efficienza
Prezzi AWS
AWS ti offre un approccio pay-as-you-go per i prezzi. In altre parole, pagherai per quanto hai utilizzato le risorse AWS.
Esempio di prezzi AWS
Un'API viene utilizzata in un'applicazione Web serverless che richiama Lambda per restituire il contenuto dinamico della pagina Web. Il sito riceve 10.000 caricamenti di pagine al minuto. Ogni richiesta API è di 12 KB e la risposta è di 46 KB.
Questo sarà un totale di 432 milioni di richieste al mese.
Costi mensili = $ 418,8 ($ 0,97 per milione) * in costi di Amazon API Gateway (esclusi Lambda né DynamoDB)
Prezzo del codice Lolo
Lolo Code ti offre anche un modello pay-as-you-go ma è più semplice, paghi per la quantità di eventi che la tua app deve elaborare contemporaneamente piuttosto che per il totale degli eventi.
Puoi abbonarti a 1 Applicazione con 1 LCU (o Replica) con 256 mb di memoria e 0,125 core (CPU) a partire da 9 euro al mese. Il livello gratuito include due app con 1 LCU ciascuna, ma richiede di interagire con l'app una volta alla settimana per mantenerla in esecuzione. Se desideri aumentare le tue repliche per un'app di livello gratuito, il prezzo parte da 9€ ciascuna.
Esempio di prezzo Codice Lolo
Prendendo lo stesso esempio di cui sopra per API Gateway, abbiamo eseguito alcuni calcoli.
Se il sito riceve 10.000 caricamenti di pagine al minuto e ogni richiesta API è di 12 KB e la risposta è di 46 KB, dobbiamo elaborare 10.000 richieste/min per un'app Lolo. Ciò richiede 0,131 (core) e 85 MB di memoria. Di conseguenza, ciò richiede due repliche a 9€ ciascuna, ma avremo ancora spazio per ulteriori richieste all'interno di quell'app. Il risultato è
Costi mensili = € 18 al mese per l'app Lolo.
Lolo potrebbe essere visto come una combinazione di AWS Lambda e API Gateway. Puoi anche utilizzare il negozio di stato cotto di Lolo per archiviare il contenuto della tua pagina web dinamica. In questo modo non ci sarebbero costi nascosti. Il totale che pagheresti sarebbe semplicemente di € 18 al mese.
Prestazioni: differenze tra iFaaS e FaaS
AWS può offrire tutto ciò di cui hai bisogno e puoi progettare un'app su larga scala con ridondanza, scalabilità e disponibilità elevata. D'altra parte, dovresti conoscere bene i sistemi di rete e avere familiarità con l'architettura AWS per sbloccarne il potenziale. Serverless ha anche i suoi lati negativi. Uno di questi è il famigerato "avviamento a freddo".
Per illustrare, la tua app attenderà per un certo periodo finché un contenitore non sarà pronto per eseguire il codice. L'elaborazione di questa richiesta richiede più tempo perché un'app Serverless deve avviare la funzione (ovvero scaricare codice, libreria, moduli/ecc. e inizializzare un ambiente per eseguire il codice). Questo problema si verifica in qualsiasi app Serverless in Lolo Code o AWS.
AWS
AWS è notoriamente migliorato da quando le flotte Lambda sono migrate alla tecnologia Firecracker nel 2018. Tuttavia, poiché la funzione deve ancora essere avviata, prevarranno le partenze a freddo.
In AWS, puoi riattivare Lambda con un numero minimo di container. Ma dovrai pagare un costo aggiuntivo per eseguirlo continuamente.
Abbiamo chiesto a un utente di eseguire un test * sugli inizi posticipati di AWS Lambda quest'estate (utilizzando AWS EU). Il risultato dell'esperimento è sotto.
+-----------+--------------------
| time | ms
+-----------+--------------------
| 1 min | 180 ms
| 15 min | 750 ms
| 3h | 1467 ms
| 10h | 2060 ms
+-----------+--------------------
Anche le app su Lolo Code presentano il problema "Cold Start", ma la tua app Lolo continua a funzionare fino a quando non la interrompi. Cioè, poiché Lolo Code funziona con i contenitori, la tua app sarà tecnicamente sempre in esecuzione fino a quando non la interrompi. In sostanza non dovresti preoccuparti delle partenze a freddo.
Tuttavia, l'utente dall'alto che ha eseguito il test su AWS ha eseguito esattamente lo stesso test in Lolo Code. * I suoi risultati sono mostrati di seguito.
+-----------+--------------------
| time | ms
+-----------+--------------------
| 1 min | 172 ms
| 15 min | 210 ms
| 3h | 602 ms
| 10h | 890 ms
+-----------+--------------------
Qualcos'altro da considerare è se il tuo script è in esecuzione da troppo tempo, quindi AWS potrebbe non essere la scelta migliore. Il timeout massimo di AWS Lambda è di 900 secondi (15 minuti) mentre Lolo non ha il timeout massimo.
Efficienza: come creare e gestire un'app Serverless?
La creazione di API sia in AWS che in Lolo Code è semplice. Tuttavia, ci sono differenze.
AWS
In AWS crei la tua funzione Lambda e successivamente la colleghi a un altro servizio, API Gateway, che fungerà da trigger. Qui hai una funzione anonima che verrà attivata quando succede qualcosa. Questo è l'ideale di FaaS, una funzione anonima che viene attivata solo quando si verifica un evento.
Poiché la funzione è senza stato, dovrai recuperare i dati altrove, in questo caso puoi utilizzare AWS DynamoDB per archiviare e recuperare i dati.
Sembra un design scalabile e robusto, tuttavia, è necessario considerare alcuni fattori importanti:
- Come gestire le modifiche al codice software?
- Come distribuire o personalizzare rapidamente la tua app?
- Da dove iniziare a controllare i servizi in caso di problemi con l'infrastruttura?
Guarda un tutorial completo su come creare un'API HTTP con Lambda, API Gateway e DynamoDB qui .
Codice Lollo
Con Lolo Code puoi aggiungere un trigger HTTP e quindi utilizzare l'archivio di stato cotto per un database. Puoi aggiungere una nuova funzione raw per fungere da lambda (per seguire l'esatto caso d'uso dall'alto).
La tua applicazione Lolo potrebbe assomigliare a questa.
Deciderai cosa c'è nei blocchi di codice semplicemente cambiando il suo codice (NodeJS) e poi rinominandolo.
Inoltre, Lolo Code offre funzioni di libreria che puoi copiare e utilizzare le funzioni di modello esistenti e creare i tuoi modelli. Per il caso dell'API, possiamo utilizzare la funzione Lolo/CRUD API v3 per creare rapidamente un'API CRUD. Questo sarà più veloce che creare il nostro da zero.
Non devi cambiare troppe cose in posti diversi. Con Lolo Code, tutto il tuo lavoro è in un unico posto.
Una volta salvata ed eseguita la tua applicazione, non devi preoccuparti di mantenere o fornire i tuoi server per mantenerla in esecuzione (cioè è completamente "serverless"). A meno che tu non decida di utilizzare un runtime privato nel tuo account cloud pubblico o data center privato. Vedi i documenti di Lolo runtime-d qui . Runtime-d è un binario autonomo che trasforma qualsiasi laptop o server Linux in un runtime Lolo.
Sommario
AWS è una piattaforma cloud diffusa, che offre servizi completi dai data center a livello globale.
Con AWS puoi fare molte cose, ma richiede anche uno sforzo e un tempo decenti per trasformare la tua idea in un'app e distribuirla su AWS. Lolo Code ti aiuterà ad accelerare il tuo sviluppo e mantenerlo in esecuzione a un prezzo inferiore. Sebbene Lolo Code utilizzi il cloud AWS per distribuire le app, ti offre anche la possibilità di utilizzare i tuoi runtime, rendendolo indipendente dal cloud.
❤️ Lollo