JBOSS FUSE SERVICE WORKS
O Fuse além da integração
Elvis Rocha
● Consultor na Tecnisys há 3 anos
● Instrutor pela Red Hat e Especialista JBoss
● Background em desenvolvimento e arquitetura Java
● 12 anos de experiência na área de TI, 10 anos com java
@elvisnaomorreu
Tecnisys
● Há 22 anos oferecendo soluções open source
● Red Hat Advanced Business Partner
● Maior parceiro Red Hat na América Latina
● Consultoria especializada em soluções na stack de middleware, plataforma e cloud da Red Hat
www.tecnisys.com.br
Tópicos
● Arquitetura de aplicações Java
● Arquitetura orientada a serviços
● Estilos de integração de sistemas
● Red Hat JBoss Fuse
● Red Hat JBoss Fuse Service Works
Tópicos
● Arquitetura de aplicações Java
● Arquitetura orientada a serviços
● Estilos de integração de sistemas
● Red Hat JBoss Fuse
● Red Hat JBoss Fuse Service Works
Arquitetura Clássica de Aplicações Web Java
● Modelo MVC
● Stack de frameworks JavaEE / Spring
+ JSF / GWT / Spring
● Arquitetura comprovada e muito utilizada
Arquitetura Clássica de Aplicações Web Java
● Modelo MVC
● Stack de frameworks JavaEE / Spring
+ JSF / GWT / Spring
● Arquitetura comprovada e muito utilizada
● A camada de apresentação às vezes é separada
Arquitetura de Aplicações Web Java (RIA / Mobile)
● Modelo MVC
● Stack de frameworks JavaEE / Spring
JSF / GWT / Spring MVC
● Frameworks Javascript
● JSON é o modelo de dados preferido do lado client
● Arquitetura comprovada e muito utilizada
WebServices - SOAP vs REST
● SOAP é conhecido por ser mais pesado e complexo
● Contrato formal entre linguagens para definir o formato das mensagens
● Suporta XML e binário
● Preferido para SOA
● REST é conhecido por ser leve e fácil de implementar
● Não tem um contrato formal para definir o formato das mensagens
● Múltiplos tipos de dados (JSON, XML, texto, binário)
● Preferido em aplicações modernas e mobile
XML vs JSON
● XML é o formato nativo de transferência de dados entre diferentes aplicações
● Estrutura formal
● Validação de conteúdo
● O formato só muda se todos os participantes concordarem
● Suporta os tipos de dados texto e binário
● JSON é o formato “nativo” para aplicações modernas e aplicações mobile
● Não tem estrutura formal
● O conteúdo não pode ser validado
● Muda de formato facilmente
● Somente texto
Tópicos
● Arquitetura de aplicações Java
● Arquitetura orientada a serviços
● Estilos de integração de sistemas
● Red Hat JBoss Fuse
● Red Hat JBoss Fuse Service Works
Princípios da Orientação a Serviços – SOA
Você tem ou precisa de SOA?
● Eu preciso fazer um sistema conversar com outro. Eu preciso de SOA?
● Eu preciso expor uma API pública. Eu preciso de SOA?
● Eu estou usando um ESB e tenho todos os serviços publicados nele. Significa que eu tenho SOA?
● Eu tenho vários WebServices na empresa. Então eu tenho SOA?
Do que você precisa:De uma solução de Integração ou de SOA?
● Você quer levar uma informação de um sistema A para um sistema B?
● Você tem situações problemáticas de integração e precisa de uma solução?
● Você precisa desenvolver componentes para se comunicar com suites já existentes tais como SAP, SalesForce, OpenShift, AWS e Gmail?
SOA passa por integração, mas não é somente isso
● SOA é uma solução de negócio e não de tecnologia
● Desenvolver a aplicação pensando em expor serviços como um contrato (Arquitetura de serviços)
● Gerenciar dentro de sua empresa o inventário desses serviços
● Composição dos serviços para entregar o resultado esperado
● Organizar o ecossistema desses serviços compostos para atender a uma regra de negócio (Governança)
Arquitetura orientada a serviços
● Os serviços:
1. Devem trabalhar com baixíssimo acoplamento
2. Devem funcionar de forma autônoma e independente
3. Devem ser reutilizáveis, mas não por somente um sistema e sim por vários
4. Devem possuir um bom nível de abstração de forma a minimizar o acesso aos detalhes de funcionamento do sistema
5. Devem ser autossuficientes e suportar composição (serem combinados com outros serviços)
6. Devem ser stateless, somente a composição pode ser stateful
Tópicos
● Arquitetura de aplicações Java
● Arquitetura orientada a serviços
● Estilos de integração de sistemas
● Red Hat JBoss Fuse
● Red Hat JBoss Fuse Service Works
Integração de dados com processamento em lote (batch)
● Integração Ad hoc (para resolver um problema específico no momento)
● Exige uma verificação prévia (cuidadosa) dos dados
● Não existe uma responsabilidade definida (mestre - escravo)
● Difícil de manter e monitorar
● Delay
Arquitetura de Integração de dados em lote (batch)
● Orientado ao transporte eficiente de uma quantidade grande de dados
● A maioria das soluções requer um middleware específico (Database-vendor solutions)
● ETL
Arquitetura de Integração de dados em tempo real
● Integração ponto a ponto
● Alto acoplamento entre aplicações e componentes
● Difícil de manter
● Difícil de versionar
● Spaguetti
● Ad hoc
● Não é SOA
Arquitetura orientada a serviços em tempo real
Arquitetura orientada a serviços em tempo real
● Adição do ESB - JBoss Fuse
● Adapters (+ conectividade)
● Protocol Mapping (+ interoperabilidade)
● Transformation / Filter / Routing / Enrichment / Monitoring
● Message-oriented
● Service-oriented
Arquitetura de integração, desenvolvimento e governança orientada a serviços em tempo real
Arquitetura de integração, desenvolvimento e governança orientada a serviços em tempo real
● JBoss Fuse Service Works
● Adapters + Protocol Mapping + Messaging
● Transformation / Filter / Routing / Enrichment / Monitoring
● Business Rules
● BPM + Service Orchestration
● Governança
● Service Delivery Lifecycle Management
● Business Transaction Monitoring
Tópicos
● Arquitetura de aplicações Java
● Arquitetura orientada a serviços
● Estilos de integração de sistemas
● Red Hat JBoss Fuse
● Red Hat JBoss Fuse Service Works
Red Hat JBoss Fuse
● Core ESB + Apache Camel + Apache CXF
● Container OSGI Apache Karaf
● Fuse Fabric
● ActiveMQ
Arquitetura do JBoss Fuse
● Core ESB + Apache Camel + Apache CXF
● Container OSGI Apache Karaf
● Fuse Fabric
● ActiveMQ
Fuse Core ESB
● É um framework de integração pois auxilia provendo a infraestrutura básica para implementar rotas, gateways e outras facilidades para a integração
● Não implementa uma arquitetura SOA, mas fornece as características básicas para que possa ser implementado
● O ESB remove o acoplamento entre o serviço chamado e o meio de transporte
Apache Camel
● Framework de integração (EAI Patterns)
● Suporta in-memory BUS (Alternativa ao JBI)
● Suporta mensagens síncronas e assíncronas
● Tratamento de erros/exceções e suporte a debug
● Implementa mais de 50 patterns
● Possui mais de 120 componentes
Apache Karaf + Fuse Fabric
● Container Karaf OSGI:
● Plataforma OSGI-based com suporte a gerência de configuração, provisionamento e hot deploy
● Fuse Fabric:
● Baseado no Apache Zookeper
● Possui containers que podem ter um ou mais profiles
● Ensemble: Grupo de containers
● Micro Containers: java, docker, openshift, kubernetes
Apache Active MQ
● Message Broker de alta performance e full JMS client
● Transacional
● Suporta clientes JMS, C, C++, .Net e Stomp
Tópicos
● Arquitetura de aplicações Java
● Arquitetura orientada a serviços
● Estilos de integração de sistemas
● Red Hat JBoss Fuse
● Red Hat JBoss Fuse Service Works
Red Hat JBoss Fuse Service Works
● Core ESB + Apache Camel + Apache CXF
● JBoss EAP 6
● Overlord (DTGov e RTGov) – Runtime Governance
● Riftsaw (Service Orchestration)
● Switchyard (SCA)
● Drools (BRMS)
● JBPM (BPM Suite)
● S-RAMP
● Smooks
Arquitetura do JBoss Fuse Service Works
● Core ESB + Apache Camel + Apache CXF
● JBoss EAP 6
● Overlord (DTGov e RTGov) – Runtime Governance
● Riftsaw (Service Orchestration)
● Switchyard (SCA)
● Drools (BRMS)
● JBPM (BPM Suite)
● S-RAMP
● Smooks
JBoss EAP 6
● Full Java EE 6 Certified
● Permite a você criar cenários de integração aproveitando a arquitetura modular do JBoss baseada em módulos java e não bundles OSGI
● Permite trabalhar com componentes JavaEE como componentes EJB, fazer uso da injeção com CDI e utilizar o cluster do JBoss EAP
Overlord
● Design-Time Governance (DTGov) – Workflow
● Management Deployment (Push artifacts)
● Project Lifecycle Management
Overlord
● Runtime Time Governance (RTGov)
● Project Lifecycle Management
S-RAMP
● SOA Repository Artifact Model and Protocol
● Protocol: S-RAMP 1.0
● JCR: ModeShape e Infinispan
● Maven:
...
<repository>
<id>local-sramp-repo</id>
<name>S-RAMP Releases Repository</name>
<url>sramp://localhost:8080/s-ramp-server/</url>
</repository>
...
Switchyard
● Implementa SCA
● Coarse-grained services
● Você cria bindings para os componentes (Reference)
● Componentes: Bean CDI Processo BPM Processo BPELCamel RouteDrools RuleKIE (Drools/BPM)
BRMS
● Business Rule Management System
● Separa regras de negócio da aplicação
● Coleta os dados (facts) e combina com as informações (rules) e tira as conclusões (inferencing)
● Benefícios:Facilidade de mudançaMenos errosMais visibilidade das regras
● CEP
BPM Suite
● Definição, execução e gerenciamento de Processos
● BPMN 2.0
● Forms Designer
● Business Central
● Decision Tables
● OptaPlanner
Cloud?
JBoss Fuse ou JBoss Fuse Service Works?
Dúvidas?