AWS Lambda vs. Amazon EC2: Für welches sollten Sie sich entscheiden?

Amazon ist einer der Marktführer bei der Bereitstellung vielfältiger Cloud-Dienste und bietet bereits mehrere Dutzend an – Tendenz steigend. Amazon EC2 ist einer der beliebtesten Amazon-Dienste und bildet den Kern der 2006 vorgestellten Amazon-Cloud-Computing-Plattform. Amazon EC2 ist heutzutage weit verbreitet, doch auch die Beliebtheit eines anderen Amazon-Dienstes namens Lambda (eingeführt im Jahr 2014) nimmt zu. Der heutige Blogbeitrag vergleicht die Plattformen AWS Lambda und EC2, um Ihnen Hilfe bei der Wahl der richtigen Plattform für Ihre Umgebung zu bieten.

< span data-sheets-value=“{“ 1 „:2,“ 2 „:“

„}“ data-sheets-userformat=“{“ 2 „:17089,“ 3 „:{“ 1 „:0},“ 9 „:1,“ 10 „:1,“ 12 „:0,“ 17 „:1}“>

NAKIVO für AWS EC2-Backups

NAKIVO für AWS EC2-Backups

Backup von Amazon EC2-Instanzen auf EC2, AWS S3 und vor Ort. Anti-Ransomware-Optionen. Schnelle Wiederherstellung von Instanzen und Anwendungen.

</span>

Was ist AWS EC2?

AWS EC2 (Amazon Web Services Elastic Compute Cloud) ist ein Dienst, der die Nutzung virtueller Maschinen, sogenannter EC2-Instanzen, in der Cloud ermöglicht und Skalierbarkeit bietet. Sie können die Größe des Speicherplatzes, die CPU-Leistung, den Arbeitsspeicher usw. jederzeit nach Bedarf anpassen. Sie können das Basis-Image mit dem erforderlichen vorinstallierten Betriebssystem (OS) wie Linux oder Windows auswählen und anschließend die meisten Betriebssystem-Einstellungen konfigurieren sowie benutzerdefinierte Anwendungen installieren. Sie verfügen über Root-Zugriff auf Ihre Amazon EC2-Instanzen und können zusätzliche Benutzer anlegen. Verwalten Sie alles, was Sie benötigen, und behalten Sie die volle Kontrolle über Ihre EC2-Instanzen, einschließlich des Neustarts und des Herunterfahrens der Instanz. Die Kategorie des AWS EC2-Webdienstes wird als „Infrastructure as a Service“ (IaaS) bezeichnet. AWS EC2 kann für Cloud-Hosting genutzt werden – Sie können Server als virtuelle Maschinen (Instanzen) in der Cloud bereitstellen.

Was ist AWS Lambda?

AWS Lambda ist eine Plattform, mit der Sie einen Codeausschnitt ausführen können, der in einer der unterstützten Programmiersprachen – Java, JavaScript oder Python – geschrieben wurde, sobald ein mit einem Ereignis verknüpfter Trigger ausgelöst wird. Sie müssen keinen virtuellen Server und keine Umgebung konfigurieren, um eine von Ihnen geschriebene Anwendung auszuführen. Fügen Sie einfach Ihren Programmcode (in diesem Fall als „Lambda-Funktion“ bezeichnet) in die AWS-Lambda-Oberfläche ein, verknüpfen Sie die Lambda-Funktion mit den Ereignissen und führen Sie die Anwendung bei Bedarf in der Cloud aus, ohne sich um das Management der Server und die Konfiguration der Umgebung kümmern zu müssen. Auf diese Weise können Sie sich auf Ihre Anwendung konzentrieren und müssen sich nicht um das Server-Management kümmern – deshalb wird AWS Lambda als „serverlos“ bezeichnet.

Ein Ereignis, nach dem Ihre Anwendung ausgeführt wird, kann das Hochladen einer Datei in einen Amazon S3-Bucket, das Vornehmen von Änderungen an DynamoDB-Tabellen, der Empfang einer HTTP-Anfrage an den API Gateway-Dienst usw. sein. Nachdem Sie eine Funktion so konfiguriert haben, dass sie bei Eintreten eines Ereignisses ausgeführt wird, wird Ihre Anwendung nach jedem neuen Ereignis automatisch ausgeführt.

Was die Klassifizierung betrifft, so ist Lambda eine Implementierung von „Function as a Service“ (FaaS) von Amazon. In der folgenden Tabelle können Sie den Grad des Managements für jeden Diensttyp ausgehend von der Nutzung physischer Server einsehen und vergleichen. Die untersten Ebenen (erforderliche Benutzerverwaltung) sind grün markiert, die oberen Ebenen (vom Anbieter bereitgestellte Verwaltung) blau. Bei der Nutzung physischer Server können Sie somit die Hardware sowie alle darüber liegenden Ebenen verwalten. Bei der Nutzung von Infrastructure as a Service (IaaS) wie AWS EC2 können Sie Betriebssysteme auf den bereitgestellten Virtuellen Maschinen (EC2-Instanzen) verwalten. Auf der „Platform as a Service“-Ebene (PaaS) können Sie Ihre Anwendung ausführen, die vor der Ausführung kompiliert werden muss. Bei der Nutzung von „Function as a Service“ (FaaS) wie AWS Lambda müssen Sie Ihre Anwendung nicht kompilieren – fügen Sie einfach Ihren Code in die von dem MSP (Managed Services Provider) bereitgestellte Schnittstelle ein. SaaS (Software as a Service), das in der Tabelle zum Vergleich aufgeführt ist, ermöglicht es Ihnen lediglich, fertige Anwendungen (von Anbietern erstellte Anwendungen) in der Cloud über einen Thin Client oder einen Webbrowser zu nutzen.

AWS Lambda vs EC2 - comparing the management level for cloud services

AWS EC2 vs. Lambda: Verwendungsfälle

AWS EC2 bietet einen breiten Bereich an Verwendungsfällen, da bei der Nutzung dieses Dienstes nahezu alles konfiguriert werden kann. Die häufigsten Verwendungsfälle von AWS EC2 sind:

  • Hosting von Websites
  • Entwicklung und Test von Anwendungen oder komplexen Umgebungen
  • Hochleistungsrechnen
  • Disaster Recovery

Allgemeine Verwendungsfälle von AWS Lambda:

  • Automatisierung von Aufgaben
  • Verarbeitung von in Amazon S3 hochgeladenen Objekten
  • Echtzeit-Protokollanalyse
  • Echtzeit-Filterung und -Transformation von Daten

Betrachten wir ein konkretes Beispiel. Stellen Sie sich vor, Ihre Website nutzt einen Amazon S3-Bucket, um Website-Inhalte wie Bilder, Videos, Audiodateien usw. zu speichern. Wenn eine neue Bild- oder Videodatei hochgeladen wird, müssen Sie ein Vorschaubild für Ihre Webseite erstellen, das als Link zu einem Bild oder einer Videodatei in voller Größe dient. Das manuelle Erstellen von Vorschaubildern kann eine mühsame und zeitaufwändige Aufgabe sein. In diesem Fall können Sie eine Lambda-Funktion erstellen, die die Bildgröße automatisch auf der Grundlage des hochgeladenen Bildes anpasst, das Bild umbenennt und das Zielbild im entsprechenden Verzeichnis speichert. Sie können die Lambda-Funktion so konfigurieren, dass sie unmittelbar nach dem Hochladen der Originalbilddatei in den von Ihrer Website verwendeten Amazon S3-Bucket ausgeführt wird.

AWS EC2 vs. Lambda: Funktionsprinzip

EC2 . Wie Sie sich vielleicht erinnern, arbeiten Sie bei der Nutzung von AWS EC2 mit virtuellen Maschinen (VMs), die als EC2-Instanzen bezeichnet werden. Sie können einer EC2-Instanz virtuelle Hardware (virtuelle Festplatten, Netzwerkschnittstellen, Prozessoren, Arbeitsspeicher) hinzufügen sowie eine VM-Instanz starten, stoppen und neu starten. EC2-Instanzen können mit zwei Speichertypen arbeiten – Elastic Block Storage (EBS) und S3-Buckets. Sie können ein vorkonfiguriertes Image mit einem vorinstallierten Betriebssystem verwenden und Ihr individuelles Amazon Machine Image (AMI) erstellen. Der EC2-Clouddienst bietet automatische Skalierung und Lastenausgleich. EC2-Instanzen lassen sich mit den meisten anderen Amazon-Webdiensten kombinieren, wie beispielsweise S3, ECS, Route53, CloudWatch usw. .

Lambda . Bei der Verwendung von AWS Lambda läuft Ihre Anwendung (Lambda-Funktion) in einem Container, der für Sie nahtlos in den Hintergrund übergeht. Der Container enthält Code und Bibliotheken. Die Ressourcen werden von Amazon entsprechend den Anforderungen der Anwendung bereitgestellt, und die Skalierung erfolgt automatisch und nahtlos. Sie haben weder Kontrolle über den Container, in dem Ihre Anwendung läuft, noch über die EC2-Instanz, auf der der Container ausgeführt wird (Sie wissen nichts über diese Komponenten, da die zugrunde liegende Infrastruktur für Amazon-Lambda-Nutzer nicht zugänglich ist). Siehe die obige Tabelle.

AWS Lambda kann als ein Framework des EC2 Container Service (ECS) betrachtet werden, das Container nutzt, um einen Codeabschnitt auszuführen, der Ihre Anwendung repräsentiert. Der Lebenszyklus jedes Containers ist kurz. Die ausgeführte Lambda-Funktion speichert ihren Zustand nicht. Wenn Sie Ergebnisse speichern möchten, sollten diese in einem Speicher abgelegt werden, beispielsweise in einem Amazon S3-Bucket. Es ist möglich, ein Virtuelles Netzwerk für eine Lambda-Funktion zu konfigurieren, beispielsweise für die Verbindung zu Amazon RDS (Amazon Relational Database Service). Lambda besteht aus mehreren Teilen: Schichten, Funktionsumgebung und einem Handler. Trigger sind Lambda-Aktivatoren. Lambda ist eine Funktion, die durch Abfragen von Triggern ausgeführt wird.

Die vollständige Liste der verfügbaren Trigger:

  • API Gateway
  • AWS IoT
  • Alexa Skills Kit
  • Alexa Smart Home
  • Application Load Balancer
  • CloudFront
  • CloudWatch Ereignisse
  • CloudWatch Logs
  • CodeCommit
  • Cognito Sync Trigger
  • DynamoDB
  • Kinesis
  • S3
  • SNS
  • SQS

API Gateway ist ein spezieller Dienst, der es Entwicklern ermöglicht, verschiedene Nicht-AWS-Anwendungen mit AWS-Anwendungen und anderen Ressourcen zu verbinden.

AWS EC2 vs. Lambda: Versionen/Snapshots

EC2 . Für EBS-Volumes (Elastic Block Storage) von AWS-EC2-Instanzen steht ein komplexes System von Schnappschüsse zur Verfügung. Sie können inkrementelle Schnappschüsse und in den gewünschten Zustand zurücksetzen einer EC2-Instanz erstellen. Multi-Volume-Schnappschüsse können für kritische Workloads verwendet werden, beispielsweise für Datenbanken, die mehrere EBS-Volumes nutzen.

Lambda . Für das bessere Management von Lambda-Funktionen wird ein praktisches System für Versionierung unterstützt. Sie können jeder hochgeladenen Code-Kopie eine Versionsnummer zuweisen und anschließend Aliase hinzufügen, die auf die entsprechende Version verweisen. Jede Versionsnummer beginnt bei 1 und wird schrittweise erhöht. Sie können Lambda-Funktionen beispielsweise in die Kategorien „Alpha“, „Beta“ und „Produktion“ einteilen. Der Amazon Resource Name wird jeder Lambda-Funktionsversion bei der Veröffentlichung zugewiesen und kann später nicht mehr geändert werden.

AWS EC2 vs. Lambda: Sicherheit

EC2 . Sie sollten sich um Ihre EC2-Instanzen und alle Komponenten innerhalb der Instanzen kümmern. Sie können eine Firewall für Ihre EC2-Instanz manuell konfigurieren – Amazon stellt die VPC-Firewall (Virtual Private Cloud) zur Verfügung, um den Datenverkehr zu steuern und die Sicherheit für EC2-Instanzen in der Cloud zu gewährleisten. Sie können Antivirensoftware für Ihre EC2-Instanzen manuell einrichten und konfigurieren, IAM-Rollen erstellen, Berechtigungen festlegen, Sicherheitsgruppen anlegen usw. Mit dem AWS Systems Manager Patch Manager können Sie Betriebssystem-Updates und Sicherheitspatches automatisch installieren. Sie können AWS so konfigurieren, dass vor der Installation eines Patches oder Updates ein Schnappschuss erstellt wird, um mögliche Probleme zu vermeiden. Erstellen Sie bei Bedarf Schlüsselpaare für den Zugriff auf EC2-Instanzen. Bei der Nutzung von AWS EC2 sollten Sie der Sicherheit mehr Aufmerksamkeit schenken als bei der Nutzung von AWS Lambda.

Lambda . Es gibt Berechtigungen für AWS-Dienste, auf die Lambda standardmäßig Zugriff hat. Die IAM-Rolle wird verwendet, um Dienste zu definieren, die für eine Lambda-Funktion verfügbar sein müssen. Für jede Lambda-Funktion sollten Sie die IAM-Rolle konfigurieren, in deren Namen die Lambda-Funktion gestartet wird. Das bedeutet, dass Sie nach der Konfiguration der IAM-Rolle Ihre Lambda-Funktion mit den definierten Amazon-Diensten verbinden können, ohne Schlüssel oder andere Autorisierungsparameter verwenden zu müssen.

Es ist möglich, die Verschlüsselung zwischen einer Lambda-Funktion und S3 sowie zwischen einem API-Gateway und Lambda mit einem KMS-Schlüssel zu konfigurieren. Wenn Sie eine Lambda-Funktion erstellen, wird ein Standard-Verschlüsselungsschlüssel angelegt. Es wird jedoch empfohlen, einen eigenen KMS-Schlüssel zu erstellen.

Im Vergleich zu EC2-Instanzen erfordern Lambda-Funktionen keine Sicherheitsupdates und Patches. Die zugrunde liegenden Container und Betriebssysteme werden automatisch von Amazon aktualisiert. Dies ist der Vorteil der Verwendung von Lambda-Funktionen in Bezug auf die Sicherheit.

AWS EC2 vs. Lambda: Leistung und Verfügbarkeit

EC2 . Nach dem Starten einer EC2-Instanz läuft diese so lange, bis Sie sie manuell stoppen oder eine Abschaltaufgabe planen. Wenn eine EC2-Instanz läuft, wird eine Anwendung nahezu sofort auf dieser Instanz ausgeführt. Sie können so viele Anwendungen gleichzeitig ausführen, wie Sie möchten, sofern die Leistung Ihrer EC2-Instanz dies zulässt. Das Ausführen von Anwendungen auf EC2-Instanzen ist eine gute Lösung, wenn Anwendungen den ganzen Tag über regelmäßig ausgeführt werden müssen.

Lambda . Eine Lambda-Funktion ist immer verfügbar, läuft jedoch nicht ständig. Standardmäßig ist die Lambda-Funktion inaktiv. Wenn ein mit einem Ereignis verknüpfter Trigger aktiviert wird, wird Ihre Anwendung (Lambda-Funktion) gestartet. Die maximale Ausführungszeit der Lambda-Funktion (Timeout) ist auf 900 Sekunden (15 Minuten) begrenzt. Dementsprechend ist es keine gute Idee, lang laufende Anwendungen in AWS Lambda auszuführen. Wenn Sie Anwendungen ausführen müssen, deren erfolgreiche Ausführung mehr als 900 Sekunden dauert, oder Anwendungen mit variabler Ausführungszeit, sollten Sie den Einsatz von AWS EC2 in Betracht ziehen. Eine weitere Beschränkung für eine laufende Lambda-Funktion ist die maximale Speichermenge, die 3008 MB beträgt.

Je nach Region können 1000 bis 3000 Lambda-Instanzen gleichzeitig ausgeführt werden. Wenden Sie sich an den AWS-Support, wenn Sie daran interessiert sind, mehr Instanzen gleichzeitig auszuführen.

Bei AWS Lambda beträgt die Verzögerung zwischen dem Senden einer Anfrage und der Ausführung der Anwendung bis zu 100 Millisekunden, im Gegensatz zu Anwendungen, die auf EC2-Instanzen laufen und keine solche Verzögerung aufweisen. 100 ms sind zwar keine lange Zeit, doch für bestimmte Arten von Anwendungen kann diese Zeitspanne entscheidend sein. Wenn Ihre Anwendung Daten aus einem Amazon S3-Bucket herunterladen muss, können vor der Ausführung der Anwendung zusätzlich 1 bis 3 Sekunden erforderlich sein. Berücksichtigen Sie diese Verzögerungszeit, wenn Sie planen, AWS Lambda zum Ausführen von Anwendungen zu nutzen.

Die Kaltstartzeit ist ein Nachteil von Lambda-Funktionen. Eine Latenz tritt auf, wenn eine Funktion über einen längeren Zeitraum nicht ausgeführt wurde und Zeit benötigt wird, um einen Container zu starten und die Funktion in Amazon Cloud auszuführen. Die Verwendung von AWS Lambda zur Ausführung von Anwendungen kann eine gute Lösung sein, wenn Sie ungleichmäßige Workloads haben und Anwendungen zu unterschiedlichen Tageszeiten mit langen Pausen zwischen den Ausführungen ausgeführt werden müssen.

AWS Lambda vs. EC2: Preismodell

Sowohl der EC2- als auch der Lambda-Clouddienst basieren auf dem Pay-as-you-go-Prinzip. Betrachten wir jedoch die Details und Unterschiede.

EC2 . Sie zahlen für die Zeit, in der Ihre AWS-EC2-Instanz läuft, unabhängig davon, ob die Funktion bzw. Anwendung ausgeführt wird oder nicht. Der Preis pro Stunde hängt von der CPU-Leistung, der Speichergröße, der Grafikkartenleistung und der von der EC2-Instanz genutzten Speicherkapazität ab. Wenn Ihre Funktion bzw. Anwendung aufgrund einer hohen Anzahl regelmäßiger Anfragen Immer verfügbar sein muss, kann die Nutzung von AWS EC2-Instanzen finanziell sinnvoller sein.

Lambda . Sie zahlen für die Anzahl der Anwendungsausführungen und die zur Ausführung benötigte Zeit. Der Preis pro Sekunde für die Ausführung einer Anwendung hängt von der für die Anwendung bereitgestellten Speichermenge ab und beträgt 0,00001667 US-Dollar pro Gigabyte-Sekunde. Die Ausführungszeit der Anwendung wird vom Start der Anwendung bis zur Rückgabe des Ergebnisses oder bis zum Abbruch nach Ablauf des Timeouts gezählt. Die Zeit wird auf die nächste Zahl aufgerundet, die ein Vielfaches von 100 ms ist. Wenn Sie On-Demand-Verfügbarkeit benötigen, ist der Preis für die Nutzung von AWS Lambda zur Ausführung von Funktionen/Anwendungen möglicherweise günstiger.

Fazit

AWS EC2 ist ein Dienst, der die traditionelle Cloud-Infrastruktur (IaaS) repräsentiert und es Ihnen ermöglicht, EC2-Instanzen als VMs auszuführen, Umgebungen zu konfigurieren und benutzerdefinierte Anwendungen auszuführen.

AWS Lambda ist die Umsetzung von „Function as a Service“ von Amazon, mit der Sie Ihre Anwendung ausführen können, ohne sich um die zugrunde liegende Infrastruktur kümmern zu müssen. AWS Lambda bietet Ihnen eine serverlose Architektur und ermöglicht es Ihnen, einen Codeabschnitt in der Cloud auszuführen, nach dem Aktivieren eines Ereignisauslösers. Bei der Nutzung von AWS Lambda verfügen Sie über eine skalierbare, kompakte und kostengünstige Funktion mit Versionskontrolle. Sie können sich auf das Schreiben von Code konzentrieren, nicht auf die Konfiguration der Infrastruktur.

Wenn Sie festgestellt haben, dass Ihre Anwendung auf einer immer laufenden EC2-Instanz viel Leerlaufzeit aufweist, sollten Sie den Einsatz von AWS Lambda in Betracht ziehen, da Sie bei AWS Lambda keine Kosten für Leerlaufzeit zahlen müssen, wenn keine Anfragen zur Ausführung der Anwendung vorliegen. Bei einer hohen Anzahl regelmäßiger Anfragen zur Ausführung Ihrer Anwendung ist es möglicherweise besser, die Anwendung auf einer immer laufenden EC2-Instanz bereitzustellen.

Die Nutzung von AWS EC2 eignet sich gut für die Ausführung von leistungsstarken Anwendungen, lang laufenden Anwendungen und solchen, bei denen es beim Start zu keinen Verzögerungen kommen darf. Wenn Sie AWS EC2-Instanzen verwenden, vergessen Sie nicht, diese zu sichern, um Datenverluste zu vermeiden. NAKIVO Backup & Replication ist eine All-in-One-Lösung für die Datensicherheit, die neben VMware vSphere-VMs, Hyper-V-VMs und physischen Servern auch EC2-Instanzen schützen kann.

Probieren Sie NAKIVO Backup & Replication aus

Probieren Sie NAKIVO Backup & Replication aus

Nutzen Sie die kostenlose Testversion, um alle Funktionen der Datensicherheit der Lösung kennenzulernen. 15 Tage kostenlos. Keine Einschränkungen hinsichtlich Funktionen oder Kapazitäten. Keine Kreditkarte erforderlich.

Empfohlene Artikel