Weili Gao
Principal Architect
Autor: Weili Gao
In Unternehmen spielen auf Kundenbedürfnisse angepasste Frontends eine immer wichtigere Rolle. Denn vor allem im Frontend können sich Unternehmen in den Augen ihrer Kunden am deutlichsten von ihrer Konkurrenz abheben, indem sie eine einzigartige Benutzererfahrung anbieten.
Um benutzerfreundliche Frontends schnell und günstig zu entwickeln, werden häufig Single Page Application (SPA) Frameworks wie Angular oder React verwendet. SPAs haben viele Vorteile, wie z.B.: kurze Ladezeiten, viele vorhandene Libraries und kontinuierliche Weiterentwicklung durch grosse Open-Source-Communities.
SPAs werden heute häufig in der Public Cloud betrieben. Cloud-Anbieter wie Azure bieten dazu viele verschiedene Optionen. Oft ist es jedoch schwierig, die richtige Lösung auszuwählen. Nachfolgend möchte ich einen Leitfaden aus der Praxis vorstellen, wie man das passende Azure-Produkt für verschiedene Anwendungsfälle findet.
Beim Aufruf einer SPA wird eine HTML-Seite und zugehörige Dateien (CSS, JavaScript, Bilder usw.) vom Webserver auf den Browser des Benutzers heruntergeladen (Siehe Abb. 1 A). Im Gegensatz zu anderen Technologien wird bei der Nutzung einer SPA nicht jedes Mal eine neue Seite auf dem Webserver gerendert und heruntergeladen, sondern die neue Seite wird direkt im Browser des Benutzers mit Hilfe der anfangs heruntergeladenen Dateien erstellt.
Dies hat den Vorteil, dass in einer SPA die Ladezeiten sehr kurz sind, da keine zusätzlichen Daten vom Webserver nach dem initialen Download heruntergeladen werden müssen - die Benutzung fühlt sich flüssig und natürlich an. Eine gut entwickelte SPA kann somit eine ähnlich gute Benutzererfahrung wie eine native Mobile App bieten.
SPA-Frontends arbeiten immer mit Backend-Services zusammen. Dabei rufen die SPAs Programmierschnittstellen (sogenannte APIs) in den Backend-Services online auf, um z.B. Daten zu verarbeiten oder Prozesse auszulösen (siehe Abb. 1 B). In diesem Leitfaden habe ich somit auch den Betrieb der Backend-Services berücksichtigt, da diese eine wichtige Rolle spielen.
Zusammengefasst benötigt eine SPA folgende zwei Komponenten (siehe Abb. 1) :
Folgende drei Lösungen möchte ich genauer vorstellen:
Die drei genannten Lösungen unterscheiden sich stark in ihren Eigenschaften und ihrem Funktionsumfang (siehe Abb. 2). Je nach Einsatzzweck und Gewichtung der Kriterien kann jede von ihnen die bestgeeignete Lösung für eine bestimmte Anwendung sein. Eine einfache Tabelle oder Checkliste reicht daher nicht aus, um die richtige Entscheidung zu treffen.
Aus diesem Grund habe ich einen Leitfaden entwickelt, welcher meinen Gedankengang bei der Wahl der passenden Lösung zum Betrieb von SPAs auf Azure beschreibt. Folgende fünf Leitfragen empfehle ich zu beantworten:
Es ist wichtig zu wissen, welche Eigenschaften die von der SPA aufgerufenen Backend-Services haben und welche Produkte am besten zum Betrieb der Services geeignet sind (mehr in diesem Blog). Denn sowohl die Lösung für den Betrieb der SPA als auch diejenige für die Backend-Services müssen zueinander passen.
Gibt es Anforderungen, welche individuelle Anpassungen an die Infrastruktur der SPA benötigen, wie z.B. eine spezielle Konfiguration am Webserver oder an der Infrastruktur für die Backend-Services? Vor allem fully-managed Produkte sind nur begrenzt anpassbar, weshalb man prüfen muss, ob diese Lösungen den Anforderungen genügen.
Eine selbstverwaltete Infrastruktur ermöglicht eine hohe Anpassbarkeit. Man braucht jedoch viel Know-how und Aufwand, um sie zuverlässig und sicher zu betreiben. Ich empfehle, PaaS- oder serverless Produkte einzusetzen, um möglichst wenig Betriebsaufwand zu haben. Die gewählte Lösung muss zum Know-how und zur Kapazität im Team passen.
Als “reif” (engl. mature) bezeichnet man in der IT ein Produkt, das bereits seit längerer Zeit auf dem Markt ist und schon von vielen Kunden eingesetzt wurde. Reife Produkte werden gegenüber "jungen" Produkten bevorzugt, weil sie meistens weniger Bugs und Änderungen sowie bessere Dokumentation und Tooling haben. Man sollte daher abwägen, ob man lieber ein reifes Produkt oder ein junges Produkt mit mehr Features verwenden möchte.
Storage Accounts und App Services werden bereits seit vielen Jahren bei Kunden in Produktion eingesetzt und zählen zu den reifsten Produkten auf Azure.
Einen Lock-in zu haben bedeutet, dass man seine Applikation zu sehr auf die Produkte eines bestimmten Cloud-Anbieter angepasst hat. Diese Abhängigkeit führt dazu, dass viel Änderungsaufwand benötigt wird, um den Anbieter zu wechseln. Daher sollte man Produkte mit geringem Lock-in verwenden, falls es nicht sicher ist, ob man in Zukunft beim selben Cloud-Anbieter bleiben wird.
Der Betrieb von SPAs in der Public Cloud gewinnt immer mehr an Bedeutung. Azure bietet dafür mit Storage Account, App Service und Static Web App drei verschiedene Lösungen, deren Eigenschaften sich stark unterscheiden. Mit einem Leitfaden aus fünf Fragen habe ich eine praxisnahe Methode beschrieben, wie man die Azure-Produkte sinnvoll miteinander vergleicht und die bestgeeignete Lösung für verschiedene Anwendungsfälle findet. Meine Empfehlung ist, vor einer Entscheidung diese Analyse durchzuführen, denn darum geht es bei der Entwicklung in der Cloud immer: das passende “Werkzeug” für ein Problem aus dem riesigen “Werkzeugkasten” der Cloud-Anbieter auszusuchen.