Plaximo

Web-Architektur, die mit dem Geschäft mitwächst

Statisches Rendering, Caching-Ebenen, CDN und horizontale Skalierung im Vergleich. Warum frühe Architekturentscheidungen die spätere Rechnung kleiner halten.

6 Min. Lesezeit

Mitwachsen ist eine Entscheidung, kein Zufall

Eine Anwendung, die bei zwanzig gleichzeitigen Nutzern flüssig läuft, kann bei zweitausend einbrechen. Der Unterschied liegt selten an der einzelnen Funktion und fast immer an der Architektur darunter. Skalierbarkeit beschreibt, wie gut ein System mehr Last verträgt, ohne dass Antwortzeiten steigen oder die Kosten explodieren.

Das Tückische ist der Zeitpunkt. Architektur wird am Anfang entschieden, wenn die Last noch klein ist und alles ohnehin schnell wirkt. Genau dann fallen die Weichen, die später entweder einen ruhigen Ausbau erlauben oder eine teure Umschreibung erzwingen. Wer früh die richtigen Trennlinien zieht, zahlt später für Wachstum, nicht für Reparatur.

Skalierung ist kein Feature, das man nachrüstet, sondern eine Eigenschaft, die aus den ersten Strukturentscheidungen folgt.

Statisches Rendering gegen serverseitiges Rendering

Die erste große Weiche betrifft den Moment, in dem aus Daten fertiges HTML wird. Beim statischen Rendering geschieht das einmal zur Bauzeit. Die fertige Seite liegt danach als Datei vor und lässt sich beliebig oft ausliefern, ohne dass ein Server pro Aufruf rechnet. Beim serverseitigen Rendering entsteht die Seite bei jeder Anfrage neu, was personalisierte oder hochaktuelle Inhalte erlaubt, aber Rechenzeit pro Aufruf kostet.

In der Praxis ist das keine Entweder-oder-Frage über die ganze Anwendung. Moderne Frameworks erlauben die Entscheidung pro Seite oder sogar pro Komponente. Eine Produktübersicht kann statisch sein und alle paar Minuten im Hintergrund neu erzeugt werden (inkrementelle Regeneration), während der Warenkorb derselben Anwendung serverseitig und pro Nutzer rendert.

StrategieRechenlast pro AufrufAktualitätTypischer Einsatz
Statisch (Build)nahezu nullbis zum nächsten BuildMarketing, Dokumentation, Blog
Inkrementell regeneriertgering, nur beim AblaufSekunden bis MinutenKataloge, Preislisten
Serverseitig pro Anfragehoch, skaliert mit Trafficin EchtzeitKonto, Suche, personalisierte Ansicht
Client-seitig nachgeladengering am Server, mehr im Browserin EchtzeitDashboards hinter Login

Mit Next.js lässt sich diese Mischung sauber abbilden, weil der App Router jede Route einzeln einordnet, statt eine globale Regel zu erzwingen. Die Faustregel bleibt einfach. Was für alle gleich aussieht und sich selten ändert, sollte nicht bei jedem Aufruf neu berechnet werden.

Caching als die billigste Rechenleistung

Die schnellste Anfrage ist die, die nie den Ursprungsserver erreicht. Caching bedeutet, ein einmal berechnetes Ergebnis zwischenzuspeichern und wiederzuverwenden, statt es erneut zu erzeugen. Der Gewinn ist doppelt, denn die Antwort kommt schneller und der teure Teil des Systems wird entlastet.

Caching ist dabei kein einzelner Schalter, sondern eine Abfolge von Ebenen, die ineinandergreifen.

  • Browser-Cache im Gerät des Nutzers für Dateien, die sich nicht ändern, gesteuert über Header wie Cache-Control.
  • CDN-Cache am Netzwerkrand für ganze Seiten oder Antworten, die für viele Nutzer identisch sind.
  • Anwendungs-Cache im Speicher des Servers für aufbereitete Datenstrukturen.
  • Daten-Cache (etwa Redis) für teure Abfrageergebnisse, die viele Anfragen teilen.

Die eigentliche Schwierigkeit ist nicht das Speichern, sondern das gezielte Verwerfen. Ein Cache, der zu lange hält, zeigt veraltete Inhalte, ein Cache, der zu kurz hält, spart nichts. Brauchbare Werkzeuge dafür sind kurze Gültigkeitsdauern für bewegliche Daten, gezielte Invalidierung beim Schreiben und ein Versionsstempel in Dateinamen, sodass eine neue Auslieferung den alten Stand sicher ablöst.

Das CDN bringt die Inhalte näher an den Nutzer

Physik setzt eine harte Grenze. Ein Signal braucht Zeit für die Strecke, und ein Server in Frankfurt antwortet einem Nutzer in São Paulo unweigerlich langsamer als einer vor Ort. Ein Content Delivery Network verteilt Kopien der Auslieferung auf viele Standorte weltweit, sodass jede Anfrage von einem nahen Knoten beantwortet wird.

Der Effekt ist messbar und groß. Ein interkontinentaler Hin- und Rückweg kostet schnell 150 bis 250 Millisekunden allein an Laufzeit, ein Treffer im nahen CDN-Knoten liegt im einstelligen Millisekundenbereich. Dazu kommt der Entlastungseffekt, denn jede vom CDN beantwortete Anfrage erreicht den Ursprungsserver gar nicht erst. Bei statischen Inhalten lassen sich so leicht über 90 Prozent des Traffics am Rand abfangen.

Diese Latenz schlägt direkt auf die Core Web Vitals durch, mit denen sich Nutzererlebnis und Sichtbarkeit messen lassen. Als gute Schwellen gelten ein Largest Contentful Paint unter 2,5 Sekunden, eine Interaction to Next Paint unter 200 Millisekunden und ein Cumulative Layout Shift unter 0,1. Ein CDN verbessert vor allem den ersten Wert, weil die ausliefernde Distanz schrumpft.

Die Datenbank ist der eigentliche Engpass

Webserver sind die einfache Seite der Gleichung. Steigt die Last, stellt man weitere identische Instanzen daneben und verteilt die Anfragen über einen Lastverteiler. Das nennt sich horizontale Skalierung und funktioniert gut, solange die Server selbst keinen Zustand halten. Genau deshalb gehören Sitzungen, Uploads und Caches aus dem einzelnen Server heraus in geteilte Dienste, denn ein zustandsloser Server lässt sich gefahrlos vervielfachen.

Die Datenbank folgt dieser Logik nicht so leicht. Eine klassische relationale Datenbank hat einen Knoten, der schreibt, und genau der lässt sich nicht beliebig kopieren. Unter Last werden zuerst drei Dinge knapp, nämlich offene Verbindungen, Sperren auf gemeinsam genutzten Zeilen und die Laufzeit einzelner Abfragen. Eine Abfrage ohne passenden Index, die bei tausend Zeilen unsichtbar schnell war, kann bei zehn Millionen Zeilen das ganze System ausbremsen.

Wege, den Engpass zu verschieben

Mehrere Hebel verschieben diesen Punkt deutlich nach hinten, bevor ein grundlegender Umbau nötig wird.

  • Indizes auf den Spalten, nach denen tatsächlich gefiltert und sortiert wird, statt blind auf jeder Spalte.
  • Verbindungs-Pooling, damit nicht jede Anfrage eine neue, teure Verbindung öffnet.
  • Lese-Repliken, die Kopien der Daten vorhalten und alle lesenden Anfragen übernehmen, sodass der Schreibknoten frei bleibt.
  • Daten-Caching für Ergebnisse, die viele Nutzer teilen und die sich nicht im Sekundentakt ändern.

Erst wenn diese Mittel ausgereizt sind, kommen schwerere Geschütze wie das Aufteilen der Daten über mehrere Knoten (Sharding) in Frage. Diese Reihenfolge ist bewusst, denn jeder Schritt erkauft Zeit zu geringeren Kosten als der nächste.

Warum frühe Entscheidungen später Geld sparen

Architektur ist eine Wette auf die Zukunft, und die billigste Korrektur ist die, die man nie machen muss. Eine zustandslose Anwendung, eine klare Grenze zwischen statischen und dynamischen Teilen und eine Datenbank mit gesetzten Indizes kosten am Anfang kaum Mehraufwand. Dieselben Eigenschaften nachträglich einzuziehen, wenn das System bereits unter Last steht und Kunden zusehen, kostet ein Vielfaches und bindet das Team über Wochen.

Der Hebel liegt in der Reihenfolge der Kosten. Ein fehlender Index ist eine Zeile, ein nachträgliches Entkoppeln des Zustands aus zwanzig Servern ist ein Projekt. Wer Skalierung als Eigenschaft von Anfang an mitdenkt, ersetzt teure Notfälle durch planbares Wachstum. Genau das meint bei uns die Bewegung weiter planen, beschrieben auf der Seite Mission, und sie greift früher, als die meisten erwarten.

Das heißt nicht, von Tag eins für Millionen Nutzer zu bauen. Es heißt, die wenigen Entscheidungen sauber zu treffen, die sich später nur schwer zurücknehmen lassen, und alles andere bewusst einfach zu halten. Welche dieser Weichen für ein konkretes Vorhaben zählen, hängt vom erwarteten Wachstum und vom Datenmodell ab, und genau das lässt sich vorab klären. Wer früh die Architektur prüfen lassen will, findet über Kontakt den direkten Weg.


Eine Architektur, die heute trägt und morgen mitwächst, beginnt mit den richtigen Fragen. Wir sprechen darüber und ordnen die Entscheidungen für das jeweilige Vorhaben.

Einen Schritt weiter

Aus einem Gedanken wird ein Projekt, sobald das Gespräch beginnt.