Publicado por Harini ChandrasekharanIngeniero Informático Staff, Google Play
Google Play Store, lanzada hace 10 años en 2012, se encuentra en el corazón de Android, conectando a miles de millones de usuarios con una colección de aplicaciones y juegos igualmente asombrosa y en constante crecimiento en todo el mundo.
Echemos un vistazo entre bastidores a lo que se necesita para diseñar la infraestructura de servicios del mercado de Android más grande del mundo. En el mundo del software orientado al consumidor, no sorprende que las soluciones de ingeniería listas para usar no cumplan con los requisitos de escalabilidad de Google. Por lo tanto, cada sistema de Google está cuidadosamente diseñado y perfeccionado con mejoras iterativas para satisfacer las necesidades únicas de disponibilidad, calidad y latencia de Google Play Store.
Las características pueden estar orientadas al usuario, como formatos, contenido, disposición del contenido, diseño de página o arquitectura de la información. Los formatos representan cómo se presenta en la interfaz de usuario el contenido de la aplicación de nuestros sistemas de recomendación, anunciantes, comerciantes y otras fuentes. El objetivo es crear experiencias personalizadas combinando el contenido y la interfaz de usuario correctos para sugerir las aplicaciones y los juegos más relevantes para conocer a los usuarios en el lugar en el que se encuentran en su recorrido por Play Store.
En el dominio de las funciones orientadas al consumidor, las opiniones y elecciones de los usuarios, el ecosistema de desarrolladores y la demanda a menudo cambian más rápido que la infraestructura. En tal entorno, el mayor desafío al que se enfrentan los ingenieros es cómo ser ágiles y diseñar una infraestructura que no solo esté preparada para el futuro, sino que también satisfaga las necesidades del espacio del consumidor dentro de las limitaciones de escalabilidad y rendimiento. Echemos un vistazo más profundo a algunos desafíos de ingeniería en un espacio tan dinámico.
En una organización basada en datos como Play Store, las métricas se construyen para medir lo que sea importante. Estas son algunas de las dimensiones que son útiles para medir y rastrear el éxito:
- Métricas de producto/empresa: estas son métricas específicas del producto o servicio que se está revisando. Ejecutar experimentos A/B para medir los cambios en estas métricas para el nuevo tratamiento genera confianza, particularmente cuando el proceso de toma de decisiones implica varias compensaciones.
- Rendimiento: la medición de la latencia, las tasas de error y la disponibilidad constituye la columna vertebral de casi cualquier servicio, y por una buena razón. Conocer estas métricas básicas es esencial, ya que rastrean de cerca la experiencia del usuario y la percepción del producto.
- Estado del sistema: estas son métricas internas del sistema que rastrean el uso de recursos y la estabilidad de la flota.
Es fundamental diseñar sistemas de back-end que se ajusten a los requisitos de Play Store y que también cumplan con los criterios de rendimiento necesarios para que las interacciones de los usuarios sean fluidas y receptivas. Desde el punto de vista de la ingeniería, la infraestructura debe evolucionar continuamente para satisfacer las necesidades del negocio. Play Store no es diferente: la infraestructura de la tienda ha evolucionado varias veces durante la última década para no solo satisfacer las necesidades de nuevas funciones que están disponibles para los usuarios hoy en día, sino también para modernizarse, eliminar la deuda tecnológica y, sobre todo, reducir la latencia.
iteración frecuente
Desafío: Las características a menudo requieren grandes cantidades de iteraciones a lo largo del tiempo, lo que dificulta la planificación de una infraestructura de ingeniería que cumpla con todos los requisitos futuros.
En una cultura impulsada por la experimentación, el enfoque óptimo para crear rápidamente características a escala a menudo genera una deuda tecnológica. La deuda tecnológica se presenta de muchas formas: reliquias de características anteriores que no la llevaron a niveles que eran difíciles de limpiar, afectaron el rendimiento, hicieron que el código fuera propenso a errores y difíciles de probar.
Evolución independiente
Desafío: En grandes organizaciones compuestas por cientos de ingenieros, a menudo se crean varias características en paralelo e independientemente unas de otras.
La reutilización de la infraestructura y el intercambio de innovaciones a menudo son imposibles sin comprometer significativamente la velocidad. En un espacio donde el producto evoluciona a un ritmo rápido, a menudo hay mucha incertidumbre con las diferentes palancas y perillas que se pueden integrar en los sistemas para hacerlos flexibles. Demasiadas palancas pueden conducir a una gran complejidad del sistema. Muy pocas palancas y el costo de iteración se está disparando. Encontrar el equilibrio entre los dos es una de las competencias básicas de un ingeniero de funciones en este espacio.
es hora de experimentar
Desafío: A menudo hay un costo de oportunidad para pagar el tiempo dedicado a crear soluciones de ingeniería elegantes.
El tiempo para experimentar es una de las métricas más importantes que se deben tener en cuenta al diseñar soluciones para funciones orientadas al usuario. El diseño flexible que permite una iteración rápida y se adapta a la latencia y otros SLO de rendimiento es ideal.
En la práctica, a menudo hay una gran cantidad de conjeturas para estimar el impacto de un usuario en particular que enfrenta el cambio, aunque podemos usar datos y aprendizaje pasado con confianza para estimar en algunos escenarios, no es suficiente para un nuevo y ambicioso , nunca probado antes de la idea.
Veamos cómo la Play Store resuelve estos desafíos para permitir la innovación de vanguardia.
Experimentos y lanzamientos basados en datos: descubra sus métricas de éxito
Es de suma importancia optimizar el tiempo de comercialización, es decir, entregar la función al usuario y medir el impacto en las instalaciones de la aplicación y otras métricas comerciales de la tienda mediante experimentos A/B. La iteración rápida basada en datos ayuda a ajustar la funcionalidad final al estado final deseado. Google tiene varias tecnologías desarrolladas internamente para ejecutar experimentos A/B a escala global con una integración perfecta con herramientas de presentación de métricas que hacen que la ejecución de estos experimentos sea fluida y fácil, para que los desarrolladores puedan dedicar más tiempo a la codificación y menos al análisis.
Diseñe y experimente MVP refinados, con un enfoque en la calidad
Decidir qué construir, si cumple con los estándares de calidad de Google, comprender el costo de la ingeniería y las necesidades del usuario que resuelve son preguntas importantes que deben responderse antes de diseñar cualquier cosa. Por lo tanto, la ingeniería de características a menudo se lleva a cabo en estrecha colaboración con los gerentes de producto. Alinearse con el MVP perfecto que se puede construir en una cantidad razonable de tiempo de diseño que cumpla con el viaje del usuario es la clave para un producto exitoso.
Modernice la infraestructura con frecuencia: limpie la deuda tecnológica
Las iteraciones frecuentes y una cultura de desarrollo rápido de MVP a menudo vienen con una serie de inconvenientes, el mayor de los cuales es la deuda tecnológica. Al optimizar para un alto rendimiento, tomar atajos da como resultado un código obsoleto (debido a métricas que no se pueden iniciar) o indicadores de experimento descartados. Estos a menudo dificultan las pruebas, el mantenimiento y afectan la velocidad del desarrollo futuro si no se corrigen. Además, el uso de los mejores y más recientes marcos para alcanzar los últimos milisegundos de latencia o optimizar el desarrollo genera grandes dividendos a largo plazo. La modernización frecuente de la infraestructura a través de refactorizaciones o reescrituras completas tradicionalmente puede indicar signos de código mal diseñado, pero es una de las mayores compensaciones que los ingenieros de características a menudo tienen que hacer, porque después de todo, ¿de qué sirve toda la infraestructura sofisticada si los usuarios no interactúan? con la característica primero!
¿Qué tan útil te pareció esta publicación de blog?