SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Downloaden Sie, um offline zu lesen
APLICAÇÕES DE ALTO
DESEMPENHO COM
JHIPSTER FULL STACK
João Gabriel Lima
linkedin/in/joaogabriellima
CTO na Epitrack
Professor
Pesquisador em Inteligência Artificial e Big Data
Entusiasta de novas tecnologias!
QUEM SOU E O QUE FAÇO
epitrack.tech
HOJE VAMOS COMEÇAR FALANDO DE UM PROBLEMA
RECORRENTE EM QUALQUER PROJETO JAVA:
A ARQUITETURA!
PRECISAMOS PENSAR MUITO ALÉM DOS REQUISITOS
FUNCIONAIS E NÃO-FUNCIONAIS.
ESCALÁVEL
EXTENSÍVEL
PERFORMÁTICA
FÁCIL DE MANTER
INTEROPERÁVEL
RESILIENTE
UMA BOA ARQUITETURA JAVA
PRECISA SER:
E UM NOVO PROJETO?
NÃO IMPORTA O QUÃO EXPERIENTE VOCÊ É, SEMPRE TEM
ALGO QUE VAI TE SURPREENDER EM UM NOVO PROJETO
JAVA!
FULLSTACK
Front-end: adaptativo, desacoplado, otimizável
Back-end: regras de negócio, controladores, API`s
Banco de dados: funções, backups, migração, versionamento …
GENERATORS
SCAFFOLDING
BOILERPLATES
ETC…
ESTRATÉGIAS PARA QUE VOCÊ INICIE UM
PROJETO COM UM PASSO À FRENTE.
UMA ARQUITETURA BEM DEFINIDA, PRONTA
PARA EVOLUIR
E EU AINDA NEM COMECEI A
FALAR DA CONSTRUÇÃO DE
MICRO-SERVIÇOS!
TUDO ISSO E MUITO MAIS…
JHIPSTER
http://www.jhipster.tech/
+300 colaboradores + 7.000 estrelas no GitHub
+ 500.000 instalações
E crescendo…
https://github.com/jhipster/generator-jhipster
E PARA MICROSSERVIÇOS…
https://traefik.io/
"Proxy reverso e balanceador de carga para implantar microservices com facilidade”
QUICK START
DEPENDÊNCIAS
https://start.jhipster.tech
https://start.jhipster.tech
SHOW ME THE CODE
+
SUA PRIMEIRA APLICAÇÃO JHIPSTER - PASSO A PASSO
➤ yarn global add yo
➤ yarn global add generator-jhipster
➤ mkdir soujava
➤ cd soujava
➤ jhipster
http://www.jhipster.tech/creating-an-app/
THE JHIPSTER REGISTRY
➤ É um servidor Eureka, que serve como um servidor de
descoberta para aplicativos. É assim que o JHipster lida com
roteamento, balanceamento de carga e escalabilidade para
todas as aplicações.
➤ É um servidor Spring Cloud Config, que fornece configuração
de tempo de execução para todos os aplicativos.
➤ É um servidor de administração, com painéis para monitorar e
gerenciar aplicativos.
http://www.jhipster.tech/modules/marketplace/#/list
MARKETPLACE
PRONTO! VAMOS RODAR NOSSO PROJETO
Para executar nosso projeto Java
./mvnw
Para executar nosso front com o transpire para Typescript e Live Reload
yarn start
yarn lint verifique se há problemas de estilo de código no código TypeScript
yarn lint:fix corrigir automaticamente problemas de fiabilidade de TypeScript
yarn tsc compile o código TypeScript
yarn test execute testes de unidade com Karma
yarn test:watch mantenha os testes da unidade de karma em execução, para
receber feedback em tempo real quando o código for alterado
RODANDO CLIENT E SERVER-SIDE COM LIVE RELOAD
Se você começar a fazer alterações no código do lado do cliente sem que
o Yarn comece a ser executado, nada será refletido pois as mudanças não
são compiladas, então você precisa executar:
yarn webpack:build:dev manualmente após as mudanças ou começar a
execução do yarn (RECOMENDADO).
Você também pode forçar o maven a executar a task do webpack como:
./mvnw -Pdev, webpack
webapp
!"" app - Your application
# !"" account - User account management UI
# !"" admin - Administration UI
# !"" blocks - Common building blocks like configuration and interceptors
# !"" entities - Generated entities (more information below)
# !"" home - Home page
# !"" layouts - Common page layouts like navigation bar and error pages
# !"" shared - Common services like authentication and internationalization
# !"" app.main.ts - Main application class
# !"" app.module.js - Application modules configuration
# !"" app.route.js - Main application router
!"" content - Static content
# !"" css - CSS stylesheets
# !"" images - Images
!"" i18n - Translation files
!"" scss - Sass style sheet files will be here if you choose the option
!"" swagger-ui - Swagger UI front-end
!"" 404.html - 404 page
!"" favicon.ico - Fav icon
!"" index.html - Index page
!"" robots.txt - Configuration for bots and Web crawlers
ESTRUTURA DO PROJETO
webapp
!"" app
# !"" entities
# !"" foo - CRUD front-end for the Foo entity
# !"" foo.component.html - HTML view for the list page
# !"" foo.component.ts - Controller for the list page
# !"" foo.model.ts - Model representing the Foo entity
# !"" foo.module.ts - Angular module for the Foo entity
# !"" foo.route.ts - Angular Router configuration
# !"" foo.service.ts - Service which access the Foo REST resource
# !"" foo-delete-dialog.component.html - HTML view for deleting a Foo
# !"" foo-delete-dialog.component.ts - Controller for deleting a Foo
# !"" foo-detail.component.html - HTML view for displaying a Foo
# !"" foo-detail.component.ts - Controller or displaying a Foo
# !"" foo-dialog.component.html - HTML view for editing a Foo
# !"" foo-dialog.component.ts - Controller for editing a Foo
# !"" foo-popup.service.ts - Service for handling the create/update dialog pop-up
# !"" index.ts - Barrel for exporting everything
!"" i18n - Translation files
# !"" en - English translations
# # !"" foo.json - English translation of Foo name, fields, ...
# !"" fr - French translations
# # !"" foo.json - French translation of Foo name, fields, ...
ESTRUTURA DO PROJETO
https://augury.angular.io/
http://www.jhipster.tech/jdl-studio/
ALTERANDO O MODELO DE DADOS
Umas das principais dúvidas dos desenvolvedores recém
chegados ao JHipster é na alteração do modelo de dados.
Temos diversas formas de fazer. Seguem as principais:
1) jhipster import-jdl <arquivo> -- force
2) ./mvnw liquidasse:diff
Você pode gerar novas entidades, services e controllers
jhipster entity <entityName> --[options]
SEPARANDO FRONT-END E API DE SERVIÇOS
Para gerar apenas o front-end ou uma API de serviços basta
executar os comandos:
$ jhipster --skip-client
$ jhipster --skip-server
SOU PROJETO EM PRODUÇÃO
PRODUCTION-READY
➤ ./mvnw -Pprod
➤ Gerando um .war
➤ ./mvnw -Pprod package
➤ Executando
➤ ./jhipster-0.0.1-SNAPSHOT.war
➤ java -jar jhipster-0.0.1-SNAPSHOT.war
DEPLOY NO HEROIC
heroku login
jhipster heroku
Atualizando sua aplicação
./mvnw package -Pprod -DskipTests
heroku deploy:jar --jar target/*.war
http://www.jhipster.tech/heroku/
DICAS FINAIS
1. Se não for um MVP, valide se os componentes da
arquitetura resolvem o seu problema
2. Em produção, mantenha as dependências do
projeto sempre atualizadas
3. use apenas o essencial
4. mantenha os testes atualizados
ONDE EU NÃO RECOMENDO O USO:
1. Projetos legados em manutenção evolutiva
2. Tentativa de arquitetura híbrida
3. Pouco conhecimento nas tecnologias que compõe a stack
APLICAÇÕES DE ALTO
DESEMPENHO COM
JHIPSTER FULL STACK
João Gabriel Lima
linkedin/in/joaogabriellima

Weitere ähnliche Inhalte

Was ist angesagt?

Automação mobile com calabash
Automação mobile com calabashAutomação mobile com calabash
Automação mobile com calabashJosenildo Amorim
 
Qa ops mtc 2020 - mayara fernandes
Qa ops   mtc 2020 - mayara fernandesQa ops   mtc 2020 - mayara fernandes
Qa ops mtc 2020 - mayara fernandesMayara Fernandes
 
MTC - Automatizando Visual Regression Testing
MTC - Automatizando Visual Regression TestingMTC - Automatizando Visual Regression Testing
MTC - Automatizando Visual Regression TestingSamanta Cicilia
 
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva 3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva minastestingconference
 
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...tdc-globalcode
 
JavaFx - Guia Prático
JavaFx - Guia PráticoJavaFx - Guia Prático
JavaFx - Guia Práticodanielfc
 
Testes em uma startup do mundo financeiro
Testes em uma startup do mundo financeiroTestes em uma startup do mundo financeiro
Testes em uma startup do mundo financeiroLuiz Alberto Hespanha
 
Visual Regression Testing: mais um tipo de teste pra sua pipeline
Visual Regression Testing: mais um tipo de teste pra sua pipelineVisual Regression Testing: mais um tipo de teste pra sua pipeline
Visual Regression Testing: mais um tipo de teste pra sua pipelineSamanta Cicilia
 
[UNIP2015] Testando a Performance de Aplicações Web com JMeter
[UNIP2015] Testando a Performance de Aplicações Web com JMeter[UNIP2015] Testando a Performance de Aplicações Web com JMeter
[UNIP2015] Testando a Performance de Aplicações Web com JMeterJúlio de Lima
 
Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFXjesuinoPower
 

Was ist angesagt? (12)

Automação mobile com calabash
Automação mobile com calabashAutomação mobile com calabash
Automação mobile com calabash
 
Qa ops mtc 2020 - mayara fernandes
Qa ops   mtc 2020 - mayara fernandesQa ops   mtc 2020 - mayara fernandes
Qa ops mtc 2020 - mayara fernandes
 
MTC - Automatizando Visual Regression Testing
MTC - Automatizando Visual Regression TestingMTC - Automatizando Visual Regression Testing
MTC - Automatizando Visual Regression Testing
 
O Testador Técnico
O Testador TécnicoO Testador Técnico
O Testador Técnico
 
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva 3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
 
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
 
JavaFx - Guia Prático
JavaFx - Guia PráticoJavaFx - Guia Prático
JavaFx - Guia Prático
 
Testes em uma startup do mundo financeiro
Testes em uma startup do mundo financeiroTestes em uma startup do mundo financeiro
Testes em uma startup do mundo financeiro
 
Visual Regression Testing: mais um tipo de teste pra sua pipeline
Visual Regression Testing: mais um tipo de teste pra sua pipelineVisual Regression Testing: mais um tipo de teste pra sua pipeline
Visual Regression Testing: mais um tipo de teste pra sua pipeline
 
JRebel para os Chefes
JRebel para os ChefesJRebel para os Chefes
JRebel para os Chefes
 
[UNIP2015] Testando a Performance de Aplicações Web com JMeter
[UNIP2015] Testando a Performance de Aplicações Web com JMeter[UNIP2015] Testando a Performance de Aplicações Web com JMeter
[UNIP2015] Testando a Performance de Aplicações Web com JMeter
 
Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFX
 

Ähnlich wie Aplicações de alto desempenho com JHipster

TDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoTDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoCezinha Anjos
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sitesthiagolima
 
435142330-Guia-Completo-React-Js.pdf
435142330-Guia-Completo-React-Js.pdf435142330-Guia-Completo-React-Js.pdf
435142330-Guia-Completo-React-Js.pdfJulia469065
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemRodrigo Valerio
 
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...iMasters
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosThiago Soares
 
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open WebNovo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open WebLeonardo Balter
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com AngularElmano Cavalcanti
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de SoftwareSaulo Arruda
 
Apache Wicket derruba o padrão JSF
Apache Wicket derruba o padrão JSFApache Wicket derruba o padrão JSF
Apache Wicket derruba o padrão JSFBruno Borges
 
Code Igniter - O Framework php mais fácil e ágil
Code Igniter - O Framework php mais fácil e ágilCode Igniter - O Framework php mais fácil e ágil
Code Igniter - O Framework php mais fácil e ágilRafael Pinheiro
 
JavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeJavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeRafael Ponte
 
Lightning Talk: Webdev who?
Lightning Talk: Webdev who?Lightning Talk: Webdev who?
Lightning Talk: Webdev who?Leandro Nunes
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Julian Cesar
 
Php Conference 2013 (Resumão)
Php Conference 2013 (Resumão)Php Conference 2013 (Resumão)
Php Conference 2013 (Resumão)Gustavo Pereira
 
Ux for Developers - Build Better Products
Ux for Developers - Build Better ProductsUx for Developers - Build Better Products
Ux for Developers - Build Better ProductsPedro Marques
 
Caipira agil automacao front end selenium
Caipira agil automacao front end seleniumCaipira agil automacao front end selenium
Caipira agil automacao front end seleniumQualister
 

Ähnlich wie Aplicações de alto desempenho com JHipster (20)

Web Offline
Web OfflineWeb Offline
Web Offline
 
TDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoTDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direito
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
 
435142330-Guia-Completo-React-Js.pdf
435142330-Guia-Completo-React-Js.pdf435142330-Guia-Completo-React-Js.pdf
435142330-Guia-Completo-React-Js.pdf
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvem
 
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãos
 
EBAC Django
EBAC DjangoEBAC Django
EBAC Django
 
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
 
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open WebNovo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com Angular
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Apache Wicket derruba o padrão JSF
Apache Wicket derruba o padrão JSFApache Wicket derruba o padrão JSF
Apache Wicket derruba o padrão JSF
 
Code Igniter - O Framework php mais fácil e ágil
Code Igniter - O Framework php mais fácil e ágilCode Igniter - O Framework php mais fácil e ágil
Code Igniter - O Framework php mais fácil e ágil
 
JavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeJavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividade
 
Lightning Talk: Webdev who?
Lightning Talk: Webdev who?Lightning Talk: Webdev who?
Lightning Talk: Webdev who?
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)
 
Php Conference 2013 (Resumão)
Php Conference 2013 (Resumão)Php Conference 2013 (Resumão)
Php Conference 2013 (Resumão)
 
Ux for Developers - Build Better Products
Ux for Developers - Build Better ProductsUx for Developers - Build Better Products
Ux for Developers - Build Better Products
 
Caipira agil automacao front end selenium
Caipira agil automacao front end seleniumCaipira agil automacao front end selenium
Caipira agil automacao front end selenium
 

Mehr von João Gabriel Lima

Deep marketing - Indoor Customer Segmentation
Deep marketing - Indoor Customer SegmentationDeep marketing - Indoor Customer Segmentation
Deep marketing - Indoor Customer SegmentationJoão Gabriel Lima
 
Realidade aumentada com react native e ARKit
Realidade aumentada com react native e ARKitRealidade aumentada com react native e ARKit
Realidade aumentada com react native e ARKitJoão Gabriel Lima
 
Big data e Inteligência Artificial
Big data e Inteligência ArtificialBig data e Inteligência Artificial
Big data e Inteligência ArtificialJoão Gabriel Lima
 
Mineração de Dados no Weka - Regressão Linear
Mineração de Dados no Weka -  Regressão LinearMineração de Dados no Weka -  Regressão Linear
Mineração de Dados no Weka - Regressão LinearJoão Gabriel Lima
 
Segurança na Internet - Estudos de caso
Segurança na Internet - Estudos de casoSegurança na Internet - Estudos de caso
Segurança na Internet - Estudos de casoJoão Gabriel Lima
 
Segurança na Internet - Google Hacking
Segurança na Internet - Google  HackingSegurança na Internet - Google  Hacking
Segurança na Internet - Google HackingJoão Gabriel Lima
 
Segurança na Internet - Conceitos fundamentais
Segurança na Internet - Conceitos fundamentaisSegurança na Internet - Conceitos fundamentais
Segurança na Internet - Conceitos fundamentaisJoão Gabriel Lima
 
Mineração de Dados com RapidMiner - Um Estudo de caso sobre o Churn Rate em...
Mineração de Dados com RapidMiner - Um Estudo de caso sobre o Churn Rate em...Mineração de Dados com RapidMiner - Um Estudo de caso sobre o Churn Rate em...
Mineração de Dados com RapidMiner - Um Estudo de caso sobre o Churn Rate em...João Gabriel Lima
 
Mineração de dados com RapidMiner + WEKA - Clusterização
Mineração de dados com RapidMiner + WEKA - ClusterizaçãoMineração de dados com RapidMiner + WEKA - Clusterização
Mineração de dados com RapidMiner + WEKA - ClusterizaçãoJoão Gabriel Lima
 
Mineração de dados na prática com RapidMiner e Weka
Mineração de dados na prática com RapidMiner e WekaMineração de dados na prática com RapidMiner e Weka
Mineração de dados na prática com RapidMiner e WekaJoão Gabriel Lima
 
Visualizacao de dados - Come to the dark side
Visualizacao de dados - Come to the dark sideVisualizacao de dados - Come to the dark side
Visualizacao de dados - Come to the dark sideJoão Gabriel Lima
 
REST x SOAP : Qual abordagem escolher?
REST x SOAP : Qual abordagem escolher?REST x SOAP : Qual abordagem escolher?
REST x SOAP : Qual abordagem escolher?João Gabriel Lima
 
Game of data - Predição e Análise da série Game Of Thrones a partir do uso de...
Game of data - Predição e Análise da série Game Of Thrones a partir do uso de...Game of data - Predição e Análise da série Game Of Thrones a partir do uso de...
Game of data - Predição e Análise da série Game Of Thrones a partir do uso de...João Gabriel Lima
 
E-trânsito cidadão - IPVA em suas mãos
E-trânsito cidadão - IPVA em suas mãosE-trânsito cidadão - IPVA em suas mãos
E-trânsito cidadão - IPVA em suas mãosJoão Gabriel Lima
 
[Estácio - IESAM] Automatizando Tarefas com Gulp.js
[Estácio - IESAM] Automatizando Tarefas com Gulp.js[Estácio - IESAM] Automatizando Tarefas com Gulp.js
[Estácio - IESAM] Automatizando Tarefas com Gulp.jsJoão Gabriel Lima
 
Hackeando a Internet das Coisas com Javascript
Hackeando a Internet das Coisas com JavascriptHackeando a Internet das Coisas com Javascript
Hackeando a Internet das Coisas com JavascriptJoão Gabriel Lima
 
Mercado de Trabalho em Computação - Perfil Analista de Sistemas e Programador
Mercado de Trabalho em Computação - Perfil Analista de Sistemas e ProgramadorMercado de Trabalho em Computação - Perfil Analista de Sistemas e Programador
Mercado de Trabalho em Computação - Perfil Analista de Sistemas e ProgramadorJoão Gabriel Lima
 

Mehr von João Gabriel Lima (20)

Cooking with data
Cooking with dataCooking with data
Cooking with data
 
Deep marketing - Indoor Customer Segmentation
Deep marketing - Indoor Customer SegmentationDeep marketing - Indoor Customer Segmentation
Deep marketing - Indoor Customer Segmentation
 
Realidade aumentada com react native e ARKit
Realidade aumentada com react native e ARKitRealidade aumentada com react native e ARKit
Realidade aumentada com react native e ARKit
 
JS - IA
JS - IAJS - IA
JS - IA
 
Big data e Inteligência Artificial
Big data e Inteligência ArtificialBig data e Inteligência Artificial
Big data e Inteligência Artificial
 
Mineração de Dados no Weka - Regressão Linear
Mineração de Dados no Weka -  Regressão LinearMineração de Dados no Weka -  Regressão Linear
Mineração de Dados no Weka - Regressão Linear
 
Segurança na Internet - Estudos de caso
Segurança na Internet - Estudos de casoSegurança na Internet - Estudos de caso
Segurança na Internet - Estudos de caso
 
Segurança na Internet - Google Hacking
Segurança na Internet - Google  HackingSegurança na Internet - Google  Hacking
Segurança na Internet - Google Hacking
 
Segurança na Internet - Conceitos fundamentais
Segurança na Internet - Conceitos fundamentaisSegurança na Internet - Conceitos fundamentais
Segurança na Internet - Conceitos fundamentais
 
Web Machine Learning
Web Machine LearningWeb Machine Learning
Web Machine Learning
 
Mineração de Dados com RapidMiner - Um Estudo de caso sobre o Churn Rate em...
Mineração de Dados com RapidMiner - Um Estudo de caso sobre o Churn Rate em...Mineração de Dados com RapidMiner - Um Estudo de caso sobre o Churn Rate em...
Mineração de Dados com RapidMiner - Um Estudo de caso sobre o Churn Rate em...
 
Mineração de dados com RapidMiner + WEKA - Clusterização
Mineração de dados com RapidMiner + WEKA - ClusterizaçãoMineração de dados com RapidMiner + WEKA - Clusterização
Mineração de dados com RapidMiner + WEKA - Clusterização
 
Mineração de dados na prática com RapidMiner e Weka
Mineração de dados na prática com RapidMiner e WekaMineração de dados na prática com RapidMiner e Weka
Mineração de dados na prática com RapidMiner e Weka
 
Visualizacao de dados - Come to the dark side
Visualizacao de dados - Come to the dark sideVisualizacao de dados - Come to the dark side
Visualizacao de dados - Come to the dark side
 
REST x SOAP : Qual abordagem escolher?
REST x SOAP : Qual abordagem escolher?REST x SOAP : Qual abordagem escolher?
REST x SOAP : Qual abordagem escolher?
 
Game of data - Predição e Análise da série Game Of Thrones a partir do uso de...
Game of data - Predição e Análise da série Game Of Thrones a partir do uso de...Game of data - Predição e Análise da série Game Of Thrones a partir do uso de...
Game of data - Predição e Análise da série Game Of Thrones a partir do uso de...
 
E-trânsito cidadão - IPVA em suas mãos
E-trânsito cidadão - IPVA em suas mãosE-trânsito cidadão - IPVA em suas mãos
E-trânsito cidadão - IPVA em suas mãos
 
[Estácio - IESAM] Automatizando Tarefas com Gulp.js
[Estácio - IESAM] Automatizando Tarefas com Gulp.js[Estácio - IESAM] Automatizando Tarefas com Gulp.js
[Estácio - IESAM] Automatizando Tarefas com Gulp.js
 
Hackeando a Internet das Coisas com Javascript
Hackeando a Internet das Coisas com JavascriptHackeando a Internet das Coisas com Javascript
Hackeando a Internet das Coisas com Javascript
 
Mercado de Trabalho em Computação - Perfil Analista de Sistemas e Programador
Mercado de Trabalho em Computação - Perfil Analista de Sistemas e ProgramadorMercado de Trabalho em Computação - Perfil Analista de Sistemas e Programador
Mercado de Trabalho em Computação - Perfil Analista de Sistemas e Programador
 

Aplicações de alto desempenho com JHipster

  • 1. APLICAÇÕES DE ALTO DESEMPENHO COM JHIPSTER FULL STACK João Gabriel Lima linkedin/in/joaogabriellima
  • 2. CTO na Epitrack Professor Pesquisador em Inteligência Artificial e Big Data Entusiasta de novas tecnologias! QUEM SOU E O QUE FAÇO epitrack.tech
  • 3. HOJE VAMOS COMEÇAR FALANDO DE UM PROBLEMA RECORRENTE EM QUALQUER PROJETO JAVA: A ARQUITETURA!
  • 4. PRECISAMOS PENSAR MUITO ALÉM DOS REQUISITOS FUNCIONAIS E NÃO-FUNCIONAIS.
  • 6. E UM NOVO PROJETO? NÃO IMPORTA O QUÃO EXPERIENTE VOCÊ É, SEMPRE TEM ALGO QUE VAI TE SURPREENDER EM UM NOVO PROJETO JAVA!
  • 7. FULLSTACK Front-end: adaptativo, desacoplado, otimizável Back-end: regras de negócio, controladores, API`s Banco de dados: funções, backups, migração, versionamento …
  • 9. ESTRATÉGIAS PARA QUE VOCÊ INICIE UM PROJETO COM UM PASSO À FRENTE. UMA ARQUITETURA BEM DEFINIDA, PRONTA PARA EVOLUIR
  • 10. E EU AINDA NEM COMECEI A FALAR DA CONSTRUÇÃO DE MICRO-SERVIÇOS!
  • 11. TUDO ISSO E MUITO MAIS… JHIPSTER
  • 12. http://www.jhipster.tech/ +300 colaboradores + 7.000 estrelas no GitHub + 500.000 instalações E crescendo…
  • 14.
  • 16.
  • 17. https://traefik.io/ "Proxy reverso e balanceador de carga para implantar microservices com facilidade”
  • 21. SHOW ME THE CODE
  • 22. +
  • 23. SUA PRIMEIRA APLICAÇÃO JHIPSTER - PASSO A PASSO ➤ yarn global add yo ➤ yarn global add generator-jhipster ➤ mkdir soujava ➤ cd soujava ➤ jhipster http://www.jhipster.tech/creating-an-app/
  • 24. THE JHIPSTER REGISTRY ➤ É um servidor Eureka, que serve como um servidor de descoberta para aplicativos. É assim que o JHipster lida com roteamento, balanceamento de carga e escalabilidade para todas as aplicações. ➤ É um servidor Spring Cloud Config, que fornece configuração de tempo de execução para todos os aplicativos. ➤ É um servidor de administração, com painéis para monitorar e gerenciar aplicativos.
  • 25.
  • 27. PRONTO! VAMOS RODAR NOSSO PROJETO Para executar nosso projeto Java ./mvnw Para executar nosso front com o transpire para Typescript e Live Reload yarn start yarn lint verifique se há problemas de estilo de código no código TypeScript yarn lint:fix corrigir automaticamente problemas de fiabilidade de TypeScript yarn tsc compile o código TypeScript yarn test execute testes de unidade com Karma yarn test:watch mantenha os testes da unidade de karma em execução, para receber feedback em tempo real quando o código for alterado
  • 28. RODANDO CLIENT E SERVER-SIDE COM LIVE RELOAD Se você começar a fazer alterações no código do lado do cliente sem que o Yarn comece a ser executado, nada será refletido pois as mudanças não são compiladas, então você precisa executar: yarn webpack:build:dev manualmente após as mudanças ou começar a execução do yarn (RECOMENDADO). Você também pode forçar o maven a executar a task do webpack como: ./mvnw -Pdev, webpack
  • 29. webapp !"" app - Your application # !"" account - User account management UI # !"" admin - Administration UI # !"" blocks - Common building blocks like configuration and interceptors # !"" entities - Generated entities (more information below) # !"" home - Home page # !"" layouts - Common page layouts like navigation bar and error pages # !"" shared - Common services like authentication and internationalization # !"" app.main.ts - Main application class # !"" app.module.js - Application modules configuration # !"" app.route.js - Main application router !"" content - Static content # !"" css - CSS stylesheets # !"" images - Images !"" i18n - Translation files !"" scss - Sass style sheet files will be here if you choose the option !"" swagger-ui - Swagger UI front-end !"" 404.html - 404 page !"" favicon.ico - Fav icon !"" index.html - Index page !"" robots.txt - Configuration for bots and Web crawlers ESTRUTURA DO PROJETO
  • 30. webapp !"" app # !"" entities # !"" foo - CRUD front-end for the Foo entity # !"" foo.component.html - HTML view for the list page # !"" foo.component.ts - Controller for the list page # !"" foo.model.ts - Model representing the Foo entity # !"" foo.module.ts - Angular module for the Foo entity # !"" foo.route.ts - Angular Router configuration # !"" foo.service.ts - Service which access the Foo REST resource # !"" foo-delete-dialog.component.html - HTML view for deleting a Foo # !"" foo-delete-dialog.component.ts - Controller for deleting a Foo # !"" foo-detail.component.html - HTML view for displaying a Foo # !"" foo-detail.component.ts - Controller or displaying a Foo # !"" foo-dialog.component.html - HTML view for editing a Foo # !"" foo-dialog.component.ts - Controller for editing a Foo # !"" foo-popup.service.ts - Service for handling the create/update dialog pop-up # !"" index.ts - Barrel for exporting everything !"" i18n - Translation files # !"" en - English translations # # !"" foo.json - English translation of Foo name, fields, ... # !"" fr - French translations # # !"" foo.json - French translation of Foo name, fields, ... ESTRUTURA DO PROJETO
  • 33. ALTERANDO O MODELO DE DADOS Umas das principais dúvidas dos desenvolvedores recém chegados ao JHipster é na alteração do modelo de dados. Temos diversas formas de fazer. Seguem as principais: 1) jhipster import-jdl <arquivo> -- force 2) ./mvnw liquidasse:diff Você pode gerar novas entidades, services e controllers jhipster entity <entityName> --[options]
  • 34. SEPARANDO FRONT-END E API DE SERVIÇOS Para gerar apenas o front-end ou uma API de serviços basta executar os comandos: $ jhipster --skip-client $ jhipster --skip-server
  • 35. SOU PROJETO EM PRODUÇÃO
  • 37. ➤ ./mvnw -Pprod ➤ Gerando um .war ➤ ./mvnw -Pprod package ➤ Executando ➤ ./jhipster-0.0.1-SNAPSHOT.war ➤ java -jar jhipster-0.0.1-SNAPSHOT.war
  • 38. DEPLOY NO HEROIC heroku login jhipster heroku Atualizando sua aplicação ./mvnw package -Pprod -DskipTests heroku deploy:jar --jar target/*.war http://www.jhipster.tech/heroku/
  • 40. 1. Se não for um MVP, valide se os componentes da arquitetura resolvem o seu problema 2. Em produção, mantenha as dependências do projeto sempre atualizadas 3. use apenas o essencial 4. mantenha os testes atualizados
  • 41. ONDE EU NÃO RECOMENDO O USO: 1. Projetos legados em manutenção evolutiva 2. Tentativa de arquitetura híbrida 3. Pouco conhecimento nas tecnologias que compõe a stack
  • 42. APLICAÇÕES DE ALTO DESEMPENHO COM JHIPSTER FULL STACK João Gabriel Lima linkedin/in/joaogabriellima