JAX Blog

Klassische Webapps oder SPA?

Interview mit Nils Hartmann

May 25, 2020

Klassische Webanwendung oder SPA? Was spricht für, was gegen eine Single Page App? Nils Hartmann, freiberuflicher Softwareentwickler und Sprecher auf der JAX 2020, gibt im Interview Entscheidungshilfen zur Hand.

SPA oder klassische Webanwendung?

Redaktion: Du sprichst auf der JAX über Frontend-Architekturen. Dabei sagst du, dass sich unabhängig von der Wahl eines Frameworks wie React, Angular, Vue oder Web Components architektonische Herausforderungen ergeben, die sich stark von denen einer Backend-Architektur unterscheiden. Kannst du das einmal anhand eines Beispiels erläutern?

Ein ausschlaggebendes Kriterium bei der Entscheidung stellt die Art und Weise der User-Interaktion dar.

Nils Hartmann: Ein wichtiger Unterschied ist die Tatsache, dass im Frontend der Benutzer unmittelbar mit seinen Interaktionen im Vordergrund steht. Wir wollen dem Benutzer ja das bestmögliche Erleben unserer Anwendung ermöglichen, das bedeutet, er soll jederzeit mit der Anwendung interagieren können und sehr schnell Feedback auf seine Interaktionen bekommen.

Neben dem schnellen Feedback ist auch das Thema Datenkonsistenz sehr wichtig. Wenn der Benutzer dieselbe Information an mehreren Stellen der Anwendung angezeigt bekommt, sollte diese natürlich auch konsistent sein – und das zu jeder Zeit.

Das ist insbesondere auch dann relevant und herausfordernd, wenn ich die Anwendung in kleinen Teilen – ähnlich wie Microservices im Backend – entwickle. Von der Zerteilung soll der Benutzer ja nichts bemerken, die Anwendung soll sich wie aus einem Guss mit Blick auf Aussehen und Verhalten darstellen. Diese Ebene fehlt im Backend, in dem die einzelnen Services so unabhängig wie möglich voneinander operieren können und sollen.

Redaktion: Insbesondere sprichst du ja über SPAs. Für welche Anwendungsfälle sind Single-Page-Anwendung interessant – und wann sollte man eher zur „klassischen“ Webanwendung greifen?

Nils Hartmann: Ein ausschlaggebendes Kriterium bei der Entscheidung stellt für mich die Art und Weise der User-Interaktion innerhalb der Anwendung dar. Als Beispiel sei hier zum einen eine  Nachrichtenseite wie “Der Spiegel” genannt. Die Interaktionen beschränken sich dort fast ausschließlich auf das Wechseln von einer Seite (bzw. einem Artikel) zum nächsten.

Ein Beispiel auf der anderen Seite des Spektrums wären Anwendungen wie Outlook, Google Docs oder auch das Online Designtool Figma. In keinem der drei Fälle kann ich mir eine “klassische” Webanwendung vorstellen und würde sie als Single-Page-Anwendung bauen.

Verschaffen Sie sich den Zugang zur Java-Welt mit unserem kostenlosen Newsletter!

Zwischen diesen Extremen gibt es noch Abstufungen, wo die Entscheidung nicht so klar ist. GitHub ist so ein Beispiel. Auch hier gibt es einen hohen Teil statischen Contents (Darstellung des Inhalts eines Repositories, Darstellung der Commit-Historie etc), der für eine klassische Webanwendung sprechen würde. Auf der anderen Seiten haben wir Features, bei denen der Benutzer zum Beispiel Code-Stellen in einem Pull Request kommentieren kann, bei denen man sich eine Implementierung als Single-Page-Anwendung vorstellen könnte.

Das Beispiel GitHub zeigt auch eine mögliche Falle bei der Entscheidung: Legitim ist ja die Überlegung, eine Anwendung wie GitHub als klassische Webanwendung zu bauen und “ein bisschen” JavaScript hier und da zu ergänzen, um die interaktiven Teile zu bauen. Dann müsste man das Abenteuer JavaScript/Single-Page-Anwendung nicht eingehen und kann im optimalen Fall im gewohnten Technologieumfeld bleiben. Die Gefahr hierbei ist, dass “das Bisschen” JavaScript irgendwann so viel wird, dass es nicht mehr testbar, wartbar, überschaubar ist.

Deswegen sollte man sich gut überlegen, ob man diesen vermeintlich einfachen Weg geht, oder nicht gleich zur architektonisch sauberen Lösung, der SPA, greift, auch wenn dieser am Anfang sicherlich mit viel Lernen verbunden ist.

Software-Architektur 2020

Redaktion: Software-Architektur ist allgemein ein breit gefächertes Gebiet – ebenso unterschiedlich ist das Rollenverständnis unter Software-Architekten. Worin siehst du persönlich in deiner Position als Software-Architekt deine Hauptaufgabe? Was ist dir besonders wichtig?

Wichtig für mich ist, im konkreten Projekt zu schauen, welche Lösungen am besten pragmatisch passen.

Nils Hartmann: Ich versuche dabei zu helfen, in Projekten Lösungen für technische Problemstellungen zu finden, die eine stabile Basis für die Entwicklung der Anwendung sind und die im Nachhinein nach Möglichkeit niemand bereut. Was natürlich nicht immer gelingt…

Wichtig für mich ist, im konkreten Projekt, mit konkreten Anforderungen und Rahmenbedingung zu schauen, welche Lösungen am besten pragmatisch passen und sich dabei nicht „Hype-getrieben“ steuern zu lassen. Letzteres finde ich allerdings gar nicht so leicht. Zum einen will man (mich eingeschlossen!) doch auch immer gerne „vorne dabei“ sein, wenn es etwas Neues gibt. Zum anderen: wenn scheinbar alle auf eine bestimmte Architektur, eine bestimmte Technologie, einen Prozess oder ein Vorgehen setzen (und sogar die Big-Player, Netflix! Facebook! Google!), warum sollte das dann nicht auch das Richtige für unser Projekt sein?

Redaktion: Welchen Architektur-Trend findest du momentan besonders spannend?

Nils Hartmann: Für mich gibt es zurzeit nicht den einen, ganz besonders spannenden Architektur-Trend. Ich finde es spannend und herausfordernd, dass die Entwicklung auf allen Ebenen scheinbar immer schneller vorangeht. Überall entstehen neuen Ideen und Ansätze in den unterschiedlichsten Bereichen der Software-Entwicklung. Auch dank der diversen sozialen Medien und Kollaborationsmöglichkeiten können diese sich gut verbreiten. Das ist auf der einen Seite prima, weil dabei auch immer wieder gute Lösungen für bestehende Probleme herauskommen, manchmal aber auch anstrengend, wenn man viele Entwicklungen im Auge behalten muss, was vollumfänglich – für mich zumindest – ein Ding der Unmöglichkeit ist.

Redaktion: Was ist die Kernbotschaft deiner Session, die jeder Besucher mit nach Hause nehmen sollte?

Nils Hartmann: Zum einen: Es gibt sehr gute Gründe, Single-Page-Anwendungen zu bauen, und das ist auch kein Teufelszeug. Zum anderen: Wir werden im Talk sehen, dass es mittlerweile sehr stabile und ausgereifte, framework- und bibliotheksübergreifende Konzepte, Pattern und Architekturen gibt, mit denen sich Single-Page-Anwendungen professionell entwickeln lassen.

Redaktion: Vielen Dank für dieses Interview!

Fragen stellte Hartmut Schlosser.

Alle News der Java-Welt:

Behind the Tracks

Agile, People & Culture
Teamwork & Methoden

Clouds & Kubernetes
Alles rund um Cloud

Core Java & Languages
Ausblicke & Best Practices

Data & Machine Learning
Speicherung, Processing & mehr

DevOps & CI/CD
Deployment, Docker & mehr

Microservices
Strukturen & Frameworks

Performance & Security
Sichere Webanwendungen

Serverside Java
Spring, JDK & mehr

Software-Architektur
Best Practices

Web & JavaScript
JS & Webtechnologien

Digital Transformation & Innovation
Technologien & Vorgehensweisen

Domain-driven Design
Grundlagen und Ausblick

Spring Ecosystem
Wissen in Spring-Technologien

Web-APIs
API-Technologie, Design und Management