Aaron Fischer Ingenieur, Vater, Heimwerker, Problemlöser

10 September, 2010

Mehr Power!

Gedanken

In letzter Zeit höre ich immer häufiger, das man hier oder dort mehr Leistung, mehr Server, mehr Mitarbeiter oder mehr Software-Tools braucht. Natürlich ist es nicht schlecht wenn man von allem viel und reichlich hat, doch ich bin der Meinung, dass oftmals mit ein wenig Anstrengung mehr mit begrenzten Mitteln erreichen lässt.

Besonders bei der Programmierung lässt sich häufig ein Vielfaches an Rechenpower oder Speicherverbrauch einsparen. Ein simples Profiling der Anwendung zeigt schnell Engstellen auf, die sich mit ein paar einfachen Zeilen Code (Eine Variable an einer anderen Stelle definieren, Abbruchkriterien an den Anfang der Methode schreiben, Wiederverwendung von Speicher, unnötiges Kopieren, unnötige SQL-Joins rauswerfen etc.) eliminieren lassen.

Binford tools (Bild: Walt Disney Studios - Home Improvements)

Im Serverbereich ist es natürlich das einfachste, neue Hardware zu bestellen, sobald der Server in der momentanen Konfiguration anfängt, an einer seiner Grenzen (Platz, Antwortzeit, Zugriffszahl) zu stoßen. Beim Aufsetzen eines Systems wurde anfangs vielleicht nicht daran gedacht, dass zwei Monate später 2000 User täglich einen unperformanten Service nutzen. Oft lohnt es sich, Feintuning an den Parametern vorzunehmen oder schlankere Software einzusetzen. Es braucht nicht immer ein J2EE Application Server in einer eigenen VM zu sein, um ein paar statische Webseiten auszuliefern.

Oft reicht es auch, die Zeiten zu nutzen, in denen die Hardware sowieso nichts zu tun hat. Vermutlich stört es nicht weiter, wenn nachts um 2 Uhr ein Skript 10.000 Bilder umkonvertiert und zuschneidet. Den Cloud-Ansatz von Google, Amazon und Co. finde ich auch nicht so verkehrt.

Auch bei Software-Tools bin ich immer wieder überrascht, wie viel Geld dafür ausgegeben wird und wie ineffizient diese dann genutzt werden. Ich bin ein großer Freund von Open Source und ich bin bis auf ein paar wenige Ausnahmen sehr zufrieden und auch produktiv damit.

In dem Buch 7 Habits of Highly Effective People von Stephen Covey (Seite 172) ist eine Grafik beschrieben, die mir seit Jahren in solchen Situationen immer ins Gedächtnis springt:

manager/producer

Ich finde gerade das (aus bestehendem das Maximum herausholen) so spannend. Fast alles lässt sich mit etwas Verstand effizienter/performanter/einfacher gestalten. Diese Lektion habe ich noch einmal sehr deutlich gegen Ende meines Studiums erfahren: Ein komplexes Problem muss nicht komplex programmiert werden. Die einfachen Lösungen sind nicht nur leichter zu verstehen, sondern meistens auch performanter und schneller.

Allerdings erfordert diese Art der effizienten Ressourcenplanung auch Zeit, Geduld und Hirnschmalz. Wie seht ihr das? Ist es das wert oder ist die Arbeits(kraft|zeit) zu teuer, um sie mit solchen Dingen zu behelligen?