desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com vert.x
TRANSCRIPT
![Page 1: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/1.jpg)
Desenvolvimento de aplicações assíncronas,
orientadas a eventos e poliglotas
com Vert.x
Rodrigo Peleias@rpeleias
![Page 2: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/2.jpg)
Sumário
● Motivação
● E foi criado o Vert.x
● Tecnologias similares ao Vert.x
● Modelo Arquitetural
● Verticles: o Vert.x em ação!
● Event Bus: “sistema nervoso” do Vert.x
● Um pouco de REST com o Vert.x
● Vert.x na Web
● Histórico do Vert.x
● E tem muito mais com o Vert.x!!
![Page 3: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/3.jpg)
Motivação
A Evolução da Web
Páginas
Estáticas
Apps Orientadas
A Formulários
Requisições
AJAX
![Page 4: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/4.jpg)
Motivação
A Evolução da Web
Páginas
Estáticas
Apps Orientadas
A Formulários
Requisições
AJAX
Aplicações em
Tempo Real
![Page 5: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/5.jpg)
Motivação
Aplicações em tempo Real
![Page 6: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/6.jpg)
Motivação
● Gerenciamento de múltiplos clientes simultâneos
● Alta disponibilidade de recursos
● Agilidade, precisão e segurança na entrega de informações
● Necessidade de informações em tempo real
● Imagina se o servidor web bloquear as requisições?
![Page 7: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/7.jpg)
E foi criado o Vert.x!!
● Framework para a JVM
● Desenvolvimento de aplicações reativas
● Orientado a Eventos
● Assíncrono
● Não blocante
● Simples, porém poderoso
● Modular
● Leve
![Page 8: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/8.jpg)
● Poliglota
E foi criado o Vert.x!!
![Page 9: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/9.jpg)
● Desenvolvimento em Java
E foi criado o Vert.x!!
![Page 10: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/10.jpg)
● Desenvolvimento em Groovy
E foi criado o Vert.x!!
![Page 11: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/11.jpg)
● Desenvolvimento em JavaScript
E foi criado o Vert.x!!
![Page 12: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/12.jpg)
DEMOVert.x com Java e Groovy
E foi criado o Vert.x!!
![Page 13: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/13.jpg)
Tecnologias Similares ao Vert.x
![Page 14: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/14.jpg)
Tecnologias Similares ao Vert.x
● Comparação com o Node.js
● Poliglota
● Multithreaded
● Event Bus: trocas de mensagens
● Event Loop
![Page 15: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/15.jpg)
Modelo Arquitetural
![Page 16: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/16.jpg)
Modelo Arquitetural
![Page 17: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/17.jpg)
Verticles: O Vert.x em Ação!!
● Unidade de execução do Vert.x
● Poligota: Verticles em diversas linguagens
● Single thread
● Módulos: agrupamento de verticles
● Comunicação com outros Verticles através de mensagens
● Execução de várias formas
● Linha de comando
● Maven
● Fat Jars
![Page 18: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/18.jpg)
Verticles: O Vert.x em Ação!!
● Desenvolvimento de um Verticle:
● Subclasse de AbstractVerticle
● Sobrescrita dos métodos start() e stop()
![Page 19: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/19.jpg)
Verticles: O Vert.x em Ação!!
● Verticles assíncronos: parâmetro do tipo Future:
● Deploy de vários verticles no método start()
● Sem bloqueios para deploy de outros verticles
![Page 20: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/20.jpg)
Verticles: O Vert.x em Ação!!
● Tipos de Verticles:
● Standard
● Execução em apenas 1 Event Loop
● Vertx gerencia threads e escalonamento
● Worker
● Execução através de Threads de um pool do Vert.x
● Criados para execução de códigos blocantes
● Multithread
● Verticles concorrentes executados por várias Threads
![Page 21: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/21.jpg)
Verticles: O Vert.x em Ação!!
DEMOVerticle em Java
Execução em Terminal e fat-jar
![Page 22: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/22.jpg)
Event Bus
● Sistema nervoso do Vert.x
● Implantação de verticles
● Troca de mensagens entre Verticles poliglotas
● Múltiplos Servidores e Browsers
EVENT BUS
JAVA GROOVY RUBYJAVA JAVA J.S.
![Page 23: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/23.jpg)
Event Bus
![Page 24: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/24.jpg)
Event Bus – Conceitos e API
● Endereçamento
● Mensagens envidas ao event bus através de mensagens
● Endereço Vert.x é uma simples String
● Qualquer String é válida
● Handlers
● Mensagens recebidas em handlers (manipuladores)
● Registro e um Handler como um endereço
● Único handler pode registrar diversos endereços
![Page 25: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/25.jpg)
Event Bus – Conceitos e API
● Registro de Handlers com endereços
● Exclusão de Handlers
![Page 26: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/26.jpg)
Event Bus – Troca de Mensagens
● Publish / Subscribe
● Mensagens enviadas para um endereço
● Entrega de mensagens para todos os handlers
cadastrados no endereço criado
● Modelo padrão Publish / Subscribe
● Qualquer String é válida
![Page 27: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/27.jpg)
Event Bus – Troca de Mensagens
● Point-to-Point e Request-Response
● Mensagem enviada para um único handler
● Handler pode “responder” a mensagem para o Event Bus
● Modelo padrão request-response
![Page 28: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/28.jpg)
Event Bus – Tipos de Mensagens
● Tipos primitivos
● String
● Buffers
● JSON
● Convenção e pŕatica padrão a troca de mensagens
através de JSON
![Page 29: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/29.jpg)
Event Bus – Demo Event Bus
DEMOEvent Bus em Java
Criação e Troca de Mensagens
![Page 30: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/30.jpg)
REST com Vert.x
● Roteamento de rotas com handlers corretos
● GET - /api/books
● GET - /api/books/:id
● POST - /api/books
● PUT - /api/books/:id
● DELETE - /api/books/:id
![Page 31: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/31.jpg)
REST com Vert.x
DEMOREST com Vert.x
Criação de API REST com Vert.x
![Page 32: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/32.jpg)
Sistemas Web com Vert.x
● Aplicações Server-side
● Aplicações Web RESTful
● Recomendado para escrita de microserviços RESTful
● Aplicações Web Real-time
● Suporte à autenticação e autorização
● Criação de Rotas
● Suporte a conteúdo estático
● Suporte a diversos tipos de templates
![Page 33: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/33.jpg)
Sistemas Web com Vert.x
● Criação de Servidor HTTP e Rotas
![Page 34: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/34.jpg)
Sistemas Web com Vert.x
● Capturando Handlers e invocando outros Handlers
![Page 35: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/35.jpg)
Sistemas Web com Vert.x
DEMOSistema Web Java com Vert.x
Aplicação WEB RESTful
![Page 36: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/36.jpg)
E tem muito mais com o Vert.x!!
● Core e Web
● Acesso a Dados
● MongoDB
● JDBC
● Redis
● Integração: Mail e JCA Clients
● Autenticação e Autorização: auth Common, JDBC e Shiro
● Programação Reativa: Vert.x Rx e Streams Reativos
● Cloud e Docker
● Clustering e alta disponibilidade
![Page 37: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/37.jpg)
E tem muito mais com o Vert.x!!
DEMOSistema Web Java com Vert.x
Deploy na Cloud
![Page 38: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/38.jpg)
Histórico do Vert.x
● Primeiro nome: Node.x
● Versão Atual: 3.0.0
● Criador: Tim Fox
● Projeto criado na VMWare
● Ano de criação: 2011
● 2013 – projeto passa a ser mantido pela Eclipse Foundation
![Page 39: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/39.jpg)
Sumário
● Motivação
● E foi criado o Vert.x
● Tecnologias similares ao Vert.x
● Modelo Arquitetural
● Verticles: o Vert.x em ação!
● Event Bus: “sistema nervoso” do Vert.x
● Um pouco de REST com o Vert.x
● Vert.x na Web
● Histórico do Vert.x
● E tem muito mais com o Vert.x!!
![Page 40: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/40.jpg)
Referências
● Documentação e artigos
● http://vertx.io/
● http://vertx.io/community/
● http://vertx.io/blog/blog.html
● http://www.infoq.com/br/news/2012/05/vertx
● GitHub
● https://github.com/vert-x
● Palestras
● https://www.youtube.com/watch?v=EMtoN9wFEOU
● https://www.youtube.com/watch?v=SsJQTvp_F0Y
![Page 41: Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x](https://reader034.vdocuments.net/reader034/viewer/2022051404/5880414a1a28abfd0a8b631f/html5/thumbnails/41.jpg)
Perguntas e Respostas