SlideShare uma empresa Scribd logo
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
Aplicações de Alto Desempenho com JHipster Full Stack
E PARA MICROSSERVIÇOS…
Aplicações de Alto Desempenho com JHipster Full Stack
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.
Aplicações de Alto Desempenho com JHipster Full Stack
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

Mais conteúdo relacionado

PDF
Coders On Beer + Ministry Of Testing - Agile Testing
KEY
Praticando o Desapego: quando ignorar a dívida técnica
PPTX
[7Masters Aug, 2018] Escolhas durante automação de testes de API
PDF
Android Dev Conference 2017 - Automação de Testes na Cloud
PDF
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
PDF
InterCon - Automatizando Visual Regression Testing
PPTX
MTC 2017 pirâmide de automação mobile de testes
PDF
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
Coders On Beer + Ministry Of Testing - Agile Testing
Praticando o Desapego: quando ignorar a dívida técnica
[7Masters Aug, 2018] Escolhas durante automação de testes de API
Android Dev Conference 2017 - Automação de Testes na Cloud
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
InterCon - Automatizando Visual Regression Testing
MTC 2017 pirâmide de automação mobile de testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes

Mais procurados (12)

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

Semelhante a Aplicações de Alto Desempenho com JHipster Full Stack (20)

PDF
JHipster - Produtividade e Maturidade em suas mãos
PPTX
Write once, run "everywhere"
PDF
Produtividade infinito e além com We.js
PPTX
Introdução ao desenvolvimento front end usando bootstrap e angular js
PDF
Algaworks livro-spring-boot-v3.0
PPTX
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e Ionic
PDF
Spring boot
ODP
desenvolvimento-web-javascript
PDF
Desenvolvedor mobile precisa aprender Web
PDF
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
KEY
Best pratices para desenvolvimento mobile
PPTX
Workshop - Ionic + firebase
PDF
JavaScript além do browser
PDF
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
PDF
Criando Webservice REST com NodeJS, NoSQL & Docker
PPTX
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
PDF
QConSP 2012: Sencha Touch 2: Mobile Multiplataforma
PDF
Front end architecture
PDF
Phonegap
PDF
Torne se hip com JHipster
JHipster - Produtividade e Maturidade em suas mãos
Write once, run "everywhere"
Produtividade infinito e além com We.js
Introdução ao desenvolvimento front end usando bootstrap e angular js
Algaworks livro-spring-boot-v3.0
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e Ionic
Spring boot
desenvolvimento-web-javascript
Desenvolvedor mobile precisa aprender Web
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Best pratices para desenvolvimento mobile
Workshop - Ionic + firebase
JavaScript além do browser
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
Criando Webservice REST com NodeJS, NoSQL & Docker
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
QConSP 2012: Sencha Touch 2: Mobile Multiplataforma
Front end architecture
Phonegap
Torne se hip com JHipster
Anúncio

Mais de João Gabriel Lima (20)

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

Último (11)

PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Arquitetura de computadores - Memórias Secundárias
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPTX
Mecânico de Manutenção de Equipamentos.pptx
PDF
Manejo integrado de pragas na cultura do algodão
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PPTX
Utilizando code blockes por andre backes
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Eng. Software - pontos essenciais para o início
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Arquitetura de computadores - Memórias Secundárias
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Mecânico de Manutenção de Equipamentos.pptx
Manejo integrado de pragas na cultura do algodão
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Utilizando code blockes por andre backes
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Eng. Software - pontos essenciais para o início
Viasol Energia Solar -Soluções para geração e economia de energia

Aplicações de Alto Desempenho com JHipster Full Stack

  • 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…
  • 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.
  • 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