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
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
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
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
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).
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's exactly what we're doing with xPaaS. In a strategy we announced last year at JavaOne, we'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.
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.
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.
> Built with Jboss Middleware, on OpenShift technology, leveraging our expertise
> Delivers a unified management console across cloud and on premise
> Provides application builder productivity across all the platform's capabilities}
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”.
Cartucho Red Hat JBoss Enterprise Application Platform
Automação de Deployment, Scaling e Atualizações
Simplifica DevOps – Continuous Delivery via GIT, Jenkins, Arquillian, etc...
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
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
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
É 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.
É 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.
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 & 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 & 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 & 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 & reduce direct DB I/O operations
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, & 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
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...
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
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.
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