|
7 | 7 |
|
8 | 8 | Uma **infraestrutura de TI** (Tecnologia da Informação) é o conjunto de recursos físicos, lógicos e organizacionais que sustentam o funcionamento dos sistemas tecnológicos de uma empresa, possibilitando o armazenamento, processamento e comunicação de dados. Em outras palavras, é tudo o que dá suporte às operações digitais, desde o hardware até os serviços e políticas que garantem a disponibilidade e segurança da informação. |
9 | 9 |
|
| 10 | +Todos os recursos da AWS serão provisionados via CDK, o que significa que em questão de minutos você terá uma infraestrutura confiável, pronta para produção e escalável implantada na sua conta AWS, permitindo que suas equipes escalem de forma independente e entreguem iterações rápidas de negócio. |
| 11 | + |
10 | 12 | Sem dúvidas, ela é uma etapa muito importante quando estamos desenvolvendo System Design, sempre temos que alinhar com a infraestrutura do nosso sistema. |
11 | 13 |
|
12 | 14 | Ela é composta basicamente por quatro camadas principais: |
@@ -255,6 +257,60 @@ Utilizando CI/CD Pipeline: Realizando testes unitários + fazendo build para ger |
255 | 257 | </table> |
256 | 258 |
|
257 | 259 | ## [AWS] Microfrontends Deployment |
| 260 | +Uma visão geral de alto nível de uma arquitetura AWS sem servidor de fato para hospedagem e implantação de micro-frontends mono-repositórios baseados no plugin Module Federation Webpack: |
| 261 | + |
| 262 | + |
| 263 | + |
| 264 | +A arquitetura consiste em 3 partes principais: |
| 265 | + |
| 266 | +1. Mudanças no código mono-repositório acionando pipelines específicos de implantação. |
| 267 | +2. Pipelines de implantação criando e implantando artefatos em bundles para direcionar recursos da AWS. |
| 268 | +3. Infraestrutura de hospedagem globalmente escalável, adaptada para micro-frontends do lado do cliente. |
| 269 | + |
| 270 | +<img width="226" height="276" align="right" src="https://github.com/user-attachments/assets/17cf97ef-e835-43aa-8317-ee8e7a80a1c5" /> |
| 271 | + |
| 272 | +Um pouco sobre a configuração do Mono-repositório: Micro-frontends fazem parte de uma configuração mono-repositório, ou seja, um único repositório com subpastas incluindo aplicativos web independentes, colados juntos pelo plugin Webpack Module Federation e Lerna. Um vislumbre da estrutura dos repositórios pode ser visto abaixo: |
| 273 | + |
| 274 | +Se você for impaciente, pode ver como as micro-frontends são representadas por sistemas de Federação de Módulos na ideia abaixo, que será discutida em detalhes em um futuro próximo. |
| 275 | + |
| 276 | +Resumindo, o código acima nos permite modelar micro-frontends como sistemas que podem ser carregados preguiçosamente como componentes Web no seu app. O truque é injetar dinamicamente cada script de micro-frontend na página do app para que possam ser carregados remotamente pelo app host/shell. Como dito, mais novidades virão no próximo artigo. Por enquanto, vamos analisar as 3 subarquiteturas mencionadas anteriormente. |
| 277 | + |
| 278 | +Gatilhos mono-repositório: O objetivo dessa primeira etapa é capturar mudanças individuais de micro-frontend repositórios e acioná-las para uso posterior por componentes sem servidor. |
| 279 | + |
| 280 | + |
| 281 | + |
| 282 | +Desenvolvedores enviam as mudanças para seu micro-frontend pertencente via Github, embora o mesmo possa ser feito em outras plataformas de versionamento bem conhecidas, como o BitBucket. Por meio de um webhook do Github, as alterações são feitas por uma função Lambda exposta como uma API Restful via um ApiGateway. O principal objetivo do Lambda é associar a mudança de código micro-frontend ao pipeline de destino. Um guia manual dessa abordagem pode ser apreciado aqui, enquanto sua implementação no CDK fará parte do próximo artigo. |
| 283 | + |
| 284 | +Pipeline de implantação |
| 285 | +O objetivo da segunda etapa é garantir que as mudanças individuais no repositório micro-frontend acionem pipelines de código individuais. Isso incentiva a independência da equipe, pois se apenas um micro-frontend for modificado (por exemplo: mfe-app1), queremos acionar apenas seu pipeline relacionado, e não todos os outros. |
| 286 | + |
| 287 | +<img width="656" height="592" alt="https___cdn-images-1 medium com_max_2000_1_vQTICQ0SDtJg4VKNL4PAeg" src="https://github.com/user-attachments/assets/0ed00040-b396-4e51-8048-5468efb898ad" /> |
| 288 | + |
| 289 | +Uma vez que uma alteração de código é associada, um AWS Code Pipeline é iniciado. Isso inclui quatro etapas principais: |
| 290 | + |
| 291 | +O próprio Code Pipeline, que gerencia a conexão do GitHub e busca o código-fonte associado do GitHub |
| 292 | + |
| 293 | +O Code Build, que constrói o código-fonte receptor em um artefato de build. Como micro-frontends são baseados em JavaScript, eles vão aproveitar o yarn para construí-los em um conjunto de bundles a serem usados na próxima etapa. |
| 294 | + |
| 295 | +O Código Implantado. Essa etapa pega os arquivos agrupados construídos das etapas anteriores e os implanta em um único Serviço de Armazenamento Simples (S3). Cada micro-frontend será armazenado em uma "pasta" (ou chave) independente, para que possam ser implantados individualmente. |
| 296 | + |
| 297 | +A invalidação do cache da construção do código. A última etapa é mais uma etapa de Construção de Código, que garante que o cache do CloudFront seja invalidado toda vez que publicamos e implantamos novos artefatos no S3. |
| 298 | + |
| 299 | +Infraestrutura de hospedagem |
| 300 | +Por último, mas não menos importante, recursos fundamentais da AWS precisam ser provisionados. O objetivo dessa última etapa é garantir que isso aconteça com uma arquitetura escalável, simples, mas inteligente e confiável. |
| 301 | + |
| 302 | + |
| 303 | + |
| 304 | +Com a subarquitetura acima, os usuários finais acessarão a aplicação web por meio de uma distribuição CloudFront protegida por WAF, já que as micro-frontends são aplicações otimizadas para o cliente. O CloudFront se conecta ao bucket privado S3 via uma identidade OAI, garantindo que os dados sejam acessíveis publicamente apenas via CDN e não diretamente do bucket. O CloudFront utiliza uma função Lambda@Edge para despachar corretamente para diferentes origens vindas do único balde. |
| 305 | + |
| 306 | +CDK para governar todos eles |
| 307 | +Tudo acima será provisionado por meio de uma aplicação CDK que inclui três stacks: |
| 308 | + |
| 309 | +A pilha da fundação. Isso prevê os recursos fundamentais da AWS usados para hospedar o app, incluindo o bucket S3, uma função Lambda@Edge, uma distribuição CloudFront e várias políticas, funções e OAI de IAM para apoiar a privacidade e segurança corretas. |
| 310 | + |
| 311 | +A segunda pilha é implícita porque é criada ao provisionar a função Lambda@Edge via a API Experimental CloudFront CDK, já que precisa implantar o Lambda@Edge em uma região AWS específica (us-east-1 é usado por padrão para todas as funções de borda). |
| 312 | + |
| 313 | +A pilha implantação ci/cd. Sua função é provisionar todos os recursos AWS associados ao ApiGateway e ao Code Pipeline. |
258 | 314 |
|
259 | 315 | ## [AWS] Blue-Green Deployment |
260 | 316 | <table> |
|
0 commit comments