SlideShare uma empresa Scribd logo
1 de 50
Tomada de decisões com xPaaS aplicada ao
fantasy game oficial do campeonato brasileiro
Bruno Rossetto Machado
Senior Middleware Solution Architect
Agenda
● Fantasy Games
● xPaaS com Red Hat Openshift
● Introdução
● Red Hat JBoss Data Grid
● Visão Geral
● Red Hat JBoss BRMS
● Visão Geral
● Arquitetura e Componentes Utilizados
● Demo
As opiniões aqui expressadas são de única
responsabilidade minha, e nada referem-se as da
empresa para qual trabalho.
Importante!!!
As técnicas apresentadas nesta apresentação podem
lhe ajudar a tomar boas decisões, mas não garantem
que bons resultados sempre ocorrerão. Mesmo
quando uma boa decisão é tomada, a sorte
geralmente desempenha um papel na determinação
de um bom ou mau resultado.
No entanto, sua utilização deverá produzir bons
resultados com mais frequência que a seleção de
jogadores de maneira irracional.
42 milhões
jogaram Fantasy Game nos
Estados Unidos e Canadá
em 2014
http://en.wikipedia.org/wiki/Fantasy_sport
http://games.espn.go.com/frontpage
http://globoesporte.globo.com/cartola-fc/
Trailer:
https://www.youtube.com/watch?v=o8Bk0t7bYVQ
Abordagem Estatística: Programação Linear
● Técnica de otimização
●
Qual é a combinação de investimentos que
minimiza o risco de uma carteira?
● Quais produtos devem ser fabricados de forma a
maximizar o lucro de uma empresa?
● Quantos funcionários devem ser alocados em cada
etapa de fabricação de um produto a fim de
minimizar o tempo de produção?
Abordagem Estatística: Regressão Linear
● Objetivo: explicar o comportamento de uma variável
de interesse baseado no conhecimento de outras
variáveis.
● Explicar o consumo de determinado bem em função
de seu preço, renda e dos preços dos bens
substitutos.
● Explicar o comportamento dos retornos de um ativo
em função da variação do Ibovespa.
● Entender como as características de um funcionário
impactam no seu salário.
Etapas de formulação de um modelo
● Entender o problema
● Identificar as variáveis de decisão
● Colocar as restrições e combinações das variáveis de
decisão
Jogadores com Tendência de Valorização
de Acordo com o Modelo de Previsão Final
http://cartoludo-cartolafc.rhcloud.com/
JBOSS xPaaS SERVICES
FOR OPENSHIFT
JBoss BRMS, BPM
FeedHenry by Red Hat
JBoss EAP, Data Grid
JBoss A-MQ, Fuse iPaaS
aPaaS
mPaaS
bpmPaaS
JBOSS xPaaS para OPENSHIFT
ONDE O MIDDLEWARE ENCONTRA A NÚVEM...
PLATFORM-AS-A-SERVICE
FOR OPEN HYBRID CLOUD
PRIVAT
E
PHYSICAL PUBLI
C
NODE
NODE
NODE
NODE
EAP MySQL Svc1 Svc2
BROKER
BROKER
VIRTUAL
APP
DEVELOPER/
DEVOPS
PaaS
ADMIN
APP USER
Appcomponent
Appcomponent
Appcomponent
Appcomponent
Appcomponent
Appcomponent
Appcomponent
JBOSS xPaaS SERVICES FOR OPENSHIFT
Public
IaaS
Virtualization/
Private IaaS
Phys
Public
IaaS
SaaS
Appcomponent
APPLICATION
PRIVAT
E
ON-PREMISE PUBLI
C
PRIVAT
E
ON-PREMISE PUBLI
C
aPaaS
JBoss EAP
iPaaS
JBoss
Fuse
bpmPaaS
JBoss BPM
Suite
mPaaS
FeedHenry
by Red Hat
JBOSS xPaaS SERVICES FOR OPENSHIFT
PRIVAT
E
ON-PREMISE PUBLI
C
● Cartucho Red Hat JBoss Enterprise Application Platform
● Automação de Deployment, Scaling e Atualizações
● Simplifica adoção de DevOps – Continuous Delivery via GIT, Jenkins,
Arquillian, etc...
Application PaaS
aPaaS
JBoss EAP
iPaaS
JBoss
Fuse
bpmPaaS
JBoss BPM
Suite
mPaaS
FeedHenry
by Red Hat
PRIVAT
E
ON-PREMISE PUBLI
C
● Tecnologias JBoss para integração de aplicações, dados e
mensagens
● Integrações em nuvens públicas ou privadas
● Simplifica conectividade, roteamento e configuração de filas
Integration PaaS
aPaaS
JBoss EAP
iPaaS
JBoss
Fuse
bpmPaaS
JBoss BPM
Suite
mPaaS
FeedHenry
by Red Hat
PRIVAT
E
ON-PREMISE PUBLI
C
● Criação de modelo de processos usando serviço de nuvem
● Execução e automação de processos, métricas e indicadores
● Orquestra aplicações e serviços que se encontram em ambientes
privados e de nuvem
BPM PaaS
aPaaS
JBoss EAP
iPaaS
JBoss
Fuse
bpmPaaS
JBoss BPM
Suite
mPaaS
FeedHenry
by Red Hat
PRIVAT
E
ON-PREMISE PUBLI
C
● Notificações Push, segurança, criptografia e sincronismo de dados
● Suporte para aplicativos nativos, híbridos e webapps
● Backend pode rodar em nuvens públicas ou privadas
● Simplifica configurações e desenvolvimento de APIs
Mobile PaaS
aPaaS
JBoss EAP
iPaaS
JBoss
Fuse
bpmPaaS
JBoss BPM
Suite
mPaaS
FeedHenry
by Red Hat
Red Hat JBoss Data Grid
Visão Geral
O que é um Data Grid?
● Uma base de dados em memória, distribuída, projetada para prover
rápido acesso a grandes volumes de dados
● Muitas vezes, uma camada complementar entre os bancos de dados
relacionais e aplicações
Principais características:
✔ Cache distribuído em memória
✔ Escalabilidade elástica
✔ NoSQL
✔ Replicação de dados
✔ Transacional
Tipos de dados
● Reference data: Dados nunca são alterados ou com pouca frequência
● Leitura pesada - compartilhado entre usuários (acesso
concorrente)
● Exemplos: descrição de produtos, dados do perfil do usuário, etc.
● Resource data: Dados compartilhados
● Leitura e escrita – compartilhado entre usuários (acesso
concorrente)
● Exemplos – Ações, pesquisas online, etc.
● Activity data:
● Leitura e escrita – Específico do usuário sem acesso concorrente
● Exemplos: Sessão do usuário, Conteúdo de um carrinho de
compras, resposta de pesquisas, etc
Características
● Na mesma JVM da aplicação
● Leituras instantâneas
● Escalabilidade linear
Ideal para
● Ambientes homogêneos (Java)
● Replicação de informação entre
aplicações
● Cenários que exigem baixa
tolerância contra falhas
Red Hat JBoss Data Grid
Funcionamento - Library mode
Características
● Distribuição horizontal e armazenamento
“ilimitado”
● Compatível com qualquer linguagem e
framework
Ideal para
● Variância no tamanho dos dados, sem
previsibilidade ou periodicidade
● Processamento na camada de dados via
Map/Reduce
● Transferência das cargas de
processamento do cache local e dos
bancos de dados
Red Hat JBoss Data Grid
Funcionamento – Modo Client/Server
Red Hat JBoss Data Grid
Specs
● JSR-107: Temporary caching API
● Esperado para EE8
● Infinispan já está certificado
como JSR-107 compliant
caching provider
● JCache estará presente JDG 6.5
● JSR-347: Data grids
● Liderado pela Red Hat
● Esperado pela Java EE8
● JSR-346: CDI1.1
● Modelo para Data Grids
Protocolos de Acesso
Específico para modo Client/Server
Protocolo Formato Tipo de cliente Publica mudanças
de topologia?
REST texto qualquer não
Memcached texto qualquer não
Hot Rod binário Java, C++, C#,
Python
sim
Hot Rod: Protocolo aberto de alta performance
● Reconhece alterações na topologia de nós do grid
● Failover automático
● Balanceamento de requisições entre nós do grid
● Cliente C++ e .NET
Infinispan Cluster no Openshift 3
● Ainda não existe cartucho para Openshift 2
● Openshift 3 com Docker e Kubernetes:
● http://blog.infinispan.org/2015/03/infinispan-on-openshift-v3.html
● 2 nós do Infinispan com cluster em TCP e discovery
com JGroups Gossip Cluster
Red Hat JBoss BRMS
Visão Geral
A single, integrated, certified distribution for Business Rules Management
and Complex Event Processing, based on open source community
projects:
Business Analysis Body of Knowledge®
(BABOK)
● Rules are used by the enterprise to enforce goals and
guide decision-making. They determine when
information associated with an entity may change, what
values of information are valid, how decisions are made
in a process, and what the organization’s priorities are.
Business rules are normally described as such,
although they may also be embedded in process
models (9.21), state diagrams (9.29), and use cases
(9.26).
● Choose a set of modeling techniques that meet the
informational needs of stakeholders and allow
description of all five concepts to ensure full coverage of
a business domain (assuming that full coverage is
required).
Business Analysis Body of Knowledge®
(BABOK)
● 6.2.5 Techniques
● Business Rules Analysis (9.4): Business rules may
be separated from other requirements for
implementation and management in a business rules
engine or similar.
● Data Flow Diagrams (9.6): Shows how information
flows through a system. Each function that modifies
the data should be decomposed into lower levels until
the system is sufficiently described.
● Data Modeling (9.7): Describes the concepts and
relationships relevant to the solution or business
domain.
Business Analysis Body of Knowledge®
(BABOK)
● 9.4 Business Rules Analysis
● 9.4.1. Purpose
● To define the rules that govern decisions in an
organization and that define, constrain, or enable
organizational operations.
Business Analysis Body of Knowledge®
(BABOK)
● 9.4.2 Description
● A business rule is a specific, actionable, testable
directive that is under the control of an organization and
that supports a business policy.
● Particularly complex rules, or rules with a number of
interrelated dependencies, may be expressed as a
decision table or decision tree, as described in
Decision Analysis (9.8).
BRMS – Exemplo de DRL
BRMS – Exemplo de DSL
Desenho arquitetural
Arquitetura Atual
HAProxyHAProxy JBoss Data Grid
Library Mode
JBoss Data Grid
Library Mode
JDGJDG
In memory
JBoss EAP
HistóricoAuto ScallingBalanceamento
Arquitetura V2
HAProxyHAProxy JBoss Data Grid
Library Mode
JBoss Data Grid
Library Mode
JBoss BRMSJBoss BRMS
JDGJDG
In memory
JBoss EAP
HistóricoAuto ScallingBalanceamento
Arquitetura V3 com xPaas
HAProxyHAProxy
JBoss BRMSJBoss BRMS
JDGJDG
JBoss EAP
HistóricoAuto ScallingBalanceamento
JBoss AMQ /
Fuse
JBoss AMQ /
Fuse
Integração
JDGJDG
Principais Componentes
Manipulação do cache
Cache<Object, Object> cache = null;
try {
cache = new DefaultCacheManager("infinispan.xml").getCache("cartoludo");
} catch (IOException e) {
e.printStackTrace();
}
// Listar chaves
for (Object key : cache.keySet()) {
System.out.println("Chave: "+ key);
}
// Obter do cache
Atleta atleta = (Atleta) cache.get(atleta.getId());
// Adicionar no cache
cache.put(atleta.getId(), atleta);
org.infinispan.query.SearchManager
try {
cache = new
DefaultCacheManager("infinispan.xml").getCache("cartoludo");
} catch (IOException e) {
e.printStackTrace();
}
manager = Search.getSearchManager(cache);
private Cache<Object, Object> cache = null;
private static SearchManager manager;
...
org.infinispan.query.CacheQuery
public List<Object> buscaAtleta(Posicao.Abreviacao posicaoAbreviada) {
QueryBuilder builder =
manager.buildQueryBuilderForClass(Atleta.class).get();
BooleanQuery bq = new BooleanQuery();
if (posicaoAbreviada != null) {
Query q =
builder.keyword().onField("posicao.abreviacao")
.matching(posicaoAbreviada.toString()).createQuery();
bq.add(q, Occur.MUST);
}
Sort sort = new Sort(new SortField("media", SortField.DOUBLE, true));
CacheQuery query = manager.getQuery(bq).sort(sort);
return query.list();
}
org.hibernate.search.annotations.Indexed
org.hibernate.search.annotations.Field
@Field
@NumericField
private Double media;
@Field
@NumericField
private Double pontos;
@Field(store = Store.YES)
private String apelido;
Kie*** Knowledge Is Everything
KieServices kieServices = KieServices.Factory.get();
ReleaseId id =
kieServices.newReleaseId("br.com.cartoludo",
"cartoludo", "LATEST");
KieContainer kieContainer = kieServices.newKieContainer(id);
KieScanner kScanner = kieServices.newKieScanner(kieContainer);
kScanner.start(1000);
KieSession kSession = kieContainer.newKieSession(
EnvironmentFactory.newEnvironment());
...
kSession.insert(atleta);
...
kSession.fireAllRules();
● Maven
● Git
● HAProxy
● rhc
https://www.openshift.com/walkthrough/developer-workflow
Dúvidas?
bmachado@redhat.com
bruno.rossetto@gmail.com

Mais conteúdo relacionado

Semelhante a Tomada de decisões com xPaaS aplicada ao fantasy game oficial do campeonato brasileiro

Bancos de Dados Pós-Relacionais
Bancos de Dados Pós-RelacionaisBancos de Dados Pós-Relacionais
Bancos de Dados Pós-Relacionaiselliando dias
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoComunidade NetPonto
 
Bancos de dados analíticos open source
Bancos de dados analíticos open sourceBancos de dados analíticos open source
Bancos de dados analíticos open sourceMatheus Espanhol
 
Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3Flávio Lisboa
 
Arquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQLArquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQLRaul Oliveira
 
PostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
PostgreSQL em projetos de Business Analytics e Big Data Analytics com PentahoPostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
PostgreSQL em projetos de Business Analytics e Big Data Analytics com PentahoAmbiente Livre
 
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDAOficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDAnitaibezerra
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoLuiz Costa
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservicestdc-globalcode
 
Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)
Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)
Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)Andre Santos
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctoolse-Setorial
 
Introdução à Banco de Dados
Introdução à Banco de DadosIntrodução à Banco de Dados
Introdução à Banco de DadosBruno Siqueira
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioRalph Rassweiler
 

Semelhante a Tomada de decisões com xPaaS aplicada ao fantasy game oficial do campeonato brasileiro (20)

Bancos de Dados Pós-Relacionais
Bancos de Dados Pós-RelacionaisBancos de Dados Pós-Relacionais
Bancos de Dados Pós-Relacionais
 
drools
droolsdrools
drools
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis Paulino
 
Planejamento rede
Planejamento rede Planejamento rede
Planejamento rede
 
Bancos de dados analíticos open source
Bancos de dados analíticos open sourceBancos de dados analíticos open source
Bancos de dados analíticos open source
 
Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3
 
Arquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQLArquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQL
 
PostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
PostgreSQL em projetos de Business Analytics e Big Data Analytics com PentahoPostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
PostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
 
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDAOficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
 
Projeto de Software
Projeto de SoftwareProjeto de Software
Projeto de Software
 
Slide da aula 04
Slide da aula 04Slide da aula 04
Slide da aula 04
 
BDD
BDDBDD
BDD
 
BDI_1_conceitos
BDI_1_conceitosBDI_1_conceitos
BDI_1_conceitos
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservices
 
Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)
Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)
Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctools
 
Introdução à Banco de Dados
Introdução à Banco de DadosIntrodução à Banco de Dados
Introdução à Banco de Dados
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
 
Pgbr2013
Pgbr2013Pgbr2013
Pgbr2013
 

Tomada de decisões com xPaaS aplicada ao fantasy game oficial do campeonato brasileiro

  • 1. Tomada de decisões com xPaaS aplicada ao fantasy game oficial do campeonato brasileiro Bruno Rossetto Machado Senior Middleware Solution Architect
  • 2. Agenda ● Fantasy Games ● xPaaS com Red Hat Openshift ● Introdução ● Red Hat JBoss Data Grid ● Visão Geral ● Red Hat JBoss BRMS ● Visão Geral ● Arquitetura e Componentes Utilizados ● Demo
  • 3. As opiniões aqui expressadas são de única responsabilidade minha, e nada referem-se as da empresa para qual trabalho.
  • 4. Importante!!! As técnicas apresentadas nesta apresentação podem lhe ajudar a tomar boas decisões, mas não garantem que bons resultados sempre ocorrerão. Mesmo quando uma boa decisão é tomada, a sorte geralmente desempenha um papel na determinação de um bom ou mau resultado. No entanto, sua utilização deverá produzir bons resultados com mais frequência que a seleção de jogadores de maneira irracional.
  • 5. 42 milhões jogaram Fantasy Game nos Estados Unidos e Canadá em 2014 http://en.wikipedia.org/wiki/Fantasy_sport http://games.espn.go.com/frontpage
  • 8. Abordagem Estatística: Programação Linear ● Técnica de otimização ● Qual é a combinação de investimentos que minimiza o risco de uma carteira? ● Quais produtos devem ser fabricados de forma a maximizar o lucro de uma empresa? ● Quantos funcionários devem ser alocados em cada etapa de fabricação de um produto a fim de minimizar o tempo de produção?
  • 9. Abordagem Estatística: Regressão Linear ● Objetivo: explicar o comportamento de uma variável de interesse baseado no conhecimento de outras variáveis. ● Explicar o consumo de determinado bem em função de seu preço, renda e dos preços dos bens substitutos. ● Explicar o comportamento dos retornos de um ativo em função da variação do Ibovespa. ● Entender como as características de um funcionário impactam no seu salário.
  • 10. Etapas de formulação de um modelo ● Entender o problema ● Identificar as variáveis de decisão ● Colocar as restrições e combinações das variáveis de decisão
  • 11. Jogadores com Tendência de Valorização de Acordo com o Modelo de Previsão Final
  • 14. JBoss BRMS, BPM FeedHenry by Red Hat JBoss EAP, Data Grid JBoss A-MQ, Fuse iPaaS aPaaS mPaaS bpmPaaS JBOSS xPaaS para OPENSHIFT ONDE O MIDDLEWARE ENCONTRA A NÚVEM...
  • 15. PLATFORM-AS-A-SERVICE FOR OPEN HYBRID CLOUD PRIVAT E PHYSICAL PUBLI C NODE NODE NODE NODE EAP MySQL Svc1 Svc2 BROKER BROKER VIRTUAL APP DEVELOPER/ DEVOPS PaaS ADMIN APP USER
  • 16. Appcomponent Appcomponent Appcomponent Appcomponent Appcomponent Appcomponent Appcomponent JBOSS xPaaS SERVICES FOR OPENSHIFT Public IaaS Virtualization/ Private IaaS Phys Public IaaS SaaS Appcomponent APPLICATION PRIVAT E ON-PREMISE PUBLI C
  • 17. PRIVAT E ON-PREMISE PUBLI C aPaaS JBoss EAP iPaaS JBoss Fuse bpmPaaS JBoss BPM Suite mPaaS FeedHenry by Red Hat JBOSS xPaaS SERVICES FOR OPENSHIFT
  • 18. PRIVAT E ON-PREMISE PUBLI C ● Cartucho Red Hat JBoss Enterprise Application Platform ● Automação de Deployment, Scaling e Atualizações ● Simplifica adoção de DevOps – Continuous Delivery via GIT, Jenkins, Arquillian, etc... Application PaaS aPaaS JBoss EAP iPaaS JBoss Fuse bpmPaaS JBoss BPM Suite mPaaS FeedHenry by Red Hat
  • 19. PRIVAT E ON-PREMISE PUBLI C ● Tecnologias JBoss para integração de aplicações, dados e mensagens ● Integrações em nuvens públicas ou privadas ● Simplifica conectividade, roteamento e configuração de filas Integration PaaS aPaaS JBoss EAP iPaaS JBoss Fuse bpmPaaS JBoss BPM Suite mPaaS FeedHenry by Red Hat
  • 20. PRIVAT E ON-PREMISE PUBLI C ● Criação de modelo de processos usando serviço de nuvem ● Execução e automação de processos, métricas e indicadores ● Orquestra aplicações e serviços que se encontram em ambientes privados e de nuvem BPM PaaS aPaaS JBoss EAP iPaaS JBoss Fuse bpmPaaS JBoss BPM Suite mPaaS FeedHenry by Red Hat
  • 21. PRIVAT E ON-PREMISE PUBLI C ● Notificações Push, segurança, criptografia e sincronismo de dados ● Suporte para aplicativos nativos, híbridos e webapps ● Backend pode rodar em nuvens públicas ou privadas ● Simplifica configurações e desenvolvimento de APIs Mobile PaaS aPaaS JBoss EAP iPaaS JBoss Fuse bpmPaaS JBoss BPM Suite mPaaS FeedHenry by Red Hat
  • 22. Red Hat JBoss Data Grid Visão Geral
  • 23. O que é um Data Grid? ● Uma base de dados em memória, distribuída, projetada para prover rápido acesso a grandes volumes de dados ● Muitas vezes, uma camada complementar entre os bancos de dados relacionais e aplicações Principais características: ✔ Cache distribuído em memória ✔ Escalabilidade elástica ✔ NoSQL ✔ Replicação de dados ✔ Transacional
  • 24. Tipos de dados ● Reference data: Dados nunca são alterados ou com pouca frequência ● Leitura pesada - compartilhado entre usuários (acesso concorrente) ● Exemplos: descrição de produtos, dados do perfil do usuário, etc. ● Resource data: Dados compartilhados ● Leitura e escrita – compartilhado entre usuários (acesso concorrente) ● Exemplos – Ações, pesquisas online, etc. ● Activity data: ● Leitura e escrita – Específico do usuário sem acesso concorrente ● Exemplos: Sessão do usuário, Conteúdo de um carrinho de compras, resposta de pesquisas, etc
  • 25. Características ● Na mesma JVM da aplicação ● Leituras instantâneas ● Escalabilidade linear Ideal para ● Ambientes homogêneos (Java) ● Replicação de informação entre aplicações ● Cenários que exigem baixa tolerância contra falhas Red Hat JBoss Data Grid Funcionamento - Library mode
  • 26. Características ● Distribuição horizontal e armazenamento “ilimitado” ● Compatível com qualquer linguagem e framework Ideal para ● Variância no tamanho dos dados, sem previsibilidade ou periodicidade ● Processamento na camada de dados via Map/Reduce ● Transferência das cargas de processamento do cache local e dos bancos de dados Red Hat JBoss Data Grid Funcionamento – Modo Client/Server
  • 27. Red Hat JBoss Data Grid Specs ● JSR-107: Temporary caching API ● Esperado para EE8 ● Infinispan já está certificado como JSR-107 compliant caching provider ● JCache estará presente JDG 6.5 ● JSR-347: Data grids ● Liderado pela Red Hat ● Esperado pela Java EE8 ● JSR-346: CDI1.1 ● Modelo para Data Grids
  • 28. Protocolos de Acesso Específico para modo Client/Server Protocolo Formato Tipo de cliente Publica mudanças de topologia? REST texto qualquer não Memcached texto qualquer não Hot Rod binário Java, C++, C#, Python sim Hot Rod: Protocolo aberto de alta performance ● Reconhece alterações na topologia de nós do grid ● Failover automático ● Balanceamento de requisições entre nós do grid ● Cliente C++ e .NET
  • 29. Infinispan Cluster no Openshift 3 ● Ainda não existe cartucho para Openshift 2 ● Openshift 3 com Docker e Kubernetes: ● http://blog.infinispan.org/2015/03/infinispan-on-openshift-v3.html ● 2 nós do Infinispan com cluster em TCP e discovery com JGroups Gossip Cluster
  • 30. Red Hat JBoss BRMS Visão Geral
  • 31. A single, integrated, certified distribution for Business Rules Management and Complex Event Processing, based on open source community projects:
  • 32.
  • 33. Business Analysis Body of Knowledge® (BABOK) ● Rules are used by the enterprise to enforce goals and guide decision-making. They determine when information associated with an entity may change, what values of information are valid, how decisions are made in a process, and what the organization’s priorities are. Business rules are normally described as such, although they may also be embedded in process models (9.21), state diagrams (9.29), and use cases (9.26). ● Choose a set of modeling techniques that meet the informational needs of stakeholders and allow description of all five concepts to ensure full coverage of a business domain (assuming that full coverage is required).
  • 34. Business Analysis Body of Knowledge® (BABOK) ● 6.2.5 Techniques ● Business Rules Analysis (9.4): Business rules may be separated from other requirements for implementation and management in a business rules engine or similar. ● Data Flow Diagrams (9.6): Shows how information flows through a system. Each function that modifies the data should be decomposed into lower levels until the system is sufficiently described. ● Data Modeling (9.7): Describes the concepts and relationships relevant to the solution or business domain.
  • 35. Business Analysis Body of Knowledge® (BABOK) ● 9.4 Business Rules Analysis ● 9.4.1. Purpose ● To define the rules that govern decisions in an organization and that define, constrain, or enable organizational operations.
  • 36. Business Analysis Body of Knowledge® (BABOK) ● 9.4.2 Description ● A business rule is a specific, actionable, testable directive that is under the control of an organization and that supports a business policy. ● Particularly complex rules, or rules with a number of interrelated dependencies, may be expressed as a decision table or decision tree, as described in Decision Analysis (9.8).
  • 40. Arquitetura Atual HAProxyHAProxy JBoss Data Grid Library Mode JBoss Data Grid Library Mode JDGJDG In memory JBoss EAP HistóricoAuto ScallingBalanceamento
  • 41. Arquitetura V2 HAProxyHAProxy JBoss Data Grid Library Mode JBoss Data Grid Library Mode JBoss BRMSJBoss BRMS JDGJDG In memory JBoss EAP HistóricoAuto ScallingBalanceamento
  • 42. Arquitetura V3 com xPaas HAProxyHAProxy JBoss BRMSJBoss BRMS JDGJDG JBoss EAP HistóricoAuto ScallingBalanceamento JBoss AMQ / Fuse JBoss AMQ / Fuse Integração JDGJDG
  • 44. Manipulação do cache Cache<Object, Object> cache = null; try { cache = new DefaultCacheManager("infinispan.xml").getCache("cartoludo"); } catch (IOException e) { e.printStackTrace(); } // Listar chaves for (Object key : cache.keySet()) { System.out.println("Chave: "+ key); } // Obter do cache Atleta atleta = (Atleta) cache.get(atleta.getId()); // Adicionar no cache cache.put(atleta.getId(), atleta);
  • 45. org.infinispan.query.SearchManager try { cache = new DefaultCacheManager("infinispan.xml").getCache("cartoludo"); } catch (IOException e) { e.printStackTrace(); } manager = Search.getSearchManager(cache); private Cache<Object, Object> cache = null; private static SearchManager manager; ...
  • 46. org.infinispan.query.CacheQuery public List<Object> buscaAtleta(Posicao.Abreviacao posicaoAbreviada) { QueryBuilder builder = manager.buildQueryBuilderForClass(Atleta.class).get(); BooleanQuery bq = new BooleanQuery(); if (posicaoAbreviada != null) { Query q = builder.keyword().onField("posicao.abreviacao") .matching(posicaoAbreviada.toString()).createQuery(); bq.add(q, Occur.MUST); } Sort sort = new Sort(new SortField("media", SortField.DOUBLE, true)); CacheQuery query = manager.getQuery(bq).sort(sort); return query.list(); }
  • 48. Kie*** Knowledge Is Everything KieServices kieServices = KieServices.Factory.get(); ReleaseId id = kieServices.newReleaseId("br.com.cartoludo", "cartoludo", "LATEST"); KieContainer kieContainer = kieServices.newKieContainer(id); KieScanner kScanner = kieServices.newKieScanner(kieContainer); kScanner.start(1000); KieSession kSession = kieContainer.newKieSession( EnvironmentFactory.newEnvironment()); ... kSession.insert(atleta); ... kSession.fireAllRules();
  • 49. ● Maven ● Git ● HAProxy ● rhc https://www.openshift.com/walkthrough/developer-workflow

Notas do Editor

  1. JBoss xPaaS services for OpenShift fulfill the vision of an open hybrid cloud by enabling customers to run JBoss products in an OpenShift PaaS environment. So, with all that great middleware, and the great new DevOps paradigm enabled by PaaS, what better thing to do than engineer them together? That&amp;apos;s exactly what we&amp;apos;re doing with xPaaS. In a strategy we announced last year at JavaOne, we&amp;apos;re in the process of rolling out OpenShift-optimized variants of all the JBoss Middleware to create a much more productive and innovative future for enterprise software development. Some middleware products are generally available today. Several are in developer preview now, and the next offerings to be made Generally Available will be JBoss Fuse our Enterprise Service Bus and JBoss A-MQ our enterprise messaging infrastructure, coming later this fall 2014.
  2. We launched OpenShift several years ago, and my colleague XXXXX is covering this more deeply in other sessions today. i OpenShift makes efficient use of containers as “gears”, many of which run on each “node” or VM. Gears can contain different parts of the application—your code, the database, 3rd party services, etc. Resources are automatically allocated and adjusted behind the scenes by a “broker”. The app developer and PaaS admin each have dashboards for interacting with the PaaS, and end users of the PaaS-based apps see what appears like any other Web app.
  3. Red Hat JBoss xPaaS services for OpenShift is comprehensive suite of enterprise services needed for development and deployment of modern, complex enterprise applications in the cloud. xPaaS is the unifying platform that enables customers to build, deploy, provision and manage modern enterprise applications on bare metal, public and private cloud. A platform that encompasses development and management of end-to-end applications that span web/mobile, process orchestration, and integration. &amp;gt; Built with Jboss Middleware, on OpenShift technology, leveraging our expertise &amp;gt; Delivers a unified management console across cloud and on premise &amp;gt; Provides application builder productivity across all the platform&amp;apos;s capabilities}
  4. The roadmap organizes into 4 main areas—4 “x”s, if you will. Application PaaS, or “aPaaS”. Integration PaaS, or “iPaaS”. Business Process Management Paas, or “bpmPaaS”. And finally, mobile PaaS, or “mPaaS”.
  5. Cartucho Red Hat JBoss Enterprise Application Platform Automação de Deployment, Scaling e Atualizações Simplifica DevOps – Continuous Delivery via GIT, Jenkins, Arquillian, etc...
  6. Tecnologias JBoss para integração de aplicações, dados e mensagens Integrações em nuvens públicas ou privadas Simplifica conectividade, roteamento e configuração de filas
  7. Criação de modelo de processos usando serviço de nuvem Exporta para plataformas de BPM Orquestra aplicações e serviços que se encontram em ambientes privados e de nuvem
  8. Notificações Push, segurança, criptografia e sincronismo de dados Suporte para aplicativos nativos, híbridos e webapps Backend pode rodar em nuvens públicas ou privadas Simplifica configurações e dsenvolvimento de APIs
  9. É uma estrutura de armazenamento de dados em memória, seguindo o modelo chave / valor, que possui uma características de distribuição de dados em cluster, com alta disponibilidade, controle transacional, monitoração, elasticidade, etc. Caso exista a necessidade de adicionar um novo nó para armazenamento, poderá realizar o auto-discovery deste nó e automaticamente fará parte do cluster e irá compartilhar seus dados. O principal objetivo de um data grid é a atingir alta performance de aplicações. pode ser utilizado também como uma camada entre a aplicação e o banco de dados, armazenando dados que precisam ter maior rapidez no acesso.
  10. É uma estrutura de armazenamento de dados em memória, seguindo o modelo chave / valor, que possui uma características de distribuição de dados em cluster, com alta disponibilidade, controle transacional, monitoração, elasticidade, etc. Caso exista a necessidade de adicionar um novo nó para armazenamento, poderá realizar o auto-discovery deste nó e automaticamente fará parte do cluster e irá compartilhar seus dados. O principal objetivo de um data grid é a atingir alta performance de aplicações. pode ser utilizado também como uma camada entre a aplicação e o banco de dados, armazenando dados que precisam ter maior rapidez no acesso.
  11. Local Cache – Library Mode in JDG Estrutura de dados sofisticada... Memory management Persistence Eviction, expiration Elimina estouro de memória Warm-start, preload Transaction capable (JTA) Ideal para: Processos únicos Dados únicos para um determinado processo Dados não compartilhados Varying degree of functionality in Library &amp; Client/Server mode. Memory Management – Policy Based - Persistence: write to db/file system - Eviction/Expiration: Policy based value removal - Eliminate Overflow: Evict data based off use case policies Replicated Cache – Failover Protection &amp; High performance cache. JVM - If you have 100 blade servers, and each node has 2GB of space to dedicate to a replicated cache, you end up with 2 GB of total data. Every server is just a copy. On the other hand, with a distributed grid - assuming you want 1 copy per data item - you get a 100 GB memory backed virtual heap that is efficiently accessible from anywhere in the grid. Use Case – Extreme Fail-over &amp; High Performance. --- Instant reads, linear performance scalability Network overhead scales linearly Limited to a single JVM heap size Replicate the same key/value, updates across the cluster Ideal for: Small, fixed datasets Scenarios requiring extremely high fault tolerance Real-time read access by multiple applications Warm Start – Predefined data to be loaded in Cache.. i.e. Sports Betting – Odds for events that week. JTA – Integrate Directly with Hibernate Use Cases – Front DB &amp; reduce direct DB I/O operations
  12. Distribute Cache – Present the JDG as a pool of resources Modelo Map/Reduce é uma adaptação do original da Google Map/Reduce – Breaking large tasks down into smaller consumable tasks, &amp; executing them in a multi-threaded way. Reduce is the process of collating these results back to a singular result. Hashing algorithm is configured with the number of copies each cache entry should be maintained cluster-wide. Number of copies represents the tradeoff between performance and durability of data Low Latency – In-Memory, Key-Value store = fast Clustered – No single point of failure Multiple Access Protocols – REST, memcached, Hot Rod Ideal for: Managing and processing massive datasets across global data centers Elastic datasets that experience large fluctuations, periodicity, or unpredictability Transferring transaction loads away from local cache and traditional databases --- Distributed, horizontally scalable, unlimited storage Move processing to data with map/reduce Low-latency, fast performance Eliminate single point of failure Multiple access protocols Compatible with applications written in any language, any framework
  13. CDI - CDI has many broad uses, allowing developers a great deal of flexibility to integrate components in a loosely coupled, typesafe way. JPA – Java framework for managing relational data JPA2 – Adds a Cache interface - Locking modes etc...
  14. REST – HTTP GET/POST calls to the Cache. Memcached –Memcached also defines a text based, client/server, caching protocol, known as the Memcached protocol. Infinispan offers a server which speaks the Memcached protocol, allowing Memcached itself to be replaced by Infinispan. Hot Rod - Hot Rod is a binary TCP client-server protocol used in JBoss Data Grid. It was created to overcome deficiencies in other client/server protocols, such as Memcached. Hot Rod will failover on a server cluster that undergoes a topology change. Hot Rod achieves this by providing regular updates to clients about the cluster topology. Hot Rod enables clients to do smart routing of requests in partitioned or distributed
  15. JBoss BRMS is a platform for the management and automation of business rules – the business policies that an organization uses to make decisions. BRMS enables business experts to define, maintain and automate their business rules, as an alternative to having them coded in business applications. By maintaining business rules separately from applications, organizations can shorten development cycles and respond more rapidly to changes in their business environment.
  16. Here are some of the key new capabilities we are bringing to market with BRMS 6.0. The rules engine is completely redesigned, it scales to handle highly complex rulesets and runs around 20% faster than that in BRMS 5. We have introduced redesigned tools for business users based on the Polymita technology. The repository utilizes a new architecture based on industry standard source code control system that enables rules to be managed in the same way as program code And a very exciting addition – the business resource planner – a new planning and optimation engine that uses business rules to efficiently solve complex optimization problems
  17. 05/07/14 &amp;lt;number&amp;gt;
  18. 05/07/14 &amp;lt;number&amp;gt;
  19. 05/07/14 &amp;lt;number&amp;gt;