As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Crie um portal para microfrontends usando Angular e AWS Amplify Module Federation
Criado por Milena Godau (AWS) e Pedro Garcia () AWS
Repositório de código: Angular Micro-Frontend Portal | Ambiente: PoC ou piloto | Tecnologias: aplicativos web e móveis; infraestrutura; rede; modernização |
Workload: código aberto | AWSserviços: AWS Amplify; AWS CLI |
Resumo
Uma arquitetura de microfront-end permite que várias equipes trabalhem em diferentes partes de um aplicativo de front-end de forma independente. Cada equipe pode desenvolver, criar e implantar um fragmento do front-end sem interferir em outras partes do aplicativo. Do ponto de vista do usuário final, parece ser um aplicativo único e coeso. No entanto, eles estão interagindo com vários aplicativos independentes publicados por equipes diferentes.
Este documento descreve como criar uma arquitetura de micro-frontend usando AWS Amplify
O portal está dividido verticalmente. Isso significa que os microfront-ends são visualizações inteiras ou grupos de visualizações, em vez de partes da mesma visualização. Portanto, o aplicativo shell carrega apenas um micro-frontend por vez.
Os microfront-ends são implementados como módulos remotos. O aplicativo shell carrega lentamente esses módulos remotos, o que adia a inicialização do microfrontend até que seja necessária. Essa abordagem otimiza o desempenho do aplicativo carregando somente os módulos necessários. Isso reduz o tempo de carregamento inicial e melhora a experiência geral do usuário. Além disso, você compartilha dependências comuns entre os módulos por meio do arquivo de configuração do webpack (webpack.config.js). Essa prática promove a reutilização de código, reduz a duplicação e simplifica o processo de agrupamento.
Pré-requisitos e limitações
Pré-requisitos
Um ativo Conta da AWS
AngularCLI, instalado
Permissões de uso AWS Amplify
Familiaridade com o Angular
Versões do produto
Angular CLI versão 13.1.2 ou posterior
@angular -architects/module-federation versão 14.0.1 ou posterior
webpack versão 5.4.0 ou posterior
AWS Amplify Geração 1
Limitações
Uma arquitetura de microfrontend é uma abordagem poderosa para criar aplicativos web escaláveis e resilientes. No entanto, é fundamental entender os seguintes desafios em potencial antes de adotar essa abordagem:
Integração — Um dos principais desafios é o aumento potencial da complexidade em comparação com front-ends monolíticos. Orquestrar vários microfront-ends, lidar com a comunicação entre eles e gerenciar dependências compartilhadas pode ser mais complexo. Além disso, pode haver uma sobrecarga de desempenho associada à comunicação entre os microfront-ends. Essa comunicação pode aumentar a latência e reduzir o desempenho. Isso precisa ser resolvido por meio de mecanismos eficientes de mensagens e estratégias de compartilhamento de dados.
Duplicação de código — Como cada microfrontend é desenvolvido de forma independente, existe o risco de duplicar o código para funcionalidades comuns ou bibliotecas compartilhadas. Isso pode aumentar o tamanho geral do aplicativo e introduzir desafios de manutenção.
Coordenação e gerenciamento — Coordenar os processos de desenvolvimento e implantação em vários microfront-ends pode ser um desafio. Garantir o controle de versão consistente, o gerenciamento de dependências e a manutenção da compatibilidade entre os componentes se torna mais importante em uma arquitetura distribuída. Estabelecer uma governança clara, diretrizes e pipelines automatizados de teste e implantação é essencial para uma colaboração e entrega perfeitas.
Teste — Testar arquiteturas de microfront-end pode ser mais complexo do que testar front-ends monolíticos. Isso requer esforço adicional e estratégias de teste especializadas para realizar testes e end-to-end testes de integração entre componentes e validar experiências de usuário consistentes em vários microfront-ends.
Antes de se comprometer com a abordagem de microfrontend, recomendamos que você analise Compreendendo e implementando microfrontends em. AWS
Arquitetura
Em uma arquitetura de microfrontend, cada equipe desenvolve e implanta recursos de forma independente. A imagem a seguir mostra como várias DevOps equipes trabalham juntas. A equipe do portal desenvolve o aplicativo shell. O aplicativo shell atua como um contêiner. Ele recupera, exibe e integra os aplicativos de microfront-end publicados por outras equipes. DevOps Você usa AWS Amplify para publicar o aplicativo shell e os aplicativos de microfrontend.
O diagrama da arquitetura mostra o seguinte fluxo de trabalho:
A equipe do portal desenvolve e mantém o aplicativo shell. O aplicativo shell orquestra a integração e a renderização dos microfront-ends para compor o portal geral.
As equipes A e B desenvolvem e mantêm um ou mais microfront-ends ou recursos integrados ao portal. Cada equipe pode trabalhar de forma independente em seus respectivos microfront-ends.
O usuário final se autentica usando o Amazon Cognito.
O usuário final acessa o portal e o aplicativo shell é carregado. Conforme o usuário navega, o aplicativo shell lida com o roteamento e recupera o micro-frontend solicitado, carregando seu pacote.
Ferramentas
Serviços da AWS
AWS Amplify
é um conjunto de ferramentas e recursos específicos que ajudam desenvolvedores front-end da Web e de dispositivos móveis a criar rapidamente aplicativos completos em. AWS Nesse padrão, você usa o Amplify CLI para implantar os aplicativos de micro-frontend do Amplify. AWS Command Line Interface (AWS CLI) é uma ferramenta de código aberto que ajuda você a interagir Serviços da AWS por meio de comandos em seu shell de linha de comando.
Outras ferramentas
@angular -architects/module-federation
é um plugin que integra o Angular com o Module Federation. O Angular
é uma estrutura de aplicativos web de código aberto para criar aplicativos de página única modernos, escaláveis e testáveis. Ele segue uma arquitetura modular e baseada em componentes que promove a reutilização e a manutenção do código. O Node.js
é um ambiente de JavaScript tempo de execução orientado a eventos projetado para criar aplicativos de rede escaláveis. O npm
é um registro de software executado em um ambiente Node.js e usado para compartilhar ou emprestar pacotes e gerenciar a implantação de pacotes privados. O Webpack Module Federation
ajuda você a carregar código compilado e implantado de forma independente, como microfront-ends ou plug-ins, em um aplicativo.
Repositório de código
O código desse padrão está disponível no portal Micro-frontend usando o repositório Angular e Module Federation
shell-app
contém o código para o aplicativo shell.feature1-app
contém uma amostra de micro-frontend. O aplicativo shell busca esse micro-frontend e o exibe como uma página dentro do aplicativo do portal.
Práticas recomendadas
As arquiteturas de microfront-end oferecem inúmeras vantagens, mas também introduzem complexidade. A seguir estão algumas das melhores práticas para um desenvolvimento tranquilo, código de alta qualidade e uma ótima experiência do usuário:
Planejamento e comunicação — Para agilizar a colaboração, invista em planejamento antecipado, design e canais de comunicação claros.
Consistência do design — aplique um estilo visual consistente em microfront-ends usando sistemas de design, guias de estilo e bibliotecas de componentes. Isso proporciona uma experiência de usuário coesa e acelera o desenvolvimento.
Gerenciamento de dependências — Como os microfrontends evoluem de forma independente, adote contratos padronizados e estratégias de controle de versão para gerenciar dependências de forma eficaz e evitar problemas de compatibilidade.
Arquitetura de microfrontend — Para permitir o desenvolvimento e a implantação independentes, cada microfrontend deve ter uma responsabilidade clara e bem definida por uma funcionalidade encapsulada.
Integração e comunicação — Para facilitar a integração e minimizar conflitos, defina contratos e protocolos de comunicação claros entre microfront-endsAPIs, incluindo eventos e modelos de dados compartilhados.
Teste e garantia de qualidade — Implemente pipelines de automação de testes e integração contínua para microfront-ends. Isso melhora a qualidade geral, reduz o esforço de teste manual e valida a funcionalidade entre as interações de microfront-end.
Otimização de desempenho — monitore continuamente as métricas de desempenho e acompanhe as dependências entre microfront-ends. Isso ajuda você a identificar gargalos e manter o desempenho ideal do aplicativo. Use ferramentas de monitoramento de desempenho e análise de dependências para essa finalidade.
Experiência do desenvolvedor — Concentre-se na experiência do desenvolvedor fornecendo documentação, ferramentas e exemplos claros. Isso ajuda você a otimizar o desenvolvimento e integrar novos membros da equipe.
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Crie o aplicativo shell. |
| Desenvolvedor de aplicativos |
Instale o plug-in . | No AngularCLI, insira o seguinte comando para instalar o plug-in @angular -architects/module-federation
| Desenvolvedor de aplicativos |
Adicione o microfrontend URL como uma variável de ambiente. |
| Desenvolvedor de aplicativos |
Defina o roteamento. |
| Desenvolvedor de aplicativos |
Declare o |
| Desenvolvedor de aplicativos |
Prepare o pré-carregamento para o micro-frontend. | O pré-carregamento do micro-frontend ajuda o webpack a negociar adequadamente as bibliotecas e pacotes compartilhados.
| Desenvolvedor de aplicativos |
Ajuste o HTML conteúdo. |
| Desenvolvedor de aplicativos |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Crie o microfrontend. |
| Desenvolvedor de aplicativos |
Instale o plug-in . | Digite o comando a seguir para instalar o plug-in @angular -architects/module-federation:
| Desenvolvedor de aplicativos |
Crie um módulo e um componente. | Insira os seguintes comandos para criar um módulo e um componente e exportá-los como módulo de entrada remota:
| Desenvolvedor de aplicativos |
Defina o caminho de roteamento padrão. |
| Desenvolvedor de aplicativos |
Adicione a |
| Desenvolvedor de aplicativos |
Edite o arquivo webpack.config.js. |
| Desenvolvedor de aplicativos |
Ajuste o HTML conteúdo. |
| Desenvolvedor de aplicativos |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Execute o |
| Desenvolvedor de aplicativos |
Execute o aplicativo shell. |
| Desenvolvedor de aplicativos |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Crie um módulo e um componente. | Na pasta raiz do aplicativo shell, insira os seguintes comandos para criar um módulo e um componente para uma página de erro:
| Desenvolvedor de aplicativos |
Ajuste o HTML conteúdo. |
| Desenvolvedor de aplicativos |
Defina o caminho de roteamento padrão. |
| Desenvolvedor de aplicativos |
Crie uma função para carregar microfrontends. |
| Desenvolvedor de aplicativos |
Teste o tratamento de erros. |
| Desenvolvedor de aplicativos |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Implante o microfrontend. |
| Desenvolvedor de aplicativos, AWS DevOps |
Implante o aplicativo shell. |
| Desenvolvedor do aplicativo, proprietário do aplicativo |
HabilitarCORS. | Como os aplicativos shell e microfrontend são hospedados de forma independente em domínios diferentes, você deve habilitar o compartilhamento de recursos de origem cruzada (CORS) no microfrontend. Isso permite que o aplicativo shell carregue o conteúdo de uma origem diferente. Para habilitarCORS, você adiciona cabeçalhos personalizados.
| Desenvolvedor de aplicativos, AWS DevOps |
Crie uma regra de reescrita no aplicativo shell. | O aplicativo Angular shell está configurado para usar HTML5 roteamento. Se o usuário fizer uma atualização forçada, o Amplify tentará carregar uma página a partir da atual. URL Isso gera um erro 403. Para evitar isso, você adiciona uma regra de reescrita no console do Amplify. Para criar a regra de regravação, siga estas etapas:
| Desenvolvedor de aplicativos, AWS DevOps |
Teste o portal da web. |
| Desenvolvedor de aplicativos |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Exclua os aplicativos. | Se você não precisar mais do shell e dos aplicativos de microfrontend, exclua-os. Isso ajuda a evitar cobranças por recursos que você não está usando.
| Geral AWS |
Solução de problemas
Problema | Solução |
---|---|
Nenhum AWS perfil disponível ao executar o | Se você não tiver um AWS perfil configurado, ainda poderá continuar com o Como alternativa, você pode configurar um perfil nomeado para AWS CLI o. Para obter instruções, consulte Configurações e configurações do arquivo de credenciais na AWS CLI documentação. |
Erro ao carregar entradas remotas | Se você encontrar um erro ao carregar as entradas remotas no arquivo main.ts do aplicativo shell, verifique se a |
Erro 404 ao acessar o micro-frontend | Se você receber um erro 404 ao tentar acessar o micro-frontend local, como em
|
Mais informações
AWS documentação
Compreendendo e implementando microfront-ends em AWS(orientaçãoAWS prescritiva)
Amplify
(documentação do CLI Amplify) Amplify Hosting (documentação do Amplify)
Outras referências