SlideShare uma empresa Scribd logo
1 de 15
Saindo do Monolito
ao Micro-Frontend
Como evoluímos o nosso principal produto
Vagner Oliveira
vagner.olliver@gmail.com - @vagnerolliver
Thiago Martins
thiagomsl@gmail.com - @thiagommaartins
Hello !
Thiago Martins
Front-End Developer - App.Zenvia
Análise e Desenv. De Sistemas - Unicesumar
Vágner Oliveira
Front-End Developer - Zenvia Message
Sistema para Internet - Ulbra
Check In
O que é Micro-Frontend?
Quais os tipos de MFE possíveis
Problema de negócio
O Single-SPA
Desafios e Lições aprendidas
Perguntas e bate-papo
Micro-Frontend
● Estende os conceitos de microservices
● Sistemas isolados, testados e implementados independente de outros
● Trabalhar com funcionalidades de maneira isolada
● Times coesos que podem representar
uma camada de negócio de ponta a ponta
● Desenvolvimento e deploys rápidos
imagens: https://scs-architecture.org/index.html
Visualizações do MFE's
Vertical
Times trabalhando em páginas diferentes
Horizontal
Times trabalhando em uma mesma página
imagens: https://medium.com/@lucamezzalira/micro-frontends-decisions-framework-ebcd22256513
Composição MFE's
● Client Side
● Server Side
● Edge Side
imagem: https://www.clariontech.com/blog/server-side-rendering-vs.-client-side-rendering
Tá, tudo muito legal!
Mas qual o problema de negócio
que queremos resolver?
Problema de negócio
● Alto nível de acoplamento das aplicações.
● Times com velocidades de entregas
diferentes.
● Tempo considerável para incluir novos
produtos na plataforma.
● Ausência de padrão visual entre os
produtos.
● Monolito com alta dependência para as
demais aplicações.
● Reduzir o tempo de inclusão de novos
produtos na plataforma.
● Deploy independente dos times.
● Autonomia para os times.
● Remover a dependência do monolito.
● Login único entre produtos.
● Experiência única, entre os produtos.
● Fluidez na navegação entre os
produtos.
● Atualização da stack.
● Aplicações escaláveis.
Cenário que tínhamos Onde queríamos chegar
Então o Single SPA nos atende pq ...
● Outros grandes players já tinham usado e tínhamos uma base para começar
● Atualização e colaboração ativa da comunidade;
● Muito conteúdo na web;
● Possui três modos de utilização:
○ Single-spa applications: Micro-frontends que renderiza componentes para um
conjunto de rotas específicas.
○ Single-spa parcel : Micro-frontends que renderiza componentes sem controlar
rotas.
○ Utility Modules: Micro-frontends que exportam lógica JavaScript compartilhada
sem componentes de renderização.
Fonte: https://single-spa.js.org/
Ecossistema
Desafios encontrados
● Falta de documentação do que já tinha sido descoberto
● Descoberta do novo e pouca referência na web
● Erros encontrados no meio do caminho
● Estávamos implementando paralelo a isso um SSO (Single Sign-On)
● Organizar/conhecer melhor o AWS (S3)
● Muuuitas branches e pouco controle!
● Rotina do Jenkins sabotando os devs
● Muito cache e vários F5 para validar implementações.
Lições aprendidas
● Documentação das features
● Apoio da comunidade;
● Design Systems;
● Plugin do Concurrently;
● Processo de deploy, release e validação;
● Muitos e muitos Researches
Começando ...
https://micro-frontends.org/
http://single-spa-playground.org/playground
https://medium.com/@lucamezzalira/micro-frontends-decisions-framework-ebcd22256513
https://www.thoughtworks.com/radar/techniques/micro-frontends
https://www.thoughtworks.com/radar/languages-and-frameworks/single-spa
https://www.thoughtworks.com/radar/techniques/micro-frontend-anarchy
Obrigado!
Vagner Oliveira
vagner.olliver@gmail.com - @vagnerolliver
https://www.linkedin.com/in/vagnerolliver/
Thiago Martins
thiagomsl@gmail.com - @twthiagomartins
https://www.linkedin.com/in/thiagomaartins/
Queremos te convidar

Mais conteúdo relacionado

Mais procurados

JavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma JavaJavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma JavajesuinoPower
 
Ruby on Rails como deve ser utilizada e onde - Julio Cartier Maia Gomes
Ruby on Rails como deve ser utilizada e onde - Julio Cartier Maia GomesRuby on Rails como deve ser utilizada e onde - Julio Cartier Maia Gomes
Ruby on Rails como deve ser utilizada e onde - Julio Cartier Maia GomesPotiLivre Sobrenome
 
Web Development em 2015
Web Development em 2015Web Development em 2015
Web Development em 2015Emanuel Santos
 
JavaFX - Uma visão Geral
JavaFX - Uma visão GeralJavaFX - Uma visão Geral
JavaFX - Uma visão GeralEder Nogueira
 
JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012jesuinoPower
 
AngularJs 1.x - Meetup - Coders In Rio
AngularJs 1.x  - Meetup - Coders In RioAngularJs 1.x  - Meetup - Coders In Rio
AngularJs 1.x - Meetup - Coders In RioRafael Cruz, MCT, MBA
 
OpenAM - Fast SSO
OpenAM - Fast SSOOpenAM - Fast SSO
OpenAM - Fast SSOYros
 
Desenvolvimento web com groovy e grails.
Desenvolvimento web com groovy e grails.Desenvolvimento web com groovy e grails.
Desenvolvimento web com groovy e grails.Bryan Ollivie
 
Zend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutençãoZend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutençãoFlávio Lisboa
 
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SPBoas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SPjesuinoPower
 
Java não é tão difícil quanto parece
Java não é tão difícil quanto pareceJava não é tão difícil quanto parece
Java não é tão difícil quanto parecejesuinoPower
 
Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014Filipe Portes
 
Modularização em java com osgi
Modularização em java com osgiModularização em java com osgi
Modularização em java com osgiFilipe Portes
 

Mais procurados (20)

Ria e Java FX
Ria e Java FXRia e Java FX
Ria e Java FX
 
JavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma JavaJavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma Java
 
Ruby on Rails como deve ser utilizada e onde - Julio Cartier Maia Gomes
Ruby on Rails como deve ser utilizada e onde - Julio Cartier Maia GomesRuby on Rails como deve ser utilizada e onde - Julio Cartier Maia Gomes
Ruby on Rails como deve ser utilizada e onde - Julio Cartier Maia Gomes
 
Javafx
JavafxJavafx
Javafx
 
Web Development em 2015
Web Development em 2015Web Development em 2015
Web Development em 2015
 
Por que Joomla! ? - 3ª SASPI 2011
Por que Joomla! ? - 3ª SASPI 2011Por que Joomla! ? - 3ª SASPI 2011
Por que Joomla! ? - 3ª SASPI 2011
 
JavaFX - Uma visão Geral
JavaFX - Uma visão GeralJavaFX - Uma visão Geral
JavaFX - Uma visão Geral
 
JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012
 
AngularJs 1.x - Meetup - Coders In Rio
AngularJs 1.x  - Meetup - Coders In RioAngularJs 1.x  - Meetup - Coders In Rio
AngularJs 1.x - Meetup - Coders In Rio
 
OpenAM - Fast SSO
OpenAM - Fast SSOOpenAM - Fast SSO
OpenAM - Fast SSO
 
Desenvolvimento web com groovy e grails.
Desenvolvimento web com groovy e grails.Desenvolvimento web com groovy e grails.
Desenvolvimento web com groovy e grails.
 
Zend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutençãoZend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutenção
 
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SPBoas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
 
JavaScript Moderno
JavaScript ModernoJavaScript Moderno
JavaScript Moderno
 
Microsoft MTACs
Microsoft MTACsMicrosoft MTACs
Microsoft MTACs
 
Java não é tão difícil quanto parece
Java não é tão difícil quanto pareceJava não é tão difícil quanto parece
Java não é tão difícil quanto parece
 
Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014
 
JavaFX 2
JavaFX 2JavaFX 2
JavaFX 2
 
Software robusto e flexível
Software robusto e flexívelSoftware robusto e flexível
Software robusto e flexível
 
Modularização em java com osgi
Modularização em java com osgiModularização em java com osgi
Modularização em java com osgi
 

Semelhante a Da arquitetura monolítica aos microfrontends

Arquitetura de Micro Serviços
Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro ServiçosFernando Ike
 
Single-SPA: Como este framework pode me ajudar na construção de Micro Front-Ends
Single-SPA: Como este framework pode me ajudar na construção de Micro Front-EndsSingle-SPA: Como este framework pode me ajudar na construção de Micro Front-Ends
Single-SPA: Como este framework pode me ajudar na construção de Micro Front-EndsDaiana Cambruzzi Avila
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendThiago Sinésio
 
Application Insights
Application InsightsApplication Insights
Application InsightsCDS
 
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 viuWagner Souza
 
DevOps... O caminho! - Monitoramento de aplicações com App Insights
DevOps... O caminho! - Monitoramento de aplicações com App InsightsDevOps... O caminho! - Monitoramento de aplicações com App Insights
DevOps... O caminho! - Monitoramento de aplicações com App InsightsAdriano Bertucci
 
Linguagil 2012: Desenvolvendo Aplicações RIA com Ext JS 4 e Touch 2
Linguagil 2012: Desenvolvendo Aplicações RIA com  Ext JS 4 e Touch 2Linguagil 2012: Desenvolvendo Aplicações RIA com  Ext JS 4 e Touch 2
Linguagil 2012: Desenvolvendo Aplicações RIA com Ext JS 4 e Touch 2Loiane Groner
 
DevInCachu 2012: Desenvolvendo Aplicacoes RIA com ExtJS 4 e Sencha Touch 2
DevInCachu 2012: Desenvolvendo Aplicacoes RIA com ExtJS 4 e Sencha Touch 2DevInCachu 2012: Desenvolvendo Aplicacoes RIA com ExtJS 4 e Sencha Touch 2
DevInCachu 2012: Desenvolvendo Aplicacoes RIA com ExtJS 4 e Sencha Touch 2Loiane Groner
 
Case Drupal: Todeschini
Case Drupal: TodeschiniCase Drupal: Todeschini
Case Drupal: TodeschiniMMDA
 
LPUG Meetup #15 - Reinvenção do Liferay
LPUG Meetup #15 - Reinvenção do LiferayLPUG Meetup #15 - Reinvenção do Liferay
LPUG Meetup #15 - Reinvenção do LiferayFernando Fernández
 
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/2017Renato Groff
 
Jsf com hibernate, spring security e maven
Jsf com hibernate, spring security e mavenJsf com hibernate, spring security e maven
Jsf com hibernate, spring security e mavenLeandro Costa
 
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 jsCloves Moreira Junior
 
Arquitetura de Microservicos
Arquitetura de MicroservicosArquitetura de Microservicos
Arquitetura de MicroservicosNorberto Enomoto
 

Semelhante a Da arquitetura monolítica aos microfrontends (20)

Arquitetura de Micro Serviços
Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro Serviços
 
Single-SPA: Como este framework pode me ajudar na construção de Micro Front-Ends
Single-SPA: Como este framework pode me ajudar na construção de Micro Front-EndsSingle-SPA: Como este framework pode me ajudar na construção de Micro Front-Ends
Single-SPA: Como este framework pode me ajudar na construção de Micro Front-Ends
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
Application Insights
Application InsightsApplication Insights
Application Insights
 
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
 
DevOps... O caminho! - Monitoramento de aplicações com App Insights
DevOps... O caminho! - Monitoramento de aplicações com App InsightsDevOps... O caminho! - Monitoramento de aplicações com App Insights
DevOps... O caminho! - Monitoramento de aplicações com App Insights
 
Linguagil 2012: Desenvolvendo Aplicações RIA com Ext JS 4 e Touch 2
Linguagil 2012: Desenvolvendo Aplicações RIA com  Ext JS 4 e Touch 2Linguagil 2012: Desenvolvendo Aplicações RIA com  Ext JS 4 e Touch 2
Linguagil 2012: Desenvolvendo Aplicações RIA com Ext JS 4 e Touch 2
 
DevInCachu 2012: Desenvolvendo Aplicacoes RIA com ExtJS 4 e Sencha Touch 2
DevInCachu 2012: Desenvolvendo Aplicacoes RIA com ExtJS 4 e Sencha Touch 2DevInCachu 2012: Desenvolvendo Aplicacoes RIA com ExtJS 4 e Sencha Touch 2
DevInCachu 2012: Desenvolvendo Aplicacoes RIA com ExtJS 4 e Sencha Touch 2
 
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
 
Case Drupal: Todeschini
Case Drupal: TodeschiniCase Drupal: Todeschini
Case Drupal: Todeschini
 
Ruby on rails como deve ser utilizada e onde
Ruby on rails como deve ser utilizada e ondeRuby on rails como deve ser utilizada e onde
Ruby on rails como deve ser utilizada e onde
 
DevOps e App Insights
DevOps e App InsightsDevOps e App Insights
DevOps e App Insights
 
LPUG Meetup #15 - Reinvenção do Liferay
LPUG Meetup #15 - Reinvenção do LiferayLPUG Meetup #15 - Reinvenção do Liferay
LPUG Meetup #15 - Reinvenção do Liferay
 
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
 
Jsf com hibernate, spring security e maven
Jsf com hibernate, spring security e mavenJsf com hibernate, spring security e maven
Jsf com hibernate, spring security e maven
 
apresentacao e instalacao do Joomla3
apresentacao e instalacao do Joomla3apresentacao e instalacao do Joomla3
apresentacao e instalacao do Joomla3
 
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
 
3 apres pb_g4
3 apres pb_g43 apres pb_g4
3 apres pb_g4
 
Arquitetura de Microservicos
Arquitetura de MicroservicosArquitetura de Microservicos
Arquitetura de Microservicos
 
Por que Joomla!? - Evidosol 2011
Por que Joomla!? - Evidosol 2011Por que Joomla!? - Evidosol 2011
Por que Joomla!? - Evidosol 2011
 

Da arquitetura monolítica aos microfrontends

  • 1. Saindo do Monolito ao Micro-Frontend Como evoluímos o nosso principal produto Vagner Oliveira vagner.olliver@gmail.com - @vagnerolliver Thiago Martins thiagomsl@gmail.com - @thiagommaartins
  • 2. Hello ! Thiago Martins Front-End Developer - App.Zenvia Análise e Desenv. De Sistemas - Unicesumar Vágner Oliveira Front-End Developer - Zenvia Message Sistema para Internet - Ulbra
  • 3. Check In O que é Micro-Frontend? Quais os tipos de MFE possíveis Problema de negócio O Single-SPA Desafios e Lições aprendidas Perguntas e bate-papo
  • 4. Micro-Frontend ● Estende os conceitos de microservices ● Sistemas isolados, testados e implementados independente de outros ● Trabalhar com funcionalidades de maneira isolada ● Times coesos que podem representar uma camada de negócio de ponta a ponta ● Desenvolvimento e deploys rápidos imagens: https://scs-architecture.org/index.html
  • 5. Visualizações do MFE's Vertical Times trabalhando em páginas diferentes Horizontal Times trabalhando em uma mesma página imagens: https://medium.com/@lucamezzalira/micro-frontends-decisions-framework-ebcd22256513
  • 6. Composição MFE's ● Client Side ● Server Side ● Edge Side imagem: https://www.clariontech.com/blog/server-side-rendering-vs.-client-side-rendering
  • 7. Tá, tudo muito legal! Mas qual o problema de negócio que queremos resolver?
  • 8. Problema de negócio ● Alto nível de acoplamento das aplicações. ● Times com velocidades de entregas diferentes. ● Tempo considerável para incluir novos produtos na plataforma. ● Ausência de padrão visual entre os produtos. ● Monolito com alta dependência para as demais aplicações. ● Reduzir o tempo de inclusão de novos produtos na plataforma. ● Deploy independente dos times. ● Autonomia para os times. ● Remover a dependência do monolito. ● Login único entre produtos. ● Experiência única, entre os produtos. ● Fluidez na navegação entre os produtos. ● Atualização da stack. ● Aplicações escaláveis. Cenário que tínhamos Onde queríamos chegar
  • 9. Então o Single SPA nos atende pq ... ● Outros grandes players já tinham usado e tínhamos uma base para começar ● Atualização e colaboração ativa da comunidade; ● Muito conteúdo na web; ● Possui três modos de utilização: ○ Single-spa applications: Micro-frontends que renderiza componentes para um conjunto de rotas específicas. ○ Single-spa parcel : Micro-frontends que renderiza componentes sem controlar rotas. ○ Utility Modules: Micro-frontends que exportam lógica JavaScript compartilhada sem componentes de renderização. Fonte: https://single-spa.js.org/
  • 11. Desafios encontrados ● Falta de documentação do que já tinha sido descoberto ● Descoberta do novo e pouca referência na web ● Erros encontrados no meio do caminho ● Estávamos implementando paralelo a isso um SSO (Single Sign-On) ● Organizar/conhecer melhor o AWS (S3) ● Muuuitas branches e pouco controle! ● Rotina do Jenkins sabotando os devs ● Muito cache e vários F5 para validar implementações.
  • 12. Lições aprendidas ● Documentação das features ● Apoio da comunidade; ● Design Systems; ● Plugin do Concurrently; ● Processo de deploy, release e validação; ● Muitos e muitos Researches
  • 14. Obrigado! Vagner Oliveira vagner.olliver@gmail.com - @vagnerolliver https://www.linkedin.com/in/vagnerolliver/ Thiago Martins thiagomsl@gmail.com - @twthiagomartins https://www.linkedin.com/in/thiagomaartins/