LLRT: Niskolatencyjny czas wykonania JavaScript dla funkcji bezserwerowych
LLRT (Low Latency Runtime), od Amazon Web Services, to eksperymentalne środowisko uruchomieniowe JavaScript stworzone dla funkcji bezserwerowych, które potrzebują minimalnej latencji przy zimnym uruchomieniu. Uruchamia JavaScript na silniku QuickJS w rdzeniu Rust, aby zredukować czas uruchamiania i zużycie pamięci w porównaniu z tradycyjnymi środowiskami uruchomieniowymi. Kluczowe możliwości obejmują ultra-szybkie zimne uruchomienia, niski profil pamięci, częściową zgodność z API Node.js oraz wstępnie skompilowany podzbiór AWS SDK v3. Programiści bezserwerowi i architekci chmur czerpią największą wartość z LLRT.
Jak LLRT redukuje opóźnienie przy zimnym uruchomieniu?
LLRT celuje w zimne uruchomienia, pomijając nieistotne funkcje platformy i używając kompaktowej ścieżki wykonania. Projekt wykorzystuje QuickJS do wykonania skryptów oraz rdzeń Rust, aby zminimalizować narzut inicjalizacji, co, jak raportują autorzy, może skutkować czasami uruchomienia do 10 razy szybszymi niż Node.js. Ten projekt poświęca część kompletności platformy na rzecz zmniejszenia opóźnienia przy pierwszym wywołaniu, co ma znaczenie dla krótkożyjących funkcji serverless.
Czy LLRT spełnia powszechne wymagania platformy Lambda?
Środowisko uruchomieniowe jest głównie skierowane na Linux x86_64 i ARM64, aby dostosować się do środowisk wykonawczych serverless. Oficjalne prekompilowane binaria koncentrują się na Linuxie i macOS, co upraszcza wdrażanie w chmurze dla tych celów. Testowanie na Windows wymaga kompilacji ze źródła, co dodaje krok budowy. Architekci powinni uwzględnić kompilacje skierowane na Linux lub użyć dostarczonych artefaktów macOS/Linux podczas przygotowywania pakietów wdrożeniowych dla środowisk zgodnych z Lambda.
Czy LLRT jest bezpieczne do przyjęcia w produkcyjnych przepływach pracy?
AWS określa LLRT jako projekt eksperymentalny, więc przyjęcie go do krytycznych usług wymaga walidacji. Projekt zyskał uznanie za wydajność, ale nie implementuje pełnej biblioteki standardowej Node.js i dlatego nie jest bezpośrednim zamiennikiem. Zespoły powinny przeprowadzić testy integracyjne i zależności pod realistycznym obciążeniem oraz potwierdzić zachowanie w integracjach usług przed skierowaniem ruchu na funkcje oparte na LLRT.
Czy potrzebuję dodatkowych narzędzi lub wiedzy, aby migrować istniejące funkcje?
Migracja wymaga pipeline'u budowy i kontroli API, ponieważ LLRT wykonuje tylko JavaScript. TypeScript musi być transpileowany z użyciem bundlera takiego jak esbuild lub swc przed wdrożeniem, a wywołania z biblioteki standardowej Node mogą wymagać zastąpienia. Zalecane kroki migracji obejmują:
- Transpilacja TypeScript i bundlowanie zależności
- Zastąpienie nieobsługiwanych wywołań specyficznych dla Node
- Przeprowadzenie testów integracyjnych i zimnego uruchomienia w środowisku stagingowym
Praktyczna rekomendacja dotycząca adopcji
LLRT pasuje do zespołów, które są komfortowe w dodawaniu kroku budowania i przeprowadzaniu dokładnych testów stagingowych. Użyj go najpierw dla funkcji niekrytycznych, wrażliwych na opóźnienia i zweryfikuj zachowanie end-to-end przed szerszym wdrożeniem. Miej plan wycofania i monitoruj metryki wywołań po każdym wdrożeniu, aby regresje były wykrywane wcześnie. Traktuj czas wykonania jako eksperymentalny, podczas gdy budujesz zaufanie do swojego pipeline'u CI. Zalecane.





