AWS Lambda und keine Server

    Für mich persönlich war Amazon Web Services immer mit Infrastructure as a Service (IaaS) verbunden, auf dessen Grundlage jeder seine Dienste und Anwendungen erstellt hat. Es wird aber auch behauptet, eine Plattform in Form eines Dienstes zu sein, beispielsweise Elastic Beanstalk und OpsWorks. Obwohl PaaS meiner Meinung nach als ein Teil davon angesehen werden kann, da der Zugang zur Infrastruktur bestehen bleibt und gleichzeitig Kopfschmerzen bei der Verwaltung entstehen.

    Der ganze Reiz von PaaS liegt in den Null-Verwaltungskosten, der Benutzerfreundlichkeit und der Möglichkeit, sich auf den Anwendungscode zu konzentrieren und zu vergessen, wie dieser bereitgestellt, integriert und gewartet wird.

    Laut Vertretern von AWS können Sie mit Lambda die Infrastruktur vergessen und Anwendungen in der Cloud ausführen, während Sie gleichzeitig Integration mit anderen Amazon-Diensten, Skalierbarkeit und niedrige Kosten für die Verwendung von Computerressourcen erhalten. Sie müssen lediglich eine Funktion schreiben und sie mit Ereignissen verknüpfen. Danach führt Amazon die Funktion bei jedem neuen Ereignis automatisch aus. Sie sollten nicht an Skalierung und Hochverfügbarkeit denken: Unsere Funktion kann Zehntausende von Anfragen pro Stunde ohne unser Zutun und ohne ein Backend im herkömmlichen Sinne verarbeiten.


    Konzept


    Das Hauptarbeitspferd ist die Lambda-Funktion (oder der Lambda-Ausdruck ). Eine Lambda-Funktion ist einem Kontext zugeordnet:
    • Umgebung: PL, RAM-Größe, Zugriffseinstellungen
    • Ressourcen, deren Änderungen Sie verfolgen möchten
    • Code ist dieselbe Funktion, die ausgeführt wird, wenn eine Ressourcenänderungsnachricht empfangen wird.


    Wie funktioniert es?


    Wenn eine Ressource geändert wird, wird eine Nachricht generiert, die die Funktion aktiviert. Sie (die Funktion) hat wiederum Zugriff auf das JSON-Objekt, das alle erforderlichen Informationen zu dieser Änderung oder zu einer anderen Nachricht enthält.

    Zum Beispiel können wir eine Funktion einem s3-Bucket zuordnen. Wenn ein neues Objekt darauf trifft, wird unser Lambda gestartet und erhält Zugriff auf Daten darüber. Angenommen, dies ist ein neues Bild, für das Sie eine Reihe von Skizzen unterschiedlicher Größe erstellen müssen. Unsere Funktion wird mit jedem neuen Bild gestartet, das in den Bucket geladen wird, und wir können das Ergebnis in demselben oder einem separaten Bucket speichern.

    Es muss beachtet werden, dass unsere Funktion ihren Status nicht (zustandslos) speichert, sodass die Ergebnisse der Arbeit in einer Art Data Warehouse gespeichert werden müssen. In unserem Beispiel ist dies ein S3-Bucket.

    Die Umwelt


    Derzeit wird nur JavaScript + Node, js unterstützt. Sie können auch Bibliotheken herunterladen und das AWS SDK verwenden. So wie ich es aus der Videopräsentation verstehe, wird Docker unter der Haube verwendet und auf einer EC2-Instanz ausgeführt.

    Aktuelle Einschränkungen und zukünftige Pläne


    Das erste, was mir aufgefallen ist:
    • Mangel an fertigem CI / CD
    • keine Integration mit Versionskontrollsystemen (git, svn)

    Wie oben erwähnt, wird auch nur JavaScript als Programmiersprache unterstützt.

    Es ist geplant, die Liste der unterstützten Dienste (jetzt S3, DynamoDB und Amazon Kinesis) zu erweitern und die Anzahl der unterstützten PLs zu erhöhen.

    Preis


    Dieser Dienst wird nach zwei Parametern bezahlt: der Anzahl der Anforderungen und ihrer Gesamtausführungszeit unter Berücksichtigung des verbrauchten Speichers.

    Anzahl der Anfragen


    • erste Million Anfragen pro Monat - kostenlos
    • Alles, was über dieses Limit hinausgeht, beträgt 0,20 USD pro 1 Million Anfragen (0,0000002 USD pro Anfrage).

    Gesamtdauer der Abfrageausführung


    • Die Startzeit wird vom Start der Funktion bis zur Rückgabe des Ergebnisses oder zum Stoppen durch Timeout (für jede Funktion festgelegt) berücksichtigt.
    • Die Zeit wird auf das nächste Vielfache von 100 ms aufgerundet
    • Die Kosten jeder Sekunde hängen von der Menge des zugewiesenen Speichers ab, d.h. $ 0.00001667 für jede Gigabyte-Sekunde


    Wie üblich bietet AWS einen kostenlosen Zeitraum (kostenlose Stufe). Weitere Informationen zu den Preisen finden Sie hier . Dort gibt es mehrere Beispiele. Ich werde einen von ihnen geben.
    Wenn die Ausführungszeit der Funktion 1 Sekunde beträgt und sie im Laufe des Monats 3 Millionen Mal gestartet wird, erhalten wir ein Konto von 18,34 USD.

    Verwandte Links


    Offizielle Blog
    Service Startseite

    PS


    AWS Lambda befindet sich in der Phase "Vorschau". Um sich zu registrieren und Zugriff zu erhalten, müssen Sie die Anfrage per Link ausfüllen . In Anbetracht der sehr guten kostenlosen Stufe lohnt sich ein Versuch. Wenn es Zeit gibt, werde ich auf jeden Fall praktische Erfahrungen mit dem Gebrauch teilen.

    Jetzt auch beliebt: