Stablecoins

Cómo Lyft Revolucionó las Actualizaciones de Código con su Plataforma Codemod

Stablecoins
Building the Codemod Platform at Lyft

Descubre cómo Lyft transformó la gestión de actualizaciones de dependencias y la reducción de deuda técnica mediante la creación de una plataforma codemod innovadora, diseñada para automatizar cambios de código a gran escala en múltiples microservicios frontend.

En el mundo del desarrollo de software, mantener el código actualizado con las últimas versiones de bibliotecas y APIs representa un desafío constante, especialmente en grandes organizaciones donde la cantidad de proyectos y dependencias puede ser abrumadora. La realidad muchas veces obliga a los equipos a elegir entre desarrollar nuevas funcionalidades que aportan valor comercial o dedicar tiempo al mantenimiento y actualización de la base de código. En la mayoría de los casos, las nuevas características se llevan la prioridad, dejando para después la reducción de la deuda técnica. ¿Pero qué sucedería si ese proceso de actualización pudiera ser automatizado y ejecutado sin interrumpir el flujo de desarrollo diario? Esta era exactamente la premisa que el equipo de Lyft se propuso cambiar al crear su plataforma Codemod. El equipo de Frontend Developer Experience de Lyft, responsable de mantener la plataforma web de renderizado del lado del servidor (SSR) y la biblioteca común de componentes utilizada por más de cien microservicios frontend, enfrentaba el considerable esfuerzo que implica mantener estas herramientas centrales siempre actualizadas.

Para transformar este reto en una oportunidad, decidieron crear una plataforma que automatizara las actualizaciones del código, manejara los cambios disruptivos y permitiera la incorporación fluida de nuevas funcionalidades sin intervención humana directa. Los codemods son scripts que transforman el código fuente mediante el análisis y manipulación de su estructura interna, conocida como Árbol Sintáctico Abstracto (AST). Con estos, es posible automatizar cambios complejos en el código, desde actualizaciones sencillas hasta refactorizaciones completas. No obstante, la implementación y mantenimiento de codemods pueden ser complejos debido a la variedad de casos particulares que existen. En Lyft, el objetivo era diseñar una plataforma que facilitara la creación, ejecución y gestión de estas transformaciones a escala, cubriendo todas las necesidades específicas de su ecosistema.

Uno de los primeros desafíos fue seleccionar la tecnología base que permitiera procesar diferentes tipos de archivos fuente, incluyendo TypeScript, JavaScript, y sus variantes JSX y TSX. Tras evaluar varias opciones, optaron por jscodeshift, una herramienta que integra parsing, transformación y escritura en un solo flujo. Sin embargo, jscodeshift presentaba limitaciones para una operación a gran escala y con características específicas, por lo que el equipo desarrolló un sistema propio que potenció sus capacidades. La plataforma buscaba simplificar la escritura de codemods para los desarrolladores internos, implementando funciones auxiliares y documentación clara. De este modo, cualquier ingeniero, independientemente de su experiencia con transformaciones AST, podría crear y mantener transformaciones útiles.

Otro aspecto crucial fue ofrecer una herramienta CLI que permitiera ejecutar codemods sin necesidad de instalaciones globales ni modificaciones en los repositorios frontend existentes. La accesibilidad y facilidad de uso garantizaban una adopción amplia dentro de la empresa. Otro punto a destacar fue la necesidad de identificar qué servicios o microservicios eran elegibles para un determinado cambio o actualización, evitando así ejecutar transformaciones innecesarias en proyectos que no utilizan la dependencia involucrada. Este filtro optimizó la eficiencia y redujo tiempos de ejecución, algo vital considerando que la plataforma debe operar en un entorno de integración continua donde cientos de microservicios coexisten. Una innovación significativa dentro del proyecto fueron los llamados "codemods evergreens", que incorporan validaciones previas y posteriores a la transformación principal.

Por ejemplo, en la migración del núcleo de servicios frontend a una versión que requería la instalación previa de ciertas dependencias, el sistema se aseguraba automáticamente de que esos prerrequisitos se cumplieran para evitar rupturas posteriores. Este enfoque garantizaba que los codemods no sólo transformaran el código sino que también verificaran y aseguraran la correcta aplicación de dependencias necesarias. La plataforma fue diseñada para extender la transformación más allá del código fuente tradicional, apoyándose también en la manipulación de archivos de configuración como YAML, JSON y variables de entorno. De esta manera, las actualizaciones podían abarcar todo lo necesario para que un proyecto adopte correctamente una nueva versión, incluyendo elementos del entorno o ajustes en configuraciones que, de otra forma, se tendrían que modificar manualmente. Establecer una convención de nombres clara, descriptiva y consistente para las transformaciones fue otro punto clave.

Esto facilitó la administración y ejecución de codemods a través del CLI y evitó confusiones, especialmente cuando los nombres incluían versiones específicas de bibliotecas o frameworks. Además, la plataforma incorporó la ejecución de codemods externos desarrollados por comunidades open source, como los de Next.js o React, integrándolos dentro del flujo de trabajo sin necesidad de desarrollar transformaciones desde cero. El diseño técnico se basa en una clase central, denominada UpgradeClass, que gestiona la ejecución ordenada y correcta de las transformaciones. Esta estructura permite encadenar múltiples transformaciones, reutilizar componentes y realizar validaciones, haciendo que la plataforma sea modular y escalable, adecuada para los altos volúmenes de microservicios en Lyft.

Un ejemplo práctico ilustrativo de la plataforma es la eliminación automática de una propiedad obsoleta llamada "compact" en un botón dentro de una librería llamada core-ui. Al ejecutar la transformación con el CLI, se busca el transform correspondiente que contiene la lógica para remover este atributo de todos los componentes afectados. Este flujo no solo automatiza la tarea sino que reduce considerablemente el riesgo de errores humanos y acelera la adopción de nuevas versiones. En cuanto al despliegue y mantenimiento, la plataforma se distribuye como un paquete interno de npm llamado @lyft/codemod, lo que facilita su actualización y uso en diferentes entornos, tanto localmente como en CI. Esta separación del código principal de las bibliotecas internas permitió iterar rápidamente y añadir nuevos codemods sin afectar a otras partes del sistema.

Para asegurar la calidad de las transformaciones, se emplean herramientas de pruebas como defineTest de jscodeshift, que comparan código antes y después de la transformación para verificar que los cambios sean los esperados. Además, el equipo utiliza AST Explorer para visualizar y probar transformaciones en tiempo real, esencial para comprender cómo se modifican las estructuras internas del código. Estas prácticas facilitaron un desarrollo robusto y mantenible. El impacto tangible de esta plataforma en Lyft ha sido notable. La automatización permitió convertir lo que podrían haber sido costosas actualizaciones mayores en lanzamientos menores, lo que simplifica la gestión de versiones y reduce el tiempo de integración.

Además, la integración con la herramienta interna Refactorator, que gestiona PRs automáticos a gran escala, hizo que las actualizaciones pudieran ser aplicadas sin revisiones manuales, ahorrando miles de horas hombre y acelerando la sincronización de versiones en todo el ecosistema. La adopción rápida de las nuevas versiones y la reducción significativa de dependencias obsoletas son otros beneficios evidentes. Al automatizar casi el 80% de los cambios disruptivos en la biblioteca de componentes, alrededor del 30% de los microservicios lograron migrar en un lapso de dos semanas, algo que tradicionalmente habría requerido meses y mucho esfuerzo manual. Más allá de la actualización de dependencias, la plataforma está evolucionando para incorporar limpiezas automáticas programadas, tales como eliminación de opciones redundantes de TypeScript, reglas obsoletas de ESLint y duplicidades inesperadas en dependencias. Esta expansión amplía aún más el alcance del mantenimiento automatizado, contribuyendo a la salud general del código a largo plazo.

Mirando hacia el futuro, Lyft planea integrar los codemods en los flujos de trabajo locales y de integración continua para ofrecer retroalimentación temprana a los desarrolladores. Asimismo, están explorando el uso de inteligencia artificial para asistir en la generación o sugerencia automática de transformaciones basadas en patrones de cambios, guías de actualización o documentación. Esta innovación promete acelerar aún más la reducción de esfuerzos y la modernización sostenible del código. En resumen, la plataforma Codemod de Lyft representa un avance significativo en la automatización del mantenimiento de código en entornos de microservicios. Al combinar tecnología avanzada con un enfoque práctico y centrado en el usuario final — los desarrolladores — han logrado transformar un proceso que tradicionalmente era tedioso y riesgoso en uno ágil, confiable y escalable.

La historia de Lyft es un testimonio inspirador para cualquier organización que busque optimizar sus procesos de mantenimiento y actualización, demostrando que la inversión en herramientas internas y automatización puede traducirse en beneficios sustantivos tanto técnicos como operativos.

Trading automático en las bolsas de criptomonedas Compra y vende tu criptomoneda al mejor precio

Siguiente paso
Open source Google Analytics replacement
el miércoles 11 de junio de 2025 Rybbit: La Alternativa de Código Abierto y Privacidad a Google Analytics

Explora cómo Rybbit, una solución de análisis web de código abierto, se posiciona como una alternativa moderna, intuitiva y respetuosa con la privacidad frente a Google Analytics, ofreciendo métricas avanzadas sin comprometer la protección de datos personales.

Doge Aide Who Helped Gut CFPB Was Warned About Potential Conflicts of Interest
el miércoles 11 de junio de 2025 El Controversial Papel de Gavin Kliger en la Reestructuración del CFPB y los Riesgos Éticos Asociados

Análisis profundo sobre la participación de Gavin Kliger en la reforma del Consumer Financial Protection Bureau (CFPB), las advertencias sobre conflictos de interés y su impacto en la ética gubernamental y la regulación financiera en Estados Unidos.

IAU Standards of Fundamental Astronomy
el miércoles 11 de junio de 2025 Los Estándares de la Astronomía Fundamental de la IAU: Pilar Esencial para la Ciencia Astronómica Moderna

Explora los estándares de la Astronomía Fundamental establecidos por la Unión Astronómica Internacional (IAU), cómo aseguran la precisión en cálculos astronómicos y su relevancia en la investigación y aplicaciones modernas.

An Year of the Linux Desktop
el miércoles 11 de junio de 2025 Un Año del Escritorio Linux: El Renacer del Software Libre

Explora cómo el 2024 podría ser el año decisivo para el escritorio Linux, analizando su evolución, ventajas, desafíos y el futuro prometedor en el ámbito de la informática personal y profesional.

Three Chapters at Cloudflare: Programmer to CTO to Board of Directors
el miércoles 11 de junio de 2025 Tres capítulos en Cloudflare: De programador a CTO y miembro de la junta directiva

Un recorrido inspirador sobre la evolución profesional dentro de Cloudflare, destacando las etapas de programador, director de tecnología (CTO) y la transición a la junta directiva. La historia refleja el crecimiento personal y organizacional, el impacto tecnológico y la visión a largo plazo en una de las empresas líderes en seguridad y rendimiento en Internet.

Social AI companions pose unacceptable risks to teens and children under 18
el miércoles 11 de junio de 2025 Los peligros ocultos de los compañeros sociales de IA para menores de 18 años

Exploración profunda sobre los riesgos que representan los compañeros sociales de inteligencia artificial para adolescentes y niños, sus efectos en la salud mental y emocional, y la urgente necesidad de regulación y conciencia parental para proteger a las nuevas generaciones.

Send global payouts to anyone, anywhere
el miércoles 11 de junio de 2025 Cómo enviar pagos globales a cualquier persona en cualquier lugar de manera segura y eficiente

Descubre cómo las soluciones modernas para pagos globales permiten enviar dinero a cualquier persona en cualquier parte del mundo de forma rápida, segura y económica. Aprende sobre las mejores prácticas, herramientas y ventajas de utilizar plataformas avanzadas para la gestión de pagos internacionales.