Upload
rodrigo-peleias
View
672
Download
1
Embed Size (px)
Citation preview
Desenvolvimento de aplicações assíncronas,
orientadas a eventos e poliglotas
com Vert.x
Rodrigo Peleias@rpeleias
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!!
Motivação
A Evolução da Web
Páginas
Estáticas
Apps Orientadas
A Formulários
Requisições
AJAX
Motivação
A Evolução da Web
Páginas
Estáticas
Apps Orientadas
A Formulários
Requisições
AJAX
Aplicações em
Tempo Real
Motivação
Aplicações em tempo Real
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?
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
● Poliglota
E foi criado o Vert.x!!
● Desenvolvimento em Java
E foi criado o Vert.x!!
● Desenvolvimento em Groovy
E foi criado o Vert.x!!
● Desenvolvimento em JavaScript
E foi criado o Vert.x!!
DEMOVert.x com Java e Groovy
E foi criado o Vert.x!!
Tecnologias Similares ao Vert.x
Tecnologias Similares ao Vert.x
● Comparação com o Node.js
● Poliglota
● Multithreaded
● Event Bus: trocas de mensagens
● Event Loop
Modelo Arquitetural
Modelo Arquitetural
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
Verticles: O Vert.x em Ação!!
● Desenvolvimento de um Verticle:
● Subclasse de AbstractVerticle
● Sobrescrita dos métodos start() e stop()
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
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
Verticles: O Vert.x em Ação!!
DEMOVerticle em Java
Execução em Terminal e fat-jar
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.
Event Bus
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
Event Bus – Conceitos e API
● Registro de Handlers com endereços
● Exclusão de Handlers
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
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
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
Event Bus – Demo Event Bus
DEMOEvent Bus em Java
Criação e Troca de Mensagens
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
REST com Vert.x
DEMOREST com Vert.x
Criação de API REST com Vert.x
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
Sistemas Web com Vert.x
● Criação de Servidor HTTP e Rotas
Sistemas Web com Vert.x
● Capturando Handlers e invocando outros Handlers
Sistemas Web com Vert.x
DEMOSistema Web Java com Vert.x
Aplicação WEB RESTful
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
E tem muito mais com o Vert.x!!
DEMOSistema Web Java com Vert.x
Deploy na Cloud
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
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!!
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
Perguntas e Respostas