0

Ich erstelle eine Webanwendung in AWS mithilfe der Serverless-Architektur.AWS Serverless-Anwendungsladezeit mit dem Spring-Framework

Der Zweck der Anwendung besteht darin, eine öffentliche API zum Hochladen von Dateien aus der ganzen Welt verfügbar zu machen.

Ich benutze AWS API-Gateway und Lambda, um meinen Code und S3 als Speicher auszuführen.

Ich weiß, dass es sehr viel möglich und gut unterstützt wird (sogar von Drittanbietern wie das Serverless-Framework), Java Spring Framework zu verwenden, um den Code zu schreiben, den ich in meiner Lambda-Funktion bereitstellen.

Ist es jedoch wirklich empfehlenswert? Federanwendungen benötigen normalerweise 30 Sekunden oder länger, um vollständig geladen zu werden, und Lambda sollte sofort laufen.

Wie kommt es, dass diese Option sogar von AWS unterstützt wird (da es wie eine sehr schlechte Idee klingt)?

+0

Ich hoffe, Sie wissen, dass Spring-Framework ist sehr weit gefasste Begriff. Wenn ich mich recht erinnere, ist Spring Boot, um als eigenständig zu erscheinen, was die meisten Leute beim Schreiben von Lambda benutzen. Nicht die schweren Federkomponenten. Mit anderen Worten: Leute, die Lambda mit Springcode schreiben, verwenden eine Minimalversion von Spring. – kosa

Antwort

1

Java ist eine der unterstützten Programmiersprachen von AWS Lambda. Es ist möglich, eine Anwendung mit Java auszuführen, Sie müssen nur die Aufwärmzeit berücksichtigen, wenn dies zu Ihrem Anwendungsfall passt - dann verwenden Sie sie. Sie könnten auch SNS und einen Haken zu Ihrem Lambda, um es warm zu halten, wenn Sie keine Anfragen erhalten

+0

Ich spreche nicht über Java-Aufwärmen, die nicht mehr als 1-2 Sekunden vielleicht ist. Ich spreche von der Ladezeit der Spring-Anwendung, die bis zu 30 Sekunden dauern kann. Ich frage, warum würden sie eine solche Option unterstützen, wenn es wie die schlechteste Wahl scheint (Vielleicht fehlt etwas und sie konfigurieren es auf eine Weise, die nicht viel Zeit zum Laden benötigt) – yuz

+0

Wenn Ihre Spring-Anwendung Kontext dauert 30 Sekunden zu laden, ich vermute, Sie haben das Konzept der Microservices grundsätzlich nicht verstanden. –

+0

Die Anfangsladezeit der Anwendung hat in diesem Aspekt fast nichts mit Mikrodiensten zu tun. Außerdem habe ich nirgendwo im Gespräch Micro Services erwähnt. Wenn Sie eine Spring-Boot-Anwendung ausführen, dauert es in der Regel einige Sekunden zu laden. Es ist nur eine Tatsache. es ist nicht "meine" Federanwendung. Da es so lange dauert, habe ich mich gefragt, warum jemand die Verwendung einer solchen Lösung in einer Umgebung (Lambda) ermutigen sollte, in der das Wichtigste ist, wie schnell Sie eine Antwort auslösen und erwidern – yuz

0

Persönlich würde ich AVOID mit Java-Laufzeit für AWS Lambda so viel wie möglich. Ich verstehe, dass es sehr verlockend ist, Java zu verwenden, wenn man davon ausgeht, dass man eine bestehende Implementierung in Microservices migriert. Aber Sie zahlen immer die Sanktion der langsamen Aufwärmzeit im Vergleich zu anderen Laufzeiten. Sie können auch Java-Compiler-Optimierungen verpassen, da das Lambda möglicherweise nicht oft genug aufgerufen wird, um C1- und C2-Kompilierungen auszulösen.

Meine Präferenz nur java für Lambda verwenden würde, wenn Sie eine schlanke Implementierung schreiben planen, bedeuten keine Feder, Ruhezustand etc. etc.

0

Verwendung von Java mit AWS lambda ist völlig in Ordnung, aber Lambdas sind Funktionen keine Anwendungen!

Sie sollten also vermeiden, ein Framework wie Spring zu verwenden, weil Sie das nicht brauchen.

Die Frage ist, was Sie in Ihrer Funktion erreichen möchten und warum brauchen Sie ein Framework, um so wenig Code auszuführen? Was ist Ihr Anwendungsfall?

Verwandte Themen