42
Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas com Vert.x Rodrigo Peleias @rpeleias

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

Embed Size (px)

Citation preview

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

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

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

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

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

Motivação

Aplicações em tempo Real

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

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

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

● Poliglota

E foi criado o Vert.x!!

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

● 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

● 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

● 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

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

Tecnologias Similares ao Vert.x

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

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

Modelo Arquitetural

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

Modelo Arquitetural

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

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

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

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

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

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

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

Event Bus

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Perguntas e Respostas

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

OBRIGADO!!

Rodrigo Peleias@rpeleias

[email protected]/rpeleias