Zum Hauptinhalt springen
Ich möchte auf Pauls aktuellen Blogbeitrag „Sind Ihre Tests vor der Produktion effektiv?“ näher eingehen. Paul hat sich mit der CPU-Auslastung und den Codepfaden befasst, aber es gibt noch einen weiteren sehr wichtigen Aspekt vieler Anwendungen – die Netzwerknutzung. Viele Anwendungen werden in einer LAN-Umgebung mit Latenzen im Submillisekundenbereich und einer Bandbreite von mindestens 100 Mbit/s getestet. Anschließend werden sie in einem WAN mit geringeren Bandbreiten und viel höheren Latenzen eingesetzt. Die Ergebnisse können katastrophal sein.
Während Tests in einer LAN-Umgebung die meisten netzwerkbezogenen Fehler aufdecken, kann es zu Fehlern aufgrund von Paketverlusten oder unerwarteter Segmentierung kommen (TCP behält Ihre Nachrichtengrenzen NICHT bei), die in einer LAN-Umgebung weniger wahrscheinlich auftreten. Außerdem ist es viel unwahrscheinlicher, dass Sie ein suboptimales Design in einer schnellen LAN-Umgebung bemerken als in einer langsamen WAN-Umgebung. Daher ist es sehr wichtig, jede netzwerkbasierte Anwendung unter den ungünstigsten zu erwartenden Netzwerkbedingungen zu testen, d. h. bei geringer Bandbreite, hohen Latenzen und nicht zu vergessen hohen Paketverlustraten.
Es gibt zwei Möglichkeiten, dies zu tun.
Die erste Möglichkeit besteht darin, die tatsächliche Umgebung zu nutzen. Stellen Sie den Server (oder Client) auf einen Host im Netzwerk und sehen Sie, wie er funktioniert. Dies hat den Vorteil, dass Sie die tatsächliche Infrastruktur nutzen können. Der Nachteil ist, dass Sie keine Kontrolle über die Umgebung haben, was entscheidend ist, wenn Sie versuchen, ein Problem zu reproduzieren oder eine Fehlerbehebung zu testen.
Die zweite Möglichkeit ist die Verwendung eines WAN-Simulators. Es gibt Hardware- und Software-Simulatoren, kommerzielle und Open-Source-Simulatoren (kostenlos). Der Vorteil hierbei ist, dass Sie die vollständige Kontrolle über Latenz, Paketverlustraten und andere Netzwerkparameter haben und keine anderen Gruppen einbeziehen müssen (d. h. Ihre Software auf dem System eines anderen installieren müssen). Der Nachteil sind die Kosten und die Einarbeitungszeit. Selbst wenn Sie kostenlose Software verwenden, müssen Sie ein System (in der Regel eine Unix-Variante) bereitstellen, auf dem Sie sie ausführen können, und lernen, wie man sie benutzt. Vor einigen Jahren habe ich ein Tutorial zu Dummynet geschrieben. Damals war es einer der wenigen verfügbaren kostenlosen Simulatoren. Mittlerweile gibt es viele weitere, googeln Sie einfach „WAN-Simulator”.
Aufgrund meiner Erfahrung mit Leistungs- und Anwendungsfehlern bin ich davon überzeugt, dass sich diese Art von Tests durch die Reduzierung von Produktionsausfällen aufgrund von Fehlern und die Steigerung der Leistung sowohl der Anwendung als auch ihrer Nutzer mehr als bezahlt machen werden.