Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Cree un portal para microinterfaces mediante Angular AWS Amplify y Module Federation
Milena Godau y Pedro Garcia, Amazon Web Services
Resumen
Una arquitectura de micro-frontend permite a varios equipos trabajar en diferentes partes de una aplicación de frontend de forma independiente. Cada equipo puede desarrollar, crear e implementar un fragmento del frontend sin interferir con otras partes de la aplicación. Desde la perspectiva del usuario final, parece ser una aplicación única y cohesiva. Sin embargo, están interactuando con varias aplicaciones independientes publicadas por diferentes equipos.
En este documento se describe cómo crear una arquitectura de micro-frontend mediante el uso de AWS Amplify
El portal está dividido verticalmente. Esto significa que los micro-frontends son vistas completas o grupos de vistas, en lugar de partes de la misma vista. Por lo tanto, la aplicación de intérprete de comandos carga solo un micro-frontend cada vez.
Los micro-frontends se implementan como módulos remotos. La aplicación de intérprete de comandos carga estos módulos remotos de forma lenta, lo que aplaza la inicialización del micro-frontend hasta que sea necesaria. Este enfoque optimiza el rendimiento de la aplicación al cargar solo los módulos necesarios. Esto reducirá el tiempo de carga inicial y mejorará la experiencia general del usuario. Además, comparte dependencias comunes entre los módulos a través del archivo de configuración del paquete web (webpack.config.js). Esta práctica promueve la reutilización del código, reduce la duplicación y agiliza el proceso de agrupación.
Requisitos previos y limitaciones
Requisitos previos
Un activo Cuenta de AWS
Node.js y npm instalados
. CLI de Amplify instalada
CLI de Angular instalada
Permisos de uso AWS Amplify
Familiaridad con Angular
Versiones de producto
Versión 13.1.2 o posterior de la CLI de Angular
@angular-architects/module-federation versión 14.0.1 o posterior
webpack versión 5.4.0 o posterior
AWS Amplify Generación 1
Limitaciones
Una arquitectura de micro-frontend es un enfoque poderoso para crear aplicaciones web escalables y resilientes. Sin embargo, es fundamental comprender los siguientes desafíos potenciales antes de adoptar este enfoque:
Integración: uno de los principales desafíos es el posible aumento de la complejidad en comparación con los micro-frontends monolíticos. Organizar múltiples micro-frontends, gestionar la comunicación entre ellos y gestionar las dependencias compartidas puede resultar más complejo. Además, puede haber una sobrecarga de rendimiento asociada a la comunicación entre los micro-frontends. Esta comunicación puede aumentar la latencia y reducir el rendimiento. Esto debe abordarse mediante mecanismos de mensajería eficientes y estrategias de intercambio de datos.
Duplicación de código: dado que cada micro-frontend se desarrolla de forma independiente, existe el riesgo de duplicar el código para funciones comunes o bibliotecas compartidas. Esto puede aumentar el tamaño total de la aplicación e introducir problemas de mantenimiento.
Coordinación y administración: coordinar los procesos de desarrollo e implementación en múltiples micro-frontends puede ser un desafío. Garantizar un control de versiones uniforme, gestionar las dependencias y mantener la compatibilidad entre los componentes se vuelve más fundamental en una arquitectura distribuida. Establecer una gobernanza clara, directrices y procesos automatizados de pruebas e implementación es esencial para una colaboración y una entrega fluidas.
Pruebas: probar arquitecturas de micro-frontends puede ser más complejo que probar micro-frontends monolíticos. Se requieren esfuerzos adicionales y estrategias de prueba especializadas para realizar end-to-end pruebas y ensayos de integración entre componentes y para validar experiencias de usuario consistentes en múltiples microinterfaces.
Antes de decidirse por el enfoque de las microinterfaces, le recomendamos que consulte Cómo entender e implementar las microinterfaces en. AWS
Arquitectura
En una arquitectura de micro-frontend, cada equipo desarrolla e implementa las características de forma independiente. La siguiente imagen muestra cómo trabajan juntos varios DevOps equipos. El equipo del portal desarrolla la aplicación de intérprete de comandos. La aplicación de intérprete de comandos actúa como contenedor. Recupera, muestra e integra las aplicaciones de microinterfaz publicadas por otros equipos. DevOps Se utiliza AWS Amplify para publicar la aplicación shell y las aplicaciones de microinterfaz.

El diagrama de la arquitectura muestra el flujo de trabajo siguiente:
El equipo del portal desarrolla y mantiene la aplicación de intérprete de comandos. La aplicación de intérprete de comandos organiza la integración y el renderizado de los micro-frontends para componer todo el portal.
Los equipos A y B desarrollan y mantienen uno o más micro-frontends o características que se integran en el portal. Cada equipo puede trabajar de forma independiente en sus respectivos micro-frontends.
El usuario final se autentica mediante Amazon Cognito.
El usuario final accede al portal y se carga la aplicación de intérprete de comandos. A medida que el usuario navega, la aplicación de intérprete de comandos se encarga del enrutamiento y recupera el micro-frontend solicitado y carga su paquete.
Tools (Herramientas)
Servicios de AWS
AWS Amplify
es un conjunto de herramientas y funciones especialmente diseñadas que ayudan a los desarrolladores frontend, web y móvil a crear rápidamente aplicaciones completas. AWS En este patrón, se utiliza la CLI de Amplify para implementar las aplicaciones de micro-frontend de Amplify. AWS Command Line Interface (AWS CLI) es una herramienta de código abierto que te ayuda a interactuar Servicios de AWS mediante los comandos de tu consola de línea de comandos.
Otras herramientas
@angular-architects/module-federation
es un complemento que integra Angular con Module Federation. Angular
es un marco de aplicaciones web de código abierto para crear aplicaciones de una sola página modernas, escalables y comprobables. Sigue una arquitectura modular y basada en componentes que promueve la reutilización y el mantenimiento del código. Node.js
es un entorno de JavaScript ejecución basado en eventos diseñado para crear aplicaciones de red escalables. npm
es un registro de software que se ejecuta en un entorno Node.js y se utiliza para compartir o tomar prestados paquetes y administrar la implementación de paquetes privados. Webpack Module Federation
lo ayuda a cargar código que se compila e implementa de forma independiente, como micro-frontends o complementos, en una aplicación.
Repositorio de código
El código de este patrón está disponible en el portal Microfrontend utilizando Angular y
shell-appcontiene el código de la aplicación de intérprete de comandos.feature1-appcontiene un ejemplo de micro-frontend. La aplicación de intérprete de comandos busca este micro-frontend y lo muestra como una página dentro de la aplicación del portal.
Prácticas recomendadas
Las arquitecturas de micro-frontend ofrecen numerosas ventajas, pero también introducen complejidad. Las siguientes son algunas de las prácticas recomendadas para un desarrollo fluido, un código de alta calidad y una excelente experiencia de usuario:
Planificación y comunicación: para agilizar la colaboración, invierta en planificación, diseño y canales de comunicación claros desde el principio.
Coherencia en el diseño: aplique un estilo visual coherente en todos los micro-frontends mediante el uso de sistemas de diseño, guías de estilo y bibliotecas de componentes. Esto proporciona una experiencia de usuario coherente y acelera el desarrollo.
Gestión de las dependencias: dado que los micro-frontends evolucionan de forma independiente, adopte contratos y estrategias de control de versiones estandarizados para administrar las dependencias de forma eficaz y evitar problemas de compatibilidad.
Arquitectura de micro-frontend: para permitir el desarrollo y la implementación independientes, cada micro-frontend debe tener una responsabilidad clara y bien definida en relación con una funcionalidad encapsulada.
Integración y comunicación: para facilitar una integración fluida y minimizar los conflictos, defina contratos y protocolos de comunicación claros entre las microinterfaces APIs, incluidos los eventos y los modelos de datos compartidos.
Pruebas y control de calidad: implemente la automatización de las pruebas y los procesos de integración continua para los micro-frontends. Esto mejora la calidad general, reduce el esfuerzo de realizar pruebas manuales y valida la funcionalidad entre las interacciones de los micro-frontends.
Optimización del rendimiento: supervise continuamente las métricas de rendimiento y realice un seguimiento de las dependencias entre los micro-frontends. Esto lo ayuda a identificar los cuellos de botella y a mantener un rendimiento óptimo de las aplicaciones. Para ello, utilice herramientas de supervisión del rendimiento y análisis de dependencias.
Experiencia de desarrollador: para centrarse en la experiencia del desarrollador, proporcione documentación, herramientas y ejemplos claros. Esto lo ayuda a agilizar el desarrollo e incorporar nuevos miembros al equipo.
Epics
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Cree la aplicación de intérprete de comandos. |
| Desarrollador de aplicaciones |
Instale el complemento. | En la CLI de Angular, introduzca el siguiente comando para instalar el complemento @angular-architects/module-federation
| Desarrollador de aplicaciones |
Añada la URL del micro-frontend como variable de entorno. |
| Desarrollador de aplicaciones |
Defina el enrutamiento. |
| Desarrollador de aplicaciones |
Declare el módulo |
| Desarrollador de aplicaciones |
Prepare la precarga para el micro-frontend. | La precarga del micro-frontend ayuda al paquete web a negociar adecuadamente las bibliotecas y paquetes compartidos.
| Desarrollador de aplicaciones |
Ajuste el contenido HTML. |
| Desarrollador de aplicaciones |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Cree el micro-frontend. |
| Desarrollador de aplicaciones |
Instale el complemento. | Introduzca el siguiente comando para instalar el complemento @angular-architects/module-federation:
| Desarrollador de aplicaciones |
Cree un módulo y un componente. | Introduzca los siguientes comandos para crear un módulo y un componente y exportarlos como módulo de entrada remota:
| Desarrollador de aplicaciones |
Defina la ruta de enrutamiento predeterminada. |
| Desarrollador de aplicaciones |
Añada la ruta |
| Desarrollador de aplicaciones |
Edite el archivo webpack.config.js. |
| Desarrollador de aplicaciones |
Ajuste el contenido HTML. |
| Desarrollador de aplicaciones |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Ejecute la aplicación |
| Desarrollador de aplicaciones |
Ejecute la aplicación de intérprete de comandos. |
| Desarrollador de aplicaciones |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Cree un módulo y un componente. | En la carpeta raíz de la aplicación de intérprete de comandos, introduzca los siguientes comandos para crear un módulo y un componente para una página de errores:
| Desarrollador de aplicaciones |
Ajuste el contenido HTML. |
| Desarrollador de aplicaciones |
Defina la ruta de enrutamiento predeterminada. |
| Desarrollador de aplicaciones |
Cree una función para cargar micro-frontends. |
| Desarrollador de aplicaciones |
Pruebe la gestión de errores. |
| Desarrollador de aplicaciones |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Implemente el micro-frontend. |
| Desarrollador de aplicaciones, AWS DevOps |
Implemente la aplicación de intérprete de comandos. |
| Desarrollador de aplicaciones, propietario de la aplicación |
Habilite CORS. | Como las aplicaciones de intérprete de comandos y micro-frontend se alojan de forma independiente en dominios diferentes, debe habilitar el uso compartido de recursos entre orígenes (CORS) en el micro-frontend. Esto permite que la aplicación de intérprete de comandos cargue el contenido desde un origen diferente. Para habilitar CORS, añada encabezados personalizados.
| Desarrollador de aplicaciones, AWS DevOps |
Cree una regla de reescritura en la aplicación de intérprete de comandos. | La aplicación Angular shell está configurada para usar el HTML5 enrutamiento. Si el usuario realiza una actualización exhaustiva, Amplify intenta cargar una página desde la URL actual. Esto genera un error 403. Para evitarlo, añada una regla de reescritura en la consola de Amplify. Para crear la regla de reescritura, siga estos pasos:
| Desarrollador de aplicaciones, AWS DevOps |
Pruebe el portal web. |
| Desarrollador de aplicaciones |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Elimine las aplicaciones. | Si ya no necesita las aplicaciones de intérprete de comandos y micro-frontend, elimínelas. Esto ayudará a evitar cargos por recursos que no utiliza.
| AWS general |
Resolución de problemas
| Problema | Solución |
|---|---|
No hay ningún AWS perfil disponible al ejecutar el comando | Si no tiene un AWS perfil configurado, puede continuar con el Como alternativa, puede configurar un perfil con nombre para AWS CLI. Para obtener instrucciones, consulte los ajustes de configuración y del archivo de credenciales en la AWS CLI documentación. |
Error al cargar las entradas remotas | Si se produce un error al cargar las entradas remotas en el archivo main.ts de la aplicación de intérprete de comandos, asegúrese de que la variable |
Error 404 al acceder al micro-frontend. | Si recibe un error 404 al intentar acceder al micro-frontend local, por ejemplo, en
|
Información adicional
AWS documentación
Comprensión e implementación de las microinterfaces en AWS(orientaciónAWS prescriptiva)
CLI de Amplify
(documentación de Amplify) Alojamiento de Amplify (documentación de Amplify)
Otras referencias