Además de todo eso, las sesiones tienden a durar mucho tiempo en Monday. Y las pestañas tienden a permanecer abiertas durante varios días, durante tres o más días con mucha interacción y muchas dependencias entre todos estos componentes y micro-frontends. Así que nuestro lado del cliente es una pieza de software sofisticada y compleja que se ejecuta en tu navegador y algunas de sus dependencias y servicios han sido construidos y mantenidos durante más de diez años con muchos desarrolladores de Monday y desarrolladores externos contribuyendo con código creando esta enorme pieza de software.
Este es un ejemplo real de un selector que tenemos. Puedes ver que depende de muchos otros selectores y cada uno de ellos puede depender de muchos otros selectores y cada uno de ellos depende de servicios y utilidades y muchos más archivos, resultando en el hecho de que este único selector puede depender de cientos de archivos.
Entonces, lo que salimos a hacer. Queríamos romper el núcleo, los mismos corazones y cerebros de nuestro monolito del lado del cliente y hacerlo manteniendo algunas reglas básicas. Queríamos cero incidentes de producción. Queríamos no crear cambios de comportamiento en nuestra aplicación. Queríamos convertir todo a TypeScript en el camino y mantener la fricción humana al mínimo en el proceso.
Entonces, ¿qué es ese Morphix que está rompiendo nuestro monolito? Para el desarrollador promedio en Monday, Morphix está creando pull requests aleatorios en momentos aleatorios y envía estos pull requests para que los revisen y fusionen. En este ejemplo, puedes ver un mensaje de Slack. Morphix envió a estos dos desarrolladores diciéndoles que había hecho mucho trabajo por ellos y ahora depende de ellos revisarlo y fusionarlo.
Ahora cómo elegir el archivo correcto para extraer. Al igual que en el juego de Jenga, necesitas saber qué ladrillo puedes extraer sin romper toda la torre. No queremos que nuestro producto se caiga. Pero si alguna vez jugaste Jenga, sabes que eventualmente la torre debe caer. Al extraer archivos, si simplemente eliges un archivo al azar y quieres sacarlo del monolito para extraerlo en otro lugar, sabes que no puedes simplemente sacarlo porque tiene dependencias y tiene otros bloqueadores que deben resolverse antes de que ese archivo específico deba ser manejado.
Pero si pudiéramos simplemente sacar los ladrillos de la parte superior de la torre, sería un juego mucho más fácil de jugar. Y eventualmente, para nuestro monolito, encontramos cómo hacerlo. Creamos el analizador Morphix, que es una herramienta determinista estática que utiliza un AST bajo el capó que recorre toda la base de código y construye un enorme árbol de dependencias. Y sus hojas son como la parte superior de la torre. Está libre para extracción. Y después de que el analizador se ejecuta, tomamos todos los datos, todos los datos de migración, las dependencias, la complejidad y todos los demás datos relevantes y simplemente los lanzamos a un tablero de Monday.
Y ahora, con el tablero, Morphix y nosotros tenemos una visibilidad clara sobre el progreso de la extracción, el estado y el orden, creando una increíble colaboración entre agentes humanos donde humanos y agentes están trabajando juntos en el mismo tablero hacia el mismo objetivo. Y con este tablero como un sumidero en su lugar, ahora permitimos que Morphix se ejecute en paralelo extrayendo múltiples archivos simultáneamente. Así que veamos cómo podemos extraer un solo archivo, un solo bloque del monolito. Simplemente vamos a Claude, por supuesto, y le decimos hola, Claude, por favor saca este archivo del monolito. Y como dijimos, también queremos convertirlo a TypeScript. Así es como se veía el prompt, como una línea única.
Comments