SlideShare a Scribd company logo
1 of 47
introdução a
github.com/tresende
Thiago
Resend
e
github.com/tresende
instagram.com/tresende.js
thiagoresende.dev
Era uma vez
um projeto…
• Muitos contextos de negócios dentro do mesmo
projeto
Muitas pessoas trabalhando na mesma base de
código
Muitas branchs
Muitos pull requests
Problemas compartilhados
Precisamos de
mudar um botão
de lugar…
microfrontends
!==
microservices
Microfrontend A Microfrontend B
Microfrontend C
Micro frontends are a new pattern where web
application UIs (front ends) are composed
from semi-independent fragments that can be
built by different teams using different
technologies. Micro-frontend architectures
resemble back-end architectures where back
ends are composed from semi-independent
microservices
Micro frontends são um novo padrão onde UIs de
aplicações web (front-ends) são compostas de
fragmentos semi-independentes que podem ser
construídos por diferentes equipes usando diferentes
tecnologias. As arquiteturas de micro-front-end se
assemelham a arquiteturas de back-end em que os
back-ends são compostos de microsserviços semi-
independentes
Stacks
Deploys
Repos
1. Stack padrão ou
independente?
Deploy unificado ou
independente?
Repositórios unificados ou
independentes?
• Múltiplos runtimes, libs e código da
aplicação
Além do download bundle, todo o código
deve ser interpretado pelo navegador.
Re renders desnecessários
• Atualização de stacks
Componentes externos(gateway de
pagamentos, lib de componentes)
Unificação de features
Home
Contacts
About
BUNDLER index.html
styles.css
bundle.js
*.svg
Default Build
Manutenção
integrada
A otimização depende
muito da da resolução
das dependências
bundle.js
(Core Squad)
Microfront A
(Squad A)
Microfront B
(Sqaud B)
WebServer
Request: /checkout
WebApp
Browser
Main BUNDLER
index.html
main.js
styles.css
*.svg
About BUNDLER
about.css
about.js
Strandalone Build
• Ao realizar um build separado não é
possível realizar tree shaking
Você vai ter que optar ou em levar
código “repetido” ou levar uma lib
inteira, pois não vai saber o que um mf
pode usar
bundle.js
(Core Squad)
Microfront A
(Squad A)
Microfront B
(Sqaud B)
WebServer
Request: /checkout
WebApp
Browser
Module Federation
git clone moduleB
npm i moduleA
Monorepo
About
Home
Contacts
Multi/Polyrepo
About
Home
Contacts
Multi/Polyrepo
Home, About,
Contacts
bundle.js
(Core Squad)
Microfront A
(Squad A)
Microfront B
(Sqaud B)
WebServer
Request: /checkout
WebApp
Browser
Stacks
Deploys
Repos
Tá, mas eu não vou
fazer todo esse
gerenciamento na
mão né?
Module Federation
Single SPA
Lerna
NX
Turborepo
Demo

More Related Content

Similar to Introdução Microfrontend

Similar to Introdução Microfrontend (20)

2006 - Tipos de Projeto & IDE do Visual Studio.ppt
2006 - Tipos de Projeto & IDE do Visual Studio.ppt2006 - Tipos de Projeto & IDE do Visual Studio.ppt
2006 - Tipos de Projeto & IDE do Visual Studio.ppt
 
Go e Microserviços - Nascidos um para o outro
Go e Microserviços - Nascidos um para o outroGo e Microserviços - Nascidos um para o outro
Go e Microserviços - Nascidos um para o outro
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1
 
A Nova Web
A Nova WebA Nova Web
A Nova Web
 
Arquitetura em Microsserviços, melhores práticas e utilidades.
Arquitetura em Microsserviços, melhores práticas e utilidades.Arquitetura em Microsserviços, melhores práticas e utilidades.
Arquitetura em Microsserviços, melhores práticas e utilidades.
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Introdução ao desenvolvimento front end usando bootstrap e angular js
Introdução ao desenvolvimento front end usando bootstrap e angular jsIntrodução ao desenvolvimento front end usando bootstrap e angular js
Introdução ao desenvolvimento front end usando bootstrap e angular js
 
DDD – Domain Driven Design
DDD – Domain Driven DesignDDD – Domain Driven Design
DDD – Domain Driven Design
 
Palestra do TechEd : O Projeto Mono: Aplicações .NET para sistemas não Windows
Palestra do TechEd : O Projeto Mono: Aplicações .NET para sistemas não WindowsPalestra do TechEd : O Projeto Mono: Aplicações .NET para sistemas não Windows
Palestra do TechEd : O Projeto Mono: Aplicações .NET para sistemas não Windows
 
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
 
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / GoiâniaAzure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
 
Panorama Atual e Tendências do Desenvolvimento de Sistemas para Internet
Panorama Atual e Tendências do Desenvolvimento de Sistemas para InternetPanorama Atual e Tendências do Desenvolvimento de Sistemas para Internet
Panorama Atual e Tendências do Desenvolvimento de Sistemas para Internet
 
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
 
TDC2017 | POA Trilha Arquitetura - Desafios de se implantar uma arquitetura d...
TDC2017 | POA Trilha Arquitetura - Desafios de se implantar uma arquitetura d...TDC2017 | POA Trilha Arquitetura - Desafios de se implantar uma arquitetura d...
TDC2017 | POA Trilha Arquitetura - Desafios de se implantar uma arquitetura d...
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
 
Microserviços na vida real
Microserviços na vida realMicroserviços na vida real
Microserviços na vida real
 
Micro frontend de um jeito que você nunca viu
Micro frontend de um jeito que você nunca viuMicro frontend de um jeito que você nunca viu
Micro frontend de um jeito que você nunca viu
 
.NET Open Source
.NET Open Source.NET Open Source
.NET Open Source
 
Int305 projeto mono-final
Int305 projeto mono-finalInt305 projeto mono-final
Int305 projeto mono-final
 

Recently uploaded

Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Dirceu Resende
 

Recently uploaded (6)

[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
 
Concurso Caixa TI - Imersão Final - Rogério Araújo.pdf
Concurso Caixa TI - Imersão Final - Rogério Araújo.pdfConcurso Caixa TI - Imersão Final - Rogério Araújo.pdf
Concurso Caixa TI - Imersão Final - Rogério Araújo.pdf
 
Certificado - Data Analytics - CoderHouse.pdf
Certificado - Data Analytics - CoderHouse.pdfCertificado - Data Analytics - CoderHouse.pdf
Certificado - Data Analytics - CoderHouse.pdf
 
Apresentação Comercial VITAL DATA 2024.pdf
Apresentação Comercial VITAL DATA 2024.pdfApresentação Comercial VITAL DATA 2024.pdf
Apresentação Comercial VITAL DATA 2024.pdf
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
 
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
 

Introdução Microfrontend

Editor's Notes

  1. - Acho que todo mundo já deve ter passado algo parecido - Eu já umas 20 - Você fica todo feliz - Projeto dessa vez vai nascer do jeito certo
  2. - Acho que todo mundo já deve ter passado algo parecido - Eu já umas 20 - Você fica todo feliz - Projeto dessa vez vai nascer do jeito certo
  3. - Arquitetura nova - Melhores padrões e práticas - Igual squartle - pequeno, bonitinho e todo funcional - vc ja imagina ele virando o warttuttle e o blastoise todo organizado parrudo maromba
  4. Não quer dizer que seja ruim, Projeto pode ter ir “dando certo” Todo mundo queria uma feature, virou uma coisa que ninguém tem mais controle
  5. Pessoal de negócio gostou tanto que pediu várias features ficou com muitos contextos (do financeiro até a marcação de escritório) Muita gente entrando pra mexer nos contextos Pessoa que vem de outras empresas trouxe os costumes da empresa antiga Começam a criar branch padrões de branch por squad / por + coloque trava, a fazer release branch interna Muitos prs, de features, dependa bot, de bot de num sei o que pr de gente que não tá na empresa que negócio precisa ver em prod
  6. Slide vai ficar em branco! - ai quando vc pensa que acabou
  7. Pessoal de produto, faz um experimento e - call to action tá lugar ruim e pede pra mudar eles sabem que é fácil mas consideram seu drama imaginam algo tipo isso
  8. Na sua cabeça tá vc sabe que é assim(passar slide) mas no fundo é assim(banana) E quando vc vai entregar ainda tem o Doctor Eggman que nem faz parte do Mário mas ninguém sabe pq ele tá ali
  9. -vc fica doido com isso todo dia -começa a se atualizar sobre arquitetura pra tentar resolver - ai vc faz o que toda pessoa sensata faria
  10. Cai na palavrinha mágica
  11. Mas uma coisa que rola é que …
  12. mss rodam em pods isolados em instancias isoladas No ifood mss em kotlin, java, rust, node e roda liso, nao posso colocar jQuery, vue, react e svelte na mesma página e achar que vai rodar liso no Chrome num pc (está rodando tudo no mesmo client, vou falar mais na frente) O tamanho do build dos mss
  13. Vejo que hoje, são basicamente duas abordagens que eu vejo a galera adotando Times baseados em negócio(explicar figura) Então uma página pra cada time ou…
  14. Ainda por negócio, porém mais contextualizado
  15. A definição mais legal que de mfs é essa da toptal(pra quem fez inglês)
  16. Iframes sao microfront(gmail) Na minha visão, a maioria das vezes resume a independência
  17. Só que independência é muuuuuuito complicado Trouxe 3 pontos dessa independencia nos mfs
  18. - Aqui, eu sou bem cabeça fechada
  19. - Eu não vejo aonde isso pode ser uma boa ideia
  20. Cada framework que surgir vc vai adotar? download, interpretação de código é caro também controlar estados de 4 formas diferentes, é muito fácil de vc fazer um tanto de re render sem necessidade
  21. Misturar tecnologias não é proibido, tem seus cases - Atualização - Caso da hotmart (vue + meteor + react) - Caso da pagar.me (vue + react)
  22. Build mais comum, em aplicação tradicional chamar atenção é o nosso bundler, que seria o webpack Ele faz otimizações antes de vc shipar
  23. Alguém consegue chutar o que vai acontecer quando eu bulidar em prod otimizando esse código?
  24. remove completamente a classe calculadora, - ele tem toda info que ele precisa pra entender que ali só iria impimr 3 de qualquer forma
  25. Aqui a mesma coisa, porém eu não dei os números, ai ele eliminou a calcadora, mas deixou a operação de soma E exatamente isso que acontece quando você vai bulidar sua app
  26. Quanto mais informação sobre o mf A e mf B ele tem EM TEMPO DE BUILD, mais otimizado ele vai ser
  27. Quando você faz cada Build independente o main não sabe o que é utilizado em about, então ele leva a mais ou repetido
  28. ou você compartilha e garante deps entre os mfs Vai levar mais do que precisa, pq ele não vai saber o que o mf a não esta usando quando você bulidar o core Ou nao compartilha e pode levar várias partes repetidas O module federation tem uma discussão enorme de como no futuro eles estão tentando resolver isso mas na doc eles falam que ainda não conseguem fazer o tree shaking completo de deis compartilhadas
  29. Na primeira vez que eu vi falar de monorepo, eu já olhei e falei, “isso não existe… não faz o menor sentido” A ideia é que no Polly ou multirepo
  30. Ai no build, vc pode fazer ou remoto, tipo module Federation ou vc da um install antes de rodar o build Nao acho bonito mas ja fiz
  31. em um monólito, - é tudo no mesmo lugar mesmo No multrepo Se uma dependencia muda o contrato você precisa de lembrar que esse contrato é usado Pode fazer igual a versionamento de db, mas é uma gambiarra do caralho No monorepo tudo no mesmo diretório, mas… As ferreamentas te dão impressão que você está em repôs separados Cache computacional Instação de deps, Você nao importa o arquivo diretamente, vc importa como se ele fosse um outro pacote npm Por debaixo dos panos é um synlink
  32. Se o bundler sabe resolver as dependências no Build ele otimiza mais
  33. Module federation faz muito sucesso, e é muito bom, remote Só webpack 5 Deploy no s3 todos os mfs e seu cdn toma conta igual todos os outros js Tem uma discussão falando que não é uma solução boa eu achei ok
  34. Eu mesmo nao uso tem tempo, consegue fazer a mesma coisa do webpack, sem usar o webpack5 suporte a comunicação entre os mfs padrãoo boostrap, e métodos de iniclaição Ele tem um CLI já pronto pra fazer as coisas Botar na balança uma lib pra fazer microfone
  35. - é um monorepo E ele era utilizado no jest, gatsb Tinha morrido, mas voltou É bem simples e te ajuda muito a rodar as tais Ele faz tudo que um monorepo tem que fazer, é isso Soltaram uma versão com coisas legal, semana passada
  36. Pra mim é a melhor, ela faz tudo e mais um pouco Ele é um serviço, então você consegue até usar ele como seu ci Scafolding e geradores Cache Se intromente um pouco na sua apliçacão Mas pro bem Se você nao souber nada, é só rodar o Next Next finish dela, que você já vai ter toda configuração do react,vue, etc configurada
  37. Eu nunca usei, mas dizem que é tão bom quanto nx