Pinterest ist seit dem Start zu einem der Lieblinge im Internet geworden und hat ein beachtliches Wachstum zu verzeichnen. Ryan Park, Operations Engineer bei Pinterest, führt diesen Erfolg auf die Skalierbarkeit des Cloud Computing, genauer den Amazon Web Services zurück. Ohne Cloud Computing wäre der Erfolg von Pinterest nicht möglich gewesen, so Park kürzlich auf dem Amazon Web Services Summit in New York.
Pinterest ist eine Online Pinnwand. Es handelt sich dabei um einen Service der es erlaubt, Dinge zu sammeln und zu organisieren, die für jemanden von besonderem Interesse sind. Zudem können diese Dinge von anderen Nutzern auf der Pinnwand angeschaut werden.
Die Cloud hat es Pinterest ermöglicht, effizient zu arbeiten und kostengünstig zu experimentieren. Zudem konnte die Webseite sehr schnell wachsen, während sich nur ein sehr kleines Team um die Wartung kümmern musste. Im Dezember beschäftigte Pinterest insgesamt nur 12 Mitarbeiter. Laut der Rating Agentur ComScore konnte Pinterest im Monat März fast 18 Millionen Besucher gewinnen, eine 50-prozentige Steigerung gegenüber dem Vormonat. Die Webseite gehört demnach zu einer der am schnellsten wachsenden Webseiten in der Geschichte des Webs.
Pinterest setzt bei seinem Service auf Amazon S3 und Amazon EC2. Dabei ist die Nutzung von S3 seit dem letzten August um den Faktor 10 gestiegen. EC2 im selben Zeitraum um den Faktor 3. In Zahlen bedeutet das in etwa 80 Millionen Objekte die in Amazon S3 gespeichert sind, was ca. 410 Terabyte an Nutzerdaten entspricht.
Nach Park, wäre dies mit einem eigenen Rechenzentrum niemals möglich gewesen. Zunächst hätte das einen riesen Aufwand in Bezug auf die Kapazitätsplanungen bedeutet und die Hardware hätte noch bestellt und selbst installiert werden müssen. Zudem wäre Pinterest nicht in der Lage gewesen so schnell zu skalieren.
Aktuell nutzt Pinterest ca. 150 EC2 Instanzen, um damit die Kern Services bereitzustellen. Diese sind in Python geschrieben. Zudem setzt Pinterest auf das Django Framework. Der Traffic wird über die Instanzen mit Hilfe von Amazon ELB (Elastic Load Balancer) verteilt. Weitere 90 EC2 Instanten werden für das Caching eingesetzt und noch einmal 35 Instanzen für interne Zwecke.
Im Hintergrund der Anwendungen laufen etwa 70 Master-Datenbanken auf EC2 sowie eine Reihe von Backup-Datenbanken, die sich in verschiedenen Regionen auf der ganzen Welt befinden, um für die Redundanz zu sorgen.
Um seinen Nutzern Daten in Echtzeit zu liefern, sind die Datenbank-Tabellen über mehrere Server hinweg verteilt. Wenn ein Datenbankserver mehr als 50 Prozent Last fährt, wird die Hälfte des Inhalts auf einen anderen Server verschoben. Dieser Prozess wird auch als Sharding bezeichnet. Im vergangenen November nutzte Pinterest acht Master-Slave-Datenbank-Paare. Heute sind es schon 64 Paare.
Ein weiterer Vorteil, der Pinterest entgegenkommt, ist das pay-as-you-go Modell. Da Pinterest bei AWS nur für die Ressourcen bezahlt die sie benötigen, konnte Kapital gespart werden. Der meiste Datenverkehr entsteht in den USA während den Nachmittags-und Abendstunden. Mit Amazon Autoscaling fügt Pinterest in diesen Zeiträumen entsprechend mehr Instanzen hinzu, um die Anfragen zu bewältigen. In der Nacht werden die Instanzen dann wieder entfernt.
Mit diesem Ansatz ist Pinterest in der Lage, die Anzahl der Server die sie in der Nacht verwenden, um rund 40 Prozent zu reduzieren. Da Amazon pro Stunde abrechnet, führt diese Reduktion zu Kosteneinsparungen. Während der Lastspitzen, zahlt Pinterest etwa 52 US-Dollar pro Stunde für Amazon EC2. In den frühen Morgenstunden liegen die Kosten dann bei 15 US-Dollar pro Stunde.
Das pay-as-you-go Modell lässt Pinterest ebenfalls neue Services testen, ohne dafür langfristig in eigene Serverhardware- oder software zu investieren. Ein gelungenes Experiment war, laut Park, die Nutzung von Amazon Elastic Map Reduce, Amazons Hadoop-basierten Service für die Datenanalyse.
Fazit
Pinterest ist nur ein gutes Beispiel dafür, wie Cloud Computing dabei unterstützt neue Geschäftsmodelle mit einem minimalen Ressourcen- und Kapitalaufwand zu realisieren und im Erfolgsfall für die entsprechende Flexibilität und Skalierbarkeit zu sorgen.