Mit Jamstack zurück in die Zukunft der Webentwicklung
Das Web mit bekannten Konzepten neu gedacht
Moderne CMS bieten heute eine Vielzahl an Features, die den Nutzern das Verwalten von Inhalten erleichtert. Doch auch diese Systeme haben ihre Schattenseite: lange Ladezeiten, aufwändige Updates und nicht zuletzt das Risiko von Sicherheitslücken sorgen dafür, dass Jamstack-Anwendungen an Beliebtheit gewinnen. Doch was verbirgt sich hinter diesem Trend?
Zurück zu den Wurzeln?
Der Begriff Jamstack ist abgeleitet von den verschiedenen Technologien, die bei diesem Architekturstil zum Einsatz kommen. Dabei stehen die drei Anfangsbuchstaben für Javascript, API und Markup. Javascript sorgt dafür, dass Jamstack-Seiten nicht nur statische Gebilde sind, sondern mit individuellen Funktionen zu dynamischen Web Apps werden. Mittels API’s – also Schnittstellen, die vielfach als Restful API’s implementiert sind – werden verschiedene Services wie zum Beispiel eine Benutzerauthentifizierung integriert. Markup steht für Auszeichnung und sorgt dafür, dass die Inhalte auf Webseiten strukturiert sind und entsprechend dargestellt werden können. HTML ist die Sprache des Webs, auch in Jamstack findet diese Auszeichnungssprache natürlich ihre Verwendung. Der eigentliche Clou von Jamstack-Webseiten ist aber nicht die verwendete Technologie, sondern das Prinzip, dass im Grunde die gesamte Webseite im Vorfeld in einem Build-Prozess zusammengefügt wird. Die Webseite muss also beim Aufruf durch einen Benutzer nicht mehr vollständig gerendert werden, sondern kann unkompliziert als statische Webseite über Content Delivery Networks ausgeliefert werden. Jamstack nutzt also die Vorteile, die statische Webseiten bereits seit vielen Jahren aufweisen. Doch natürlich ist dieses Prinzip nicht einfach nur alter Wein in neuen Schläuchen. Es gibt weitere Eigenschaften, die Jamstack ausmachen. So zum Beispiel die Entkopplung von Frontend und Backend, die dazu führt, dass flexible Umgebungen entstehen, die dem Best-of-Breed-Ansatz folgen. Wichtig zu erwähnen ist, dass Jamstack keine spezifische Technologie ist, sondern eine Bewegung mit Best-Practices, die zum Schluss zu schnelleren Webseiten führen soll.
Was unterscheidet Jamstack von gängigen Seiten?
Um diesen neuen Architekturstil besser zu verstehen, schauen wir uns das Prinzip an, wie moderne Websites bis anhin funktionieren. Diese sind im Gegensatz zu den Anfängen des Webs nicht mehr statisch, sondern dynamisch. Sobald ein Nutzer eine Webseite aufruft, wird zur Laufzeit eine Anfrage an einen Server gesendet. Inhalte werden in der Datenbank abgerufen, übermittelt und in eine HTML-Struktur gerendert, um diese zum Schluss im Browser darzustellen. Mittels Javascript lassen sich Inhalte auf einer Webseite beliebig abrufen und austauschen. Dieser Architekturstil – auch bekannt und dem Namen Lampstack – setzt auf Technologien wie Linux, Apache, MYSQL und PHP.
Traditionelle Umgebungen sind in der Regel monolithisch aufgebaut und direkt mit der Datenbank verbunden, damit zur Laufzeit Inhalte abgefragt werden können. Im Gegensatz dazu stellt Jamstack die bereits gerenderten Inhalte über ein CDN zur Verfügung und dockt verschiedene Microservices an. (Quelle: jamstack.org)
Doch worin liegt nun der Vorteil von Jamstack-Websites? Oder anders gesagt, was sind die Nachteile von Lampstack? Wenn Inhalte bei jedem Seitenaufruf oder auch bei bestimmten Benutzerinteraktionen abgefragt und gerendert werden müssen, können daraus lange Reaktionszeiten resultieren. Mittlerweile gibt es zahlreiche Caching-Ebenen, die als Zwischenspeicher fungieren und so Inhalte schneller zur Verfügung stellen. Allerdings erhöhen diese Caching-Ebenen auch die Komplexität und somit den Wartungsaufwand. Im Gegensatz dazu werden beim Jamstack-Prinzip die Inhalte im Vorfeld zusammengestellt (Build), so dass zum Schluss lediglich statische Seiten über spezielle Content-Delivery-Netzwerke ausgeliefert werden. Dieses Prinzip ermöglicht sehr performante Seiten, die aufgrund der reinen Lesezugriffe einfach skalierbar sind. Dies zeigen auch zahlreiche Beispiele auf der offiziellen Jamstack-Webseite jamstack.org.
Einfachheit und Sicherheit
Klassische CMS wie WordPress bieten mittlerweile ein ganzes Ökosystem mit unzähligen Erweiterungen, mit welchen die eigene Webseite im Funktionsumfang erweitert werden kann. Bei diesen monolithischen Systemen sind Komponenten wie Datenbanken, das Frontend oder die bereits erwähnten Plug-ins eng miteinander verbunden und bilden eine Einheit. Für die Anwender ist diese Gegebenheit praktisch. Inhalte können einfach im Backend erfasst und freigeschalten werden. In Bezug auf Wartbarkeit und Sicherheit birgt diese Architektur aber ein mehr oder weniger grosses Risiko. Durch jedes installierte Plug-in kann Schadsoftware eingeschleust werden. Die zahlreichen Updates und Patches zeigen, dass dieses Risiko nicht gerade klein ist. Zugleich wird durch diese regelmässigen Updates der Wartungsaufwand weiter erhöht.
Bei Jamstack gibt es keine Serverumgebung im eigentlichen Sinne, die zur Laufzeit Datenbankabfragen regelt und Inhalte rendert. Wie bereits erwähnt erfolgt grundsätzlich ein reiner Lesezugriff auf spezielle Content Delivery Networks, die Inhalte über verteilte Server zur Verfügung stellen. Doch was ist mit Plug-ins? Der Buchstabe A im Begriff Jamstack steht wie bereits beschrieben für API. Mittels Schnittstellen können Inhalte während dem Build-Prozess abgerufen oder Microservices angebunden werden. Diese Microservices können verschiedene Funktionen wie Benutzerauthentifizierung, Bezahlprozesse in einem Onlineshop oder erweiterte Suchfunktionen abdecken. Durch API’s wird das Web also quasi zu einem riesigen Ökosystem für Dienste, die einfach abgerufen bzw. genutzt werden können.
Die Vorteile von beiden Welten nutzen
Jamstack-Webseiten können die Performance einer Webseite verbessern. Im Gegenzug kann sich aber auch der Aufwand für den vorgelagerten Build-Prozess bei umfangreichen Seiten stark erhöhen, was wiederum zu langen Build-Zeiten führt. Bei Webseiten wie zum Beispiel sozialen Netzwerken oder Foren, bei denen sich Inhalte rasch ändern, sind viele einzelne Builds notwendig, um die Inhalte aktuell zu halten. Um die Anzahl der Build-Vorgänge zu reduzieren, bietet sich ein Mittelweg an, bei welchem nur ein Teil der Seite vorgebaut und der Rest dynamisch beim Aufruf der Seite mittels API’s abgefragt wird. Natürlich gehen diese dynamischen Abfragen wieder zu Lasten der Performance. Auch lässt sich die klassische Jamstack-Architektur durch Headless-CMS ergänzen, welche Inhalte während des Build-Prozesses zur Verfügung stellen. Klassische CMS wie WordPress oder Drupal lassen sich mittlerweile nach dem Headless-Prinzip betreiben.
Lohnt sich der Umstieg?
Selbstverständlich gibt es auch bei der Erstellung von Websites oder Content-First-Workflows kein Patentrezept. Schliesslich hängt die Wahl des entsprechenden Ansatzes oder der Technologie von verschiedenen Faktoren ab. Die schnelle Performance, Sicherheitsaspekte, niedrige Kosten und die mittlerweile hohe Zahl an Microservices im Netz sind aber Aspekte, die im Publishing-Bereich klar für Jamstack sprechen. Ein Umstieg muss auch nicht immer zwingend bedeuten, dass alle Elemente einer bestehenden Umgebung auf einen Schlag ersetzt werden müssen. CMS wie WordPress lassen sich wie bereits erwähnt zu einem Headless CMS umbauen. So kann zum Beispiel die bestehende Datenbank genutzt und an ein neu entwickeltes Frontend angedockt werden. Bestehende Funktionalitäten können schrittweise durch eigene oder fremde Microservices ersetzt und bei Bedarf erweitert werden.
Das Buch zur Bewegung
Wer mehr über Jamstack erfahren möchte, kann sich das Jamstack-Buch auf netlify herunterladen. Das Buch, welches auch als Audio-Datei erhältlich ist, erklärt die Grundsätze von Jamstack und die zugrundeliegenden Technologien.