Caso práctico de Zillow

2015

Todos los días, decenas de millones de compradores potenciales, vendedores y arrendatarios, así como agentes y administradores de propiedades, utilizan el sitio web de Zillow para examinar las ofertas de casas y apartamentos, comparar hipotecas y buscar información sobre los 110 millones de inmuebles de todos los Estados Unidos. El popular sitio es propiedad de Zillow Group, que alberga un portafolio de las más grandes marcas de bienes raíces y relacionadas con el hogar en línea. Además de Zillow, Zillow Group administra Trulia, HotPads y StreetEasy.

Technology concept. 3D render
kr_quotemark

Al pasarnos a AWS, ya no tenemos que preocuparnos por vaciar la caché ni por problemas de capacidad. Disponemos del rendimiento y la escalabilidad necesarios para entregar imágenes de los inmuebles de alta calidad, que son muy importantes para la experiencia del usuario de Zillow”.

Feroze Daud
Ingeniero sénior de desarrollo de software

El desafío

Zillow procesa más de 3 millones de imágenes nuevas al día, incluidas las imágenes de las ofertas de inmuebles, las fotos de perfil de los prestamistas y agentes, y las imágenes de los proyectos inmobiliarios en el sitio web de Zillow Digs. “Recibimos más de 17 000 solicitudes de imágenes por segundo durante los picos de tráfico de clientes tanto desde escritorios como móviles”, explica Nick Michal, director de ingeniería de sistemas de Unix del Grupo Zillow.

A medida que Zillow adquirió más popularidad, los agentes empezaron a publicar imágenes de mayor resolución en las ofertas de inmuebles y el sistema de imágenes antiguo de la compañía no podía satisfacer la demanda. El sistema se encontraba en centros de datos alojados, con las imágenes descargadas de una sola cola, almacenadas en un dispositivo de almacenamiento conectado a la red (NAS) en formato TIFF piramidal, y enviadas a una red de entrega de contenido(CDN) a través de un servicio Squid local. “Este método resultaba caro, y dependíamos de la CDN para tener una tasa de caché elevada. Si no lográbamos la tasa necesaria, no podíamos abastecer las imágenes de forma eficaz. Todos los días nos acercábamos a nuestra capacidad máxima”, afirma Michal.

Zillow también sufría problemas de rendimiento en el procesamiento de las imágenes, ya que algunas se cargaban manualmente pero otras procedían de fuentes masivas para su descarga. A menudo, la tasa de imágenes nuevas procedentes de fuentes masivas era impredecible, y algunos orígenes de imágenes permitían descargas mucho más rápidas con mayor concurrencia que otros orígenes. Como resultado, si había una imagen lenta o problemática al principio de la cola, se retrasaba la descarga de las demás imágenes. “No podemos tener problemas de ancho de banda en Zillow, porque si los usuarios van al sitio y la imagen no aparece, ni siquiera mirarán la oferta de inmuebles”, explica Feroze Daud, ingeniero sénior de desarrollo de software del Grupo Zillow. “A los usuarios les resultaría frustrante”.

Además, la herramienta que Zillow utilizaba para procesar imágenes para su almacenamiento en formato TIFF piramidal era vieja y no era fácil de ampliar. “No resultaba fácil introducir mejoras a la calidad de las imágenes, como eliminar los bordes de colores”, comenta Daud. La recuperación ante desastres también preocupaba a la compañía. “Al tener todo alojado en un solo centro de datos, existía un riesgo”, explica Michal.

Por qué Amazon Web Services

Para solucionar los problemas de escalabilidad, rendimiento y recuperación ante desastres del sistema de imágenes, Zillow decidió pasarse a una infraestructura basada en la nube. “Desde el punto de vista de los costos generales y la facilidad de administración, la nube tenía mucho sentido”, explica Michal. Tras examinar varias tecnologías en la nube, Zillow optó por Amazon Web Services (AWS). “AWS era la empresa que más tiempo llevaba en la nube y la más dominante”, asegura Michal. “Además, varias de las compañías que habíamos comprado ya usaban AWS”.

La compañía migró el alojamiento y la distribución de las imágenes de unas instalaciones de colocación físicas a AWS, con instancias de Amazon Elastic Compute Cloud (Amazon EC2) y Amazon Simple Storage Service (Amazon S3) para el almacenamiento de objetos de imágenes. En la actualidad, Zillow almacena cerca de 100 TB de datos en Amazon S3, incluyendo 300 millones de imágenes y más de 1 000 millones de objetos. “El mantenimiento de miles de millones de objetos no resulta sencillo en un sistema de archivos tradicional”, asegura Michal. “Tendríamos que dividir los objetos en numerosos sistemas de archivos, lo que sería una pesadilla a la hora de administrarlos. La escalabilidad de Amazon S3 parecía la tecnología idónea para nosotros”.

Zillow también comenzó a usar AWS Elastic Beanstalk, un servicio para la implementación y el escalado de aplicaciones y servicios web. Los desarrolladores pueden cargar el código a Elastic Beanstalk, que a continuación administra de manera automática la implementación, desde el aprovisionamiento de la capacidad, el equilibrio de carga y el escalado automático hasta el monitoreo del estado de la aplicación. La compañía utiliza un entorno de trabajo de Elastic Beanstalk para ejecutar una biblioteca de imágenes Python con código personalizado. “Como procesamos datos de forma aleatoria, ejecutando fuentes que envían mucho trabajo al sistema a la vez, necesitamos escalar nuestro conjunto de convertidores de imágenes”, explica Daud. “AWS Elastic Beanstalk es la manera más sencilla de hacerlo, en lugar de disponer de un conjunto de instancias estáticas o intentar escribir nuestra propia configuración de escalado automático”.

A continuación, la organización trasladó la mayoría de la carga de trabajo de su CDN de Akamai a Amazon CloudFront, un servicio web de entrega de contenido que distribuye el contenido del sitio web de Zillow más cercano a los usuarios. “AWS CloudFront es mucho más económico que Akamai y se integra a la perfección con Amazon S3”, afirma Michal. Zillow también utiliza Amazon CloudWatch para monitorear algunos de sus recursos en la nube.

Zillow usa un servidor de descargas (DLS) en su centro de datos para administrar las solicitudes de descarga de imágenes provenientes de las fuentes de las ofertas de inmuebles y utiliza una API REST de Amazon Elastic Beanstalk como servicio front-end en la nube para el DLS. Este servicio toma cada solicitud de descarga de imagen y la coloca en un servicio de cola de mensajes por fuente de Amazon Simple Queue Service (Amazon SQS). “Gracias a SQS, contamos con un sistema de colas sin tener que ocuparnos de la infraestructura”, explica Michal.

Una función de descarga limitada controla la velocidad y la concurrencia con la que Zillow descarga imágenes para cada fuente, lo que le permite a la empresa aprovecharse de los proveedores de imágenes que admiten descargas rápidas sin abrumar a los proveedores que no las admiten. Si la descarga de la imagen se produce con éxito, Zillow escribe la imagen original en Amazon S3 para usarla en el procesamiento de imágenes.

Para realizar el procesamiento de imágenes, Zillow toma las imágenes originales almacenadas en S3 y las procesa usando varios métodos de calidad de la imagen, generando al mismo tiempo un conjunto estándar de tamaños para cada imagen. Todas las imágenes provienen de Amazon S3 y se almacenan en caché en Amazon CloudFront. La compañía abastece en promedio 15 000 imágenes por segundo.

Los beneficios

Con AWS, Zillow puede ofrecer una mejor experiencia a los potenciales compradores y arrendatarios de inmuebles, agentes inmobiliarios y otros visitantes del sitio. “Al pasarnos a AWS, ya no tenemos que preocuparnos por vaciar la caché ni por problemas de capacidad. Disponemos del rendimiento y la capacidad necesarios para entregar imágenes de los inmuebles de alta calidad, que son muy importantes para la experiencia del usuario de Zillow”, explica Daud. Zillow puede escalar la descarga y el procesamiento de imágenes para abastecer diversos niveles de imágenes entrantes durante todo el día. Y como ahora las descargas de imágenes de cada fuente son independientes, Zillow puede beneficiarse de los orígenes que admiten un elevado ancho de banda y concurrencia, limitando las orígenes que no los admiten. Además, Amazon S3 aporta a la compañía un almacenamiento de objetos casi ilimitado, con lo que se elimina la necesidad de solicitar e instalar más servidores o unidades para incrementar la capacidad.

Al utilizar Amazon CloudFront junto con Amazon S3, Zillow confía más en el rendimiento de su sistema de imágenes. “Disponemos de mucho más ancho de banda que antes, por lo que ya no tenemos que preocuparnos de eso”, asegura Michal. “Y desde luego no tenemos que preocuparnos de que S3 se quede sin capacidad”.

Zillow también ha reducido los costos operativos al migrar su sistema de procesamiento y entrega de imágenes a AWS. “Gracias a Amazon CloudFront, pagamos menos de la mitad de lo que pagábamos al mes con nuestra CDN”, comenta Michal. “Ya no tenemos que gastar dinero en actualizaciones de adaptación a dispositivos NAS”.

Al utilizar Amazon S3 y Amazon CloudFront, la compañía ha incrementado la disponibilidad del sistema de imágenes. “Con S3, los objetos se replican de tres maneras dentro de una región, de modo que, incluso si una zona de disponibilidad deja de estar disponible, el tráfico podría seguir enviándose a los usuarios sin que tengamos que realizar tareas de desarrollo”, explica Michal.

También se ha mejorado la recuperación ante desastres. “Podemos beneficiarnos de la distribución geográfica de AWS”, asegura Michal. “Esas regiones contienen varias regiones y zonas de disponibilidad de AWS, por lo que no solo podemos generar contenido dinámico más cercano a los usuarios, sino también mejorar nuestra capacidad de recuperación ante desastres”.

Zillow ha incrementado la agilidad ante las necesidades de escalado. “Puedo poner en marcha instancias de Amazon EC2 en cualquier momento para realizar un cambio importante en la versión de la aplicación, o crear una nueva distribución de Amazon CloudFront con tan solo unos clics”, asegura Daud. “En general, gracias a AWS podemos avanzar más rápido”.

La organización también dispone de mejor visibilidad del rendimiento del sistema. “Experimentamos varios retrasos en el procesamiento de las imágenes, y las versiones iniciales de nuestras aplicaciones en la nube no mostraban suficientes métricas, por lo que no conseguíamos averiguar qué componente de la canalización había provocado los retrasos”, comenta Michal. “Cuando comenzamos a utilizar Amazon CloudWatch para realizar un seguimiento de las latencias, pudimos observar mucho mejor las causas y tomamos las medidas necesarias para eliminarlas”.

Zillow seguirá buscando oportunidades adicionales para trasladar más servicios a la nube. “Cuando realizamos la primera migración a AWS, CloudFront era relativamente nuevo y pensamos que estábamos asumiendo un riesgo”, explica Michal. “Sin embargo, ha demostrado sus capacidades. En el futuro, para nuevos proyectos y servicios, tendremos en cuenta a AWS. Nuestra experiencia ha sido excelente”.


Acerca de Zillow

Todos los días, decenas de millones de compradores potenciales, vendedores y arrendatarios, así como agentes y administradores de propiedades, utilizan el sitio web de Zillow para examinar las ofertas de casas y apartamentos, comparar hipotecas y buscar información sobre los 110 millones de inmuebles de todos los Estados Unidos.

Beneficios de AWS

  • Ahorro de costos superior al 50 % mensual
  • Mayor disponibilidad y escalabilidad
  • Mejor visibilidad del rendimiento del sistema

Servicios de AWS utilizados

Amazon EC2

Amazon Elastic Compute Cloud (Amazon EC2) es un servicio web que proporciona capacidad informática en la nube segura y de tamaño modificable. Está diseñado para facilitar a los desarrolladores la informática en la nube a escala web.

Más información »

Amazon S3

Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos que ofrece escalabilidad, disponibilidad de datos, seguridad y rendimiento líderes en el sector.

Más información »

Elastic Beanstalk

AWS Elastic Beanstalk es un servicio fácil de utilizar para implementar y escalar servicios y aplicaciones web desarrollados con Java, .NET, PHP, Node.js, Python, Ruby, Go y Docker en servidores familiares como Apache, Nginx, Passenger e IIS.

Más información »

Amazon CloudFront

Amazon CloudFront es un servicio rápido de red de entrega de contenido (CDN) que distribuye a clientes globalmente datos, vídeos, aplicaciones y API de forma segura, con baja latencia, altas velocidades de transferencia y dentro de un entorno fácil para desarrolladores.

Más información »

Amazon CloudWatch

Amazon CloudWatch es un servicio de monitoreo y observación creado para ingenieros de DevOps, desarrolladores, ingenieros de fiabilidad de sitio (SRE) y administradores de TI.

Más información »

Amazon SQS

Amazon Simple Queue Service (SQS) es un servicio de colas de mensajes completamente administrado que permite desacoplar y ajustar la escala de microservicios, sistemas distribuidos y aplicaciones sin servidor.

Más información »


Introducción

Cada día crece el número de empresas de todos los tamaños y sectores que consiguen transformar sus negocios gracias a AWS. Contacte con nuestros expertos e inicie hoy mismo su proceso de traspaso a la nube de AWS.