Als wir von monolithischen Strukturen zu Serverless übergingen, wagten Unternehmen einen großen Vertrauensvorschuss und atmeten erleichtert auf. Technologie-Enthusiasten jedoch nicht. Es gab Serverless-Herausforderungen, die angegangen werden mussten.
In dem Gedanken, dass es immer Raum für Verbesserungen gibt, wollten sie auch komplexe Dienste bedienen, die ein Premium-Level an Serverless-Frameworks erforderten.
In diesem Blog gehen wir einen Schritt weiter in die Serverless-Welt und über die Grundlagen hinaus. Hier werden wir die Best Practices diskutieren, die den Nutzen von Serverless-Anwendungen für Ihr Unternehmen maximieren können.

Jenseits von Serverless
Die bestehenden Serverless-Plattformen, wie wir sie kennen, sind einfache Anwendungen, die die Notwendigkeit monolithischer Infrastrukturen beseitigten und zu einer besseren Entwicklung und Bereitstellung von Projekten führten. Dieses Cloud-Computing-Paradigma isolierte die Funktionen in Containern, die nicht miteinander interagierten. Die etablierten Serverless-Praktiken, die sich herausbildeten, brachten jedoch einige Nachteile mit sich.
Erstens erhöhte der Kaltstart der Funktionen die Latenzrate des Serverless und umgekehrt stiegen die Kosten der Funktionen, wenn die Container "warm" gehalten wurden, um die Startlatenz für die Verarbeitung zu reduzieren.
Darüber hinaus zeigten die Beobachtungen, dass die nicht vorhandene Kommunikation zwischen Containern und Funktionen bei Entwicklern, die dies nicht gewohnt waren, nicht gut ankam.
Diese Praktiken drängten auf eine Intervention, die die Dienste verbessern, die Serverless-Frameworks optimieren und sich als effizienter als zuvor erweisen würde.
Best Practices und das Ausräumen von Mythen
Serverless-Experten halten diese Praktiken für die besten, um eine hochleistungsfähige Anwendung für Ihr System zu erzielen. Unabhängig davon können sie je nach Art und Dynamik Ihres Unternehmens variieren.
#1 Code-Verwaltung
Die Dokumentation der Änderungen, die Sie für Ihre Konfigurationen planen, ist eine Aufgabe. Oft werden die von den Entwicklern vorgenommenen Änderungen nicht dokumentiert oder sind zu einem späteren Zeitpunkt nicht leicht in der beabsichtigten Weise zu verstehen. All diese Verwirrungen können beseitigt werden, wenn Sie YAML erstellen, das Ihren Stack in einer Datei definiert, die Sie verwenden können, um Änderungen bei Bedarf zu verfolgen.
#2 Protokollierung ist nicht gleich Beobachtbarkeit
Serverless brachte die Skalierung als Hauptmerkmal mit sich, und die Skalierung verlangsamte komplexe Strukturen, die anfällig für Fehler wurden.
Wie wir wissen, verschaffen die Protokollierung und die Metriken des Systems einen Vorteil gegenüber den Statistiken, und Sie können kleinste Details und Aktivitäten erfassen, die in Ihrer Lambda stattfinden. Diese Leistung der Protokollierung und Sichtbarkeit ging jedoch nicht mit der Beobachtbarkeit einher, d. h. der Analyse des Systems von außen und der Betrachtung der internen Funktionen aus der Vogelperspektive. Sicherlich statteten die Tools die Anwendung mit den besten Metriken aus, aber eine umfassende Beobachtbarkeit schien zu fehlen.
Daher haben Tools wie Honeycomb und Espagon Maßnahmen entwickelt, die Sie bei der Beobachtbarkeit unterstützen und Ihnen einen besseren Überblick über Ihre Serverless-Operationen geben können.
Entgegen dem Mythos, dass Serverless das Umschreiben Ihres Codes erfordert, gilt es als Best Practice, ihn nicht umzuschreiben.
#3 Verwendung von Bibliotheken
Neben den Latenzproblemen ist auch die Größe der ZIP-Datei, die den Code enthält, ein Übeltäter, der die Funktion Ihres Serverless beeinträchtigen kann. Die Verwendung vieler Bibliotheken für unnötige Aufgaben, die erstellt werden können, erhöht das Gewicht des Prozesses und verlangsamt so die Serverless-Anwendung. Außerdem können nicht alle Bibliotheken mit dem Code und den Abhängigkeiten als vertrauenswürdig eingestuft werden.
Für eine optimale Nutzung wird empfohlen, in möglichst wenige Bibliotheken zu investieren und die Entwickler sollten sie selbst erstellen.
#4 Anfordern, was Sie benötigen
Mit seiner primären Funktion, nach Informationen zu suchen, macht sich Lambda an die Arbeit, sobald es ausgelöst wird. Die Abfrage sucht nach relevanten Informationen für den angeforderten Inhalt.
In dieser Hinsicht kann nichts Wesentliches getan werden, außer die übergeordnete Anfrage aus der Suche auszuloggen.
#5 Umschreiben des Codes
Entgegen dem Mythos, dass Serverless das Umschreiben Ihres Codes erfordert, gilt es als Best Practice, ihn nicht umzuschreiben. Wenn Ihr Code in JavaScript geschrieben ist, gehört er bereits zur höchsten Ordnung der Sprachen.
Ihr Code in JavaScript wird auf die performanteste Weise interpretiert und es gibt alternative Möglichkeiten, die Leistung des Codes zu verbessern.
Versuchen Sie daher nicht, den Code für Ihre Anwendung umzuschreiben, und versuchen Sie andere Maßnahmen, um die Leistung zu verbessern.
#6 Einzelne Funktion
Um Ihre Anwendung bestmöglich zu skalieren, ist es besser, keinen Single-Function-Proxy zu verwenden. Da wir bereits festgestellt haben, dass Serverless am besten mit Diensten funktioniert, muss die Funktionalität der Anwendung isoliert werden. Sicherlich steigt die Komplexität des Managements, aber die DevOps mit Serverless war immer ein Teil des Plans.
#7 Neuer Code führt zu mehr Tests
Optimierungen und Änderungen schienen schon immer ein Teil des Codierungsprozesses zu sein. Als die Lambda kompliziert wurde, begannen die Entwickler, Änderungen an den Konfigurationen vorzunehmen, um die Bereitstellung zu erleichtern. Dies machte den Code jedoch komplizierter und langsamer, da jede Änderung eine neue Spur von Codes auslöste, die gespeichert, bereitgestellt und aktualisiert werden mussten. Später erschwerte die Wartezeit, bis die neuen Codes die Änderungen zeigten, auch die Geduld.
#8 Dienste über Verbindung
Serverless arbeitet mit Diensten. Verbindungen wie RDBMS funktionieren nicht für Serverless-Anwendungen. Die Agilität und die schnellen Reaktionen der Dienste sind für die FaaS besser geeignet als die Verbindungen, die die Funktionen ausbremsen. Verbindungen werden hier auch aus dem Blickwinkel von Kaltstarts unnötig, die zu Latenzproblemen führen.
Daher ist es am besten, keine Verbindungen zu verwenden, es sei denn, Sie müssen es unbedingt tun.
#9 Datenfluss ist wichtig
Eine Datenschicht ist ein wichtiger Bestandteil des Serverless. Da die Funktionen immer laufen, fließen auch die Daten im System. Daher sollten Sie die Daten so behandeln, als ob sie in Bewegung sind und nicht als etwas, das stagnieren oder starr werden kann. Es ist am besten, die Abfrage von Daten in einem Data Lake zu vermeiden, da dies auch die Skalierung beeinträchtigt.
Anwendungsfall
Um ein Hochleistungssystem zu erhalten, wurde ein Serverless-Ansatz gewählt und von einem Entwickler mit nativen AWS-Komponenten aufgebaut.
Für das Frontend skalierte der S3 auch bei hoher Last nahtlos. Seine Funktionen verlangen, dass Sie nur für den tatsächlichen Datenverkehr bezahlen, wodurch der Entwicklungsprozess sehr günstig wird.
Sie erstellten außerdem eine einfache Single-Page-Anwendung in Vue.js für das Formular.
In ähnlicher Weise dient für das Backend ein API-Gateway-Dienst als Proxy für eine der verwendeten Lambda-Funktionen.
In einigen weiteren Schritten (Diagramm unten) stellte die AWS-Plattform eine große Anzahl von Diensten bereit, die sich einfach in verschiedene Lösungen integrieren lassen.

Fazit
Obwohl diese Praktiken sicherlich nützlich sind, sind sie nicht die "einzigen Praktiken". Es gibt immer mehr Möglichkeiten zu experimentieren, sich zu verbessern und zu lernen.
Kennen Sie weitere Serverless-Praktiken, die der Community helfen können? Kommentieren Sie unten oder teilen Sie sie in unseren sozialen Netzwerken: Facebook, Twitter und LinkedIn.
Abonnieren
Verwandte Blogs
Erkunden von Drupal Single Directory Components: Ein Wendepunkt für Entwickler

Webentwicklung lebt von Effizienz und Organisation, und Drupal, unser Lieblings-CMS, ist mit seiner neuesten Funktion hier,…
7 schnelle Schritte zur Erstellung von API-Dokumentationen mit Postman

Wenn Sie mit APIs arbeiten, kennen Sie wahrscheinlich bereits Postman, den beliebten REST Client, dem unzählige Entwickler…
Was ist der Product Engineering Life Cycle?

Stellen Sie sich vor, Sie bauen ein Haus ohne Bauplan oder Konstruktionszeichnungen. Es wäre schwierig, die Kosten und den…