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!!
DEMO
Vert.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!!
DEMO
Verticle 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
DEMO
Event 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
DEMO
REST 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
DEMO
Sistema 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!!
DEMO
Sistema 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
OBRIGADO!!
Rodrigo Peleias
@rpeleias
rodrigo.peleias@gmail.com
www.github.com/rpeleias

Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x

  • 1.
    Desenvolvimento de aplicaçõesassíncronas, orientadas a eventos e poliglotas com Vert.x Rodrigo Peleias @rpeleias
  • 2.
    Sumário ● Motivação ● Efoi 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!!
  • 3.
    Motivação A Evolução daWeb Páginas Estáticas Apps Orientadas A Formulários Requisições AJAX
  • 4.
    Motivação A Evolução daWeb Páginas Estáticas Apps Orientadas A Formulários Requisições AJAX Aplicações em Tempo Real
  • 5.
  • 6.
    Motivação ● Gerenciamento demú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?
  • 7.
    E foi criadoo 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
  • 8.
    ● Poliglota E foicriado o Vert.x!!
  • 9.
    ● Desenvolvimento emJava E foi criado o Vert.x!!
  • 10.
    ● Desenvolvimento emGroovy E foi criado o Vert.x!!
  • 11.
    ● Desenvolvimento emJavaScript E foi criado o Vert.x!!
  • 12.
    DEMO Vert.x com Javae Groovy E foi criado o Vert.x!!
  • 13.
  • 14.
    Tecnologias Similares aoVert.x ● Comparação com o Node.js ● Poliglota ● Multithreaded ● Event Bus: trocas de mensagens ● Event Loop
  • 15.
  • 16.
  • 17.
    Verticles: O Vert.xem 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
  • 18.
    Verticles: O Vert.xem Ação!! ● Desenvolvimento de um Verticle: ● Subclasse de AbstractVerticle ● Sobrescrita dos métodos start() e stop()
  • 19.
    Verticles: O Vert.xem 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
  • 20.
    Verticles: O Vert.xem 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
  • 21.
    Verticles: O Vert.xem Ação!! DEMO Verticle em Java Execução em Terminal e fat-jar
  • 22.
    Event Bus ● Sistemanervoso 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.
  • 23.
  • 24.
    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
  • 25.
    Event Bus –Conceitos e API ● Registro de Handlers com endereços ● Exclusão de Handlers
  • 26.
    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
  • 27.
    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
  • 28.
    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
  • 29.
    Event Bus –Demo Event Bus DEMO Event Bus em Java Criação e Troca de Mensagens
  • 30.
    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
  • 31.
    REST com Vert.x DEMO RESTcom Vert.x Criação de API REST com Vert.x
  • 32.
    Sistemas Web comVert.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
  • 33.
    Sistemas Web comVert.x ● Criação de Servidor HTTP e Rotas
  • 34.
    Sistemas Web comVert.x ● Capturando Handlers e invocando outros Handlers
  • 35.
    Sistemas Web comVert.x DEMO Sistema Web Java com Vert.x Aplicação WEB RESTful
  • 36.
    E tem muitomais 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
  • 37.
    E tem muitomais com o Vert.x!! DEMO Sistema Web Java com Vert.x Deploy na Cloud
  • 38.
    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
  • 39.
    Sumário ● Motivação ● Efoi 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!!
  • 40.
    Referências ● Documentação eartigos ● 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
  • 41.
  • 42.