Étude de cas Zillow
2015
Chaque jour, des dizaines de millions d'acheteurs, de vendeurs et de locataires potentiels, outre les agents et gestionnaires immobiliers, utilisent le site web Zillow pour parcourir des listes de maisons et d'appartements, comparer des prêts immobiliers et rechercher des informations sur 110 millions de logements aux États-Unis. Ce site populaire appartient à Zillow Group, dont le portefeuille comprend les plus grandes marques immobilières en ligne. Outre Zillow, Zillow Group exploite les sites Trulia, HotPads et StreetEasy.
Depuis que nous avons migré vers AWS, nous n'avons plus à nous préoccuper des vidages de cache ou des problèmes de capacité. Nous disposons de l'évolutivité et des performances nécessaires pour diffuser des images de biens immobiliers de haute qualité, ce qui est très important pour l'expérience des utilisateurs sur le site Zillow. »
Feroze Daud
Ingénieur en chef du développement logiciel, Zillow Group
Le défi
Zillow traite plus de 3 millions de nouvelles images chaque jour, notamment des photos de listes, des images de profil pour les prêteurs et les agents et des images de projets de rénovation sur le site Zillow Digs. « Nous recevons 17 000 demandes d'images par seconde pendant les heures de pointe, transmises par des clients de bureau et mobiles », explique Nick Michal, directeur de l'ingénierie des systèmes Unix de Zillow Group.
Alors que Zillow gagnait en popularité et que les agents commençaient à publier des photos de résolution supérieure pour accompagner leurs listes, le système de traitement d'images de l'entreprise ne parvenait pas à répondre à la demande. Le système était installé dans des centres de données hébergés et les images étaient téléchargées depuis une file d'attente, stockées dans un périphérique NAS (Network Attached Storage) au format TIFF pyramidal, et transférées vers un réseau de diffusion de contenu (CDN) depuis un service Squid local. « Cette configuration nous coûtait cher et nous comptions sur notre CDN pour profiter d'un taux de succès de cache élevé. Si ce taux n'était pas atteint, nous ne pouvions pas diffuser efficacement les images. Nous fonctionnons presque à pleine capacité tous les jours », précise Nick Michal.
Zillow devait également faire face à des problèmes de performances en matière de traitement d'images, car certaines images étaient chargées manuellement, tandis que d'autres provenaient de flux en masse à télécharger. Le taux de nouvelles images provenant des flux en masse était souvent imprévisible et certaines sources d'images offraient un téléchargement plus rapide avec plus d'accès simultanés que d'autres. Ainsi, une image lente ou problématique située au début de la file d'attente retardait le téléchargement d'autres images. « Nous ne pouvons pas nous permettre de rencontrer des problèmes de bande passante sur Zillow, car si les utilisateurs accèdent au site et qu'une image est absente, ils ne consulteront pas la liste », indique Feroze Daud, ingénieur en chef du développement logiciel chez Zillow Group. « Cela serait frustrant pour les utilisateurs. »
De plus, l'outil utilisé par Zillow pour le traitement d'images à des fins de stockage au format TIFF pyramidal était obsolète et difficilement extensible. « Il était difficile pour nous de mettre en place des améliorations de la qualité d'image comme la suppression des bordures en couleur unie », explique Feroze Daud. La reprise après sinistre était une autre préoccupation majeure. « Toutes nos ressources étant hébergées dans un seul centre de données, cela n'était pas sans risque », indique Nick Michal.
Avantages d'Amazon Web Services
Pour résoudre les problèmes d'évolutivité, de performances et de reprise après sinistre de son système de traitement d'images, Zillow a décidé de passer à une infrastructure basée sur le cloud. « Au vu de son coût global et de sa gestion simplifiée, le cloud semblait une évidence », précise Nick Michal. Après avoir étudié différentes technologies de cloud, Zillow a opté pour Amazon Web Services (AWS). « AWS avait le plus d'expérience et dominait dans le monde du cloud », indique Michal. « De plus, un certain nombre d'entreprises dont nous avions fait l'acquisition utilisaient déjà AWS. »
L'entreprise a migré son système d'hébergement et de diffusion d'images d'un site de colocalisation physique à AWS, à l'aide d'instances Amazon Elastic Compute Cloud (Amazon EC2) et d'Amazon Simple Storage Service (Amazon S3) pour le stockage des objets images. Zillow stocke actuellement près de 100 To de données dans Amazon S3, notamment 300 millions d'images et plus d'un milliard d'objets. « Les systèmes de fichiers traditionnels ne sont pas très efficaces pour ce qui est de gérer un milliard d'objets », explique Nick Michal. « Il nous aurait fallu répartir ces objets entre plusieurs systèmes de fichiers, ce qui aurait été un cauchemar en matière de gestion. La capacité de mise à l'échelle d'Amazon S3 nous semblait être la technologie la plus appropriée. »
Zillow a également commencé à utiliser AWS Elastic Beanstalk, un service de déploiement et de mise à l'échelle des applications et services Web. Il suffit aux développeurs de charger leur code pour qu'Elastic Beanstalk effectue automatiquement les étapes du déploiement que sont la mise à l'échelle des capacités, l'équilibrage de la charge, la scalabilité automatique et la surveillance de l'état de l'application. L'entreprise utilise un environnement de travail Elastic Beanstalk pour exécuter une bibliothèque de traitement d'images Python avec un code personnalisé. « Parce que nous intégrons des données de façon aléatoire, en exécutant simultanément des flux qui transfèrent énormément de tâches dans le système, nous devons procéder à la mise à l'échelle supérieure de notre suite de convertisseurs d'images », explique Feroze Daud. « AWS Elastic Beanstalk est le moyen le plus simple d'y parvenir, plutôt que de disposer d'un groupe d'instances statiques ou de tenter d'écrire notre propre configuration de scalabilité automatique. »
L'organisation a ensuite transféré la majeure partie de la charge de travail de son CDN d'Akamai à Amazon CloudFront, un service Web de diffusion de contenu qui diffuse le contenu du site Web Zillow au plus près de l'utilisateur. « AWS CloudFront est beaucoup moins cher qu'Akamai et s'intègre parfaitement à Amazon S3 », indique Nick Michal. Zillow utilise également Amazon CloudWatch pour surveiller certaines de ses ressources de cloud.
Zillow utilise un serveur de téléchargement (DLS) dans son centre de données pour gérer les demandes de téléchargement d'images provenant de flux de liste, et utilise également une API REST Amazon Elastic Beanstalk comme service frontal dans le cloud pour le DLS. Ce service transfère chaque demande de téléchargement d'images dans un service de file d'attente de messagerie par flux Amazon Simple Queue Service (Amazon SQS). « Grâce à SQS, nous profitons d'un système de file d'attente sans avoir à prendre en charge l'infrastructure nous-mêmes », précise Nick Michal.
Un gestionnaire de téléchargement limité contrôle la vitesse et la simultanéité des téléchargements d'images sur le site Zillow pour chaque source de flux, ce qui permet à l'entreprise de profiter de fournisseurs d'images qui prennent en charge des vitesses de téléchargement rapides sans surcharger les fournisseurs dont ce n'est pas le cas. Si le téléchargement d'image réussit, Zillow écrit l'image d'origine dans Amazon S3 ; celle-ci sera ensuite utilisée lors du traitement.
Lors du traitement des images, Zillow utilise les images d'origine stockées dans S3 et les traite en utilisant plusieurs méthodes de qualité d'image tout en générant un ensemble standard de tailles pour chaque image. Toutes les images sont diffusées depuis Amazon S3 et mises en cache dans Amazon CloudFront. L'entreprise diffuse en moyenne 15 000 images par seconde.
Les avantages
Grâce à AWS, Zillow peut offrir une meilleure expérience aux acheteurs et locataires potentiels, ainsi qu'aux agents immobiliers et autres visiteurs du site. « Depuis que nous avons migré vers AWS, nous n'avons plus à nous préoccuper des vidages de cache ou des problèmes de capacité. Nous disposons de la capacité de mise à l'échelle et des performances nécessaires pour diffuser des images immobilières de haute qualité, ce qui est très important pour l'expérience des utilisateurs sur le site Zillow », indique Feroze Daud. Zillow peut mettre à l'échelle le téléchargement et le traitement d'images pour gérer différents niveaux d'images entrantes tout au long de la journée. De plus, les téléchargements d'images de chaque source de flux étant désormais indépendants, Zillow peut profiter de sources qui prennent en charge une bande passante et une simultanéité élevées tout en limitant les sources dont ce n'est pas le cas. En outre, Amazon S3 offre un stockage d'objets quasi illimité à l'entreprise, qui n'a donc plus besoin d'installer d'autres serveurs ou disques pour augmenter la capacité.
L'utilisation combinée d'Amazon CloudFront et d'Amazon S3 permet à Zillow d'avoir davantage confiance dans les performances de son système de traitement d'images. « Nous disposons de bien plus de bande passante qu'auparavant ; nous n'avons même plus à y penser », explique Nick Michal. « Et nous sommes sûrs de ne jamais manquer de capacité avec S3. »
Zillow a également réduit ses coûts d'exploitation en migrant son système de traitement et de diffusion d'images vers AWS. « Grâce à Amazon CloudFront, nous payons moins de la moitié de la somme mensuelle que nous payions auparavant pour notre CDN », indique Nick Michal. « Nous n'avons pas à dépenser de l'argent pour procéder à des mises à niveau lourdes vers des périphériques NAS. »
L'entreprise a amélioré la disponibilité de son système de traitement d'images grâce à Amazon S3 et Amazon CloudFront. « Avec S3, les objets sont répliqués de trois manières différentes au sein d'une même région. Ainsi, même si une zone de disponibilité est défaillante, le trafic peut toujours parvenir aux utilisateurs sans effort de développement de notre côté », explique Nick Michal.
La reprise après sinistre s'est également améliorée. « Nous pouvons profiter de la répartition géographique d'AWS », indique Nick Michal. « Ces régions regroupent un certain nombre de régions et de zones de disponibilité AWS. Nous pouvons donc générer un contenu dynamique au plus près de l'utilisateur, tout en améliorant nos capacités de reprise après sinistre. »
Zillow répond désormais de manière plus flexible à ses besoins en matière de mise à l'échelle. « Je peux lancer des instances Amazon EC2 chaque fois que je souhaite procéder à un changement de version majeur de l'application et je peux créer une nouvelle distribution Amazon CloudFront en quelques clics », explique Feroze Daud. « Dans l'ensemble, nous pouvons avancer plus vite grâce à AWS. »
L'organisation bénéficie également d'une meilleure visibilité sur les performances du système. « Notre processus de traitement d'images connaissait quelques retards et les versions initiales de nos applications cloud n'exposaient pas suffisamment de métriques ; nous ne savions donc pas quel composant du pipeline était responsable du retard », indique Nick Michal. « Lorsque nous avons commencé à utiliser Amazon CloudWatch pour suivre les latences, nous avons pu nous faire une idée plus précise des causes des retards et avons pris les mesures appropriées pour les éliminer. »
Zillow est toujours à la recherche d'occasions de migrer ses services vers le cloud. « Lorsque nous avons migré pour la première fois vers AWS, CloudFront était encore relativement nouveau et nous pensions prendre un risque », explique Nick Michal. « Cependant, le service a depuis fait ses preuves. À l'avenir, pour les nouveaux projets et services, nous envisageons de faire appel à AWS. Cette expérience a été très enrichissante. »
À propos de Zillow
Chaque jour, des dizaines de millions d'acheteurs, de vendeurs et de locataires potentiels, outre les agents et gestionnaires immobiliers, utilisent le site Web Zillow pour parcourir des listes de maisons et d'appartements, comparer des prêts immobiliers et rechercher des informations sur 110 millions de logements aux États-Unis.
Avantages d'AWS
- Plus de 50 % d'économies par mois
- Disponibilité et capacité de mise à l'échelle améliorées
- Meilleure visibilité sur les performances du système
Services AWS utilisés
Amazon EC2
Amazon Elastic Compute Cloud (Amazon EC2) est un service Web qui fournit une capacité de calcul sécurisée et redimensionnable dans le cloud. Destiné aux développeurs, il est conçu pour faciliter l'accès aux ressources de cloud computing à l'échelle du Web.
Amazon S3
Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets offrant une évolutivité, une disponibilité des données, une sécurité et des performances de pointe.
En savoir plus »
Elastic Beanstalk
AWS Elastic Beanstalk est un service simple à utiliser servant à déployer et à mettre à l'échelle des applications et services Web développés avec Java, .NET, PHP, Node.js, Python, Ruby, Go et Docker sur des serveurs familiers, tels qu'Apache, Nginx, Passenger et IIS.
En savoir plus »
Amazon CloudFront
Amazon CloudFront est un réseau rapide de diffusion de contenu (CDN) qui distribue en toute sécurité des données, des vidéos, des applications et des API à vos utilisateurs, avec une faible latence et des vitesses de transfert élevées, l'ensemble dans un environnement convivial pour les développeurs.
En savoir plus »
Amazon CloudWatch
Amazon CloudWatch est un service de surveillance et d'observabilité conçu pour les ingénieurs DevOps, les développeurs, les ingénieurs en fiabilité de sites (SRE) et les responsables informatiques.
En savoir plus »
Amazon SQS
La solution Amazon Simple Queue Service (SQS) est un service de file d'attente de messagerie entièrement géré qui vous permet de découpler et mettre à l'échelle des microservices, des systèmes décentralisés et des applications sans serveur.
En savoir plus »
Démarrer
Les entreprises de toute taille et de tous les secteurs d'activités transforment chaque jour leurs activités à l'aide d'AWS. Contactez nos spécialistes et commencez dès aujourd'hui votre transition vers le Cloud AWS.