Zum Inhalt wechseln

Serverless Computing – Wie Ihr Softwareentwicklungsprozess verbessert werden kann

Business

8 Februar 2021 - 6 Minuten lesen

1375 Serverless 416X300
Grzegorz Musiał  Senior Software Developer 

Ein Full-Stack-Entwickler mit starkem Java-Hintergrund und großer Vorliebe für JavaScript sowie das NodeJS-Ökosystem. Ein Cloud-Enthusiast, zertifizierter AWS Solutions Architekt (Associate). Privat Vater von zwei Söhnen.  

Alle Beiträge von Grzegorz Musiał  anzeigen

1394 DE Resources Thumbs

Teilen

Inhaltsverzeichnis

  1. Kurze Markteinführungszeit & die Freiheit, günstig zu scheitern
  2. Einfache Pipeline & Geringe Gesamtbetriebskosten
  3. Hochleistungsfähige Entwicklerteams
  4. Unendliche Skalierbarkeit
  5. Zusammenfassung

Das Erstellen von Software war wahrscheinlich noch nie so einfach wie heute. Jedem stehen Hunderte von Programmiersprachen, Tausende von Tools und Millionen von Frameworks zur Verfügung. Der Markt ist voller Möglichkeiten und Ideen, die zu erfolgreichen Produkten und Unternehmen werden können.

Statistiken zeigen jedoch, dass die durchschnittliche Lebensdauer eines Start-ups 20 Monate beträgt und 90% von ihnen sich nicht am Markt etablieren können. Wie hängt dies mit der Länge eines Liefer- und Bereitstellungsprozesses eines neuen Produkts in Ihrem Unternehmen zusammen? Sie denken wahrscheinlich, dass Ihre Programmierer in einigen Wochen aufhören werden, Jenkins zu konfigurieren, Docker-Images von "Hello World" zu erstellen und bereits im zweiten "Business Sprint" sein werden.

Was ist, wenn Ihre Produkte in Tagen statt in Monaten erstellt und bereitgestellt werden können? Darüber hinaus können Ihre monatlichen Kosten so niedrig sein wie bei ein paar von Starbucks Café Latte, und Sie haben die Möglichkeit, unbegrenzt zu skalieren? Einige könnten sagen, dass dies zu gut klingt, um wahr zu sein. Trotzdem wurde eines unserer jüngsten Projekte von einem einzelnen Entwickler mit der Unterstützung eines Architekten in etwa 4 Wochen erstellt. Es hatte mehrere APIs mit dem AWS API Gateway und AWS Lambda und AWS SQS Queues sowie Integrationen mit dem Dialogflow Chatbot-Entwickler von Google. Darüber hinaus bot die Lösung die Flexibilität die API neu zu schreiben, das Integrationskonzept zu ändern oder sogar über Nacht neue Architekturelemente einzuführen. Wenn Sie also Lichtgeschwindigkeit bei der Bereitstellung von Software erleben möchten, lehnen Sie sich zurück und lesen Sie, was Serverless Framework zu bieten hat.

 

Kurze Markteinführungszeit & die Freiheit, günstig zu scheitern

Stellen wir uns zunächst ein Startup mit einer Lieferzeit von mehreren Monaten vor. Erstens würde es wahrscheinlich nach den ersten zwei Monaten schließen. Zweitens würde kein Investor sein Geld für ein Unternehmen mit einer derart geringen Geschwindigkeit und Markteinführungs-Fähigkeiten gefährden. In einer Umgebung mit ständiger Instabilität, Änderung von Anforderungen und vagen Visionen glänzt Serverless Computing daher am meisten.

Der serverlose Ansatz bietet schnelles Prototyping und eine Implementierung ohne Einbußen in den Bereichen Bedienbarkeit, Zuverlässigkeit und Skalierbarkeit. Zunächst ist die Bereitstellung so einfach wie das Ausführen eines einzelnen Befehls. Für das Betriebsteam bedeutet dies lediglich, dass die Bereitstellung einer kritischen Fehlerbehebung Minuten statt Stunden dauert.

Darüber hinaus ist eine Vorabinvestition nicht erforderlich, da Ihre Architektur dank eines einfachen "Pay-as-you-go" -Modells für alles vorbereitet ist. AWS-Services wie AWS Lambda und API Gateway sind für jede Last ausgelegt und erfordern weder jemanden seitens des Unternehmens noch das Entwicklerteam, um die Regeln für die automatische Skalierung manuell zu konfigurieren.

Schließlich ist Ihr System auf maximale Sichtbarkeit ausgelegt, da Protokollierung, verteilte Ablaufverfolgung, Alarmierung und erweiterte Überwachung in die Plattform eingebettet sind. Sie müssen nur noch Warnungen zu Metriken und KPIs einrichten, an denen das Geschäftsteam interessiert ist und auf diese reagieren, sobald sie verfügbar sind. Unabhängig von Ihren Zielen bietet Ihnen Serverless Computing einen großen Vorteil gegenüber herkömmlichen Bereitstellungsmodellen: Es ermöglicht einen Fehlschlag schnell und kostengünstig einzugestehen.

 

Einfache Pipeline & Geringe Gesamtbetriebskosten

Wenn Sie eine Software erstellen, benötigen Sie eine Bereitstellungspipeline, welche eine hohe Qualität des Codes, die Erfüllung der Geschäftsanforderungen und die Einhaltung der Unternehmensstandards gewährleistet. Unternehmen unterschätzen häufig den Zeitaufwand für die Einrichtung einer solchen Pipeline. Softwareentwickler konzentrieren sich hauptsächlich auf Aspekte, die direkt mit dem Code zusammenhängen und unterschätzen meist die Probleme, die bei der Vorbereitung der Code-Pipelines auftreten können. Gleiches gilt für Probleme, die später auftreten können, während die funktionierende Lösung in der Produktion gewartet und betrieben wird.

Beim Prototyping eines neuen Produkts berücksichtigt kaum jemand Betriebssystem-Patches, Zertifikatserneuerungen, Kostenoptimierungen, Instanzreservierungen, Datenwiederherstellung, Backups usw. Die Berücksichtigung all dieser Aspekte ist das Kernstück der DevOps-Methodik.

Wenn Ihr Unternehmen jedoch keine DevOps-Kenntnisse besitzt, kann die Einstellung eines Spezialisten in diesem Bereich ein schwieriges und kostspieliges Unterfangen sein. Dies ist auf den Fachkräftemangel auf dem Markt und vor allem auf deren finanzielle Erwartungen zurückzuführen.

Trotzdem erfüllt Serverless Framework das Versprechen einer schnellen Softwarebereitstellung. Darüber hinaus ist die Bereitstellung Ihrer Software so einfach wie die Ausführung des Befehls "Serverless Deploy". In der Standardkonfiguration wird sofort die Bereitstellung der aktuellen Version des Codes gestartet. Unabhängig von der Programmiersprache läuft die Bereitstellung immer auf diesen einzelnen Befehl hinaus. Außerdem unterstützen das Framework und seine CLI nativ den Parameter "--stage", der eine beliebige Zeichenfolge verwendet, um Ihre Ressourcen voneinander zu unterscheiden. Die integrierte Stage-Handling-Funktion kann unter Umständen es verwirrend machen, wo die Testumgebung endet und die Produktion beginnt. Daher wird deutlich, wie einfach es ist, mit diesen einfachen Befehlen Code in die Cloud zu bringen:

 

  • serverless deploy –stage=local-dev-martin` - die Bereitstellung, mit der Ihre Entwickler die lokalen Änderungen testen
  • serverless deploy –stage=test` - Ihre Testumgebung
  • serverless deploy –stage=prod` - Ihre Produktionsumgebung

 Und wenn Sie der Meinung sind, dass der Prozess nicht einfacher werden könnte, bietet das Serverless Framework auch Integrationen mit allen AWS-Diensten, die Sie möglicherweise in Ihren Anwendungen benötigen, z.B. SQS, SNS, Cognito, Kinesis usw. Darüber hinaus werden die zugrunde liegenden S3-Buckets, CloudFormation-Stacks und alles andere erstellt, was Ihr Team sonst manuell erstellen müsste.

 

Hochleistungsfähige Entwicklerteams

Außer befreit zu sein unnötige Ressourcen erstellen und verwalten zu müssen, müssen Ihre Entwicklerteams auch keine eigenen Geräte zum Testen der Integration des von ihnen erstellten Produkts verwenden.

Das Serverless Framework Offline Plugin steht Ihnen immer zur Verfügung, wenn Sie Ihren Code lokal ohne AWS-Zugriff erstellen und testen möchten. Das heißt, Serverless glänzt am meisten, wenn es tatsächlich in der Cloud getestet wird. Erstens wird keine Rechenleistung benötigt, um mehrere Docker-Container auszuführen, da Ihre Tests an anderer Stelle stattfinden. Zweitens verringern Sie das Risiko, fehlerhafte Mocks, Dummy-Services und fehlerhafte Integrationen zu verwenden, da Ihr Code in freier Wildbahn integriert und getestet wird.

Lassen Sie uns nun über die andere Seite des Serverless Computing sprechen. Die Prozesse, die früher bei lokaler Ausführung kostenlos waren, werden jetzt zu „Pay-per-Use“-Diensten. Jede Bereitstellung, jeder API-Aufruf, jeder SQS-Nachrichtenverbrauch führt dazu, dass erst dann Geld ausgegeben wird.

Wenn Ihr Team aus zwei Entwicklern besteht und die Laufzeit des Projekts einen Monat beträgt, können diese Kosten natürlich vernachlässigt werden. Wenn Sie jedoch separate Streams und mehrere Teams mit jeweils mehreren Entwicklern haben, sollten Sie diese Entscheidung möglicherweise sorgfältiger treffen. Bei allen Cloud-Ressourcen gilt eine Faustregel: Überwachen Sie, bevor Sie handeln. Verwenden Sie alle verfügbaren Informationen, um die richtige Entscheidung zu treffen und mit der Bewertung fortzusetzen.

Unendliche Skalierbarkeit

Unabhängig davon, für welchen Cloud-Anbieter Sie sich entscheiden, können die Bausteine für serverlose Anwendungen unendlich skaliert werden. Wenn beispielsweise nicht viel Aktivität vorhanden ist, wartet das von AWS Lambda unterstützte AWS API Gateway einfach auf den kommenden Datenverkehr. Sobald der Datenverkehr jedoch ansteigt, werden Last, Latenz, interne Ressourcennutzung und verschiedene andere Metriken überwacht und reagieren entsprechend. Es ist Sache des Dienstes, nicht des Entwicklers oder einer anderen Person, zu entscheiden wie viele Server, Prozesse, Instanzen gestartet oder gestoppt werden sollen. Dies hilft, um sicherzustellen, dass die Last für den Server geeignet und fehlerfrei möglich ist.

Sie können sich bestimmt eine Welt ohne unerfüllte Anfragen und ohne Kunden vorstellen, die den Support anrufen, um sich darüber zu beschweren, dass ihre Bestellungen nicht erfasst oder verarbeitet werden. Ihre serverlose Architektur ist jedoch nur so stark wie ihre schwächste Komponente.

 

Selbst wenn die serverlose Bereitstellung skalierbar und zuverlässig ist, kann es immer eine relationale Datenbank geben, mit der eine Verbindung hergestellt wird. Wenn die Datenbank zu klein, die Anzahl der offenen Verbindungen zu hoch oder die Festplatte zu langsam ist, führt dies zu einem Service-Ausfall. Auf der anderen Seite gibt es serverlose Datenbanken, NoSQL-Engines und andere automatisch skalierbare Dienste, die diesen Fehler nicht aufweisen.

Daher ist beim Einbau zusätzlicher Schichten in vorhandene Lösungen besondere Vorsicht geboten. Es ist wichtig zu vermeiden, dass ein klarer Vorteil zu einer vollständigen Katastrophe wird.

Insgesamt glänzt Serverless Computing jedoch am meisten, wenn es zur Lösung bestimmter Problemen verwendet wird, aber auch im Zusammenhang mit den richtigen Diensten und Tools.

 

Zusammenfassung

Die Vorteile des Serverless Frameworks liegen auf der Hand: Benutzerfreundlichkeit, Mangel an komplizierten Lieferpipelines, extrem schnelle Markteinführung, Agilität und Robustheit, um nur einige zu nennen. Wenn Sie derzeit überlegen, Ihre Frontend- und API-Anwendungskombination mit einer unvorhersehbaren Last, Nutzungsspitzen und Zeiträumen mit geringer Aktivität ohne Last zu erstellen, ist Serverless Computing genau der richtige Weg. Unser 4-wöchiges Projekt hat dies bestätigt und wir sind sehr zufrieden mit dieser Entscheidung. Die Kosten sind relativ niedrig und wann immer es einen Anstieg im Load gab – wurden wir nicht hängengelassen.

Wenn die Auslastung Ihrer Anwendung jedoch stabil ist und Sie ständig viel Rechenleistung benötigen, sollten Sie andere Optionen in Betracht ziehen. Vor allem, wenn Sie eine langanhaltende Verarbeitung im Hintergrund benötigen. Mit der großen Leistung ohne Server geht eine große Verantwortung einher.

Alles in allem, auch wenn an erster Stelle Serverlesss steht, wird Ihnen nicht die Möglichkeit genommen später als Lösung doch auf den Server zurückzugreifen. Darüber hinaus wird das Schreiben von stark entkoppeltem Code gefördert, der bei Bedarf leicht in Module höheren Ranks gruppiert werden kann.

1394 DE Resources Thumbs
Grzegorz Musiał  Senior Software Developer 

Ein Full-Stack-Entwickler mit starkem Java-Hintergrund und großer Vorliebe für JavaScript sowie das NodeJS-Ökosystem. Ein Cloud-Enthusiast, zertifizierter AWS Solutions Architekt (Associate). Privat Vater von zwei Söhnen.  

Alle Beiträge von Grzegorz Musiał  anzeigen

Was Sie noch interesieren könnte

Kontakt

Starten Sie Ihr Projekt mit Objectivity

CTA Pattern - Contact - Middle