Architektur von Hochlastsystemen entwerfen – Robosoft Blog
Hohe Last heißt nicht nur mehr Traffic – sie heißt, dass jede Annahme, die im Kleinen funktioniert hat, neu geprüft werden muss.
Von Anfang an für horizontale Skalierung entwerfen
Systeme, die durch mehr statt durch größere Maschinen skalieren, stoßen an keine harten Obergrenzen. Das nachzurüsten, wenn ein Monolith bereits die Last trägt, ist weit teurer, als es von vornherein einzuplanen.
Entkoppeln, was nicht synchron sein muss
Message Queues erlauben es langsamen oder unzuverlässigen Teilen eines Systems auszufallen, ohne alles mitzureißen, was mit ihnen verbunden ist. Nicht jede Operation braucht eine sofortige Antwort – zu entscheiden, welche es tun, ist eine zentrale Architekturentscheidung.
Mit Ausfällen planen, nicht nur mit Erfolg
In großem Maßstab fällt immer irgendwo etwas aus – ein Server, eine Netzverbindung, ein nachgelagerter Dienst. Circuit Breaker, Wiederholungen mit Backoff und kontrollierte Funktionseinschränkung sorgen dafür, dass aus einem Teilausfall kein Totalausfall wird.
Typische Stolperfallen
Der häufigste Fehler ist, auf Kosten der Liefergeschwindigkeit für eine Größenordnung zu optimieren, die man noch gar nicht hat. Der zweithäufigste ist das Gegenteil – Skalierung komplett zu ignorieren, bis ein einziger Vorfall einen Notumbau erzwingt. Richtig ist, die Nahtstellen zu entwerfen (wo sich ein Monolith später aufteilen, wo sich später eine Queue einfügen ließe), ohne sie zwingend alle am ersten Tag zu bauen.
Eine praktische Checkliste
- Lässt sich jede Komponente neu starten, ohne das ganze System lahmzulegen?
- Verschlechtert sich ein langsamer nachgelagerter Dienst kontrolliert oder zieht er alles mit?
- Gibt es ein Lasttest-Ergebnis aus den letzten sechs Monaten statt nur einer Annahme?
- Lässt sich Kapazität ohne Deployment hinzufügen, nur durch eine Konfigurationsänderung?
Planen Sie für eine Last, die Sie noch nicht sehen?
Besser jetzt einplanen, als später unter Druck neu zu bauen.
