Tabla de contenido
PalancaPrefacio
Las grandes arquitecturas son un desafío común en el mundo del desarrollo de software, pero el término a menudo se define de manera vaga. ¿Qué es grande? ¿Se refiere a un proyecto de desarrollo front-end con más de 100 personas participando? ¿O te refieres a un gran proyecto con más de mil páginas? ¿O se trata de un proyecto inicial en el que participan departamentos multinacionales? De hecho, cada uno tiene una comprensión diferente de los proyectos a gran escala, pero es innegable que cuando la cantidad de código de programa continúa creciendo, los proyectos a gran escala de cualquier tipo se vuelven bastante difíciles de administrar.
En este artículo, exploraremos los desafíos de los proyectos a gran escala desde múltiples perspectivas e introduciremos un método para resolverlos, a saber, la arquitectura front-end a gran escala "Monorepo".
Retos de los grandes proyectos
1. Diversidad de tecnologías front-end
La diversidad de tecnologías front-end es un desafío común en grandes proyectos. Diferentes equipos pueden utilizar diferentes marcos y herramientas de front-end, como Vue.js, React.js, Jest, Cypress, etc. Esta diversidad hace que el mantenimiento de los proyectos consuma más tiempo, ya que requiere un aprendizaje continuo y una adaptación a diversas tecnologías.
2. Complejidad de la arquitectura front-end
Los proyectos grandes a menudo contienen cientos o incluso miles de componentes front-end dispersos en diferentes archivos con acoplamientos y dependencias complejos entre ellos. Esto dificulta la comprensión y modificación del código y aumenta el riesgo de errores.
3. Retos del trabajo en equipo
En proyectos grandes, a menudo hay varios equipos involucrados, cada uno de los cuales puede tener su propio estilo de codificación y preferencias técnicas. Esta diferencia puede generar problemas de comunicación y dificultar la colaboración entre diferentes equipos.
Arquitectura front-end a gran escala de Monorepo
Para resolver los desafíos anteriores, surgió la arquitectura front-end a gran escala de Monorepo. Monorepo es una estructura que gestiona de forma centralizada una gran cantidad de código de programa, a diferencia de los proyectos tradicionales separados. Su idea central es gestionar todo el código relacionado con el front-end en la misma base de código (repositorio). Las ventajas de esta arquitectura son que puede aumentar la reutilización del código, mejorar la transparencia del código, garantizar que todos los paquetes utilicen la misma versión y unificar el estilo de codificación. Además, Monorepo también facilita una comunicación más frecuente entre diferentes equipos.
Ventajas de Monorepo
- El programa es altamente reutilizable y puede evitar la duplicación innecesaria de trabajo.
- El código del programa es más transparente y más fácil de refactorizar y mantener.
- Todos los paquetes utilizan la misma versión, incluidas las pruebas y los perfiles.
- Todos los estilos de código son consistentes para reducir la confusión.
- Una comunicación más frecuente entre diferentes equipos contribuye a una mejor colaboración.
Desventajas de Monorepo
- Los permisos no se pueden configurar individualmente para algunos códigos, lo que puede causar problemas de seguridad.
- Cuando se trabaja en proyectos grandes, el rendimiento de Git puede verse afectado a medida que la base del código aumenta.
- Crear una aplicación puede llevar mucho tiempo, especialmente si el código base contiene una gran cantidad de código.
Cultura de Monorepo
El concepto de Monorepo no es nuevo. Tiene una larga trayectoria en el campo del desarrollo de software. Hace treinta años, FreeBSD utilizó un concepto similar y utilizó CVS como herramienta de control de versiones. Además, muchos proyectos de código abierto conocidos también han aplicado con éxito el concepto de Monorepo, como Laravel, Babel, React, Angular, Vue, etc. Estos proyectos se benefician de Monorepo, que permite que existan diferentes marcos de front-end en el mismo proyecto grande y permite compartir y reutilizar código.
¿Vale la pena invertir en Monorepo?
En resumen, Monorepo es una forma eficaz de resolver los desafíos de colaboración y gestión de código en proyectos grandes. Monorepo es una elección inteligente cuando es necesario compartir los mismos componentes entre varios sistemas y productos diferentes. Si bien poner en funcionamiento Monorepo puede requerir cierta inversión inicial, facilitará la colaboración futura y aumentará la reutilización del código.
Por supuesto, Monorepo no es una solución para todas las situaciones. En algunos casos, como cuando necesita establecer permisos en un código específico, su base de código es demasiado grande o el tiempo de compilación es crítico, es posible que desee considerar otras opciones. En última instancia, la elección de utilizar Monorepo debe basarse en las necesidades de su proyecto y la situación real de su equipo.
en conclusión
Monorepo es solo una herramienta, pero puede abordar eficazmente los desafíos que enfrentan los grandes proyectos. Podemos tener múltiples soluciones para diferentes problemas, y Monorepo, como marco moderno de colaboración y administración de código, continuará desarrollándose y ayudándonos a lidiar con problemas más complejos. Independientemente de si decide adoptar Monorepo, debe continuar aprendiendo y explorando nuevas herramientas y métodos para hacer frente al entorno de desarrollo de software en constante cambio.
Espero que este artículo te ayude a comprender mejor el concepto de Monorepo y te ayude a organizar y administrar mejor tu código en proyectos grandes. Si está considerando adoptar Monorepo, asegúrese de investigar y evaluar exhaustivamente su idoneidad y tomar una decisión informada basada en sus necesidades reales.
Si está interesado en otro contenido, también puede consultar los siguientes artículos:
¿Qué es Zustand? Reaccionar la gestión del estado front-end