Kosten und Effizienz zwischen iFaaS und FaaS (AWS) bei der Erstellung serverloser Apps
Die serverlose Architektur ist ein leistungsstarkes Systemdesign, mit dem Entwickler Code erstellen und ausführen können, ohne Server verwalten und für ungenutzte Cloud-Dienste bezahlen zu müssen.
AWS ist einer der größten Anbieter von Cloud-Diensten, bei dem Sie ein robustes serverloses System erstellen können. Es gibt jedoch unten drei Perspektiven, die wir auf die Unterschiede zwischen Lolo Code (Integration Function-as-a-Service) und AWS (Function-as-a-Service) bei der Erstellung serverloser Apps eingehen möchten.
- Kosten
- Leistung
- Effizienz
AWS-Preise
AWS bietet Ihnen einen Pay-as-you-go-Ansatz für die Preisgestaltung. Mit anderen Worten, Sie zahlen für die Menge an AWS-Ressourcen, die Sie genutzt haben.
Preisbeispiel AWS
Eine API wird in einer serverlosen Webanwendung verwendet, die Lambda aufruft, um dynamische Webseiteninhalte zurückzugeben. Die Website erhält 10.000 Seitenladevorgänge pro Minute. Jede API-Anforderung ist 12 KB und die Antwort 46 KB groß.
Das sind insgesamt 432 Millionen Anfragen pro Monat.
Monatliche Kosten = 418,8 $ (0,97 $ pro Million) * in Amazon API Gateway-Kosten (ohne Lambda oder DynamoDB)
Lolo-Code-Preise
Lolo Code bietet Ihnen auch ein Pay-as-you-go-Modell, aber es ist einfacher, Sie zahlen für die Anzahl der Ereignisse, die Ihre App gleichzeitig verarbeiten muss, und nicht für die Gesamtzahl der Ereignisse.
Sie können 1 Anwendung mit 1 LCU (oder Replica) mit 256 MB Speicher und 0,125 Kernen (CPU) ab 9 Euro pro Monat abonnieren. Die kostenlose Stufe umfasst zwei Apps mit jeweils 1 LCU, erfordert jedoch, dass Sie sich einmal pro Woche mit der App beschäftigen, um sie am Laufen zu halten. Wenn Sie Ihre Replikate für eine Free-Tier-App erhöhen möchten, beginnt der Preis bei jeweils 9€.
Preisbeispiel Lolo Code
Unter Verwendung des gleichen Beispiels wie oben für API Gateway haben wir einige Berechnungen durchgeführt.
Wenn die Website 10.000 Seitenladevorgänge pro Minute erhält und jede API-Anforderung 12 KB groß ist und die Antwort 46 KB groß ist, müssen wir 10.000 Anfragen/min für eine Lolo-App verarbeiten. Dies erfordert 0,131 (Kerne) und 85 MB Speicher. Folglich erfordert dies zwei Replikate zu je 9€, aber wir haben noch Platz für weitere Anfragen innerhalb dieser App. Das Ergebnis ist
Monatliche Kosten = 18 € monatliche Kosten für die Lolo-App.
Lolo könnte als Kombination aus AWS Lambda und API Gateway angesehen werden. Sie können auch Lolos Baked In State Store verwenden, um Ihre dynamischen Webseiteninhalte zu speichern. Auf diese Weise würden keine versteckten Kosten entstehen. Die Gesamtsumme, die Sie zahlen würden, würde einfach 18 € pro Monat betragen.
Leistung: Unterschiede zwischen iFaaS und FaaS
AWS bietet möglicherweise alles, was Sie benötigen, und Sie können eine groß angelegte Anwendung mit Redundanz, Skalierbarkeit und hoher Verfügbarkeit entwerfen. Andererseits sollten Sie Netzwerksysteme gut kennen und mit der AWS-Architektur vertraut sein, um ihr Potenzial auszuschöpfen. Serverless hat auch seine Nachteile. Einer davon ist der berüchtigte „Kaltstart“.
Zur Veranschaulichung wartet Ihre App einen bestimmten Zeitraum, bis ein Container bereit ist, Code auszuführen. Die Verarbeitung dieser Anforderung dauert länger, da eine serverlose Anwendung die Funktion hochfahren muss (dh Code, Bibliothek, Module usw. herunterladen und eine Umgebung zum Ausführen von Code initialisieren muss). Dieses Problem tritt in allen serverlosen Apps in Lolo Code oder AWS auf.
AWS
AWS ist notorisch besser geworden, seit die Lambda-Flotten im Jahr 2018 auf die Firecracker-Technologie migriert sind. Da die Funktion jedoch immer noch erforderlich ist, um Kaltstarts zu beschleunigen, wird sich dies durchsetzen.
In AWS können Sie Lambda mit einer minimalen Anzahl von Containern aufwecken. Aber Sie müssen zusätzliche Kosten zahlen, um es kontinuierlich auszuführen.
Wir haben einen Benutzer einen Test * zu den verspäteten Starts von AWS Lambda in diesem Sommer durchführen lassen (unter Verwendung von AWS EU). Das Ergebnis des Experiments ist unten.
+-----------+--------------------
| time | ms
+-----------+--------------------
| 1 min | 180 ms
| 15 min | 750 ms
| 3h | 1467 ms
| 10h | 2060 ms
+-----------+--------------------
Apps auf Lolo Code haben auch das „Kaltstart“-Problem, aber Ihre Lolo-App läuft weiter, bis Sie sie stoppen. Das heißt, da Lolo Code mit Containern arbeitet, läuft Ihre App technisch gesehen immer, bis Sie sie stoppen. Kaltstarts sollte man sich eigentlich nicht machen müssen.
Der Benutzer von oben, der den Test auf AWS durchgeführt hat, hat jedoch genau den gleichen Test in Lolo Code durchgeführt. * Seine Ergebnisse sind unten aufgeführt.
+-----------+--------------------
| time | ms
+-----------+--------------------
| 1 min | 172 ms
| 15 min | 210 ms
| 3h | 602 ms
| 10h | 890 ms
+-----------+--------------------
Ein weiterer zu berücksichtigender Aspekt ist, dass AWS möglicherweise nicht die beste Wahl ist, wenn Ihr Skript zu lange ausgeführt wird. Das maximale Timeout von AWS Lambda beträgt 900 Sekunden (15 Minuten), während Lolo kein maximales Timeout hat.
Effizienz: Wie erstellt und verwaltet man eine serverlose App?
Das Erstellen von APIs in AWS und Lolo Code ist unkompliziert. Es gibt jedoch Unterschiede.
AWS
In AWS erstellen Sie Ihre Lambda-Funktion und verbinden sie später mit einem anderen Dienst, API Gateway, der als Auslöser fungiert. Hier haben Sie eine anonyme Funktion, die ausgelöst wird, wenn etwas passiert. Das ist das Ideal von FaaS, einer anonymen Funktion, die nur ausgelöst wird, wenn ein Ereignis eintritt.
Da die Funktion zustandslos ist, müssen Sie Daten an anderer Stelle abrufen. In diesem Fall können Sie AWS DynamoDB zum Speichern und Abrufen von Daten verwenden.
Dies sieht nach einem skalierbaren und robusten Design aus, Sie müssen jedoch einige wichtige Faktoren berücksichtigen:
- Wie verwaltet man Änderungen am Softwarecode?
- Wie können Sie Ihre App schnell bereitstellen oder anpassen?
- Wo kann man bei Infrastrukturproblemen mit der Überprüfung der Dienste beginnen?
Sehen Sie sich hier ein vollständiges Tutorial zum Erstellen einer HTTP-API mit Lambda, API Gateway und DynamoDB an .
Lolo-Code
Mit Lolo Code können Sie einen HTTP-Trigger hinzufügen und dann den gebackenen Zustandsspeicher für eine Datenbank verwenden. Sie können eine neue Raw-Funktion hinzufügen, die als Ihr Lambda fungiert (um dem genauen Anwendungsfall von oben zu folgen).
So könnte Ihre Lolo-Anwendung aussehen.
Sie entscheiden, was sich in den Codeblöcken befindet, indem Sie einfach ihren Code (NodeJS) ändern und ihn dann umbenennen.
Darüber hinaus bietet Lolo Code Bibliotheksfunktionen, mit denen Sie vorhandene Vorlagenfunktionen kopieren und verwenden und eigene Vorlagen erstellen können. Für den API-Fall können wir die Funktion Lolo/CRUD API v3 verwenden, um schnell eine CRUD-API zu erstellen. Das geht schneller, als eine eigene von Grund auf neu aufzubauen.
Sie müssen nicht zu viele Dinge an verschiedenen Stellen ändern. Mit Lolo Code ist Ihre gesamte Arbeit an einem Ort.
Sobald Sie Ihre Anwendung gespeichert und ausgeführt haben, müssen Sie sich keine Gedanken über die Wartung oder Bereitstellung Ihrer eigenen Server machen, um sie am Laufen zu halten (dh sie ist vollständig „serverlos“). Es sei denn, Sie entscheiden sich für eine private Laufzeit in Ihrem eigenen öffentlichen Cloud-Konto oder privaten Rechenzentrum. Siehe Lolo runtime-d docs hier . Runtime-d ist eine eigenständige Binärdatei, die jeden Laptop oder Linux-Server in eine Lolo-Laufzeitumgebung verwandelt.
Zusammenfassung
AWS ist eine weit verbreitete Cloud-Plattform, die voll funktionsfähige Dienste von Rechenzentren weltweit anbietet.
Mit AWS können Sie viele Dinge tun, aber es erfordert auch einen angemessenen Aufwand und Zeit, Ihre Idee in eine App umzuwandeln und sie auf AWS bereitzustellen. Lolo Code wird Ihnen helfen, Ihre Entwicklung zu beschleunigen und für weniger Geld am Laufen zu halten. Obwohl Lolo Code die AWS-Cloud zum Bereitstellen von Apps verwendet, bietet es Ihnen auch die Möglichkeit, Ihre eigenen Laufzeiten zu verwenden, wodurch es Cloud-agnostisch wird.
❤️Lolo