Performance Testing zweier Architekturen

ZH1896ZH

Mitglied
Für ein Projekt soll ich zwei Architektur-Prototypen bauen.

Die Protoypen sollen Webanwendungen sein und anschliessend auf ihre Performance geprüft werden:
  • Antwortzeit bei 20 gleichzeitigen Clients
  • Antwortzeit bei tiefer, normaler, erhöhter & hoher Last
  • CPU- & Arbeitspeicherauslastung bei 10 Clients
  • Maximale Anzahl Clients bis zum Systemabsturz
Bei der Geschäftslogik handelt es sich um Investmentstrategien {Bester gleitender Durchschnitt; Buy & Hold; Rebalancing}, welche auf grössere Mengen von Wertpapierdaten angewendet werden.

Die Anweisung ist, ich soll bei einem Prototypen die Berechnungen auf dem Client machen, beim Anderen die Berechnungen auf dem Server.

Ich habe den ersten Prototypen (3-Schichten; Client-Server; Berechnungen im Server) bereits erstellt. Dieser sieht so aus:
3-tier.png


Meine Frage nun ist, wie die Architektur des zweiten Protoyps aussehen soll?
  • In erster Linie habe ich an eine Java-Desktop-Applikation gedacht, da dort die Berechnungen beim Client gemacht werden. Jedoch ist dies keine Webanwendung und die Applikation ist nur auf einen Client ausgelegt
  • Ich habe auch an ein Webapplikation gedacht, wo halt alle Berechnungen in JavaScript gemacht werden. Jedoch habe ich meine Bedenken ob das sinnvoll ist:
    • Da ich erstens nicht weiss wie ich die zwei Prototypen fair testen und vergleichen soll

Habt ihr eventuell eine Idee, wie ich den zweiten Prototypen bauen kann, sodass ein sinnvolles Performance-Testing im Anschluss gemacht werden kann?

Ich bin froh um jeden Input!
 

ZH1896ZH

Mitglied
Grundsätzlich würde ich die zweite Variante im Frontend mit Javascript sehen. Da gibt es lustige Toolkits wie angular und ähnliches
Alles klar, ich kenne mich leider nicht so gut mit JS-Frameworks aus. Gibt es da evtl. eines das sich anbieten würde, um die Business-Logik von Java nach JS zu übersetzen?
Auch frage ich mich, wie die Architektur mit Angular aussehen würde. Da läuft doch noch ein Server (Node.js) im Hintergrund. Könntest du mir das evtl kurz skizzieren?
 

ZH1896ZH

Mitglied
Grundsätzlich würde ich die zweite Variante im Frontend mit Javascript sehen. Da gibt es lustige Toolkits wie angular und ähnliches
Thick_Client.png

Hast du an so etwas gedacht?
Letzte Frage:
Wie könnte ich diese beiden Architekturen fair testen? Mit einem Tool oder manuell?
--> da es bei der zweiten Architektur keine Rest-APIs gibt, kann ich mir nicht vorstellen wie ich das ganze testen soll 😐
 

LimDul

Top Contributor
Ahnung hab ich davon nicht wirklich. Selenium wäre ein Tool, was man einfach auf die Web-Oberflächen loslässt.
JMeter ist mehr auf Performance-Tests ausgelegt und sollte das eigentlich abdecken.

Aber das ist alles maximal Halbwissen was ich habe - Javascript meide ich wie der Teufel das Weihwasser :)
 

Oneixee5

Top Contributor
LuP-Tests werden bei uns mit Apache JMeter durchgeführt. Die JMeter-Instanzen laufen in AWS. Zusätzlich laufen Dienste auf dem Server, welche alle Parameter des Servers überwachen. Die Software heißt Dynatrace. Man kann damit alles erkunden, alle Antwortzeiten, SQL-Statements, Garbage Collection, Netzwerk, Temperaturen, Datenträger, Logfiles, einfach alles.
Mit AWS kann man einfach die Last erhöhen oder einstellen, wie man gerade möchte.
Es entsteht aber etwas Aufwand um firmeneigene Proxys und IDS anzupassen, ansonsten würden solche Szenarien einfach unterbunden.
 

Oneixee5

Top Contributor
Anhang anzeigen 18758

Hast du an so etwas gedacht?
Letzte Frage:
Wie könnte ich diese beiden Architekturen fair testen? Mit einem Tool oder manuell?
--> da es bei der zweiten Architektur keine Rest-APIs gibt, kann ich mir nicht vorstellen wie ich das ganze testen soll 😐
AngularJS ist mir etwas zu akademisch, das kann man im öffentlichen Dienst verwenden. Meine persönliche Meinung ist, man kommt mit React oder VueJS schneller ans Ziel.
 

mrBrown

Super-Moderator
Mitarbeiter
--> da es bei der zweiten Architektur keine Rest-APIs gibt, kann ich mir nicht vorstellen wie ich das ganze testen soll 😐
Testen kann man die Performance bei sowas nur super schwierig, außer es geht nur um die Server-Last, aber dann braucht man nichts testen, sondern kann einfach feststellen, das Variante A langsamer ist als „Variante A, abzüglich vieler Berechnungen“.

Für die Performance die der Nutzer sieht muss man mit echten Browsern und im Idealfall echten Nutzern testen, als Kriterien kann man zB Zeit bis DOM vollständig ausgebaut ist, Dauer und Größe der Request, Zeit bis zum letzten Layout-Shift, etc. In etwa das, was Lighthouse in Chrome liefert.

eindeutige Ergebnisse bleiben aber immer schwierig, einfach dadurch wie Nutzer Geschwindigkeit wahrnehmen.
Es kann durchaus als schneller wahrgenommen werden, wenn es einen Ladebalken gibt und die Ergebnisse 2 Sekunde brauchen, als wenn es keinen Ladebalken gibt, aber die Ergebnisse nach einer Sekunde da sind (Zahlen ausgedacht :) ). Oder auch mit Lazy Loading, die Gesamtmenge ist langsamer, aber der Nutzer kann schneller irgendwas machen bzw. sehen.
 

Ähnliche Java Themen


Oben