Fondo
La página ”Ver artículo” de eBay es una de las más visitadas en nuestra plataforma de comercio electrónico, con más de 250 millones de cargas diarias. A pesar de su importancia, esta página no ha sido actualizada en los últimos diez años.
El rápido crecimiento y desarrollo de la plataforma ha hecho que el código base sea cada vez más difícil de mantener. Esto ha obstaculizado nuestra capacidad de innovar y ofrecer una experiencia de calidad a nuestros clientes. Como se muestra en la Figura 1, hemos terminado con una pila de tecnología heredada que requiere trabajo duplicado para su implementación en nuestras cuatro plataformas (escritorio, web móvil, iOS y Android). Para seguir innovando, era crucial modernizar este sistema y el proceso de desarrollo asociado.
Figura 1: La pila heredada que impulsa “Ver artículo” requiere trabajo duplicado. Tres servicios distintos cargan los mismos datos y los transforman para cada plataforma.
Objetivos
Nuestro principal objetivo era mejorar la velocidad desde el primer día, en lugar de realizar un esfuerzo prolongado con una gran recompensa al final. Para lograrlo, nos enfocamos en mejorar la experiencia y productividad de los desarrolladores. Queríamos que las nuevas funciones se escribieran solo una vez y adoptamos tecnologías y prácticas modernas para facilitar la contratación y retención de talento, así como la adición de funciones potentes. Además, era fundamental documentar el nuevo código para facilitar la resolución de problemas, el mantenimiento y la extensibilidad en el futuro.

Tabla 1: Objetivos para mejorar el rendimiento de “Ver artículo” según las métricas clave de ”The Accelerate Book”.
Estrategia
Para lograr nuestros objetivos, desarrollamos una nueva arquitectura (ver Figura 2) que eliminaría el trabajo duplicado y cumpliría con todas nuestras metas.

Figura 2: La nueva arquitectura elimina la necesidad de duplicar el trabajo en múltiples plataformas, lo que facilita la entrega de mejoras a nuestros clientes.
Si bien dibujar un diagrama es sencillo, la realidad de nuestros tres servicios heredados (servicio monolito de escritorio, servicio de experiencia nativa y servicio web móvil) implicaba un esfuerzo de varios años para crear un servicio equivalente bajo la nueva arquitectura. Además, la continua introducción de nuevas características complicaba aún más el desarrollo del nuevo servicio. Por lo tanto, desarrollamos una estrategia que nos permitió migrar fragmentos de código más pequeños a lo largo del tiempo (ver Figura 3). Nuestro plan se dividió en los siguientes pasos:
- Introducir un nuevo servicio entre la capa de datos y el sistema heredado.
- Los servicios heredados obtienen sus datos a través del nuevo servicio.
- Implementar versiones modernas de cada módulo en el nuevo servicio y agregar sus datos al flujo de datos.
La migración exitosa de un servicio heredado a una nueva arquitectura
En el mundo de la tecnología, la migración de un servicio heredado a una nueva arquitectura puede ser un desafío. Sin embargo, en un reciente proyecto, un equipo de desarrolladores logró duplicar la velocidad de desarrollo al migrar su servicio heredado a una nueva arquitectura modular. En este artículo, exploraremos el proceso de migración y los resultados obtenidos.
Fase dos: casi completada
Actualmente, el equipo se encuentra en la fase dos de la migración, con aproximadamente el 90 por ciento de los módulos ya migrados a la nueva arquitectura. Esta nueva estrategia ha permitido aumentar la velocidad de desarrollo en todas las áreas del proyecto.
-
Eliminación de la duplicación de trabajo
Todas las plataformas compatibles ahora reciben los mismos datos del mismo servicio, lo que ha eliminado la duplicación de trabajo en un tercio.
-
Ganancias de velocidad del 200 por ciento
La migración módulo por módulo ha permitido desbloquear ganancias de velocidad del 200 por ciento en nuevas características relacionadas desde el comienzo del proyecto.
-
Experiencia del desarrollador mejorada
El equipo ha experimentado una serie de mejoras en la experiencia del desarrollador, incluyendo una incorporación más fácil de nuevos miembros al equipo, fusiones de código más rápidas y una mayor productividad general.
- Más fácil incorporación de nuevos miembros al equipo gracias a la documentación precisa y a la tecnología moderna con la que ya están familiarizados.
- Fusiones de código más rápidas debido a un proceso de automatización más eficiente.
- Aumento de la productividad general gracias a mejoras en la legibilidad del código, la documentación y la estructura del proyecto.
- Todas las funciones nuevas ahora se escriben solo una vez y son compatibles de inmediato con las cuatro plataformas.
Estas mejoras se reflejan en las métricas clave del proyecto, como se muestra en la Tabla 2. El equipo ha logrado cumplir o superar todos los objetivos y ha alcanzado el estatus de élite.
Un aumento del 200 por ciento en la velocidad
La culminación de estas mejoras es un aumento del 200 por ciento en la velocidad. Lo más sorprendente es que este aumento se ha visto desde el inicio del proyecto y se ha mantenido constante durante cada migración de módulo. Con el proyecto a punto de finalizar, el equipo ya ha logrado una reducción del 50 por ciento en el esfuerzo necesario para mejorar nuevos productos.
Aprendizajes y lecciones
La migración de cada módulo comenzó con una inmersión profunda en el código heredado relacionado. A medida que el equipo descubría nuevos casos de uso, se hizo evidente que la generación de documentación completa del sistema heredado no estaba brindando el valor esperado. Se decidió cambiar de enfoque y centrarse en un estudio rápido de los módulos heredados para generar un resumen de alto nivel. Luego, se confió en la ingeniería inversa para crear los nuevos módulos con documentación completa solo sobre el nuevo código.
Los primeros módulos migrados siguieron un enfoque holístico que revisó todas las partes del código que interactuaban con él, incluyendo el cliente y la capa de visualización. Sin embargo, algunos cambios en la experiencia del usuario tuvieron un impacto negativo en los clientes, lo que llevó a ajustes y pruebas adicionales. Como resultado, el equipo aprendió la importancia de separar completamente la modernización del código back-end de cualquier cambio de comportamiento de cara al usuario.
En general, el proyecto ha demostrado la importancia de la flexibilidad y la iteración continua. El equipo ha cultivado una cultura que desafía constantemente las decisiones y suposiciones, lo que ha sido fundamental para el éxito del proyecto.
Conclusión
La migración exitosa de un servicio heredado a una nueva arquitectura modular ha permitido duplicar la velocidad de desarrollo de un equipo. Este logro ha sido posible gracias a una cuidadosa planificación, ejecución y compromiso por parte del liderazgo ejecutivo. El proyecto ha demostrado la importancia de ser flexible y estar dispuesto a iterar en un proyecto ambicioso como este.
Increíble equipo logra duplicar la velocidad en eBay
Después de dos años de arduo trabajo, el proyecto para duplicar la velocidad en eBay está a punto de alcanzar su objetivo. Con más del 90 por ciento del trabajo completado, nuestro increíble equipo ha logrado desbloquear ganancias de velocidad desde el principio y continuar obteniendo más a lo largo del cronograma.
Un enfoque paso a paso
La estrategia paso a paso implementada por nuestro equipo ha sido clave para alcanzar este hito. En lugar de esperar a que el proyecto se complete por completo, hemos logrado desbloquear inmediatamente ganancias de velocidad al inicio del proceso. Esto nos ha permitido duplicar nuestra capacidad para responder rápidamente a las necesidades de nuestros clientes y mantenernos como líderes del mercado.
Un equipo dedicado y perseverante
Nada de esto hubiera sido posible sin el increíble equipo que se unió para resolver este desafío. Queremos expresar nuestro más sincero agradecimiento a todos los que han participado en esta misión, trascendiendo los límites del equipo. Su perseverancia y trabajo duro han sido fundamentales para lograr este éxito.
Además, queremos agradecer especialmente a Jamie Iannone, CEO de eBay, por iniciar este programa y por su apoyo constante a lo largo de todo el proceso.
Con este logro, eBay demuestra una vez más su compromiso con la excelencia y su capacidad para adaptarse rápidamente a un mercado en constante evolución.