shoppero Blog Logo

Archive for the 'Technik' Category

Amazon announces S3 SLA

Ever since we started Shoppero.com we had to explain to many people why we are relying on Amazon EC2 and S3 even though there is no SLA available. We figured that Amazon will make a big effort to assure that the services will be running all the time and that they’d be better at keeping the systems running than us as a small startup without a big sysadmin department.

Well, now Amazon has announced the Amazon S3 SLA and while this is just a small document, we feel even better now, knowing that we’d get at least some credits on future payments in the case of a downtime. Sure, this is not as much of an SLA which large corporations would require from their provider, but for us it is a step into the right direction.

Wordpress Plugin

(english Version below)

Wir haben ein kleines Plugin für Wordpress entwickelt, das unter http://de.shoppero.com/plugins/wordpress zu finden ist. Das Plugin ermöglicht es, abgespeicherte Adgets zur Anzeige auszuwählen und ihre Position in der Seitenleiste zu bestimmen. Damit muss man dann für sein Widget keinen Code mehr ins Blog kopieren, was vielen sicher entgegenkommt.

(deutsche Version obendrüber)

We developed a small plugin for wordpress. You can find it at http://en.shoppero.com/plugins/wordpress. With this plugin you can choose your saved adgets to appear in your blog and decide where they appear. So now you don’t have to copy code into your blog anymore. Hooray!

Bild 2-1

Shoppero Adget-Factory

Adget-Factory
Es hat eine Weile gedauert, aber nun freuen wir uns um so mehr, unsere neue Adget-Factory vorstellen zu können. Wir haben uns an den Formaten des Internet Advertising Bureau (IAB) orientiert und stellen unseren Usern eine Reihe von Standard-Formaten zur Verfügung, aus denen Adgets gebastelt werden können.

Der Ablauf geht recht fix, in 4 simplen Schritten. Zuerst wählt man das Format aus, dann die Produkte, die dort erscheinen sollen, dann noch etwas Farbe, wenn man mag und auch auch noch einen Titel für das Adget. Schon bekommt man einen Code-Schnipsel, den man dann im Blog oder anderswo einbinden kann.

Damit ist der erste Schritt für ordentliche Adgets getan, in den nächsten Wochen wird die Adget-Factory noch ausgebaut werden.

Feed me, Seymour

Feed me! Feed me! Feed me!
Feed me, Seymour
Feed me all night long

Anders gesagt: Wir haben Feeds zu einzelnen Artikeln, so dass man alle neuen Empfehlungen zur eierlegenden Wollmilchsau Nokia N95 unter dem RSS-Feed http://shoppero.com/feed/produkt/1111679/atom bekommen kann. Natürlich ist der Feed auch in der Seite verlinkt, so dass aktuelle Browser den Feed von sich aus finden sollten.

Would you like a Cadillac car?
Or a guest shot on Jack Paar?
How about a date with Hedy Lamarr?
You gonna git it.

Kleiner Nachtrag: Auf speziellen Wunsch nun auch RSS 2.0 Feeds.

Mehr Links, besser editieren, E-Mails und mehr

Vorhin haben wir wieder ein Technikupdate gemacht. Wir haben viele Bugs entfernt, aber auch ein paar neue Features eingebaut:

  • Es gibt nun E-Mailbenachrichtigungen, wenn Produkte gelobt werden, wir Geld auszahlen oder zur Auszahlung bereit ist. Auch gibt es eine Begrüssungsmail für neue Shopperos. Hier folgt in Zukunft noch mehr, insbesondere wollen wir eine Wahlmöglichkeit bieten, welche Mails empfangen werden sollen.
  • Alle Empfehlungen stehen nun auch als hReview zur Verfügung. HReview ist ein Microformat, so dass spezialisierte Suchmaschinen die Empfehlungen auch als solche erfassen können. Im Moment ist das im Quellcode noch recht unelegant gelöst, wird aber schöner werden, wenn wir die Templates überarbeiten.
  • Links sind schöner geworden: Einzelne Nutzer sind unter ihrem Nickname zu erreichen, ich z. B. unter http://shoppero.com/shopperos/Malte. Auch Produkte, Empfehlungen, Tags und Listen sind nun unter hübscheren URLs zu finden, falls wir noch eine URL vergessen haben, schreibt es gerne in die Kommentare hinein.
  • Tags können nun auch aus mehreren Worten bestehen, getrennt werden einzelne Tags mit dem Komma.
  • Beim Editieren von Empfehlungen gab es in der Vergangenheit immer wieder Probleme, Artikel tauchten doppelt auf, es gab den berüchtigten “internen Fehler” und manche Artikel verschwanden ganz. Dies sollte nun der Vergangenheit angehören. In der nächsten Zeit wollen wir das Formatieren und das Löschen von Empfehlungen ermöglichen. Das klingt erstmal trivial, ist aber überraschend komplex, da eine Menge von Möglichkeiten bedacht werden müssen: Empfehlungen können in Listen vorhanden sein, in eigenen oder anderen Listen, Artikel ohne Empfehlungen sollen verschwinden, Adgets müssen versorgt werden usw. Da wir in den letzten beiden Wochen die Art der Datenbankzugriffe deutlich verbessert haben, sollte sich auch hier bald Verbesserung zeigen.

Wir haben unter der Haube eine Menge verbessert, das bekommt man nicht unbedingt direkt mit, erleichtert uns aber das Management der Applikation und ermöglicht uns, shoppero.com schneller zu erweitern. Die nächsten Veränderungen werden nun besser sichtbar sein, unter anderem kümmern wir uns um bessere Adgets und um das bequeme Erstellen von Adgets. Seid gespannt, was noch kommt, wir haben noch viele Ideen.

RSS-Feeds

Wir haben 2 Feeds eingebaut, wobei der Artikelfeed noch schöner werden wird.

Für Empfehlungen: http://shoppero.com/feed/empfehlung/atom
Für Artikel: http://shoppero.com/feed/produkte/atom

Sollten wir eigentlich auch Feeds im RSS-Format einbauen? Oder reicht das Atom-Format?

Die Server bei Shoppero

Guten Tag zusammen, ich heisse Malte Diedrich, blogge seit einigen Jahren unter Treehuggin’ Pussy und arbeite mit Nico zusammen seit einigen Wochen bei Shoppero. Zuständig bin ich für die Technik und beschäftige mich zur Zeit vor allem mit der Koordinierung der Programmierer. Durch den sehr schnellen Aufbau und die damit verbundene Arbeit komme ich erst jetzt dazu, etwas zur Technik zu schreiben, bedanken möchte ich mich an dieser Stelle auch für die zahlreichen Hinweise auf Fehler und Verbesserungsmöglichkeiten, die wir zur Zeit abarbeiten. Sowohl die Mails an improvements@shoppero.com als auch die zahlreichen höflichen und wohlwollenden Anregungen aus der Blogosphäre werden gerne gelesen und umgesetzt (auch wenn wir vielleicht nicht immer jedem antworten können). Ich möchte hier besonders Björn Schotte und Fukami hervorheben, die uns in den letzten Tagen sehr geholfen haben.

Wie bereits erwähnt, läuft Shoppero auf einem Webdienst von Amazon, Electronic Cloud Computing (EC2). Amazon stellt hierbei virtuelle Server zur Verfügung, die man nach Belieben zu- und abschalten kann.
Wir ersparen uns damit den tatsächlichen Umgang mit Hardware und vertrauen darauf, dass die Ingenieure bei Amazon ein Rechenzentrum besser betreiben können als wir.

Um einen Server bei Amazon zu starten, sucht man sich ein Image aus und startet dieses Image über eine Verwaltungsoberfläche oder eine Kommandozeile. Nach ein 2-3 Minuten steht die Maschine dann zur Verfügung, man fragt die IP ab, schaltet bei Bedarf bestimmte Ports frei und kann loslegen. Ab diesem Moment zahlt man auch. Wenn man das Image durchgespielt hat, fährt man es wieder runter und braucht auch nichts mehr zahlen. Nach Amazons Angaben hat man ein Xeon 1,7 GHz Equivalent mit 1 GByte RAM und 160 GByte Speicherplatz zur Verfügung.

Technisch gesehen sind die virtuellen Server Xen-Images. Diese werden entweder von Amazon zur Verfügung gestellt oder von uns selbst hergestellt, wobei man dies praktischerweise gleich auf den Servern von Amazon machen kann und nach dem Bootstrapping mithilfe der Amazon EC2-Tools nach S3 hochgeladen werden. Dort stehen sie dann zur eigenen oder allgemeinen Benutzung zur Verfügung. Es ist auch möglich, eigene Images wieder einzupacken und zurück bei S3 zur Speicherung abzulegen, wodurch wir inzwischen für die Datenbankserver und die Webserver fertige Vorlagen haben, die wir beim Start nur noch kurz aktualisieren müssen und so in kurzer Zeit die Leistung vervielfachen können. Auch wenn wir dies zur Zeit noch per Hand machen, grundsätzlich kann man den gesamten Vorgang auch soweit automatisieren, dass das Gesamtsystem je nach Last quasi mitwächst und wieder kleiner wird. Auch können wir schnell einen Testserver hochziehen, bestimmte Dinge ausprobieren und die Kiste danach wieder wegwerfen.

Wirtschaftlich gesehen ersparen wir uns durch den EC2 Service eine Menge Ausgaben am Anfang des Unternehmens und können die Technik parallel mit dem Wachstum der Seite wachsen lassen. Es wird spannend zu beobachten, ob sich der anfängliche Kostenvorteil später verstärkt oder es zu einem Zeitpunkt günstiger werden wird, eigene Server zu betreiben.
Und um die häufigste Nachfrage gleich zu beantworten: Ich weiss auch nicht, nach welchem System Amazon Leute zu EC2 einlädt und wie man diesen Vorgang beschleunigen kann.

Shoppero.com und Amazon Web Services

Amazon Web ServicesBei der Planung von Shoppero kam natürlich irgendwann das übliche Thema Serverfarm auf. Ein riesiger Kostenblock, denn man will ja Redundanz und möglichst auch eine stete Erreichbarkeit gewährleisten, aber auch eine ordentliche Performance, damit die User zufrieden sind, und Skalieren soll das Ganze auch noch. Dazu kommt dann immer das Thema Hands-On Service, der auch teuer ist, es sei denn, man macht ihn selber, aber dann können murksige Netzwerkkarten oder kaputte Festplatten durchaus die Freizeit in Mitleidenschaft ziehen. Ich habe schon einige Serverfarmen geplant und aufgesetzt und irgendwie wollte ich bei diesem Startup auf dieses Nervpotential verzichten.

Zusammen mit Malte habe ich mir dann mal die Amazon Web Services angeguckt, genauer gesagt die Dienste Elastic Computing Cloud (EC2) und Simple Storage Service (S3). Auf den ersten Blick fanden wir das ziemlich ansprechend, auf den zweiten auch. Also haben wir uns für die Nutzung von EC2 und S3 für Shoppero entschieden.

EC2 bietet beliebig viele virtuelle Server-Instanzen an. S3 bietet endlosen Festplattenplatz inklusive Auslieferungsmöglichkeit. In der Kombination haben wir jetzt eine virtuelle Serverfarm mit etlichen virtuellen Servern, die nach Bedarf gestartet oder heruntergefahren werden und schier unendlichen Plattenplatz für die Daten. Praktischerweise werden die Bilder dann auch direkt von S3 ausgeliefert, so dass wir uns hier gar keine Sorgen um eine Skalierung machen müssen, das macht S3 von ganz alleine. Dadurch haben unsere Images derzeit alle einen URL a la s3.amazonaws.com, was wir allerdings nicht weiter tragisch finden. Abgerechnet wird pro Stunde bei EC2 und dann noch pro gehostetes GB und pro transferiertes GB. Für die letzten 4 Wochen haben wir für Setup und Testing unserer virtuellen Serverfarm ca. 80 EUR ausgegeben, was uns durchaus erfreut.

Sicherlich gibt es auch beim Betrieb einer virtuellen Serverlandschaft bei EC2 einige Aspekte, die man beachten muß. Beispielsweise kann man CPU, RAM und Plattenplatz der virtuellen Instanz nicht selber frei bestimmen, sondern nimmt das, was EC2 anbietet. Noch dazu kommt der interessante Begeleitumstand, dass man zwar beim Crash einer Instanz nur knapp 4 Minuten benötigt, um eine neue Instanz zu starten, aber dass dabei sämtliche Daten auf dem virtuellen Plattenplatz der Instanz, immerhin 160 Gb, unweigerlich flöten gehen. Also müssen die Daten für den Fall der Fälle ausgelagert werden, beispielsweise auf S3, weil interner Traffic zwischen EC2 und S3 nichts kostet, oder z.B. durch MySQL Master-Slave-Konfigurationen.

Konzeptionell ist die Kombination von EC2 und S3 höchst interessant und hat uns in der Entwicklungsphase einiges an Arbeit und Aufwand erspart. Und wir hatten bislang keine kaputte Festplatte, jedenfalls haben wir nichts bemerkt.

Ümläüte ‘r’ üs

Seit den frühen Mörgenstünden beherrscht Shöpperö nün äüch Ümläüte. Wir können üns gär nicht genüg därän sättsehen.

Scott erklärt das Problem näher.