Tech Blog

Alles was uns bewegt und wir unser Wissen teilen möchten. Einblicke in die Arbeitswelt und Technologien bei CmdScale.

Cloud Tech

On-Premises- oder Cloud-Software?

Eine Software kaufen oder doch lieber online verwenden? Eine Frage die sich wohl viele Arbeitgeber und Privatpersonen stellen. Einige Anwendungen sind ausschließlich online verfügbar, andere gibt es in beiden Varianten. Cloud-Software, wie Google Docs ist schon lange am Markt etabliert und hat ganz klare Vorteile: kein Wartungsaufwand, geringe Kosten und wenig Hardware-Anforderungen. Die On-Premises-Lösungen aber funktionieren schon lange gut auf dem eigenen PC und verursachen nur einmalige Kosten. Also doch: never change a running system? Dieser Artikel soll mit dem Für und Wider der verschiedenen Software-Varianten aufräumen.

On-Premises-Software



Viele Unternehmen und auch private Nutzer sind seit Jahren oder sogar Jahrzehnten mit der Software auf dem eigenen Computer bestens zufrieden. Die Software wird einmal gekauft und installiert, dann hat man jahrelang Ruhe. So zumindest in der Theorie. Unternehmen arbeiten häufig mit Lizenzen – das bedeutet, dass nicht unendlich viele Nutzer am System arbeiten können. Gegebenenfalls benötigt jeder Mitarbeiter eine eigene Lizenz, wodurch Mehrkosten entstehen.

Aber natürlich ist ein System nicht einfach “fertig”, denn es muss gewartet und aktualisiert werden. Dazu benötigt es hin und wieder Updates. Die Aktualisierungen sollten Nutzer regelmäßig durchführen, wodurch ein Mehraufwand entsteht. Gerade in größeren Firmen ist die IT-Abteilung fast dauerhaft mit Updates beschäftigt. Entscheidet sich ein Hersteller für ein neues Produkt, wird der Support für das alte häufig eingestellt. Hier bleiben nur zwei Möglichkeiten: ein altes System nutzen oder ein neues kaufen.

Für Nutzer, die ihre Daten keiner Cloud anvertrauen möchten, ist die Datenspeicherung auf dem eigenen PC ein schlagendes Argument. Bei On-Premises-Software verbleiben die Daten beim User, während eine Cloud-Lösung sie auf einen entfernten Server überträgt. Natürlich kann die On-Premises-Software auch mit einem Cloud-Dienst verknüpft werden. So kann der Anwender von verschiedenen Standorten auf seine Daten zugreifen. Aber diese Entscheidung bleibt dem Nutzer überlassen.


Die Vorteile von On-Premises-Software


Keine laufenden Kosten
Volle Kontrolle beim Nutzer
Sensible Daten verbleiben beim Nutzer
Zugriff zu jeder Zeit


Die Nachteile von On-Premises-Software


Gerät und Software müssen kompatibel sein
Mehrarbeit durch Wartung
Kostenintensive Lizenzen
Langfristige Bindung
Support wird ab einem bestimmten Zeitpunkt eingestellt


Cloud-Software



Mittlerweile sind cloudbasierte Lösungen ein fester Bestandteil unseres Alltags. Angebote wie Google Docs oder Microsoft 365 haben Einzug in das Privat- und Berufsleben gehalten. Auch Cloud-Computing und SaaS sind im Zusammenhang mit Cloud-Software etablierte Begriffe. Sie stehen für Hard- und Software über das Internet. In den meisten Fällen entscheidet man sich für ein Abo-Modell. Das heißt: kein Herunterladen und Installieren auf dem eigenen Computer, sondern die Software online nutzen. Da die eigentliche Rechenarbeit im Rechenzentrum stattfindet, benötigt der eigene PC lediglich eine Internetverbindung.

Die Hard- und Software wird von Fachpersonal gewartet, und zwar so, dass der Nutzer davon gar nichts mitbekommt. Updates stehen, wie von Zauberhand, sofort und ohne Zutun des Users zur Verfügung. Die Online-Software ist unabhängig vom Gerät überall verfügbar. Maximale Flexibilität also, oder doch nicht? Cloud-Software benötigt eine Internetverbindung. Und je nach System muss diese eine gute Qualität aufweisen. Unter Umständen kann die Effizienz aufgrund einer schlechten Verbindung schon mal büßen. Gerade in Unternehmen ist das ein nicht akzeptabler Faktor.

Im Gegensatz zu dem mitunter sehr teuren Kauf einer On-Premises-Software, bieten Abo-Modelle eine kostengünstige und flexible Alternative. In der heutigen Zeit entwickeln sich Unternehmen rasch weiter, erschließen neue Märkte und benötigen andere Softwarelösungen. Wer viel Geld für eine On-Premises-Lösung ausgegeben hat, wird vermutlich bei einer weiteren Software-Investition zögern. Bei den meisten Cloud-Anbietern können Nutzer zwischen monatlicher und jährlicher Zahlung wählen und sind somit flexibler. Auch weitere Funktionen oder neue Mitarbeiterzugänge sind meist kostengünstig zubuchbar.

Vertrauen spielt bei Cloud-Software eine entscheidende Rolle. Die sensiblen Daten der User liegen in den Rechenzentren des Anbieters. Auch die Kontrolle müssen die Nutzer ein Stück weit abgeben. Wenn das Angebot aufgrund von Wartungsarbeiten pausiert oder der Anbieter das Angebot einstellt, kann das mitunter negative Folgen für die Nutzer haben.


Die Vorteile von Cloud-Software


Keine besonderen Anforderungen an den PC
Updates werden vom Anbieter durchgeführt
Funktionen und Nutzer lassen sich leicht hinzufügen
Geringe Kosten im Abo


Die Nachteile von Cloud-Software


Internetzugang ist zwingend erforderlich
Nutzer müssen dem Anbieter vertrauen können
Nutzer sind vom Betreiber abhängig

Fazit



Fakt ist: beide Software-Lösungen haben ihre Vor- und Nachteile. Welches Angebot nun das “bessere” ist, lässt sich nicht pauschalisieren. Vielmehr hängt es von den Bedürfnissen des Nutzers und den örtlichen Gegebenheiten ab. Der Funktionsumfang von beiden Angeboten unterscheidet sich nicht unbedingt, dennoch lassen sich Unterschiede in einigen anderen Punkten feststellen:

Kosten

On-Premises
Der Nutzer zahlt einen einmaligen, aber relativ hohen Preis.

Cloud
Der Nutzer trägt regelmäßige, dafür niedrige Kosten.Bereitstellung

Bereitstellung

On-Premises
Der Nutzer installiert die Software auf persönlicher Hardware.

Cloud
Der Nutzer hat Zugriff über das Internet.

Wartung


On-Premises
Updates müssen vom Nutzer installiert werden.

Cloud
Updates werden im Hintergrund durch den Hersteller installiert.


Skalierbarkeit

On-Premises
Teilweise ist es möglich Erweiterungssoftware zu kaufen, meistens ist jedoch der Erwerb eines neuen Produkts notwendig.

Cloud
Zusätzliche Funktionen und Zugänge können meistens unkompliziert bestellt werden.


Hardware


On-Premises
Der Nutzer stellt die Hardware selbst, sie muss mit der Software kompatibel sein.

Cloud
Der Nutzer benötigt lediglich einen Internetzugang, die Software wird auf speziellen Servern gehostet.


Datenschutz

On-Premises
Der Nutzer entscheidet selbst, ob seine Daten entweder nur auf dem eigenen PC verbleiben oder ob er diese in eine Cloud hochlädt.

Cloud
Die Verantwortung über die Daten liegt beim Hersteller. Er muss sichergehen, dass die Daten vor einem Zugriff von Dritten geschützt werden.
Christian Roessler

Christian Roessler

Erstellt am:
Aktualisiert:

Microservices Tech

Microservices – Vorteile und Herausforderungen

Tinder tut es. Zalando tut es. Und sogar Netflix tut es. Einige der großen Player arbeiten mit Microservices. Die Komplexität von umfangreicher Softwarearchitektur kann manchmal scheinbar nur mit ihnen bezwungen werden. Doch auch der Weg zu einem funktionsfähigen Netzwerk aus kleinen Microservices stellt seine Entwickler vor große Herausforderungen. In diesem Artikel geht es um die Vorteile von Microservices und wie diese am besten genutzt werden.

Was sind Microservices eigentlich?



Microservices-Architektur ist eine Art und Weise Software zu schreiben. Die Software wird dabei in einzelne Teile zerlegt. Jedes Teilchen hat seinen eigenen Prozess und kann mit anderen Microservices kommunizieren. Aus unabhängigen Prozessen entsteht auf diese Weise eine komplexe Anwendungssoftware. Hierbei können sogar unterschiedliche Programmiersprachen, Datenbanken und Technologie-Stacks genutzt werden. Die Kommunikation läuft über Webservices ab. Was einfach klingt, ist in der Realität ein komplexes technisches Architekturthema. Und doch vereinfacht es Prozesse und schafft Flexibilität sowie Skalierbarkeit.

Ausgangssituationen



Die Einführung von Microservices findet meistens in einer dieser beiden Situationen statt:
Eine monolithische Applikation ist bereits vorhanden.
In diesem Fall sollen Microservices die bestehende Architektur ersetzen. Das Ziel: eine tragfähige und zukunftssichere Applikation. Während die Ausgangssituation eindeutig ist, erfordert die Ablösephase besondere Vorsicht.
Eine neue Applikation ist notwendig.
Gibt es keine “IT-Altlasten” im Unternehmen, kann eine Microservices Architektur von Grund auf neu erstellt werden. In dieser Situation ist die Herausforderung der höhere Aufwand bei der initialen Implementierung.


Vorteile von Microservices



Microservices bringen eine Reihe von Vorteilen mit sich, die nun genauer beleuchtet werden. Der Grad der Segmentierung und die Größe der einzelnen Services haben einen entscheidenden Einfluss auf die Ausprägung der einzelnen Vorzüge. Eine sehr zutreffende Beschreibung lässt sich in Sam Newmans Werk “Building Microservices” finden.

  1. Technologische Heterogenität
    Jeder Microservice ist eine eigene kleine Anwendung. So kann auch jedem Service die passende Technologie zugeordnet werden.
  2. Resilienz
    Autonomie und vorgegebene Schnittstellen sind ein weiterer Pluspunkt. Besteht in einer Applikation ein Fehler, so hat dieser keine – oder nur minimale – Auswirkungen auf die benachbarten Module.
  3. Skalierbarkeit
    Im Gegensatz zum monolithischen Modell, können Microservices einzeln skaliert werden. Für bestimmte Funktionen ist keine komplette Umstellung notwendig. Stattdessen passt der Anwender einzelne Services an. Am besten funktioniert das mit so genannten Stateless (Micro-)Services.
  4. Einfaches Deployment
    Die einzelnen Services werden unabhängig voneinander in Betrieb genommen, deshalb ist der Umfang geringer und somit auch das Deployment.
  5. Organisatorische Ausrichtung
    Microservices sind für den Einsatz in der agilen Softwareentwicklung bestens geeignet. Die Effizienz in kleinen Teams steigt. So kann sich ein Entwicklungsteam mit einem klar abgegrenzten Bereich befassen.
  6. Wiederverwendbarkeit
    Während andere Anwendungen für verschiedene Endgeräte neu programmiert werden müssen, können Microservices einfach wiederverwendet werden. Mit einer neuen Kombination werden Abläufe noch einfacher.
  7. Verbesserung der Austauschbarkeit:
    Microservices funktionieren (fast) unabhängig voneinander. Deshalb lassen sich Änderungen hier mit einem deutlich geringeren Risiko umsetzen, als dies bei großen Applikationen der Fall ist. Auch auf lange Sicht hat die Austauschbarkeit einen Vorteil: eine Anwendung, die schon länger live ist, kann einfacher auf eine neue Technologie umgestellt werden.

Herausforderungen



Viele Vorteile also, die eine Auftrennung des Monolithen mit sich bringt. Aber gerade bei der Implementierung und Orchestrierung gibt es einiges zu beachten. “Microservices ja oder nein?” ist keine leichte Frage. Anwender sollten bei ihrer Beantwortung auf jeden Fall die folgenden Herausforderungen bedenken:
Gerade in der Startphase sind herkömmliche Anwendungen weniger aufwendig.
Je mehr Microservices desto komplizierter das Gesamtkonstrukt. Das sorgt für gesteigerte Anforderungen in der Kommunikation zwischen den einzelnen Anwendungen. Auch die Orchestrierung der Microservices wird aufwendiger.
Eine besondere Herausforderung ist die Aufspaltung von Geschäftslogik in Microservices. Wer sich damit auseinandersetzt sollte ein ausgeprägtes Verständnis der geschäftlichen Abläufe uns ihrer Zielsetzung mitbringen.
Obacht gilt auch bei der technologisch begründeten Aufteilung. Unter Umständen führt sie in Sackgassen und zu falschen Designs der Schnittstellen.


Fazit



Tatsache ist, die Anwendung von Microservices ist kein Allheilmittel. Und eine Garantie für die Entwicklung erfolgreicher Software schon gar nicht. Die Aufteilung der einzelnen Services hat eine große Auswirkung auf den Arbeitsaufwand und birgt Risiken. Mit der Größe und Heterogenität können auch Problematiken einhergehen. Dennoch ist ihre Verwendung in aller Munde und das zu Recht. Sie reduzieren Komplexität, punkten mit Flexibilität und sind zudem skalierbar. Microservices sind autonom und übersichtlich. Ebenso sorgt die Arbeit in kleinen Teams für Klarheit. Das Gesamtsystem ist nicht nur verlässlich, sondern auch robust.
Insgesamt gilt: die besten Ergebnisse werden erzielt, wenn sich die Architektur an den individuellen Bedürfnissen ausrichtet. Und dafür kommt auch ein Monolith in Frage. Prinzipiell ist sogar eine Mischung – also eine “hybride” Lösung – möglich.
Bei einer architektonischen Entscheidung sollten Vorteile und Herausforderungen von allen Alternativen abgewogen werden. Der Anwender sollte seine Rahmenbedingungen kennen und diese bei der Entscheidung berücksichtigen. Denn nur, weil Netflix mit einem System Erfolg hat, gilt das nicht automatisch für alle Unternehmen.


Christian Roessler

Christian Roessler

Erstellt am:
Aktualisiert:

Serverless Tech

Serverless Architecture

Serverless Architecture Wie aus dem Nichts ist vor einiger Zeit der Bereich “Serverless” (SLS) als neues Exempel im Gebiet des Cloud Computing entstanden. Ziel ist die Entwicklung einer effizienten und skalierbaren Anwendung, ohne dass die Infrastruktur verwaltet werden muss. Ein hidden Champion der Cloud-Branche ist Serverless Architecture schon lange nicht mehr. Vielmehr ist sie auf dem Vormarsch. Innerhalb seines Fachgebiets wird SLS sogar als die nächste grundlegende Evolution der Cloud-nativen Softwareentwicklung gehandelt. Während die Entwickler sich auf die Geschäftslogik konzentrieren, macht die Verwaltung sich ganz von selbst. Dazu werden Serverless Hardware- und Betriebsbelange weiter abstrahiert. Dieser Beitrag stellt Serverless Architecture und ihre Besonderheiten vor.



Inhalt des Beitrags






Was ist Serverless Architecture?



Die Software Architektur ist der anspruchsvollste Teil der Softwareentwicklung. “Falsche” Architekturentscheidungen können später teuer werden. Von ihr hängen wichtige Funktionsweisen ab, welche die Qualität, Leistung und Wartbarkeit beeinflussen. Das gilt auch, oder vor allem, bei der serverlosen Architektur. Serverlos heißt “ohne Server”. Das stimmt so aber nicht ganz, denn natürlich sind im Backend weiterhin Server notwendig. Diese stellt allerdings ein Drittanbieter zur Verfügung. Der Entwickler hat so die Möglichkeit, sich voll und ganz auf die Architektur selbst zu konzentrieren. Die cloud-native Software ist speziell auf Cloud-Computing-Plattformen ausgelegt und schöpft ihre Dienste voll aus. Solche Anwendungsarchitekturen sind stark auf Open-Source-Software-Stack ausgerichtet. Dabei funktionieren sie am besten mit einer Microservices-Architektur. Das ermöglicht Zuverlässigkeit und Skalierbarkeit.


Nanoservices



Microservices sind seit einigen Jahren in aller Munde. Sie sind kein großes Softwaresystem, wie etwa ein Monolith, sondern kleine autonome Services. Ihre Stärken liegen vor allem in ihrer Größe und ihrer Unabhängigkeit. Die Vorteile sind eine unabhängige Entwicklung und die eigenständige Bereitstellung. Sie bestechen mit Technologiefreiheit; dabei ist die autonome Skalierung jedes Services möglich.

Die Aufspaltung in noch kleinere Teile nennt sich Nanoservice. Jede Servicekomponente ist für nur eine bestimmte Operation zuständig. Dabei übernimmt sie die Verantwortung für nur eine Geschäftsdomäne mit minimaler Ressourcenzuweisung. Doch das bietet nicht nur Vorteile. Beispielsweise weist Eberhard Wolff, der diesen Begriff nachhaltig geprägt hat, darauf hin, dass neue technologische Ansätze von Nöten sein werden. Eine feine Aufspaltung der Services steigert die Anforderungen an Kommunikation, Koordination, Skalierung und Infrastruktur.

Aber mit der Serverless Architecture haben wir vielleicht schon die Lösung gefunden. Sie ermöglicht eine weitere Verkleinerung von Microservices. Um Function-as-a-Service-Plattformen optimal zu nutzen, sollten Microservices sogar noch weiter heruntergebrochen werden: auf die Ebene von Funktionen und Events.

Ein Vergleich zwischen Monolith, Microservice und Serverless nach ihrem Entwicklungs-, Koordinations- und Plattformaufwand macht das deutlich:



Dabei ist nicht außer acht zu lassen, dass Serverless Architecture wesentlich mehr FaaS Funktionen und BaaS Services verwendet. Die FaaS-Technologie senkt die Fehleranfälligkeit des Microservice-Modells, denn die Verantwortung für den Infrastruktur- und Skalierungs-Overhead liegt beim Plattformanbieter. Darüber hinaus bieten die meisten FaaS-Plattformen Möglichkeiten zur Funktionskomposition. Das sorgt dafür, dass die Kommunikation zwischen den einzelnen Services vereinfacht wird. Ein Beispiel ist das Open Whisk-Programmiermodell: es setzt für Kommunikations- und Koordinationsaufgaben Sequenzen und Leitungen ein.
Dennoch sorgt eine steigende Anzahl an Micro- oder Nanoservices auch für eine gesteigerte Systemkomplexität. Das wird auch in der oberen Grafik deutlich. Die “Übeltäter” sind zumeist zusammenhängende Funktionen und Abhängigkeiten. Eine Serverless Architecture erfordert mehr Aufwand und spezielle Werkzeuge. Gerade bei sich schnell entwickelnden Systemen darf der Entwickler nicht den Überblick verlieren.


Eigenschaften von Serverless Architecture



Die serverlose Architektur baut hauptsächlich auf Funktionen, die auf FaaS-Plattformen gehostet werden. Verschiedene BaaS-Dienste, wie Datenbanken, API-Gateways und Speicheroptionen, ergänzen diese Funktionen.
Zum einen kann FaaS zur Erweiterung bereits bestehender Microservices verwendet werden. Dazu “klebt” ein Code die einzelnen Services zusammen. FaaS kann auf diese Weise mehrere Dienste verbinden oder Nachrichten weiterleiten. FaaS kann auch verwendet werden, um seltene, ereignisbasierte Anwendungen effizient zu ersetzen, das wird in der Literatur häufig als “hybrides Modell” bezeichnet. Zum anderen entstehen Architekturen, die komplett auf serverlosen Funktionen aufbauen. Diese Systeme schöpfen die Vorteile von Serverless Architecture voll aus. Serverless Architecture bringt die folgenden Eigenschaften mit:




Ereignisgesteuert


FaaS ist ereignisgesteuert, deshalb ist es Serverless Architecture auch. Das ist ein großer Vorteil für Entwickler, denn so werden Ereignisse erzeugt, erkannt und konsumiert. Außerdem können Services eigenständig auf Events reagieren.




Feine Service-Granularität


Eine weitere wichtige Überlegung bei "cold starts" ist die Service Granularität. Umso mehr einzelne FaaS-Funktionen vorhanden sind, desto häufiger kommt es zu "cold starts". Hier findet sich ein Argument gegen die vorab diskutierten Vorteile von mehreren kleinen Services.





Pay what you get


Serverless Architecture rechnet, im Gegensatz zu traditionellen Cloud-Architekturen, nach tatsächlichem Nutzen ab. Die Berechnungsgrundlage besteht aus Nutzungsdauer und Speicherbelegung. Bei der Kostenoptimierung muss also jede Komponente einzeln betrachtet werden.


Asynchrone Funktionsaufrufe


Asynchrone Funktionsaufrufe sind die erste Wahl. Ansonsten besteht die Gefahr der doppelten Abrechnung. Denn anfragende Funktionen werden abgerechnet, während sie lediglich auf eine Antwort warten. Noch bedeutender ist das bei eventuellen "cold starts".



Stateless Service


Zustandslosigkeit ist ein wesentliches Merkmal von serverloser Architektur. FaaS Funktionen weisen starke Einschränkungen bei langanhaltenden Anwendungen auf. Deshalb sollten BaaS-ähnliche Datenbanken oder Netzwerkspeicher verwendet werden.



Kein zentraler Vermittler


Bei Serverless Architecture gibt es keinen zentralen Prozessvermittler. Stattdessen wird Choreografie der Orchestrierung vorgezogen. Mehr Eigenverantwortung also, auch bei den Entwicklungsteams. Dennoch müssen zusätzliche Einschränkungen aus gängigen FaaS-Anwendungen, wie Laufzeitbeschränkungen oder Speicherbegrenzung berücksichtigt werden.



Patterns bei Serverless Architecture



Da Serverless-Architecture und FaaS einige technische und konzeptionelle Herausforderungen bereithalten, empfiehlt sich die Arbeit mit Patterns, also Mustern. Im World W e Web lassen sich bereits einige Erfahrungen und Ansätze finden. Die meisten dieser Beiträge beziehen sich jedoch auf einen bestimmten Anwendungsfall. Trotzdem können sie in diesem Beitrag dabei helfen, praktische Überlegungen hervorzuheben. Bei der Anwendung von Patterns müssen neben Vorteilen auch ihre Nachteile berücksichtigt werden. Denn jede Medaille hat zwei Seiten.
In der Literatur lassen sich bisher wenige Einordnungen von Patterns finden. Taibi et al. schlagen die folgende Unterteilung vor:
“Orchestration and Aggregation”
“Event Management”
“Availability”
“Communication”
“Authorization”

Nachfolgend werden nun einige Patterns beispielhaft erläutert.


Warmhalter



Wie bereits erwähnt, ist das Kaltstartverhalten ein wichtiger Aspekt bei Serverless Architecture. FaaS Plattformen verwerfen die Laufzeitumgebung ungenutzter Funktionen, damit sie Ressourcen besser auszunutzen können. Dabei passiert es jedoch nicht selten, dass sie “cold starts” auslösen. Der Funktionswärmer bzw. “function warmer” verhindert das, indem er regelmäßig gewünschte Funktionen auslöst. So werden die Services nicht unbrauchbar.
Das verhindert “cold starts” zwar, aber jeder Aufruf des “function warmers” verursacht Kosten. Dieses Muster wird auch als “funktion pinging” bezeichnet. Die folgende Abbildung stellt eine solche Implementierung bildlich dar. Dabei hält der “Cronjob” die Funktionen warm. Wie bei einem Lagerfeuer, das nicht erlöschen darf.


Übergroße Funktionen

Auch das Vergrößern von Funktionen ist ein Muster. Die meisten FaaS-Plattformen nehmen eine lineare Zuweisung der CPU-Leistung vor. Diese orientiert sich in der Regel an der Speicherkonfiguration. Sollte die physische Rechenleistung einmal nicht ausreichen, gibt es nur eine Möglichkeit mehr CPU-Leistung zu erhalten: die Speicherkapazität erhöhen. Selbst, wenn der Speicherplatz ausreicht, stellt diese Vorgehensweise die einzige Möglichkeit dar, die Verarbeitung zu beschleunigen.
Die Kosten für Serverless Architecture hängen maßgeblich von der Ausführungsdauer und dem genutzten Speicher ab. Die richtige Balance zwischen Speicher und Leistung ist also wichtig, um die Gesamtkosten überschaubar zu halten.


Router



Ein eigenes API-Gateway ist unter Umständen schwer zu konfigurieren. Eine leichtere Alternative bietet die Erstellung einer speziellen Funktion. Diese sollte Anfragen empfangen und sie, basierend auf der Nutzlast und unter Verwendung von Kompositionstechniken, weiterleiten. Das vereinfacht die exponierte Schnittstelle. Auch dabei kommt es jedoch zu einer doppelten Abrechnung, denn die Routing-Funktion ist so lange aktiv, bis die Zielfunktion einsetzt.


Aggregator



Das Aggregator-Pattern funktioniert ganz ähnlich wie das Router-Pattern, jedoch kann es eher als Erweiterung betrachtet werden. Das Aggregator-Muster ruft jede Funktion einzeln auf und gibt eine einzige Antwort an den Auftraggeber. Anstatt mehrere Ergebnisse zu teilen, wird nur die Aggregator-Funktion bereitgestellt.
Auch in diesem Fall erfolgt eine doppelte Abrechnung, denn der Aggregator stellt den Single Point of Failure dar.


Funktionskette

Kompositionstechniken werden verwendet, um die Plattform-Timeout-Schwelle zu umgehen. In der Praxis erfolgt häufig eine Aufteilung der Funktionen. Das dient dazu, die von der FaaS-Plattform definierte maximale Ausführungsdauer zu verlängern. Bei der Funktionskette übergibt die erste Funktion den Anfangsparameter und das vorläufige Ergebnis an die Nächste. Das wiederholt sich, bis die letzte Funktion beendet ist. Bei diesem Muster findet eine starke Kopplung zwischen den Funktionen statt, das führt zu einer erhöhten Komplexität.


Fan-Out und Fan-In



Auch das Fan-Out- und Fan-In-Pattern erweitert den Schwellenwert für die Ausführungsdauer. Dieses Pattern teilt die Arbeitslast in mehrere Prozesse, anstatt sequenzielle Funktionsaufrufe auszuführen. Die hohe Skalierbarkeit von FaaS bietet hier einen entscheidenden Vorteil: das parallele Aufrufen von Funktionen. Um die einzelnen Ergebnisse zu sammeln, empfiehlt sich die Verwendung eines Speicherdienstes. Dabei sollte eine weitere Funktion die Konsolidierung anstoßen.
Ein Vorzug des Patterns ist die Reduzierung der Rechenzeit und die Vermeidung der doppelten Abrechnung. Das Fan-Out-/Fan-In-Pattern nutzt die Parallelität aus, deshalb beschränkt sich die Anwendung auf parallelisierbare Arbeitslasten.


Externalisierung

Das Externalisierungs-Muster verwendet externe Speicherdienste. Ein Beispiel ist Redis als Key-Value-Store, um den Zustand funktionsübergreifend zu speichern und zu nutzen. Dieses Pattern wird häufig verwendet, die Entwickler müssen sich jedoch bewusst sein, dass es zu einem latenten Overhead und einer hohen Kopplung kommt.



Caching

Ein Cache überwindet nachgelagerte Einschränkungen und die daraus resultierende Latenz. Dieses Pattern konzentriert sich also auf leselastige Aufgaben und vereinfacht sie durch die Aufnahme im Zwischenspeicher. Hinsichtlich der Datenspeicherung gibt es zwei wesentliche Ansichten:
Materialisierte Sichtweisen häufig verwendeter Daten in Datenbanken erstellen.
Häufige Antworten, die mit einer Funktionseingabe verknüpft sind, mithilfe von BaaS-Caching-Services, wie zum Beispiel AWS Elasticache, speichern.


Das Fazit

Serverless Architecture ist für Entwickler, Architekten und Softwarebetreiber eine Möglichkeit Kosten zu senken und die Entwicklung effizienter zu gestalten. Neben den Vorteilen verbergen sich aber auch Herausforderungen: die Komplexität und der Bedarf nach einer “Überwachung” und einer besseren Visualisierung. Patterns und bereits etablierte Praktiken unterstützen die Entwickler bei Serverless Architecture. Dennoch müssen sich diese den Herausforderungen bewusst sein.
Abhilfe könnte beispielsweise das Projekt OpenWhisk Visualizer (OWVIS) schaffen. OWVIS ist ein metaphernbasiertes Visualisierungswerkzeug einer Functions-as-a-Service-Architektur. Sie wird auf Apache OpenWhisk eingesetzt, um die Komplexität zu reduzieren. OWVIS macht beispielsweise Vorschläge zur Verbesserung einer Function-as-a-Service-Architektur in Bezug auf die Erfüllung serverloser Architekturmuster.

Insgesamt lässt sich also sagen, dass Serverless Architecture Vorteile und Herausforderungen mit sich bringt. Wer Serverlose Architektur anwendet muss sich dessen bewusst sein. Bei richtiger Anwendung in einem passenden Umfeld ist Serverless Architecture sehr vielversprechend. Es sorgt für gebündelte Entwicklerproduktivität und überschaubare Kosten.











Christian Roessler

Christian Roessler

Erstellt am:
Aktualisiert: