Vorschläge zu serverlosen Diensten

Durch schnelle, flexible und enorm elastische Skalierung kann die serverlose Architektur den Leistungsengpass wichtiger Funktionen gut lösen, ist aber nicht perfekt: Sie muss nicht nur das Design ändern, um sich daran anzupassen, das vertraute Programmiermodell anpassen, sondern auch Probleme lösen wie Planungsbudget, Sicherheit usw. Aber im Allgemeinen bietet es eine weitere Wahl für Anwendungen in der Cloud – und birgt eine unwiderstehliche Versuchung: Es vereinfacht den gesamten Prozess von Anwendungen von der Entwicklung bis zur Bereitstellung und Wartung erheblich. Die Entwicklung der Informationstechnologie in verschiedenen Bereichen ist nicht gleich. Zugegebenermaßen war das schon immer so, denn die praktikablen Lösungen, die Menschen für die Probleme des Tages finden, liegen oft schon vor den Problemen selbst.

Durch schnelle, flexible und enorm elastische Skalierung kann die serverlose Architektur den Leistungsengpass wichtiger Funktionen gut lösen, ist aber nicht perfekt: Sie muss nicht nur das Design ändern, um sich daran anzupassen, das vertraute Programmiermodell anpassen, sondern auch Probleme lösen wie Planungsbudget, Sicherheit usw. Aber im Allgemeinen bietet es eine weitere Wahl für Anwendungen in der Cloud – und birgt eine unwiderstehliche Versuchung: Es vereinfacht den gesamten Prozess von Anwendungen von der Entwicklung bis zur Bereitstellung und Wartung erheblich.

Die Vereinfachung des gesamten Prozesses des Schreibens von Code und der Bereitstellung von Anwendungen ist der Traum eines jeden Entwicklers, und die serverlose Architektur (Serverless) ist eine solche Lösung. Bei der Einführung dieser Architektur müssen Sie deren Einschränkungen, Kostenprobleme und Sicherheitsprobleme berücksichtigen.

Die Entwicklung der Informationstechnologie in verschiedenen Bereichen ist nicht gleich. Zugegebenermaßen war das schon immer so, denn die praktikablen Lösungen, die Menschen für die Probleme des Tages finden, liegen oft schon vor den Problemen selbst. Verglichen mit dem langsamen Fortschritt von Technologien wie Virtualisierung und Cloud Computing stehen Programmiersprachen seit einem Jahrzehnt fast still. Erst mit dem Aufkommen einer neuen Runde von Programmiersprachen und -methoden wie Python, Ruby, Node und Swift wurde diese Situation durchbrochen. Diese beiden Bereiche scheinen zwar nichts miteinander zu tun zu haben, doch wir werden erleben, wie sich beide gemeinsam entwickeln und gemeinsam aufblühen.

Dieses neue kombinierte Feld ist Serverless Computing (Serverless). Die einfach bereitzustellende Sammlung von Containerinstanzen, die Allgegenwart REST-API-basierter externer Dienste und die einfache Implementierung neuer Programmiersprachen für REST-APIs machen die Bereitstellung von Schnittstellen mit REST-APIs zu einer einfachen und praktikablen Option. Diese Technologien ergeben zusammen eine völlig neue Form der Datenverarbeitung. Wir sind bereits mit vielen Aspekten dieser neuen Form der Programmierung vertraut (z. B. wie man REST-APIs entwirft und implementiert, wie man Microservices entwirft und implementiert), aber es gibt noch einige Aspekte, die nicht so bekannt sind.

Vorschläge für serverlose Dienste Vorschläge für serverlose Dienste

Von Node.js gelernt

      Mein erstes Node.js-Programm unterscheidet sich nicht wesentlich von dem der meisten Leute: Richten Sie den Überwachungsport und -pfad ein, schreiben Sie den Code, um die entsprechende Ausführungs- und Exit-Logik zu handhaben, und verwenden Sie dann den Browser, um auf den entsprechenden URI zuzugreifen. Nach der Implementierung der Grundfunktionalität war es für mich selbstverständlich, die Anwendung weiter zu verbessern, indem ich die gleichzeitige Ausführung von Node und andere neue Vorteile nutzte.

     Was diese Anwendung jedoch bereitstellt, ist keine REST-API, sondern antwortet lediglich auf HTML-Seiten, die je nach Anforderungsinhalt unterschiedliche Inhalte enthalten. Nach der Kombination mit REST wird die Node-Anwendung zu einem Rechenknoten. Was unverändert bleibt, ist, dass beim Empfang einer Anfrage die Logik ausgeführt und dann beendet wird. Gleichzeitig überwacht es als Teil der Infrastruktur weiterhin einen bestimmten Port.

Infrastruktur

Um jedoch eine einfache, aber vollständige und ausführbare Node-Anwendung (oder Python/Djang/Java/Spring/RoR usw.) zu implementieren, müssen Netzwerkkonfiguration, Firewall-Konfiguration, Betriebssystemkonfiguration und -optimierung, Speicherkonfiguration und ggf. After verwendet werden Bei der Installation der Web Application Firewall (WAF: Web Application Firewall) müssen Sie auch die WAF konfigurieren. Obwohl DevOps dies alles ein wenig einfacher machen kann, stellen Sie sich vor, Sie müssten diese ganze zusätzliche Konfiguration überhaupt nicht vornehmen?

Serverlose Architektur

     Als Reaktion auf dieses Problem schlagen immer mehr Unternehmen Lösungen vor. Sie denken darüber nach, ob es für Entwickler möglich ist, Code zu schreiben, Anwendungen bereitzustellen und diese Anwendungen einfach dann zu erhalten, wenn sie sie benötigen, ohne zusätzliche Arbeit, wenn sie nicht benötigt werden, und bei Bedarf zu skalieren? Kann sogar eine Konfiguration wie eine WAF automatisiert und der Anwendungszugriff auf die richtige Teilmenge von Personen/Maschinen beschränkt werden? Was wäre, wenn die Bereitstellung einer App wirklich so einfach wäre wie das Hochladen einer ZIP-Datei oder das Schreiben von Code in einem Editor und das Klicken auf „Bereitstellen“? Wenn schließlich der Zugriff auf Datenbanken und Speicher vorkonfiguriert ist, wie ist diese Konfiguration enthalten?

     Dies ist zweifellos eine große Attraktion für Entwickler. Nach dem Schreiben des Codes ist es der Traum vieler Entwickler, ihn ohne die scheinbar notwendige Konfiguration (sei es eine physische Umgebung, eine virtuelle Umgebung oder eine Cloud-Umgebung) bereitzustellen. Dies kann nicht anders, als die Menschen an einige Beispiele aus der Praxis zu erinnern. Das erste, was die Hauptlast zu tragen hat, ist die Bewältigung des Leistungsengpasses während der Spitzenzeit. Angenommen, Sie verfügen über ein perfekt funktionierendes Online-Bestellsystem und in Spitzenverkaufszeiten (z. B. Black Friday) stürzt das System häufig ab, weil die Überprüfung der Lieferadressen zu lange dauert.

Wäre es nicht großartig, wenn Sie eine serverlose Funktion hätten, die einfach zurückgibt, ob die eingegebene Adresse gültig ist, sodass Sie ihr die Adressvalidierung übergeben könnten? Darüber hinaus ermöglicht diese Funktion eine schnelle Erweiterung auf nahezu unbegrenzte Kapazität (die Netzwerkbandbreite muss natürlich noch berücksichtigt werden)! Dieser Engpass stellt nun kein Problem mehr dar, Sie zahlen nur für die Rechenressourcen (CPU-Zeit), die diese Funktion tatsächlich verbraucht. Das bedeutet, dass Sie umso mehr bezahlen, je mehr Sie anrufen, aber in den meisten Fällen ist die Gebühr gering. Sie zahlen nur für die Rechenressourcen, die Sie tatsächlich nutzen.

Wäre es nicht schön, wenn all dies zu einem erschwinglichen Preis auf Ihrer Website oder in der Cloud erledigt werden könnte? Es gibt bereits solche Produkte (Microsoft Functions, AWS Lambda und nanoscale.io usw.), die all das bieten.

kein Regenbogen nach dem anderen

      Auch serverloses Computing ist nicht perfekt. Bei der Auswahl eines Lieferanten sollten Sie unter anderem auf Folgendes achten:

  1. Werkzeugunterstützung . Es muss Ihre Entwicklungstools unterstützen, insbesondere die CI/CD/ARA-Unterstützung ist entscheidend. Wenn Sie Serverless Computing nicht in Ihre bestehende Entwicklungsumgebung und Gesamtpipeline integrieren können, dann ist es nicht gut genug.
  2. Abrechnungs- und Lademethoden . Vergessen Sie nie, dass diese Dienstleister dasselbe Ziel haben wie Ihr Unternehmen: Geld zu verdienen. Stellen Sie sicher, dass Sie verstehen, dass das Geld, das sie verdienen, Ihr Budget sprengt. Alle On-Demand-Ressourcen haben einen zusätzlichen Faktor, da sie auf einem unvorhersehbaren Kundenstamm und deren Nutzungsschwankungen beruhen. Beachten Sie jedoch, was Ihnen in Rechnung gestellt wird und welche Rechte sich der Anbieter vorbehält, die Abrechnungsmethoden zu ändern.
  3. Sicherheitsfunktionen . Wenn Sie eine große Codemenge von Ihrer Kernanwendung trennen und in die Cloud verschieben möchten, ist möglicherweise eine große Investition in die Sicherheit und das Schreiben von zusätzlichem Code erforderlich. Stellen Sie sicher, dass Ihr Anbieter Ihnen entweder bei den oben genannten Aufgaben helfen kann oder Ihnen erlaubt, Ihren Code hinter Firewalls und WAFs aufzubewahren.
  4. Ihre Gesamtarchitektur . Während unsere obigen Beispiele die „niedrig hängenden Früchte“ (die niedrig hängenden Früchte) gut demonstrieren, können bei etwas komplexeren Fällen Probleme wie Datenzugriff, Datensicherheit, Kostenprobleme und sogar Hochverfügbarkeit auftreten. Stellen Sie sicher, dass Ihr Team sich mit der Implementierung serverloser Computing-Architekturen befasst hat und dieses Programmiermodell gut beherrscht.

Erstellen Sie die richtige App

In Zukunft werden einige Anwendungen vollständig serverlos sein, insbesondere für Anwendungen, die kostengünstiger sind als die Verwendung von Cloud-Instanzen. Auch ohne solche Anwendungen wird es kostengünstiger, der Infrastruktur möglichst wenig Ressourcen zuzuweisen. Verwenden Sie gleichzeitig Serverless Computing als Lösung, um den Leistungsengpass zu beheben, der durch verschiedene relativ unabhängige Funktionen verursacht wird, oder um zu testen, ob die Kapazität der Anwendung erhöht werden kann, ohne das Infrastrukturbudget zu erhöhen. Im Allgemeinen ist die serverlose Architektur im Bereich der Informationstechnologie zweifellos eine der Lösungen für die richtige Auswahl der Architektur zum Erreichen von Geschäftszielen.

In Verbindung stehende Artikel:

Über den Autor: Hu Yingming, leitender Ingenieur von Trend Micro, Übersetzer der DockOne-Community

Der Artikel stammt vom öffentlichen WeChat-Konto: Docker

 

Supongo que te gusta

Origin blog.csdn.net/yaxuan88521/article/details/132434568
Recomendado
Clasificación