Micro frontend: ¿Por qué?.
Si volvemos en los pasos hacia atrás en el desarrollo de aplicaciones web, el frontend y el backend no suelen evolucionar en paralelo… hasta hoy.
Creo que al día de hoy todos estamos familiarizados con los micro servicios en términos de back-end pero cuando hablamos de frontend la cosa se vuelve un poco más monótona o como nos gusta describirlo, más monolítica.
En su origen, una aplicación web no era más que un gran repositorio de código con toda la lógica de front y back empaquetada junta. A medida que las aplicaciones se hacían más complejas se optó por separar este gran paquete en dos.
El back-end rápidamente escala a un modelo de micro servicios: una arquitectura distribuida, modular y escalable que trae numerosos beneficios.
El front-end desarrolla su propia fórmula de componentes. Gracias a estos componentes la interfaz de usuario se divide en pequeños fragmentos que permiten la reutilización, aplicar principios de responsabilidad única y reducir la complejidad.
Sin embargo, los componentes no son equivalentes a los microservicios. Más allá de su modularidad en el fondo siguen siendo parte de un todo, no son entidades 100% independientes.
¿Por qué no dar ese salto y emular la arquitectura distribuida?
Micro frontend: ¿Qué es?
El término micro front-end empieza a sonar a finales de 2016. Y como toda novedad evoluciona por las fases típicas:
En el sitio Technology Radar de ThoughtWorks escuchamos estas distintas fases para micro frontend, desde la fase del “hype” como concepto teórico que hace bastante ruido, pasando por evaluaciones y pruebas piloto para verificar su viabilidad, hasta la fase final de adopción, ya en 2019, cuando hay una fuerte voluntad por parte de la industria y la comunidad en adoptar definitivamente esta técnica.
Pero entonces, ¿qué es?
La palabra micro frontend hace referencia un estilo o arquitectura, una forma de construir aplicaciones en el front, donde dividiremos la funcionalidad en sub-aplicaciones más pequeñas e independientes.
Bajo esta arquitectura, generaremos pequeñas sub-aplicaciones independientes centradas en una funcionalidad concreta, que serán consumidas finalmente por una o múltiples aplicaciones mayores.
Los objetivos de esta técnica son:
● Acabar con los monolitos o mono repositorios en front.
● Traer los beneficios de un sistema modular.
● Funcionalidad escalable.
● Permitir flujos y equipos de desarrollo totalmente autónomos.
● La posibilidad de implementar distintos frameworks para un mismo proyecto.
Hay múltiples aproximaciones e implementaciones posibles para conseguir los objetivos anteriormente vistos, por lo tanto es importante aclarar cierta confusión que todavía hay alrededor de este término:
● NO ES ninguna tecnología en concreto.
● NO ES un framework.
● NO ES un estándar.
Cada organización, siguiendo sus necesidades, ha explorado la forma de generar micro frontends con diversas tecnologías, Single-Spa, Open Components, Qiankun, entre otros. Se siguen probando diferentes aproximaciones hoy día y a fecha de este artículo, no podemos decir que haya un caballo ganador que decante claramente la balanza.
Está por ver si el futuro de los micro frontends será un estándar oficial o tecnología de facto, o por el contrario seguirá siendo una técnica con múltiples soluciones posibles.