Koszt i wydajność między iFaaS i FaaS (AWS) w tworzeniu aplikacji bezserwerowych

Architektura bezserwerowa to zaawansowany projekt systemu, który umożliwia programistom tworzenie i uruchamianie kodu bez zarządzania serwerami i bez płacenia za bezczynne usługi w chmurze.
AWS to jeden z największych dostawców usług w chmurze, w którym można stworzyć solidny system Serverless. Istnieją jednak trzy perspektywy poniżej, w których chcielibyśmy poruszyć różnice między Lolo Code (funkcja integracji jako usługa) a AWS (funkcja jako usługa) w tworzeniu aplikacji bezserwerowych.
- Koszt
- Występ
- Efektywność
Ceny AWS
AWS oferuje podejście do ustalania cen zgodnie z rzeczywistym użyciem. Innymi słowy, zapłacisz za to, ile wykorzystałeś zasobów AWS.
Przykład wyceny AWS
Interfejs API jest używany w bezserwerowej aplikacji internetowej, która wywołuje Lambdę w celu zwrócenia dynamicznej zawartości strony internetowej. Witryna ładuje się 10 000 stron na minutę. Każde żądanie API to 12 KB, a odpowiedź to 46 KB.
W sumie będzie to 432 miliony żądań miesięcznie.
Koszty miesięczne = 418,8 USD (0,97 USD za milion) * w kosztach Amazon API Gateway (bez Lambda i DynamoDB)
Ceny kodów Lolo
Lolo Code oferuje również model płatności zgodnie z rzeczywistym użyciem, ale jest prostszy, płacisz za liczbę zdarzeń, które Twoja aplikacja musi przetwarzać jednocześnie, a nie za sumę zdarzeń.
Możesz subskrybować 1 aplikację z 1 LCU (lub repliką) z 256 MB pamięci i 0,125 rdzeni (CPU) już od 9 euro miesięcznie. Bezpłatna warstwa obejmuje dwie aplikacje z 1 LCU każda, ale wymaga interakcji z aplikacją raz w tygodniu, aby działała. Jeśli chcesz zwiększyć liczbę replik dla aplikacji bezpłatnej, cena zaczyna się od 9 € za sztukę.
Przykładowy cennik Kod Lolo
Biorąc ten sam przykład co powyżej dla API Gateway, wykonaliśmy kilka obliczeń.
Jeśli witryna ładuje się 10 000 stron na minutę, a każde żądanie API ma rozmiar 12 KB, a odpowiedź 46 KB, musimy przetworzyć 10 000 żądań/min dla aplikacji Lolo. Wymaga to 0,131 (rdzeni) i 85 MB pamięci. W związku z tym wymaga to dwóch replik po 9 € każda, ale nadal będziemy mieć miejsce na więcej próśb w tej aplikacji. Wynik to
Koszty miesięczne = 18 € miesięcznie za aplikację Lolo.
Lolo można postrzegać jako połączenie AWS Lambda i API Gateway. Możesz także użyć Lolo's Baked in State Store do przechowywania dynamicznej zawartości strony internetowej. W ten sposób nie byłoby żadnych ukrytych kosztów. Suma, którą zapłacisz, wyniesie po prostu 18 € miesięcznie.
Wydajność: różnice między iFaaS a FaaS
AWS może zaoferować wszystko, czego potrzebujesz, i możesz zaprojektować aplikację na dużą skalę z redundancją, skalowalnością i wysoką dostępnością. Z drugiej strony powinieneś dobrze znać systemy sieciowe i znać architekturę AWS, aby uwolnić jej potencjał. Serverless ma również swoje wady. Jednym z nich jest osławiony „zimny start”.
Aby to zilustrować, Twoja aplikacja będzie czekać przez pewien czas, aż kontener będzie gotowy do uruchomienia kodu. Przetwarzanie tego żądania trwa dłużej, ponieważ aplikacja bezserwerowa musi przyspieszyć działanie funkcji (tj. pobrać kod, bibliotekę, moduły itp. oraz zainicjować środowisko do uruchamiania kodu). Ten problem pojawia się we wszystkich aplikacjach bezserwerowych w Lolo Code lub AWS.
AWS
Odkąd floty Lambda przeszły na technologię Firecracker w 2018 roku, AWS notorycznie się poprawiło. Ponieważ jednak funkcja nadal wymaga przyspieszenia, pierwszeństwo będą miały zimne starty.
W AWS możesz obudzić Lambdę z minimalną liczbą kontenerów. Ale będziesz musiał zapłacić dodatkowy koszt, aby uruchomić go w sposób ciągły.
Poprosiliśmy użytkownika o wykonanie testu * dotyczącego opóźnionego startu AWS Lambda tego lata (przy użyciu AWS EU). Wynik eksperymentu poniżej.
+-----------+--------------------
| time | ms
+-----------+--------------------
| 1 min | 180 ms
| 15 min | 750 ms
| 3h | 1467 ms
| 10h | 2060 ms
+-----------+--------------------
Aplikacje w Lolo Code również mają problem z „zimnym startem”, ale Twoja aplikacja Lolo działa, dopóki jej nie zatrzymasz. To znaczy, ponieważ Lolo Code działa z kontenerami, twoja aplikacja będzie technicznie zawsze działać, dopóki jej nie zatrzymasz. Zasadniczo nie powinieneś przejmować się zimnym startem.
Jednak użytkownik z góry, który przeprowadził test na AWS, wykonał dokładnie ten sam test w Lolo Code. * Jego wyniki przedstawiono poniżej.
+-----------+--------------------
| time | ms
+-----------+--------------------
| 1 min | 172 ms
| 15 min | 210 ms
| 3h | 602 ms
| 10h | 890 ms
+-----------+--------------------
Inną rzeczą do rozważenia jest to, że jeśli twój skrypt działa zbyt długo, AWS może nie być najlepszym wyborem. Maksymalny limit czasu AWS Lambda wynosi 900 sekund (15 minut), podczas gdy Lolo nie ma maksymalnego limitu czasu.
Wydajność: jak zbudować i zarządzać aplikacją Serverless?
Tworzenie interfejsów API zarówno w AWS, jak i Lolo Code jest proste. Istnieją jednak różnice.
AWS
W AWS budujesz swoją funkcję Lambda, a później łączysz ją z inną usługą, API Gateway, która będzie działać jako jej wyzwalacz. Tutaj masz anonimową funkcję, która zostanie uruchomiona, gdy coś się stanie. To jest ideał FaaS, anonimowej funkcji, która jest uruchamiana tylko wtedy, gdy ma miejsce zdarzenie.
Ponieważ funkcja jest bezstanowa, będziesz musiał pobrać dane gdzie indziej, w tym przypadku możesz użyć AWS DynamoDB do przechowywania i pobierania danych.

Wygląda to na skalowalny i solidny projekt, jednak należy wziąć pod uwagę kilka ważnych czynników:
- Jak zarządzać zmianami w kodzie oprogramowania?
- Jak szybko wdrożyć lub dostosować aplikację?
- Od czego zacząć sprawdzanie usług w przypadku jakichkolwiek problemów z infra?
Zobacz pełny samouczek dotyczący tworzenia API HTTP za pomocą Lambda, API Gateway i DynamoDB tutaj .
Kod Lolo
Za pomocą Lolo Code możesz dodać wyzwalacz HTTP, a następnie użyć wypieczonego magazynu stanu dla bazy danych. Możesz dodać nową surową funkcję, która będzie działać jako lambda (aby postępować zgodnie z powyższym przypadkiem użycia).
Twoja aplikacja Lolo może wyglądać tak.

Zdecydujesz, co znajduje się w blokach kodu, po prostu zmieniając jego kod (NodeJS), a następnie zmieniając jego nazwę.
Ponadto Lolo Code oferuje funkcje Biblioteki, które można kopiować i wykorzystywać istniejące funkcje szablonów oraz tworzyć własne szablony. W przypadku API możemy użyć funkcji Lolo/CRUD API v3 , aby szybko utworzyć CRUD API. Będzie to szybsze niż zakładanie własnego od podstaw.

Nie musisz zmieniać zbyt wielu rzeczy w różnych miejscach. Dzięki Lolo Code cała Twoja praca jest w jednym miejscu.
Po zapisaniu i uruchomieniu aplikacji nie musisz się martwić o konserwację ani udostępnianie własnych serwerów, aby mogła ona działać (tzn. jest całkowicie „bezserwerowa”). Chyba że zdecydujesz się użyć prywatnego środowiska uruchomieniowego na własnym koncie w chmurze publicznej lub prywatnym centrum danych. Zobacz dokumentację Lolo runtime-d tutaj . Runtime-d to samodzielny plik binarny, który zamienia dowolny laptop lub serwer z systemem Linux w środowisko wykonawcze Lolo.
Streszczenie
AWS to szeroko rozpowszechniona platforma chmurowa, oferująca w pełni funkcjonalne usługi z centrów danych na całym świecie.
Dzięki AWS możesz robić wiele rzeczy, ale wymaga to również sporego wysiłku i czasu, aby przekształcić swój pomysł w aplikację i wdrożyć ją w AWS. Lolo Code pomoże Ci przyspieszyć rozwój i utrzymać go w ruchu za mniej. Chociaż Lolo Code wykorzystuje chmurę AWS do wdrażania aplikacji, oferuje również możliwość korzystania z własnych środowisk wykonawczych, dzięki czemu jest niezależny od chmury.
❤️Lolo