Actualmente, Next.js utiliza cuatro o cinco compiladores de Webpack para hacer que todo esto funcione, uno para el cliente, para la representación del servidor, para la representación en el borde, para varios componentes y un compilador de respaldo para mensajes de error. Toda esta especie de trabajo de orquestación ligera entre estos compiladores no es tan fácil. Funciona más o menos, pero es una fuente de errores, donde puedes cometer errores o olvidar algo, o la comunicación no funciona correctamente, y eso no es algo que queramos que se nos obligue a hacer.
Por lo tanto, también hay algunos desafíos en el lado de WEPAC, WEPAC fue construido hace diez años, y todavía tiene la arquitectura de hace diez años, cuando las aplicaciones eran como cientos de módulos, y el desarrollo web ha crecido mucho en la última década, y sí, la arquitectura de WEPAC no fue realmente construida para este tipo de rendimiento de construcción incremental a gran escala. Eso es un problema, y no podemos solucionarlo fácilmente porque hay muchos complementos que dependen de la arquitectura de WEPAC, y es realmente difícil hacer cambios compatibles hacia atrás en la arquitectura, no podemos cambiar fácilmente la arquitectura y seguir siendo compatible hacia atrás. No queremos romper los casos de uso de todos cambiando la arquitectura de WEPAC, así que no es realmente una buena oportunidad para solucionarlo.
Por otro lado, hemos solucionado muchas cosas mientras trabajaba en Next.js en WEPAC para hacerlo más eficiente, pero teníamos un límite en el tipo de optimización que podíamos hacer sin reescribirlo todo. También hay otros desafíos como la invalidación de caché. En muchos casos, es demasiado sensible, por lo que si cambias algo, afecta, tiene que reconstruir una parte más grande de la aplicación, cuando probablemente no esté afectada. Por ejemplo, si cambias un comentario, ¿por qué tenemos que reconstruir el módulo? Podría ser más granular en lo que podemos almacenar en caché. Un problema de la arquitectura es este problema de costo de búsqueda de caché. Lo que hacemos al realizar una construcción incremental es básicamente comenzar de manera similar a una construcción completa, comenzar a construirlo y para cada trabajo que queremos hacer, primero verificamos si está en la caché, si ya está en caché, y luego podemos omitir ese trabajo, y eso suena genial, pero a esa escala, si buscas, como, 10,000 módulos de módulos en la caché, entonces tienes este serio costo de buscar cosas en la caché, y sí, eso es un problema.
Pero sí, estamos hablando de problemas de búsqueda cuando se trata de unos pocos segundos de reconstrucción. Si trabajas en el mundo nativo, sabrás que son tiempos incrementales de minutos o algo así. Sí, tenemos un problema realmente lujoso en el mundo del desarrollo web, ¡supongo! Pero también hubo algunas oportunidades que podríamos abordar mientras trabajamos en un nuevo Bundler. Entonces, en el mejor de los casos, tenemos esta herramienta llamada TurboRepo, y al combinar esto con Next.js, podemos muchas cosas de cada uno. Next.js tiene este almacenamiento en caché granular genial, como si cambias un módulo solo reconstruyes un módulo y algunas cosas de plantilla. Pero en la herramienta TurboRepo, siempre tienes esta granularidad de almacenamiento en caché de comandos completos. Y luego TurboRepo puede aprender de Next.js al tener un almacenamiento en caché más granular, pero también puede aprender al tener un modo de observación más enfocado en el desarrollo donde puedes tener este tipo de experiencia de observación-incremental-parte por defecto. Pero por otro lado, Next.js puede aprender de TurboRepo. TurboRepo tiene esta característica genial de almacenamiento en caché remoto, por lo que realmente puede compartir tu caché con tu equipo y se carga en la nube o es una solución de alojamiento propio. Y luego puedes compartir eso con tu equipo y no tienes que reconstruir lo que tus colegas ya han construido. Eso es genial. Queríamos tener eso en Next.js, como compartir caché con el equipo y compartir caché con la implementación para no tener que hacer todo el trabajo dos veces. Pero hay algunas nuevas oportunidades. He visto que muchos desarrolladores realmente quieren tener más información sobre el proceso de construcción. ¿Cuál es el tamaño de la página de componentes, cuál es el tamaño de las dependencias y cómo afectan las solicitudes de extracción al cambio de mi aplicación o al cambio de rendimiento de mi aplicación. Este tipo de información. Y queremos ofrecer más de estos tipos. También relacionado con el rendimiento de construcción, estadísticas meta, por qué mi construcción es lenta o cómo afecta mi tiempo de construcción, este tipo de estadísticas.
Comments