Behind the Scenes
Author
PC-SPEZIALIST, Fr, 29. Aug. 2008
in Allgemein

Behind the Scenes

Ich arbeite jetzt seit ein paar Monaten quasi nur noch an Snippr. Es macht Spaß und es gibt viele gute Ideen und Pläne die ich umsetzen darf.

Ideen sind immer wichtig, eine Seite lebt von innovativen Gedanken und Features. Die technische Implementierung ist fast nebensächlich denn auch schlechte Techniken können Erfolg haben. Twitter ist sicher ein promintenes Beispiel. Twitter ist mehr down als alle anderen Seiten die ich kenne, langsam wie der Tod und überhaupt. Trotz allem erfreut sich Twitter einer Beliebtheit wie Elvis Presley, Nutella und der Sommer zusammen.

Natürlich hoffen wir auch dass snippr beliebt wird und da ich als Programmierer ja für die technische Seite zuständig bin möchte ich eigentlich Probleme wie bei Twitter vermeiden… erfolgreiche Seiten dürfen technisch ruhig gut sein denke ich mal. Ich werde jetzt mal eine kleine Blogreihe starten wo ich aus meinem Leben als Snippr-Entwickler berichte und ein wenig auf technischen Hintergründe eingehe. Es werden also Geschichten über Code, Schweiß und bittere Tränen sein. Ob das ganze für Nicht-Programmierer interessant/verständlich ist weiß ich nicht, ihr dürft aber gerne nachfragen wenn ich mal zu sehr in bizarre Details gehe.

Ich habe die Tage mal die Seitenaufbauzeit von Snippr gemessen. Also wie lange braucht der Server um die einzelnen Blöcke aus denen die Seite besteht zu erzeugen. (Ich mache sowas zwischendurch immer wieder mal um zu gucken ob alle Boxen auch schön sauber erzeugt werden oder ob wir doch mal irgendwo eine doch eher schlechte Lösung gewählt haben.)
Im Moment reißt keine Box performancemässig aus und ich merke mal wieder dass eine saubere, objektorientiere Entwicklung schon seine Vorteile hat.

Die Community-Startseite z.B. wird in durchschnittlich 0.3 Sekunden komplett berechnet und vom Server an den User rausgeschickt. Das ist mal wirklich nicht viel Zeit.
Zum Vergleich, die Startseite meines privaten Blogs braucht auch 0.3 Sekunden, auf dem werden aber nur 10 Blogeinträge angezeit.

Wir hingegen zeigen auf der Snippr Startseite ja nicht nur nen paar angeteaserte Blogeinträge sondern auch jede Menge User, aktive und neue Gruppen, Forenbeiträge, Wikiartikel, eine Tagcloud, was passiert in der Community, Fotos und so weiter und so fort an. Da sind weiß Gott nen paar Daten mehr im Spiel als auf nem üsseligen 08/15 WordPress Blog. (Meine WordPress Installation ist relativ nackt. Wenn man ein paar Plugins installiert kann man bei WordPress ganz schnell auch mal übe reine Sekunde für die Erstellung der Seite erreichen. Viele WordPress Plugin Entwickler sind scheinbar mit dem Klammerbeutel gepudert und machen da Sachen für ie sie definitiv in die Hölle kommen!)

Die meisten PHP-Systeme wie WordPress sind sehr „oldschool“ geschrieben. Direkte Datenbankzugriffe, einzelne Prozeduren, keine Objekte und ähnlicher Zauber den man eigentlich tunlichst vermeiden sollten. Da wird so programmiert wie vor 30 Jahren – damals hatte man ja noch nichts…Viele Softwareentwickler im Webbereich haben auch heute noch nichts…vor allem keinen Verstand…

Für Snippr haben ich zum Anfang hin ein komplett eigenes Framework geschrieben. Dieses Framework ist strikt objektorientiert und nutzt Objektrelationales Mapping, das heißt, es gibt für jede Tabelle in der Datenbank eine entsprechende Klasse. Diese Klasse ist von einer Basis Datenbank-klasse abgeleitet die die komplette Lesen/Schreiben Methodik kapselt. So weiß ich (bzw. das Framework) immer wenn sich irgendwas am Datenbestand ändert. Nur so kann man eine vernünftige Caching-Funktionalität implementieren. Und dieses intelligente Caching ermöglicht es viele Informationen schnell anzuzeigen. Intelligent bedeutet in diesem Fall dass der Cache erst gelöscht wird wenn sich die Daten verändert haben. Die meisten Caching-Mechanismen die bei PHP Projekten eingesetzt werden laufen eher nach einem Lifetime Prinzip, also alle 5 Minuten Cache leeren oder den gesamten Cache bei einer Änderung löschen. Das ist mehr Prinzip Glück und Zufall. Glück war noch nie meine Stärke, sonst wäre ich schon lange Lotto-Millionär und dem Zufall sollte man als Programmierer nie was überlassen.

0 Kommentare

Schreiben Sie einen Kommentar

Ihre E-Mail Adresse wird nicht veröffentlicht.