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

Preview:

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

OBRIGADO!!

Rodrigo Peleias@rpeleias

rodrigo.peleias@gmail.comwww.github.com/rpeleias

Recommended