Tagesthema.de – Ein Webprojekt mit Google App Engine

Vor einiger Zeit hat mir Cappellmeister eine Idee vorgetragen, die eigentlich von Ibrahim Evsan kommt (in seinem Blog könnt ihr nachlesen was es genau damit auf sich hat und wie es dazu kam – Stichwort “3 Days to Market”). Und weil es nach Spaß und den guten alten Zeiten roch, habe ich spontan zugesagt.

Tagesthema

Tagesthema.de soll ein personalisierbarer Newsaggregator sein, der die Nachrichten (oder was auch immer) mit Twitter verknüpft. Klingt nach einer einfachen Sache und ja, es ist auch recht einfach mit vorhandenen Plugins und ein bisschen PHP/Javascript als WordPressaufsatz zu lösen, aber wir wollten es erweiterbar und flexibler als eine solche Lösung haben. So entschieden wir uns dafür es doch mal mit Google App Engine zu probieren.

App Engine ist Googles Cloud Computing Service. Das heißt man baut dort eine Webanwendung und diese läuft nicht mehr wie üblich auf einzelnen Rechnern und wird bei Bedarf erweitert, sondern schon von Anfang an auf einer ganzen Rechnerfarm und wird automatisch skaliert. Das bedeutet einerseits, dass man bei einem großen Ansturm kaum Latenzen spürt, weil die Anwendung dann auf sehr vielen Rechnern verteilt läuft und andererseits, dass man bei geringerem Ansturm nicht all die Rechner bezahlen muss, die beim konventionellen Hosting dann unbenutzt mitlaufen würden.

App Engine bietet aber nicht nur Vorteile, sondern auch ein paar Nachteile und Hürden. Ein großer Nachteil ist z.B. die fehlende Portabilität. Zwar gibt es mit AppScale ein Open Source Projekt, das versucht die App Engine Umgebung nachzubauen, aber im Wesentlichen ist man mit einer einmal geschriebenen Anwendung wohl auf unbestimmte Zeit bei Google Kunde und kann nicht einfach zu anderen Cloud Computing Anbietern wechseln. Das muss nicht unbedingt schlecht sein, denn Google ist sehr preiswert und jeder kann dort auch vollkommen umsonst ein Projekt starten (die Quotas für kostenlose Apps liegen recht hoch).

Hürden sind das Erlernen von Python (habe ich bis vor einer Woche noch nichts mit gemacht) und das Umdenken bei der Verwendung von Datenbanken. Bei Google gibt es nämlich keine relationale Datenbank (andere Cloud Computing Anbieter haben das mittlerweile im Programm), sondern nur ihr bekanntes BigTable. Damit gibt es keine JOINs zwischen mehreren Tabellen und es gibt Limits bei der Sortierung und Suche nach Datensätzen (keine Volltextsuche). Außerdem scheint es recht langsam bei Schreibzugriffen zu sein, weil hier die Daten auf mehrere Rechnerknoten verteilt werden. Auch das Lesen aus diesem Datastore ist nicht sehr flott. Aber auch dafür hat Google natürlich eine Lösung: Memcache. Wenn man cached was das Zeug hält, bekommt man auch eine sehr sehr gute Leistung hin. Ach ja, der Cache ist so unglaublich großzügig bemessen, man wäre verrückt ihn nicht zu verwenden … auch weil jeder aufwändige Datenbankaufruf ja wieder Geld kostet.

Letztendlich ging es dann aber erstaunlich einfach die Idee mit und auf App Engine umzusetzen und ich bin wirklich zufrieden was wir (Bonsay ist für das Frontend verantwortlich, Cappellmeister für’s Vorantreiben, Design, Wünsche und Fehlerreports und ich – natürlich – für das Backend) nach einer kurzen Einlernphase in nur 3 Tagen hinbekommen haben. App Engine rockt! JQuery rockt! Und die ganzen Webdienste mit ihren APIs … nunja, letztendlich mussten – und müssen noch – wir viel selber machen, weil die Limits zu niedrig liegen. Sie rocken also nicht :-)

Ich bin gespannt wie es weiter geht! Seit dem Launch am Mittwoch haben wir eigentlich nur auftretende Bugs gefixt und jetzt kommen Schritt für Schritt kleine Funktionen dazu. Als Spaß- & Lernprojekt nebenher ist das ein wunderbare Sache, denn seit dem Barcamp in München bin ich ziemlich heiß auf diese Cloud Computing Geschichte gewesen und kann es jetzt endlich mal ausprobieren. Bin sogar schon so weit zu überlegen mein Blog dorthin umzuziehen, aber leider gibt es noch kein Cloud WordPress in Python ;-)

P.S.: Das Presse-, Blog- & Twitterecho zu www.tagesthema.de war übrigens überwältigend. Wow!

  • Pingback: Von Null auf Marktreife in 3 Tagen: Wieso PaaS die Zukunft der Webentwicklung ist | Server in den Wolken

  • http://www.joernsblog.de Joern

    Sehr interessante Sache!
    Mit der Google Apps Engine habe ich auch schonmal “rumgespielt”, es aber wieder aufgegeben (keine relationale DBs…)
    Gebe der Sache aber gerade nochmal eine Chance und probiere gerade dort als alter “Coldfusion-Fan” die OpenBludedragon-Apps-Engine-Implementierung aus.

  • http://united-coders.com Wingi

    Interessant und mit viel Frontend-Logic wirklich schnell zum Umsetzen – auch meine Empfehlung (Ebenfalls die Erkenntniss: Alles irgendwie lahm)! Einziger Wehrmuttropen zur App: Die offiziellen Twitter-Accounts der Zeitungen sollte man ausblenden …

  • http://www.sebbi.de Sebbi

    @Wingi
    Dafür ist es aber immer gleich “lahm” und das hat ja auch Vorteile. Dieses Blog läuft auf einem Vserver und ist dank einiger Sicherheitseinstellungen “sehr lahm”, aber auch nicht immer. Einen Besucheransturm würde es auf jeden Fall nicht überleben, aber App Engine eben schon.

    Was die Twitter Accounts angeht, so müsste man eigentlich alle Retweeter der ersten Minuten ausblenden. Da gibt es Accounts, die alle immer das gleiche schreiben und scheinbar automatisiert einen Hauptaccount spiegeln. Twitter Spam, den man so dann doch mitbekommt :/