Performance als Showstopper Marc Ruef | 14.12.2009 Grosse Firmen geben Hundertausende, manchmal gar Millionen Schweizer Franken aus, um ihre Webpräsenz zu erstellen, umzubauen oder zu erweitern. Jede Firma, die etwas auf sich hält, präsentiert sich alle paar Jahre komplett neu (http://www.scip.ch/?news.20090602) im Web. Da werden neue Webserver eingerichtet, neue Datenbanken erstellt und neue Webapplikationen entwickelt. Und dabei wird gut und gerne der Devise gefolgt: Nicht kleckern, klotzen! Die vermeintlich gut ausgebildeten Projektleiter und die ständig wechselnden Techniker lassen sich dabei unverhohlen dazu hinreissen, möglichst mächtige Technologien einzusetzen. Anstelle einer einfachen MySQL-Datenbank wird auf das mächtige Oracle gesetzt (obwohl man die zusätzlichen Funktionen gar nicht braucht) und anstatt des Nutzens einer klassischen Sprache wie PHP wird lieber ein komplexes Framework wie JBoss verwendet (angeblich wegen der Skalierbarkeit). Man will sich schliesslich nicht mit Kinderkram abgeben, sondern in der Liga der ganz grossen mitspielen. Da bauen die Entwickler dann ihre Anwendungen. Für das Generieren Buttons zum Abschicken von simplen Formularen werden nicht mehr wenige Zeilen Code und ein paar nachvollziehbare Funktionen verwendet. Stattdessen müssen nun die Eigenschaften an unterschiedlichen Stellen definiert werden. Zusätzlich zum Webserver muss man dann auch noch den Anwendungsserver installieren und konfigurieren. Das ist natürlich ideal, denn sowohl die Entwickler als auch die Administratoren sind beschäftigt ... Und man will ja firmenintern keine Ressourcen brach liegen lassen. So geschehen bei einem grösseren Kunden von uns. In aller Hektik sollte man den neuen Webauftritt vorbereiten. Für die obligatorische Sicherheitsüberprüfung wurden die zwei Wochen vor der Live-Schaltung reserviert. Wir waren bereit, diese Aufgabe anzunehmen. Doch leider stellte sich heraus, dass bei den vorangegangenen Lasttests die neue Webseite nur einen Bruchteil der erwarteten Anwender zeitgerecht adressieren kann. Das System ging schon bei einigen Dutzend Benutzen in die Knie. Eine echte Nutzung wird nicht möglich sein. Die Folge davon war, dass das durch uns vorgesehene Security Testing verschoben werden musste. Die Entwickler mussten schliesslich weiter an der Applikation basteln, um diese irgendwie performanter machen zu können. Erste Zweifel wurden laut, dass man sich vielleicht mit den genutzten Technologien doch übernommen hat. Und wo blieb denn nun die vielgelobte Skalierbarkeit? Entwickler, die sich für besonders professionell halten, neigen dazu sich abfällig zu populären Technologien zu äussern. Besonders beliebt ist das PHP-Bashing, bei dem immerwieder behauptet wird, dass PHP keine professionelle Sprache ist und niemals mit der Performance kommerzieller Frameworks mithalten könne. Bei solchen Aussagen kann ich mir leider selten das Lachen verkneifen, weil sie unheimlich kindlich wirken. PHP kränkelt an verschiedenen Dingen (z.B. redundante und inkonsistente Built-In Funktionen). Die vermeintlichen Performance-Probleme sind jedoch zu vernachlässigen. Die Effizienz einer Software ist in erster Linie durch den Programmierstil (http://www.scip.ch/?labs.20090821) gegeben. In jeder Sprache kann man schliesslich ineffiziente Konstrukte bauen und auf schlecht gewählte Funktionen setzen. Die grossmäuligen Entwickler würden lieber mal lernen, dass ein Aufruf wie for($i=0;$i