Dieses Tool lässt echte AWS-Dienste kostenlos auf deinem Laptop laufen (Floci)
BBetter Stack
Computing/SoftwareInternet Technology
Transcript
00:00:00Wer schon einmal mit AWS gearbeitet hat, möchte manchmal lieber keine Experimente auf den
00:00:05Produktionsservern machen. In solchen Fällen greift man zu Tools wie LocalStack, mit denen man
00:00:10seinen Code vor dem Cloud-Upload validieren kann. Vor ein paar Wochen hat LocalStack jedoch klammheimlich
00:00:16seinen kostenlosen Tarif geändert, was sehr schade ist, da viele Entwickler es gerne genutzt haben,
00:00:21um Tests in der echten AWS-Umgebung zu umgehen. Glücklicherweise gibt es jetzt aber ein neues Open-Source-Projekt
00:00:27namens FlowKey, das komplett kostenlos ist und im Grunde genau dieselben
00:00:32Dinge tut wie LocalStack. Um ehrlich zu sein, schlägt es sich vielleicht sogar noch besser. Schauen wir uns
00:00:38FlowKey in diesem Video also mal genauer an, wie es funktioniert und machen einen eigenen kleinen Test. Legen wir los.
00:00:48Kurzer Kontext: Wer noch nie mit LocalStack gearbeitet hat – das Prinzip ist, dass man quasi eine
00:00:53simulierte Version der AWS-Dienste in Docker auf dem eigenen Rechner ausführt. So kann man Services wie
00:01:00S3, DynamoDB, Lambda und Co. entwickeln und testen, ganz ohne ein AWS-Konto. FlowKey verspricht
00:01:08dabei konkret, all das zu tun, ohne die Hälfte der nützlichen Dienste hinter einer Paywall zu verstecken,
00:01:13so wie es LocalStack derzeit macht. Wenn man sich die Benchmarks ansieht, werden hier ziemlich ambitionierte
00:01:20Zahlen genannt: 24 Millisekunden Startzeit, nur 13 Megabyte Speicherbedarf im Leerlauf und lediglich 19 Megabyte
00:01:27für die Docker-Image-Größe. Sollte sich das wirklich bewahrheiten, ist das eine echte
00:01:33Hausnummer für alle, die das in der CI einsetzen, denn Container-Setup-Zeiten kosten echtes Geld, wenn man das
00:01:40Hunderte Male am Tag macht. Also habe ich ein kleines Benchmark-Skript laufen lassen, um diese Angaben zu überprüfen. Meinen
00:01:47Zahlen nach haben beide ihre Readme-Werte nicht exakt erreicht: FlowKey brauchte zum Starten etwa 129 Millisekunden statt
00:01:54der versprochenen 24, und LocalStack benötigte fast sieben Sekunden statt der angegebenen 3,3. Beide Benchmarks wurden
00:02:02also offensichtlich unter idealen Bedingungen gemessen. Im direkten Vergleich ist FlowKey jedoch
00:02:08immer noch über 50-mal schneller gestartet, verbraucht etwa ein Zwanzigstel des Speichers, und das Image ist viermal
00:02:15kleiner. Selbst unter Einberechnung jeglicher Marketing-Schönfärberei ist der tatsächliche Abstand enorm, und zwar
00:02:23zugunsten von FlowKey. Die angegebenen Zahlen stimmen also im Großen und Ganzen. Das ist großartig.
00:02:29Schauen wir uns das Ganze nun aber mal in einem realen Szenario an. Mit FlowKey kann man ganz einfach loslegen, indem man
00:02:36diesen einen simplen Docker-Befehl ausführt, wodurch eine neue AWS-Umgebung auf dem lokalen Rechner erstellt wird.
00:02:42Sobald es läuft, können wir die meisten Dinge tun, die man normalerweise auch in einer AWS-CLI-Konsole machen würde.
00:02:48Ich kann `aws s3 mb` ausführen, um einen neuen S3-Demo-Bucket zu erstellen, oder auch `aws dynamodb create-table`, um
00:02:59eine neue Demotabelle in DynamoDB anzulegen. Und zur Kontrolle: Wenn wir `aws dynamodb list-tables` ausführen,
00:03:07sehen wir genau die Tabelle, die wir gerade erstellt haben. Wer bereits LocalStack genutzt hat, wird sich
00:03:14hier sofort heimisch fühlen. Aber das bloße Erstellen von Buckets und einer leeren DynamoDB-Tabelle ist noch kein spannender Test.
00:03:21Das eigentliche Argument von FlowKey gegenüber LocalStack ist, dass viele ihrer Dienste keine oberflächlichen
00:03:27Mocks sind, sondern die echte Software in einem Container ausführen. Um das von vorne bis hinten zu testen, habe ich ein
00:03:33kleines Projekt zur Generierung von Bild-Thumbnails gebaut. Das ist im Grunde genau die Art von kombinierter AWS-Pipeline,
00:03:39die man auch in einem echten Projekt aufsetzen würde: Man legt ein Bild in einem S3-Bucket ab, was eine Lambda-Funktion
00:03:46auslöst. Die Lambda-Funktion skaliert das Bild, speichert das Thumbnail in einem zweiten Bucket und protokolliert Metadaten
00:03:53wie Abmessungen, Dateigröße und Zeitstempel in DynamoDB. Lassen Sie uns das also mal ausführen. Ich habe hier zwei
00:04:00Terminals geöffnet: In einem läuft das FlowKey-Docker-Setup, und im anderen werde ich die Befehle absetzen.
00:04:06Beim Ausführen von `docker compose up` zieht FlowKey sein Image und startet direkt. Parallel dazu starte ich
00:04:12ein Setup-Skript, das die eigentliche Architektur hochzieht. Nichts Allzu Komplexes, einfach das klassische Datei-Upload-Muster:
00:04:19Es erstellt zwei S3-Buckets (einen für Uploads, einen für Thumbnails), eine DynamoDB-Tabelle für
00:04:26die Metadaten und eine echte Lambda-Funktion, die unsere Vorschaubilder generieren soll.
00:04:32Testen wir es einfach mal. Ich lade hier ein Foto von einem Hund direkt in den Upload-Bucket hoch, und genau das
00:04:37ist der Teil, den ich wirklich mag: FlowKey simuliert die Lambda-Ausführung nicht nur. Wenn man ins andere Terminal
00:04:43schaut, zieht es das echte Python-Laufzeit-Image für Lambda und startet einen tatsächlichen Docker-Container,
00:04:50um die Funktion genauso auszuführen, wie es AWS Lambda tun würde. Nach der Ausführung wird der Container sofort
00:04:57wieder heruntergefahren. Das ist eine saubere Emulation. Die Funktion hat also das Bild skaliert und den Metadatensatz
00:05:03in DynamoDB geschrieben. Wir sehen die Originalgröße, die Thumbnail-Größe, die Abmessungen und den Zeitstempel.
00:05:09Zusätzlich hat es das fertige Thumbnail in den zweiten Bucket gelegt. FlowKey bietet zudem eine Web-Benutzeroberfläche,
00:05:15über die man alles erkunden kann, was man gerade gestartet hat. Im Speicherbereich sehen wir die drei erstellten Buckets.
00:05:22Wenn wir in den Thumbnail-Bucket klicken, finden wir genau die Datei, die Lambda generiert hat: 3,7 Kilobyte,
00:05:29mit Zeitstempel, ganz wie man es aus der echten S3-Konsole kennt. Wechseln wir zu DynamoDB, finden wir
00:05:35dort die Metadatentabelle mit dem eben geschriebenen Datensatz – dasselbe JSON wie im Terminal, nun übersichtlich
00:05:42im Browser dargestellt. Im Serverless-Bereich gibt es zudem die Konfiguration der Lambda-Funktion mit Speicher,
00:05:47Timeout und Bereitstellungspaket sowie eine integrierte Möglichkeit, sie direkt aus dem Browser heraus mit einem
00:05:53benutzerdefinierten JSON-Payload aufzurufen, falls man sie ohne die CLI testen möchte. Damit haben wir
00:05:58erfolgreich einen vollständigen AWS-Stack lokal auf unserem Rechner emuliert. Wer bereits LocalStack nutzt
00:06:06und über einen Wechsel zu FlowKey nachdenkt: Die Migration ist unkompliziert. Man muss sich nur die Docker-Compose-Datei
00:06:12schnappen, die bisher auf das LocalStack-Setup verwiesen hat, eine Zeile austauschen und das war's.
00:06:18Wer gezielt Lambda-Funktionen testet und Testcontainers verwendet – FlowKey liefert dafür ebenfalls ein Modul.
00:06:24Man kann das Ganze also direkt innerhalb einer Test-Suite hoch- und wieder herunterfahren, anstatt einen
00:06:31separaten Container selbst zu verwalten. So sieht das also aus: Das ist FlowKey in
00:06:36Kürze. Es wirkt wirklich wie eine sehr vielversprechende Alternative zu LocalStack, und ich finde es
00:06:42großartig, dass es vollständig Open Source und kostenlos nutzbar ist. Damit sie jedoch wachsen und ein
00:06:48gutes Produkt pflegen können, sind sie auf Sponsoren angewiesen. Wer echtes Interesse an dem Projekt hat,
00:06:54sollte daher über eine Spende nachdenken. Nur so können wir dafür sorgen, dass die Open-Source-Community floriert.
00:07:00Was haltet ihr von FlowKey? Habt ihr es schon verwendet? Wie sind eure Eindrücke? Seht ihr irgendwelche Nachteile gegenüber
00:07:06LocalStack? Lasst es uns unten in den Kommentaren wissen. Und wenn euch diese Art von
00:07:12technischen Analysen gefällt, lasst es mich bitte wissen, indem ihr den Daumen-nach-oben-Button unter dem Video klickt. Und vergesst
00:07:17auch nicht, unseren Kanal zu abonnieren. Hier war Andres von Betterstack, und wir sehen uns in den nächsten Videos.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video