Auf einen Blick: AWS Serverless Application Model (AWS SAM) vereinfacht die Erstellung, Bereitstellung und Verwaltung serverloser Anwendungen und ermöglicht es Entwicklern, sich ohne Serverprobleme auf das Programmieren zu konzentrieren. Dieser Leitfaden behandelt wesentliche Funktionen, Vorteile und Ressourcen von AWS SAM, einschließlich der Integration mit AWS Lambda und Amazon API Gateway.
- Vereinfacht die serverlose Anwendungsentwicklung.
- Bietet ein kostengünstiges, effizientes Pay-as-you-go-Modell.
Serverlose Anwendungen verändern die Art und Weise, wie Unternehmen Geschäfte machen, indem sie ihnen ermöglichen, viel schneller und häufiger bereitzustellen – ein Wettbewerbsvorteil.
Amazons AWS Serverless Application Model (AWS SAM) war in diesem Bereich ein echter Wendepunkt, da es Entwicklern dank vereinfachter Vorlagen und Codebeispiele einfach macht, Anwendungen zu erstellen, zuzugreifen und bereitzustellen.
Was du in diesem Leitfaden lernen wirst
Dieser Leitfaden ist eine Einführung für Entwickler, die daran interessiert sind, das Programmieren in AWS SAM zu lernen. Wir werden die folgenden wichtigen AWS SAM-Themen und -Funktionen besprechen:
- Schlüsselterminologie
- Wer nutzt AWS SAM?
- Das AWS Serverless-Anwendungsmodell
- Welche AWS-Ressourcen werden in AWS SAM verwendet?
- AWS Serverless Application Repository
- Die Vorteile der Programmierung in AWS SAM
- AWS SAM für serverlose Anwendungen
- Beispiele für serverlose Anwendungsmodelle
Schlüsselterminologie
Hier sind drei wichtige Begriffe, die du verstehen musst, um mit AWS SAM zu programmieren:
- Function-as-a-Service (FaaS). Stellen Sie sich FaaS als ein implementierbares Framework vor, das leicht auf die Bedürfnisse eines Unternehmensunternehmens zugeschnitten werden kann. FaaS ermöglicht es Kunden, Code zu entwickeln und auszuführen, ohne Infrastruktur bereitstellen und verwalten zu müssen.
- Rechendienst. Ein On-Demand-FaaS, das sich auf serverloses Rechnen spezialisiert hat.
- Serverlose Anwendung. Eine in der Cloud programmierte Anwendung , die keine Serverwartung erfordert.
(Erfahren Sie mehr über serverlose Architektur.)
Wer nutzt AWS SAM?
AWS SAM ist eine wichtige Ressource für jeden Entwickler , der:
- Bereit für serverloses Rechnen
- Möchte mehr über serverlose Architektur erfahren
Die Ressourcen von AWS SAM machen es jedem Programmierer leicht, kostengünstige, effiziente serverlose Rechendienste von Amazon auszuprobieren.
Was ist AWS SAM (Serverless Application Model)?
Das AWS Serverless Application Model (SAM) ist darauf ausgelegt, die Erstellung, Bereitstellung und Ausführung serverloser Anwendungen so einfach wie möglich zu machen. Dies kann mit AWS SAM-Vorlagen mit nur wenigen ausgewählten Codeschnippeln erreicht werden – so kann praktisch jeder eine serverlose App erstellen.
Welche AWS-Ressourcen werden für AWS SAM verwendet?
Schauen wir uns die Ressourcen an, die im AWS Serverless Application Model verwendet werden.
AWS SAM CLI, YAML & CloudFormation
AWS SAM-Anwendungen können mit dem AWS SAM CLI-Kommandozeilen-Tool erstellt werden. SAM CLI ermöglicht es Ihnen, Anwendungen zu bauen, zu testen und bereitzustellen, indem Sie entweder verwenden:
- SAM-CLI-Vorlagen
- Das AWS Cloud Development Kit (CDK)
SAM CLI kann auch für die Anwendungsbereitstellung verwendet werden.
Man kann SAM-Anwendungsvorlagen mit YAML definieren und modellieren.
AWS SAM-Vorlagen sind eine Erweiterung der AWS CloudFormation-Vorlagen . Bei der Bereitstellung wandelt SAM die SAM-Syntax in die CloudFormation-Syntax um. CloudFormation richtet die Serverinfrastruktur ein und konfiguriert sie, unter der Ihre serverlosen Anwendungen laufen, sodass Sie sich auf Ihre Anwendung konzentrieren können und nicht auf Ihre Infrastruktur.
AWS Lambda
Die AWS Lambda FaaS-Plattform existiert, damit Entwickler Code ausführen können, ohne Server verwalten zu müssen. Mit dem Lambda-Compute-Service können Entwickler bereitstellbaren Code hochladen. Anschließend übernimmt Amazon die Verwaltung und berechnet nur für die angesammelte Laufzeit.
Die Lambda-Konsole macht es einfach, Anwendungen mit nur wenigen Klicks zu erstellen. Lambda unterstützt viele Sprachen über Lambda-Laufzeitumgebungen, darunter C#, Go, Java, .Net, Node.js und Python.
Entwickler können einzelne, einfache und skalierbare Lambda-Funktionen erstellen, die auf verschiedene Arten aufgerufen werden können, darunter:
- Automatischer Aufruf mit Triggern in Lambda oder einem anderen AWS-Service. Mit Triggern können Lambda-Funktionen als Reaktion auf Lebenszyklusereignisse, externe Ereignisse oder aus einem Zeitplan aufgerufen werden.
- Ereignisquellen-Mapping von einer anderen AWS-Ressource. Ereignisquellen-Mappings lesen Elemente aus einem Amazon Kinesis- oder Amazon DynamoDB-Stream; einer Amazon SQS-Warteschlange; oder einer anderen AWS-Ressource und senden diese Elemente an eine Lambda-Funktion.
- Andere AWS-Dienste, die direkt Lambda-Funktionen aufrufen können.
Bemerkenswert ist, dass auf Lambdas Architektur erstellte Funktionen skalierbar sind, um optimale Leistung zu gewährleisten.
(Vergleichen Sie AWS Lambda mit AWS ECS.)
Amazon API Gateway
Mit dem Amazon API Gateway Service können Entwickler das Frontend ihrer serverlosen Anwendung erstellen, bereitstellen, sichern und überwachen. API-Gateway-Erweiterungen können in Ihren AWS SAM-Vorlagen verwendet werden.
Wie AWS Lambda, das entwickelt wurde, um das Backend einer Anwendung zu erstellen, nimmt Amazon API Gateway die Komplexität des Schreibens und Bereitstellens von Code ab, der den Frontdoor-Eintrittspunkt Ihrer Anwendung ausführt, einschließlich der Autorisierung. Die Gateway-APIs funktionieren mit AWS Lambda-Backends sowie mit Amazon EC2 und anderen Webanwendungsdiensten.
Amazon hält seinen API-Gateway-Service kostengünstig und erschwinglich für Entwickler, indem es nur Gebühren für:
- Aufrufe an APIs
- Datenübertragungen aus ihnen heraus
AWS Serverless Application Repository
Das AWS Serverless Application Repository ist ein durchsuchbares Ökosystem, das es Entwicklern ermöglicht, serverlose Anwendungen und deren Komponenten für die Bereitstellung zu finden. Es hilft, die Entwicklung von serverlosen Anwendungen zu vereinfachen, indem es einsatzbereite Anwendungen bereitstellt.
Vorteile der Programmierung in AWS SAM
AWS SAM für serverlose Anwendungen
Beispiele für serverlose Anwendungsmodelle
Hier sind die grundlegenden Schritte:
- Suche und entdecken. Ein Entwickler kann das Repository nach Codeschnippeln, Funktionen, serverlosen Anwendungen und deren Komponenten durchsuchen.
- Integration mit der AWS Lambda-Konsole. Repository-Komponenten sind bereits für Entwickler verfügbar.
- Konfigurieren. Vor der Bereitstellung können Entwickler Umgebungsvariablen, Parameterwerte und mehr festlegen. Zum Beispiel kann man den Plug-and-Play-Weg gehen, indem man Repository-Komponenten zu einem größeren Anwendungsframework hinzufügt, oder man kann den Code dekonstruieren und anpassen, um weitere Anpassungen zu erhalten. Falls nötig, können Pull Requests auch an Repository-Autoren eingereicht werden.
- Bereitstellen. Bereitgestellte Anwendungen können über die AWS Management Console verwaltet werden. Ein Entwickler kann Anweisungen folgen, um seine serverlosen Anwendungen und Komponenten im Ökosystem zu benennen, zu beschreiben und hochzuladen, wo sie intern und mit anderen Entwicklern im gesamten Ökosystem geteilt werden können. Diese Funktion macht AWS SAM zu einer wirklich Open-Source-Umgebung.
Man kann serverlose Anwendungen für fast jede Art von Backend-Service bauen, ohne sich um Skalierbarkeit und Serververwaltung sorgen zu müssen. Hier sind einige der vielen Vorteile, die serverlose Anwendungen in AWS SAM bieten.
Kostengünstig und effizient
AWS SAM ist kostengünstig und effizient für Entwickler aufgrund seiner Pay-as-you-go-Struktur. Die Plattform berechnet Entwicklern nur für die Nutzung, was bedeutet, dass man nie für einen höheren Service bezahlt, als man nutzt.
Vereinfachte Prozesse
Das übergeordnete Ziel von AWS SAM ist die Benutzerfreundlichkeit. Es ist von Natur aus darauf ausgerichtet, die Anwendungsentwicklung zu vereinfachen, damit Programmierer mehr Freiheit haben, im Open-Source-Ökosystem zu erstellen.
Schnelle, skalierbare Bereitstellung
AWS SAM macht die Bereitstellung schnell und einfach, indem es Entwicklern erlaubt, Code auf AWS hochzuladen, und Amazon den Rest überlässt. Sie bieten außerdem robuste Testumgebungen, sodass Entwickler nichts verpassen. All dies geschieht auf einer Plattform, die leicht skalierbar ist und Apps wachsen und sich anpassen lässt, um Geschäftsziele zu erreichen.
Bequem und zugänglich
Zweifellos bietet AWS SAM eine bequeme Lösung für die Entwicklung in der Cloud. Seine serverlose Natur bedeutet auch, dass es eine universell zugängliche Plattform ist. Die große Reichweite des Internets macht es einfach, Code von überall auf Abruf auszuführen.
Verkürzte Markteinführungszeit
Insgesamt spart die Wahl einer serverlosen Anwendungsplattform Zeit und Geld, die sonst mit der Verwaltung und dem Betrieb von Servern oder Laufzeiten – sei es vor Ort oder in der Cloud – aufgewendet werden würden. Da Entwickler Apps in einem Bruchteil der Zeit erstellen können (denken Sie an Stunden – nicht Wochen oder Monate), können sie sich stärker auf die Beschleunigung der Innovation in der heutigen wettbewerbsintensiven digitalen Wirtschaft konzentrieren.
Es ist klar, dass AWS SAM eine hocheffiziente, hochskalierbare, kostengünstige und bequeme Lösung für Cloud-Programmierung ist.
Aber für diejenigen, die den Wechsel noch nicht gemacht haben, gibt es einige Bedenken, die bei der Entwicklung mit AWS SAM aufkommen, darunter:
- Ein allgemeiner Mangel an Kontrolle über das Ökosystem, in dem Entwickler programmieren.
- Vendor-Lock-in , die auftreten kann, wenn du dich für eine beliebige FaaS anmeldest.
- Sitzungs-Timeouts, bei denen Entwickler Code umschreiben müssen, was den Prozess komplexer macht, anstatt den Prozess zu vereinfachen.
- AWS Lambda-Timeouts: Lambda-Funktionen sind durch einen Timeout-Wert begrenzt, der von 3 Sekunden bis 900 Sekunden (15 Minuten) konfiguriert werden kann. Lambda beendet automatisch Funktionen, die länger als ihr Timeout-Wert laufen.
Die ersten beiden Punkte sind häufige Nachteile jeder Outsourcing-Strategie. Die letzten beiden Bedenken könnten jedoch bedeuten, dass Sie einige neue Workarounds implementieren werden. Unabhängig davon dürfen die vielen Vorteile der Programmierung in AWS SAM nicht übersehen werden.
Um das AWS Serverless Application Model (SAM) besser zu verstehen, hilft es, Beispiele dafür zu sehen, wie es in der realen Welt eingesetzt wird.
1. Datenverarbeitungspipeline
Verwenden Sie AWS SAM, um das Aufnehmen von Daten zu automatisieren sowie deren Transformation und Speicherung. Eine typische Pipeline verwendet AmazonS3, AWS Lambda, AWS Glue, Amazon Kinesis, Amazon DynamoDB oder Amazon Redshift. Das Hochladen einer Datei in einen Bucket in S3 löst eine Lambda-Funktion zur Vorverarbeitung der Daten aus. Anschließend geht sie zu Kinesis für Echtzeitanalysen oder in eine Datenbank wie Amazon DynamoDB. AWS Glue kann Daten extrahieren, transformieren und in Anwendungen laden. Diese Art von Pipeline ist skalierbar, fehlertolerant und sorgt für Kosteneffizienz bei der Verarbeitung von Datenvolumen.
2. Serverlose Webanwendung
Eliminieren Sie die Belastung der Verwaltung der Infrastruktur mit der serverlosen Webanwendung. Der Ansatz kann ein Dienstpaket verwenden, darunter Amazon API Gateway, AWS Lambda, Amazon S3, Amazon DynamoDB und sichere Authentifizierung durch Amazon Cognito. Für einen latenzarmen globalen Zugriff sollten diese Dienste über Amazon CloudFront bereitgestellt werden. Serverlose Webanwendungen sind ideal für moderne Webanwendungen, da sie automatisch skaliert werden, um den Datenverkehr zu bewältigen und die Betriebskosten zu senken.
3. Ereignisgesteuerte Microservices
Die Architektur und Integration von Diensten, die durch Events kommunizieren und in Echtzeit handeln, ist ein Ansatz, den E-Commerce-Plattformen, Finanztransaktionsverwaltungen und Organisationen, die Echtzeitanalysen benötigen, nutzen. Es nutzt Dienste wie Amazon EventBridge, AWS Lambda, Amazon SQS und DynamoDB. Ein Ereignis tritt auf, wie ein Kunde, der eine Bestellung aufgibt, die auf EventBridge veröffentlicht wird, um an Lambda weitergeleitet zu werden. Dieser Dienst kann die Bestellung validieren, Zahlungen verarbeiten und den Bestand aktualisieren. Ein Dienst wie Amazon SQS bietet asynchrone Verarbeitung. DynamoDB speichert alle Daten aus der Transaktion. Dieser Ansatz bietet Skalierbarkeit, isoliert Fehler und ermöglicht die unabhängige Entwicklung von Diensten.
Erfahren Sie mehr über die 15 Best Practices für den Aufbau einer Microservices-Architektur.
Verwandte Literatur
AWS-Leitfaden
- Ein Leitfaden für Anfänger zur Beherrschung des AWS Serverless-Anwendungsmodells
- AWS Well-Architected Framework: 6 Säulen und Best Practices
- AWS Global Cloud Infrastructure: Regionen, Zonen & mehr
- Was ist Amazon VPC? Amazon Virtual Private Cloud erklärt
- Was ist EFS? Amazon Elastic File System erklärt
- AWS-Management-Tools: Was verfügbar ist und wie man auswählt
- Was sind AWS-Organisationen? Schlüsselfunktionen, Vorteile und Best Practices
- Einführung in AWS Spot-Instanzen
- Einführung in AWS Reserved Instances
- Eine Einführung in AWS Route 53
- Was ist AWS Elastic Load Balancing?
- AWS ECS vs AWS Lambda: Was ist der Unterschied & Wie wählt man aus
- AWS ECS vs. EKS: Was ist der Unterschied und wie wählt man aus?
- Was ist AWS EBS (Elastic Block Store)?
- AWS Snowball Edge: Datenübertragung mit Edge Computing
- AWS Cloud Design Patterns
- AWS Cloud Datenbanken erklärt: Innovation in der Multi-Cloud
- AWS Braket Quantum Computing: So starten Sie
- AWS vs Azure vs GCP: Vergleich der drei großen Cloud-Plattformen
Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.