Täglich verwenden mehrere zehn Millionen Käufer, Verkäufer, Mieter und Vermieter sowie Makler und Immobilienverwalter die Zillow-Website, um Haus- und Wohnungsannoncen zu durchsuchen, Hypotheken zu erwerben und Informationen zu 110 Millionen Häusern in der gesamten USA zu erhalten. Die beliebte Website befindet sich im Besitz der Zillow Group, die online über ein Portfolio mit den größten Immobilienmarken verfügt. Zusätzlich zu Zillow betreibt die Zillow Group auch Trulia, HotPads und StreetEasy.

Zillow verarbeitet täglich mehr als 3 Millionen neue Bilder, darunter Annoncenfotos, Profilfotos für Kreditgeber und Makler und Hausprojektbilder auf der Zillow Digs-Website. "In Zeiten hoher Auslastung erhalten wir pro Sekunde 17 000 Bildanfragen von Desktop- und mobilen Clients", sagt Nick Michal, Unix Systems Engineering Manager der Zillow Group.

Als Zillow immer beliebter wurde und Makler mit dem Veröffentlichen hochauflösender Bilder in ihren Annoncen begannen, konnte das veraltete Bildsystem des Unternehmens den Bedarf nicht mehr decken. Das System befand sich in gehosteten Rechenzentren. Bilder wurden aus einer einzigen Warteschlange heruntergeladen, auf einem Netzwerkspeichergerät (NAS) im pyramidenartigen TIFF-Format gespeichert und einem Netzwerk zur Bereitstellung von Inhalten (Content Delivery Network, CDN) über einen lokalen Squid-Service bereitgestellt. "Das war teuer, und wir waren auf eine hohe Cache-Trefferrate seitens des CDN angewiesen. Andernfalls konnten wir Bilder nicht effektiv verarbeiten. Wir befanden uns tagtäglich an der Kapazitätsgrenze", erläutert Michal.

Zillow hatte außerdem unter Problemen mit der Bildverarbeitungsleistung zu leiden, da einige Bilder manuell hochgeladen wurden, während andere aus Massen-Feeds stammten, die heruntergeladen werden mussten. Die Geschwindigkeit, mit der neue Bilder aus den Massen-Feeds kamen, war häufig unvorhersehbar, und einige Bildquellen ließen eine viel höhere Downloadgeschwindigkeit mit mehr gleichzeitigen Downloads als andere Quellen zu. Ein langsames oder problematisches Bild am Anfang der Warteschange konnte also den Download anderer Bilder verhindern. "Auf Zillow können wir uns keine Bandbreitenprobleme erlauben, denn wenn Benutzer die Website besuchen und ein Bild fehlt, sehen sie sich die entsprechende Annonce gar nicht erst an", so Feroze Daud, Senior Software Development Engineer der Zillow Group. "Für Benutzer ist das sehr frustrierend."

Außerdem war das Tool, das Zillow zum Verarbeiten der Bilder für das Speichern im pyramidenartigen TIFF-Format verwendete, veraltet und nicht problemlos erweiterbar. "Verbesserungen der Bildqualität, zum Beispiel durch Entfernen fester Farbgrenzen, waren nicht einfach zu realisieren", erklärt Daud. Notfallwiederherstellung war ein weiteres großes Problem. "Es gab ein Risiko, da alles in einem einzigen Rechenzentrum gehostet wurde", betont Michal.

Um die Herausforderungen hinsichtlich Skalierbarkeit, Leistung und Notfallwiederherstellung des Bildsystems zu bewältigen, entschied sich Zillow für die Umstellung auf eine Cloud-basierte Infrastruktur. "Unter Berücksichtigung der Gesamtkosten und der einfachen Verwaltung macht die Cloud tatsächlich Sinn", erläutert Michal. Nach der Auswertung verschiedener Cloud-Technologien entschied sich Zillow für Amazon Web Services (AWS). "AWS bietet schon seit langem Cloud-Lösungen und ist in diesem Bereich führend", so Michal. "Außerdem verwendeten einige der Unternehmen, die wir gekauft hatten, bereits AWS."

Das Unternehmen migrierte das Bild-Hosting und die Bildverteilung von einer physischen Einrichtung mithilfe von Amazon Elastic Compute Cloud-Instances (Amazon EC2) und Amazon Simple Storage Service (Amazon S3) für das Speichern von Bildobjekten zu AWS. Derzeit speichert Zillow fast 100 TB Daten in Amazon S3, darunter 300 Millionen Bilder und mehr als 1 Milliarde Objekte. "In einem herkömmlichen Dateisystem ist es kaum möglich, Milliarden von Objekten zu zählen", erläutert Michal. "Wir müssten diese Objekte auf mehrere Dateisysteme aufteilen, was ein Verwaltungsalbtraum wäre. Die Skalierbarkeit von Amazon S3 erschien uns die richtige Technologie zu sein."

Außerdem begann Zillow mit der Verwendung von AWS Elastic Beanstalk, ein Service für das Bereitstellen und Skalieren von Web-Anwendungen und -Services. Die Entwickler laden ihren Code zu Elastic Beanstalk hoch, das dann automatisch die Bereitstellung übernimmt – von der Kapazitätsbereitstellung, Lastverteilung und automatischen Skalierung bis zur Statusüberwachung der Anwendung. Das Unternehmen verwendet eine Elastic Beanstalk-Worker-Umgebung für die Ausführung einer Python Imaging-Bibliothek mit benutzerdefiniertem Code. "Da wir Daten auf zufällige Weise aufnehmen und dabei Feeds ausführen, die mit einem Mal jede Menge Arbeit in das System abladen, müssen wir unsere Bildkonvertierungs-Suite hochskalieren", sagt Daud. "AWS Elastic Beanstalk ist die einfachste Methode dafür – im Gegensatz zu einer Reihe statischer Instanzen oder dem Versuch, unsere eigene Konfiguration für die automatische Skalierung zu schreiben."

Danach verschob die Organisationen den Großteil der CDN-Verarbeitungslast von Akamai zu Amazon CloudFront, ein Web-Service für die Bereitstellung von Inhalten, der die Zillow-Website-Inhalte weiter an Benutzer verteilt. "AWS CloudFront ist deutlich günstiger als Akamai und lässt sich problemlos in Amazon S3 integrieren", erläutert Michal. Zillow verwendet darüber hinaus Amazon CloudWatch zum Überwachen einiger seiner Cloud-Ressourcen.

Zillow verwendet einen Downloadserver (DLS) im Rechenzentrum zum Verwalten von Bild-Downloadanfragen aus Annoncen-Feeds und eine Amazon Elastic Beanstalk-REST-API als Front-End-Service in der Cloud für den DLS. Dieser Service verschiebt alle Downloadanfragen in einen Feed-basierten Amazon Simple Queue Service (Amazon SQS)-Nachrichtenwarteschlangen-Service. "Mit SQS haben wir ein Warteschlangensystem, ohne die Infrastruktur selbst unterstützen zu müssen", so Michal.

Ein gedrosselter Downloader steuert die Geschwindigkeit und Gleichzeitigkeit, mit der Zillow Bilder für die einzelnen Feed-Quellen herunterlädt, sodass das Unternehmen Bildanbieter nutzen kann, die schnelle Downloads unterstützen, und gleichzeitig keine Anbieter überfordert, die diese nicht unterstützen. Wenn der Bilddownload erfolgreich ist, schreibt Zillow das Originalbild zur Bildverarbeitung in Amazon S3.

Für die Bildverarbeitung verwendet Zillow die in S3 gespeicherten Originalbilder und bearbeitet sie mit verschiedenen Bildqualitätsmethoden, während für jedes Bild ein Satz mit Standardgrößen generiert wird. Alle Bilder werden außerhalb von Amazon S3 bereitgestellt und in Amazon CloudFront zwischengespeichert. Das Unternehmen stellt durchschnittlich 15 000 Bilder pro Sekunde bereit.

Mithilfe von AWS kann Zillow möglichen Käufern und Mietern, Immobilienmaklern und anderen Websitebesuchern eine bessere Benutzererfahrung bieten. "Durch die Umstellung auf AWS müssen wir uns keine Gedanken mehr über Cache-Überlastungen oder Kapazitätsprobleme machen. "Wir haben die Skalierbarkeit und die Leistung, die wir benötigen, um qualitativ hochwertige Immobilienbilder bereitzustellen, was für die Zillow-Benutzererfahrung von entscheidender Bedeutung ist", erläutert Daud. Zillow kann das Herunterladen und Verarbeiten von Bildern skalieren, um unterschiedliche Mengen an täglich eingehenden Bildern zu bewältigen. Und da Bilddownloads aus den einzelnen Feed-Quellen jetzt unabhängig erfolgen, kann Zillow Quellen nutzen, die hohe Bandbreiten und parallele Downloads unterstützen, während gleichzeitig eine Drosselung für solche Quellen erfolgt, die dies nicht unterstützen. Außerdem gewährt Amazon S3 dem Unternehmen einen fast unbegrenzten Objektspeicher, sodass zum Erhöhen der Kapazität keine Server oder Festplatten mehr bestellt und installiert werden müssen.

Mithilfe von Amazon CloudFront und Amazon S3 kann sich Zillow auf die Leistung seines Bildsystems verlassen. "Wir haben viel mehr Bandbreite als zuvor, darum denken wir gar nicht darüber nach", sagt Michal. "Und wir machen uns definitiv keine Sorgen, dass S3 die Kapazität ausgehen könnte."

Zillow hat durch die Migration des Bildverarbeitungs- und -bereitstellungssystems zu AWS außerdem die Betriebskosten gesenkt. "Mit Amazon CloudFront bezahlen wir monatlich weniger als die Hälfte, als wir zuvor für unser CDN bezahlt haben", betont Michal. "Wir müssen kein Geld mehr für umfangreiche Upgrades von NAS-Geräten ausgeben."

Das Unternehmen hat mithilfe von Amazon S3 und Amazon CloudFront die Verfügbarkeit seines Bildsystems verbessert. "Mit S3 werden Objekte dreimal in einer Region repliziert. Falls also wirklich eine Availability Zone ausfallen sollte, könnte der Datenverkehr weiterhin ohne Entwicklungsaufwand unsererseits den Benutzern bereitgestellt werden", erläutert Michal.

Auch die Notfallwiederherstellung wurde verbessert, "Wir profitieren definitiv von der geografischen Verteilung von AWS", sagt Michal. "Es gibt in diesen Regionen mehrere AWS-Regionen und Availability Zones, sodass wir nicht nur dynamische Inhalte in der Nähe der Benutzer generieren, sondern auch unsere Notfallwiederherstellungsfunktionen verbessern können."

Zillow ist jetzt bei der Reaktion auf Skalierbarkeitsanforderungen flexibler. "Ich kann jederzeit Amazon EC2-Instances einrichten, um eine umfangreiche Änderung der Anwendungsversion durchzuführen, oder ich kann mit nur wenigen Klicks eine neue Amazon CloudFront-Verteilung erstellen", erklärt Daud. "Im Endeffekt wurde unser Betrieb durch AWS beschleunigt."

Außerdem hat die Organisation bessere Einblicke in die Systemleistung. "Es gab einige Verzögerungen bei der Bildverarbeitung, und die ersten Versionen unserer Cloud-Apps stellten nicht genug Metriken bereit, sodass wir nicht erkennen konnten, welche Komponente der Pipeline die Verzögerung verursachte", erläutert Michal. "Nachdem wir mithilfe von Amazon CloudWatch die Überwachung von Latenzen begonnen hatten, waren die Ursachen für uns viel deutlicher, sodass wir entsprechende Maßnahmen zur Behebung ergreifen konnten."

Zillow wird weiterhin nach zusätzlichen Möglichkeiten zum Verlagern von Services in die Cloud suchen. "Bei unserer Migration zu AWS war CloudFront noch relativ neu, und wir dachten, wir gehen ein Risiko ein", so Michal. "Es hat sich aber bewährt. Zukünftig werden wir für neue Projekte und Services AWS in Betracht ziehen. Unserer Erfahrungen sind großartig."

Weitere Informationen dazu, wie Ihnen AWS beim Hinzufügen von Skalierung und Leistung zur Bildverarbeitung und -bereitstellung helfen kann, finden Sie auf unserer Amazon CloudFront-Detailseite: http://aws.amazon.com/cloudfront/.