Ziehen Sie Serverless in Betracht. NET - AWS Präskriptive Leitlinien

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Ziehen Sie Serverless in Betracht. NET

Übersicht

Serverloses Computing ist zu einem beliebten Ansatz für die Erstellung und Bereitstellung von Anwendungen geworden. Dies ist hauptsächlich auf die Skalierbarkeit und Agilität zurückzuführen, die der serverlose Ansatz beim Aufbau einer modernen Architektur bietet. In einigen Szenarien ist es jedoch wichtig, die Kostenauswirkungen von serverlosem Computing zu berücksichtigen.

Lambda ist eine serverlose Computerplattform, mit der Entwickler Code ausführen können, ohne dass dedizierte Server erforderlich sind. Lambda ist eine besonders attraktive Option für. NETEntwickler, die die Infrastrukturkosten senken möchten. Mit Lambda. NETEntwickler können Anwendungen entwickeln und bereitstellen, die hochgradig skalierbar und potenziell kostengünstig sind. Durch die Verwendung eines serverlosen Ansatzes stellen Entwickler keine Server mehr für die Bearbeitung von Anwendungsanfragen bereit. Stattdessen können Entwickler Funktionen erstellen, die bei Bedarf ausgeführt werden. Dadurch ist ein serverloser Ansatz skalierbarer, verwaltbarer und potenziell kostengünstiger als das Ausführen, Verwalten und Skalieren virtueller Maschinen. Dadurch zahlen Sie nur für die Ressourcen, die von der Anwendung genutzt werden, ohne sich Gedanken über nicht ausgelastete Ressourcen oder Serverwartungskosten machen zu müssen.

Entwickler können moderne, plattformübergreifende Lösungen nutzen. NETVersionen zum Erstellen serverloser Anwendungen, die schnell, effizient und kostengünstig sind. Das. NETCore und neuere Versionen sind ein kostenloses Open-Source-Framework, das sich besser für die Ausführung auf serverlosen Plattformen eignet als frühere. NETFramework-Versionen. Dies ermöglicht es Entwicklern, die Entwicklungszeit zu reduzieren und die Anwendungsleistung zu steigern. Modern. NETunterstützt auch eine Reihe von Programmiersprachen, darunter C# und F#. Aus diesem Grund ist es eine attraktive Option für Entwickler, die moderne Architekturen in der Cloud erstellen möchten.

In diesem Abschnitt wird erklärt, wie Sie durch die Verwendung von Lambda als serverlose Option Kosteneinsparungen erzielen können. Sie können die Kosten weiter optimieren, indem Sie die Ausführungsprofile Ihrer Lambda-Funktionen optimieren, die Speicherzuweisung Ihrer Lambda-Funktionen richtig dimensionierenAOT, Native verwenden und zu Graviton-basierten Funktionen übergehen.

Auswirkung auf die Kosten

Inwieweit Sie die Kosten senken können, hängt von mehreren Faktoren ab, z. B. davon, wie viele Ausführungen Ihre serverlosen Funktionen ausführen werden, sowie von der Menge des zugewiesenen Speichers und der Dauer der einzelnen Funktionen. AWS Lambda bietet ein kostenloses Kontingent, das eine Million kostenlose Anfragen pro Monat und 400.000 GB-Sekunden Rechenzeit pro Monat umfasst. Sie können Ihre monatlichen Kosten für Workloads, die innerhalb oder in der Nähe dieser Grenzwerte für das kostenlose Kontingent liegen, erheblich senken.

Bei der Verwendung eines Load Balancers mit Lambda-Funktionen als Ziel können auch zusätzliche Kosten anfallen. Dies wird als die Datenmenge berechnet, die vom Load Balancer für die Lambda-Ziele verarbeitet wird.

Empfehlungen zur Kostenoptimierung

Passen Sie Ihre Lambda-Funktionen richtig an

Die richtige Dimensionierung ist eine wichtige Maßnahme zur Kostenoptimierung in. NET-basierte Lambda-Funktionen. Dieser Prozess beinhaltet die Identifizierung der optimalen Speicherkonfiguration, die Leistung und Wirtschaftlichkeit in Einklang bringt, ohne dass Änderungen am Code erforderlich sind.

Durch die Konfiguration des Speichers für eine Lambda-Funktion im Bereich von 128 MB bis 10.240 MB passen Sie auch die Menge an v an, die während des Aufrufs CPU verfügbar ist. Dadurch können speichergebundene oder CPU -gebundene Anwendungen während der Ausführung auf zusätzliche Ressourcen zugreifen, was zu einer möglichen Reduzierung der Aufrufdauer und der Gesamtkosten führt.

Identifizieren Sie jedoch die optimale Konfiguration für Ihre. NETLambda-Funktionen auf Basis von Lambda-Funktionen können ein manueller und zeitintensiver Prozess sein, insbesondere bei häufigen Änderungen. Das AWS Lambda Power Tuning-Tool kann Ihnen dabei helfen, die passende Konfiguration zu finden, indem es eine Reihe von Speicherkonfigurationen anhand einer Beispielnutzlast analysiert.

Zum Beispiel die Erhöhung des Speichers für eine. NETDie Lambda-Funktion kann zu einer kürzeren Gesamtaufrufzeit und geringeren Kosten führen, ohne die Leistung zu beeinträchtigen. Die optimale Speicherkonfiguration für eine Funktion kann variieren. Das AWS Lambda Power Tuning-Tool kann dabei helfen, die kostengünstigste Konfiguration für jede Funktion zu ermitteln.

Im folgenden Beispieldiagramm verbessert sich die Gesamtaufrufzeit mit zunehmendem Arbeitsspeicher für diese Lambda-Funktion. Dies führt zu einer Senkung der Kosten für die gesamte Ausführung, ohne die ursprüngliche Leistung der Funktion zu beeinträchtigen. Für diese Funktion beträgt die optimale Speicherkonfiguration für die Funktion 512 MB, da hier die Ressourcennutzung im Verhältnis zu den Gesamtkosten jedes Aufrufs am effizientesten ist. Dies ist je nach Funktion unterschiedlich, und wenn Sie das Tool für Ihre Lambda-Funktionen verwenden, können Sie feststellen, ob sie von der richtigen Dimensionierung profitieren.

Diagramm der Aufrufzeit

Wir empfehlen Ihnen, diese Übung regelmäßig als Teil aller Integrationstests durchzuführen, wenn neue Updates veröffentlicht werden. Wenn Updates nur selten vorkommen, sollten Sie diese Übung regelmäßig durchführen, um sicherzustellen, dass die Funktionen optimiert und richtig dimensioniert sind. Nachdem Sie die passende Speichereinstellung für Ihre Lambda-Funktionen identifiziert haben, können Sie Ihren Prozessen die richtige Größe hinzufügen. Das AWS Lambda Power Tuning-Tool generiert programmgesteuerte Ausgaben, die von Ihren CI/CD-Workflows bei der Veröffentlichung von neuem Code verwendet werden können. Auf diese Weise können Sie die Speicherkonfiguration automatisieren.

Sie können das AWS Lambda Power Tuning-Tool kostenlos herunterladen. Anweisungen zur Verwendung des Tools finden Sie unter So führen Sie die Zustandsmaschine in aus GitHub.

Lambda unterstützt auch nativeAOT, was Folgendes ermöglicht. NETAnwendungen müssen vorkompiliert werden. Dies kann zur Kostensenkung beitragen, indem die Ausführungszeiten für reduziert werden. NETFunktionen. Weitere Hinweise zum Erstellen systemeigener AOT Funktionen finden Sie unter. NETFunktionen mit nativer AOT Kompilierung in der Lambda-Dokumentation.

Vermeiden Sie Wartezeiten im Leerlauf

Die Dauer der Lambda-Funktion ist eine Dimension, die für die Berechnung der Abrechnung verwendet wird. Wenn der Funktionscode einen blockierenden Aufruf tätigt, wird Ihnen die Zeit in Rechnung gestellt, die er auf eine Antwort wartet. Diese Wartezeit kann länger werden, wenn Lambda-Funktionen miteinander verkettet sind oder eine Funktion als Orchestrator für andere Funktionen fungiert. Wenn Sie über Workflows wie Batch-Operationen oder Systeme für die Auftragszustellung verfügen, erhöht dies den Verwaltungsaufwand. Darüber hinaus ist es möglicherweise nicht möglich, die gesamte Workflow-Logik und die Fehlerbehandlung innerhalb des maximalen Lambda-Timeouts von 15 Minuten abzuschließen.

Anstatt diese Logik im Funktionscode zu verarbeiten, empfehlen wir, dass Sie Ihre Lösung so umgestalten, dass sie AWS Step Functionsals Orchestrator des Workflows verwendet wird. Wenn Sie einen Standard-Workflow verwenden, wird Ihnen nicht die Gesamtdauer des Workflows, sondern jeder Statusübergang innerhalb des Workflows in Rechnung gestellt. Darüber hinaus können Sie die Unterstützung für Wiederholungsversuche, Wartebedingungen, Fehlerworkflows und Rückrufe in den Status Status verschieben, damit sich Ihre Lambda-Funktionen auf die Geschäftslogik konzentrieren können. Weitere Informationen finden Sie unter Optimieren Ihrer AWS Lambda Kosten — Teil 2 im Compute-Blog. AWS

Wechseln Sie zu Graviton-basierten Funktionen

Lambda-Funktionen, die von Graviton2-Prozessoren der nächsten Generation unterstützt werden, sind jetzt allgemein verfügbar. Graviton2-Funktionen, die eine ARM auf einer Prozessorarchitektur basierende Architektur verwenden, sind darauf ausgelegt, eine um bis zu 19 Prozent bessere Leistung bei 20 Prozent geringeren Kosten für eine Vielzahl von serverlosen Workloads zu bieten. Dank geringerer Latenz und besserer Leistung eignen sich Funktionen, die auf Graviton2-Prozessoren basieren, ideal für die Stromversorgung geschäftskritischer serverloser Anwendungen.

Die Migration zu Graviton-basierten Lambda-Funktionen kann eine kostengünstige Option für sein. NETEntwickler, die ihre Lambda-Kosten optimieren möchten. Graviton-basierte Funktionen verwenden ARM basierte Prozessoren anstelle herkömmlicher x86-Prozessoren. Dies kann zu erheblichen Kosteneinsparungen führen, ohne die Leistung zu beeinträchtigen.

Die Umstellung auf Graviton-basierte Funktionen bietet zwar mehrere Vorteile, es gibt jedoch auch einige Herausforderungen und Überlegungen, die Sie berücksichtigen sollten. Graviton-basierte Funktionen erfordern beispielsweise die Verwendung von Amazon Linux 2, das möglicherweise nicht mit allen kompatibel ist. NETAnwendungen. Darüber hinaus kann es zu Kompatibilitätsproblemen mit Bibliotheken oder Abhängigkeiten von Drittanbietern kommen, die nicht mit ARM basierten Prozessoren kompatibel sind.

Wenn du läufst. NETFramework-Anwendungen und wenn Sie die Vorteile von Serverless mit Lambda nutzen möchten, können Sie erwägen, die Anwendungen auf moderne Anwendungen zu portieren. NETindem Sie den Portierungsassistenten für verwenden. NET. Dies kann Ihnen helfen, die Portierung älterer Versionen zu beschleunigen. NETAnwendungen auf moderne Anwendungen. NET, sodass die Anwendung unter Linux ausgeführt werden kann.

In der folgenden Tabelle werden die Ergebnisse der Architektur x86 und ARM /Graviton2 für eine Funktion verglichen, die Primzahlen berechnet.

Vergleich der x86- und /Graviton2-Architektur ARM

Die Funktion verwendet einen einzigen Thread. Die niedrigste Dauer für beide Architekturen wird gemeldet, wenn der Speicher mit 1,8 GB konfiguriert ist. Darüber hinaus haben Lambda-Funktionen Zugriff auf mehr als 1 VCPU, aber in diesem Fall kann die Funktion die zusätzliche Leistung nicht nutzen. Aus dem gleichen Grund sind die Kosten bei einem Speicher von bis zu 1,8 GB stabil. Bei mehr Arbeitsspeicher steigen die Kosten, da es für diese Arbeitslast keine zusätzlichen Leistungsvorteile gibt. Der Graviton2-Prozessor bietet eindeutig eine bessere Leistung und geringere Kosten für diese rechenintensive Funktion.

Gehen Sie wie folgt vor, um Ihre Funktion für die Verwendung eines ARM auf Graviton basierenden Prozessors zu konfigurieren:

  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie dann die Lambda-Konsole.

  2. Wählen Sie Funktion erstellen aus.

  3. Geben Sie als Function name (Funktionsname) einen Namen ein.

  4. Wählen Sie für Runtime. NET6 (C#/ PowerShell).

  5. Wählen Sie für Architektur arm64 aus.

  6. Nehmen Sie alle zusätzlichen Konfigurationen vor, die Sie benötigen, und wählen Sie dann Create function.

Weitere Ressourcen