RSS El blog de tecnología de A... Nota

RSS El blog de tecnología de Airbnb - Medium

La ingeniería de Airbnb es un portafolio de artículos del equipo de ingeniería de Airbnb que discuten sobre diversas tecnologías, innovaciones y estudios de caso de la industria. El sitio ofrece a los lectores un análisis detallado y perspectivas sobre los diferentes enfoques y desafíos que enfrentan en términos de ingeniería de software, desarrollo de productos, escalabilidad, rendimiento y más. El blog también cubre nuevas tendencias en tecnología, liderazgo y colaboración en equipo, brindando sabiduría para mejorar a las empresas de tecnología.

Hilo de notas

Migrar el monorepositorio JVM de Airbnb a Bazel

Airbnb migró su enorme monorepositorio JVM de Gradle a Bazel, un proceso que abarcó 4,5 años. Las razones principales para el cambio fueron la velocidad superior, la confiabilidad y la infraestructura de compilación unificada de Bazel. El almacenamiento en caché y la ejecución remota de Bazel aceleraron significativamente los tiempos de compilación y prueba, mejorando la productividad de los desarrolladores. La migración abordó la falta de confiabilidad de Gradle debida a compilaciones no herméticas y contención de recursos. Una prueba de concepto con el servicio Viaduct de Airbnb demostró la efectividad de Bazel, lo que llevó a una adopción más amplia. Un componente crucial fue un generador de archivos de compilación automatizado para minimizar el esfuerzo de los desarrolladores y mantener sistemas de compilación coexistentes. Este generador analizó eficientemente los archivos de origen, gestionó ciclos de dependencia y admitió gráficos de compilación granulares. La migración también involucró abordar desafíos como el soporte de bibliotecas de terceros con varias versiones y garantizar la compatibilidad de implementación. Finalmente, pruebas rigurosas, en particular pruebas de inicio y integración para servicios, validaron la corrección de las implementaciones compiladas con Bazel. El resultado general es un sistema de compilación dramáticamente mejorado con una mayor satisfacción de los desarrolladores.
CdXz5zHNQW_RVap6w2FjE.jpeg

De datos a conocimientos: Segmentación de la oferta de Airbnb

"Airbnb utiliza segmentación basada en datos para comprender los patrones de disponibilidad de sus anfitriones. Este proceso implica analizar la tasa de disponibilidad, la racha y la estacionalidad de las listas para diferenciar entre anfitriones con perfiles similares. Al aplicar un algoritmo de clustering K-means, Airbnb identifica ocho clusters distintos de anfitriones según sus patrones de disponibilidad. Estos clusters incluyen "Siempre activo", "Temporalmente estacional", "Motivado por eventos" y otros, cada uno con características y preferencias únicas. La empresa valida estos segmentos a través de pruebas A/B, los correlaciona con atributos conocidos y realiza investigaciones de UX para asegurarse de que se alineen con el comportamiento del mundo real. Luego, este modelo de segmentación se escala a todas las listas utilizando un algoritmo de árbol de decisión y se integra en el almacén de datos para su uso por parte de varios equipos. Este enfoque ayuda a Airbnb a desarrollar estrategias, productos y mensajes dirigidos para apoyar mejor a sus anfitriones y mejorar la experiencia del usuario en general."

Construyendo una plataforma de señales de usuario en Airbnb

Airbnb desarrolló una plataforma de procesamiento de flujo llamada Plataforma de Señales de Usuario (USP) para mejorar la experiencia del usuario a través de la personalización. La plataforma aprovecha los datos de participación del usuario para proporcionar interacciones personalizadas durante el proceso de reserva. Consiste en una capa de tubería de datos y una capa de servicio en línea, con Flink de flujo para procesamiento en tiempo real cercano y procesamiento por lotes para corrección de datos y rellenado. USP admite varios procesamientos de eventos de usuario, incluyendo Señales de Usuario, Segmentos de Usuario y Compromisos de Sesión. También utiliza métricas como latencia de eventos, latencia de ingesta, latencia de trabajo y latencia de transformación para medir el rendimiento de los trabajos de flujo. La plataforma permite a los desarrolladores definir transformaciones y segmentos de usuario sin preocuparse por los componentes de flujo. Para mejorar la estabilidad de los trabajos de Flink, Airbnb utiliza administradores de tareas de respaldo para asegurar el procesamiento continuo cuando un administrador de tareas falla.

Recorrido de fotos con inteligencia artificial de Airbnb usando Transformador de Visión

Airbnb ha desarrollado una función de recorrido fotográfico impulsada por IA para mejorar la experiencia del huésped al proporcionar información detallada sobre las listas. Esta función utiliza transformadores de visión para clasificar y organizar las fotos de las listas en 16 tipos de habitaciones diferentes. Para mejorar la precisión del modelo, Airbnb utilizó preentrenamiento, aprendizaje multitarea, aprendizaje en ensamble y destilación de conocimientos. El proceso de preentrenamiento involucró entrenar un modelo de Transformador de Visión en millones de fotos de listas de Airbnb. El aprendizaje multitarea utilizó un conjunto de datos diverso para mejorar la capacidad del modelo para interpretar visuales. El aprendizaje en ensamble combinó las fortalezas de varios modelos para predicciones robustas, y la destilación de conocimientos permitió un despliegue eficiente sin sacrificar precisión. El recorrido fotográfico impulsado por IA se lanzó como parte del lanzamiento de invierno de Airbnb 2023, y la empresa continúa refinando los modelos para una mejor experiencia del usuario.

Adoptar Bazel para la web a gran escala

Airbnb adoptó recientemente Bazel, la herramienta de compilación de código abierto de Google, como su sistema de compilación universal en las plataformas de backend, web y iOS. El gran repositorio monolítico de la empresa, que consta de más de 11 millones de líneas de código, presentaba desafíos con scripts de compilación personalizados y lógica de caché que eran difíciles de mantener y no escalaban bien. Para abordar estos problemas, Airbnb migró a Bazel, que ofrecía sofisticación, paralelismo, caché y rendimiento. El proceso de migración comenzó en 2021, pero no había un precedente industrial público para integrar Bazel con la web a gran escala fuera de Google. El equipo tuvo que superar problemas de rendimiento al transmitir archivos grandes al entorno remoto y estableció principios de migración que incluían mejorar o mantener el rendimiento general y reducir el impacto en los desarrolladores que contribuían al repositorio monolítico durante la transición. Para preparar el repositorio para Bazel, el equipo realizó la ruptura de ciclos y la generación automática de archivos BUILD.bazel. También migró los trabajos de CI a Bazel, comenzando con la comprobación de tipos, la comprobación de estilo y las pruebas unitarias. El equipo habilitó TypeScript, ESLint y Jest, e introdujo la caché para reducir el tamaño de entrada y mejorar el rendimiento. Para evitar retrocesos, el equipo movió las pruebas de "ocultas" a "requeridas" a través de un atributo de regla y aseguró una única fuente de verdad al no ejecutar pruebas bajo la configuración de Jest que se estaba reemplazando. También escribió un script para comparar antes y después de Bazel para determinar la preparación para la migración utilizando métricas como el tiempo de ejecución de las pruebas, las estadísticas de cobertura de código y la tasa de fallos. En paralelo con la migración de CI, el equipo aseguró que los desarrolladores puedan ejecutar Bazel localmente para reproducir e iterar sobre los fallos de CI. Entregaron una experiencia de Bazel local que es igual o superior a la experiencia de desarrollo existente y el rendimiento, lo que permite a los desarrolladores seguir utilizando herramientas familiares y optar por Bazel cuando sea beneficioso.

Transformando la recuperación de ubicaciones en Airbnb: Un viaje desde las heurísticas al aprendizaje por refuerzo

Airbnb ha transformado la forma en que las personas viajan por todo el mundo, pero proporcionar a los huéspedes opciones relevantes en sus resultados de búsqueda se ha vuelto cada vez más complejo debido a las diversas ubicaciones y tipos de propiedades en su inventario. Para abordar este desafío, Airbnb pasó de utilizar heurísticas simples a técnicas avanzadas de aprendizaje automático y aprendizaje por refuerzo para transformar su proceso de recuperación de ubicaciones. Inicialmente, Airbnb confió en heurísticas para definir áreas del mapa en función del tipo de búsqueda, pero estas heurísticas tenían limitaciones y no podían diferenciar entre diferentes tipos de búsquedas ni adaptarse bien a nuevos datos. Luego, Airbnb exploró estadísticas para mejorar la recuperación de ubicaciones creando un conjunto de datos para cada destino de viaje que registraba dónde los huéspedes reservaban listados cuando buscaban ese destino. Sin embargo, este enfoque estadístico todavía tenía limitaciones y trataba todas las búsquedas de una ubicación de la misma manera, independientemente de los parámetros de búsqueda específicos. Esto llevó a Airbnb a creer que la recuperación de ubicaciones puede requerir técnicas más avanzadas como el aprendizaje automático. Airbnb construyó un modelo de aprendizaje automático que podía aprender de varios parámetros de búsqueda, como el número de huéspedes y la duración de la estancia, y predecir áreas del mapa más relevantes para cada búsqueda. El sistema de aprendizaje automático aumentó la recuperación de listados reservados en un 7,12% y redujo el tamaño del área de recuperación del mapa en un 40,83%, lo que resultó en un impacto acumulado de +1,8% en reservas no canceladas en la plataforma. Luego, Airbnb introdujo el aprendizaje por refuerzo en el proceso de recuperación de ubicaciones, lo que permitió que el sistema aprendiera continuamente de las interacciones de los huéspedes y ajustara el área de recuperación del mapa en función del comportamiento de reserva de los huéspedes. El sistema de aprendizaje por refuerzo exploró con éxito más ubicaciones menos viajadas y exploró menos ubicaciones que son buscadas y reservadas con frecuencia, lo que resultó en un aumento acumulado del 0,51% en reservas no canceladas y un aumento del 0,71% en la tasa de viajes de 5 estrellas. El viaje de Airbnb desde heurísticas simples hasta modelos de aprendizaje automático y aprendizaje por refuerzo sofisticados demuestra el poder de los enfoques basados en datos para transformar sistemas complejos. La transformación resulta en un aumento acumulado del 2,66% en reservas no canceladas, un logro importante para una empresa que opera a la escala de Airbnb.

Plataforma de Automatización v2: Mejorando la IA Conversacional en Airbnb

La plataforma de automatización de Airbnb v2 es una plataforma de IA conversacional diseñada para apoyar aplicaciones de modelos de lenguaje grande (LLM) emergentes. La plataforma permite a los desarrolladores construir aplicaciones de LLM que mejoran la eficiencia y los tiempos de respuesta del soporte al cliente. Incluye varios componentes clave como el flujo de trabajo de cadena de pensamiento, gestión de contexto y marco de guardrail. El flujo de trabajo de cadena de pensamiento utiliza LLM como motores de razonamiento para determinar qué herramientas utilizar y en qué orden. La gestión de contexto garantiza que el LLM tenga acceso a la información contextual necesaria, mientras que el marco de guardrail monitorea las comunicaciones con el LLM para asegurar que sea útil, relevante y ético. La plataforma está evolucionando para acomodar tecnologías transformadoras, ampliar las capacidades de las herramientas de cadena de pensamiento y investigar la simulación de aplicaciones de LLM.