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
Creada por Milena Godau (AWS) y Pedro Garcia () AWS
Repositorio de código: Angular Micro-frontend Portal | Entorno: PoC o piloto | Tecnologías: aplicaciones web y móviles; infraestructura; redes; modernización |
Carga de trabajo: código abierto | AWSservicios: AWS Amplify; AWS CLI |
Resumen
Una arquitectura de microinterfaz permite a varios equipos trabajar en diferentes partes de una aplicación de interfaz de forma independiente. Cada equipo puede desarrollar, crear e implementar un fragmento de la interfaz 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.
Este documento describe cómo crear una arquitectura de microinterfaz mediante AWS Amplify
El portal está dividido verticalmente. Esto significa que las microinterfaces son vistas completas o grupos de vistas, en lugar de partes de la misma vista. Por lo tanto, la aplicación shell carga solo una microinterfaz a la vez.
Las microinterfaces se implementan como módulos remotos. La aplicación shell carga estos módulos remotos de forma lenta, lo que aplaza la inicialización de la microinterfaz hasta que sea necesaria. Este enfoque optimiza el rendimiento de la aplicación al cargar solo los módulos necesarios. Esto reduce el tiempo de carga inicial y mejora la experiencia general del usuario. Además, compartes 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 empaquetado.
Requisitos previos y limitaciones
Requisitos previos
Un activo Cuenta de AWS
Permisos de uso AWS Amplify
Familiaridad con Angular
Versiones de producto
Angular, CLI versión 13.1.2 o posterior
@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 microinterfaz 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 las interfaces monolíticas. Organizar múltiples microinterfaces, gestionar la comunicación entre ellas y gestionar las dependencias compartidas puede resultar más complejo. Además, puede haber una sobrecarga de rendimiento asociada a la comunicación entre las microinterfaces. 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 microinterfaz 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 microinterfaces 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 microinterfaces puede ser más complejo que probar interfaces monolíticas. Se requieren esfuerzos adicionales y estrategias de prueba especializadas para realizar pruebas y ensayos de integración entre componentes y end-to-end 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 microinterfaz, cada equipo desarrolla e implementa las funciones de forma independiente. La siguiente imagen muestra cómo varios DevOps equipos trabajan juntos. El equipo del portal desarrolla la aplicación shell. La aplicación shell 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 shell. La aplicación shell organiza la integración y la renderización de las microinterfaces para componer todo el portal.
Los equipos A y B desarrollan y mantienen una o más microinterfaces o funciones que están integradas en el portal. Cada equipo puede trabajar de forma independiente en sus respectivas microinterfaces.
El usuario final se autentica mediante Amazon Cognito.
El usuario final accede al portal y se carga la aplicación shell. A medida que el usuario navega, la aplicación shell se encarga del enrutamiento y recupera la microinterfaz solicitada y carga su paquete.
Herramientas
Servicios de AWS
AWS Amplify
es un conjunto de herramientas y funciones especialmente diseñadas que ayudan a los desarrolladores de frontend, web y móvil a crear rápidamente aplicaciones completas. AWS En este patrón, se utiliza Amplify CLI para implementar las aplicaciones de microinterfaz de Amplify. AWS Command Line Interface (AWS CLI) es una herramienta de código abierto que le ayuda a interactuar Servicios de AWS mediante los comandos de su 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 probables. 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
le ayuda a cargar código que se compila e implementa de forma independiente, como microinterfaces o complementos, en una aplicación.
Repositorio de código
El código de este patrón está disponible en el portal de microfrontend utilizando los repositorios Angular
shell-app
contiene el código de la aplicación shell.feature1-app
contiene un ejemplo de microinterfaz. La aplicación shell busca esta microinterfaz y la muestra como una página dentro de la aplicación del portal.
Prácticas recomendadas
Las arquitecturas de microinterfaz ofrecen numerosas ventajas, pero también introducen complejidad. Las siguientes son algunas de las mejores prácticas 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 todas las microinterfaces 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 las microinterfaces evolucionan de forma independiente, adopta contratos y estrategias de control de versiones estandarizados para gestionar las dependencias de forma eficaz y evitar problemas de compatibilidad.
Arquitectura de microinterfaz: para permitir el desarrollo y la implementación independientes, cada microinterfaz 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, incluidos APIs 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 las microinterfaces. Esto mejora la calidad general, reduce el esfuerzo de realizar pruebas manuales y valida la funcionalidad entre las interacciones entre las microinterfaces.
Optimización del rendimiento: supervise continuamente las métricas de rendimiento y realice un seguimiento de las dependencias entre las microinterfaces. Esto le 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: céntrese en la experiencia del desarrollador proporcionando documentación, herramientas y ejemplos claros. Esto le ayuda a agilizar el desarrollo e incorporar nuevos miembros al equipo.
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Cree la aplicación shell. |
| Desarrollador de aplicaciones |
Instale el complemento. | En AngularCLI, ingresa el siguiente comando para instalar el complemento @angular -architects/module-federation
| Desarrollador de aplicaciones |
Añada la microinterfaz como variable de entorno. URL |
| Desarrollador de aplicaciones |
Defina el enrutamiento. |
| Desarrollador de aplicaciones |
|
| Desarrollador de aplicaciones |
Prepare la precarga para la microinterfaz. | La precarga de la microinterfaz ayuda al paquete web a negociar adecuadamente las bibliotecas y paquetes compartidos.
| Desarrollador de aplicaciones |
Ajusta el contenidoHTML. |
| Desarrollador de aplicaciones |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Crea la microinterfaz. |
| 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 |
|
| Desarrollador de aplicaciones |
Edite el archivo webpack.config.js. |
| Desarrollador de aplicaciones |
HTMLAjusta el contenido. |
| Desarrollador de aplicaciones |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Ejecute la |
| Desarrollador de aplicaciones |
Ejecute la aplicación shell. |
| Desarrollador de aplicaciones |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Cree un módulo y un componente. | En la carpeta raíz de la aplicación shell, introduzca los siguientes comandos para crear un módulo y un componente para una página de errores:
| Desarrollador de aplicaciones |
Ajusta el HTML contenido. |
| Desarrollador de aplicaciones |
Establezca la ruta de enrutamiento predeterminada. |
| Desarrollador de aplicaciones |
Cree una función para cargar microinterfaces. |
| Desarrollador de aplicaciones |
Pruebe la gestión de errores. |
| Desarrollador de aplicaciones |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Implemente la microinterfaz. |
| Desarrollador de aplicaciones, AWS DevOps |
Implemente la aplicación shell. |
| Desarrollador de aplicaciones, propietario de la aplicación |
HabilitarCORS. | Como las aplicaciones shell y microfrontend se alojan de forma independiente en dominios diferentes, debe habilitar el intercambio de recursos entre orígenes (CORS) en la microinterfaz. Esto permite que la aplicación shell cargue el contenido desde un origen diferente. Para activarloCORS, añada encabezados personalizados.
| Desarrollador de aplicaciones, AWS DevOps |
Cree una regla de reescritura en la aplicación shell. | 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 actual. URL Esto genera un error 403. Para evitarlo, añada una regla de reescritura en la consola 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 shell y microfrontend, elimínelas. Esto ayuda a evitar que se te cobre por los recursos que no utilizas.
| General AWS |
Resolución de problemas
Problema | Solución |
---|---|
No hay ningún AWS perfil disponible al ejecutar el | 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 shell, asegúrese de que la |
Error 404 al acceder a la microinterfaz | Si recibes un error 404 al intentar acceder a la microinterfaz local, por ejemplo, at
|
Información adicional
AWS documentación
Comprensión e implementación de las microinterfaces en AWS(orientaciónAWS prescriptiva)
Amplify
(documentación de CLI Amplify) Amplify Hosting (documentación de Amplify)
Otras referencias