4. Agenda – 1 dia – Tarde - Hands-on
● Hands-on Karaf
● Instalação.
● Trabalhando com Karaf
4
● Iniciando.
● Console (Help e TAB).
● Comandos Shell.
● Global
● Log.
● Package.
● Gerenciamento de bundles OSGi.
● Introdução funcionalidades.
● Descritores XML.
● Shell.
5. Quem sou eu ?
5
● Paulo Castro <paulof@gmail.com> / @paulorcf / github: paulorcf
● Físico pela USP.
● Trabalha com desenvolvimento de sistemas há 12 anos.
● Projetos em empresas como Ericsson, Vivo, TVA, Avaya, TIM, Toyota,
CPFL, GOL entre outras.
● Implementou diversos projetos usando stack Apache para integração e
trouxe FuseSource para Brasil como parceira da empresa VPIData.
● Esse material não é oficial e não tem relação nenhuma com a Red Hat.
● Marcas Red Hat, JBoss e Fuse são registradas e pertencem a Red Hat.
6. O quê esperar do workshop ?
6
● Workshop foi desenvolvido para ser um overview sobre o JBoss Fuse e
seus componentes focado para perfil de desenvolvimento.
● Além da apresentação receberão:
● Máquina virtual para Hand-ons:
● CentOS 6.3.
● JBoss IDE.
● Maven.
● Exercícios.
● Para acessar a máquina:
● Instalar o Virtualbox.
● Configurar a máquina virtual.
● usuário: fuse
● senha: fuse
7. Fuse: História
7
● Existiam diversos projetos Apache voltados para integração
entre quais uma empresa chamada IONA contribuía fortemente.
● Em 2008 a IONA Technologies é comprada pela Progress
Software.
● Em 2010 a IONA foi vendida e com a separação da área open
source foi criada empresa chamada FuseSource para unir todos
esses projetos em um guarda-chuva “Enterprise”.
● A FuseSource torna-se uma subsidiária da Progress Software.
● Em 2011 a FuseSource foi considerada umas das líderes em
plataformas ESB pelo “The Forrester”.
Em 2012 a Red Hat comprou a FuseSource incorporando ao
seu portfolio Middleware.
8. JBoss Fuse: SOA
8
● Service-oriented architecture (Arquitetura Orientada a Serviço):
● SOA pode ser considerada uma metodologia que visa maximizar a
reutilização de serviços existentes e a integração com novos
serviços para aumentar a eficiência e produtividade de uma
empresa.
● Principais princípios:
● Padronização das interfaces de serviço.
● Fraco acoplamento.
● Abstração.
● Reuso.
● Autonomia.
● Stateless.
● Discovery.
● Composição.
● Granularidade.
● Normalização.
● Optimização.
● Relevância.
● Encapsulamento.
● Transparência de endpoint.
9. Fuse: SOA
9
Introduzindo um novo software.
SOA Design Patters, Thomas Erl, Prentice Hall.
10. Fuse: SOA
10
Modelo de serviço para uma ordem de
compra.
SOA Design Patters, Thomas Erl, Prentice Hall.
11. Fuse: SOA
11
SOA Design Patters, Thomas Erl, Prentice Hall.
Composição de
exemplo para fluxo
de serviço.
12. Fuse: ESB
12
● Enterprise Service Bus (Barramento de serviços):
● É uma abordagem de integração global para permitir a
diferentes aplicações se comunicarem.
● ESB fornece uma abstração na forma de um “workflow”
para um sistema de mensagens, que define, executa e
supervisiona o fluxo de controle e dados entre vários
sistemas.
Service-Oriented Infrastructure: On-premise and in cloud,
John deVadoss, Francois Lascelles.
14. Fuse: ESB
14
Service-Oriented Infrastructure: On-premise and in cloud,
John deVadoss, Francois Lascelles.
15. EIP: Enteprise Integration Patterns
15
Livro de Gregor Hohpe e Bobby Woolf demonstra diversos
padrões para integração de software e foi base para construção
do Apache Camel. (http://www.eaipatterns.com/)
17. Fuse: Onde se aplica?
17
Plataformas compostas por diversas aplicações que se integram
App A App C
JBoss Fuse
App A App B
App Legada
App C
Ainda mais necessário com aplicações legadas
18. Fuse: Estamos falando de ESB?
18
Sim, mas infelizmente não existe uma definição padrão para ESB
JBoss Fuse se encaixa como ESB por possuir frameworks de
integração e prover administração
19. Fuse: Componentes
Development Layer
19
CXF Camel
Karaf A
FABRIC
ActiveMQ
Infrastructure Layer
... Karaf N Deployment
20. Fuse: Componentes
Integrações com serviços Web
e Restfull (JAX-WS e JAX-RS) Framework EIP
20
Gerenciamento
centralizado de containers
CXF ActiveMQ
Camel Karaf
Fabric
Enterprise Messaging Container OSGI
22. JBFuse: Fuse IDE
22
FUSE IDE: IDE para facilitar o desenvolvimento com Camel
Integrada com a IDE Eclipse
Visualizador Gráfico das Rotas
Explorador de métricas JMX em runtime
Shell para gerenciamento de instâncias Karaf
Deployment e Tracing de rotas
23. JBFuse: Fuse Service Works
23
Service Works: Solução completa com camada de integração,
mensageira, SOA e governança.
Combina Fuse ESB com SwitchYard e Overlord.
SwitchYard é um componente JBoss focado em facilitar todo o ciclo
de desenvolvimento e deploy de componentes SOA.
Trabalhando em conjunto com Fuse permite agilidade e um modelo
unificado para lidar com Apache Camel, Java EE, BPM, rules,
orquestração e roteamento.
https://docs.jboss.org/author/display/SWITCHYARD/User+Guide
24. JBFuse: Fuse Service Works
24
SwitchYard
11 22
33
https://docs.jboss.org/author/display/SWITCHYARD/User+Guide
44
25. JBFuse: Fuse Service Works
25
Service Works: Solução completa com camada de integração,
mensageira, SOA e governança.
Combina Fuse ESB com SwitchYard e Overlord.
Overlord é um componente JBoss focado em governança SOA.
● Monitoramento.
● Gerenciamento de sistemas distribuídos complexos.
● Repositório.
● Discovery.
● Teste.
● Segurança.
● BAM.
http://docs.jboss.org/overlord/presentations/SOAGovernance.pdf
26. JBFuse: Fuse Service Works
26
Overlord
11
http://docs.jboss.org/overlord/presentations/SOAGovernance.pdf
22
Governança
28. Karaf: Arquitetura
28
Karaf tem sua arquitetura baseada na tecnologia
OSGi (http://www.osgi.org) e suporta múltiplos componentes.
Componentes
OSGi bundles
JBI artifacts
Servlets
Spring beans
Camel routes
CXF (WS e RESTful)
EJB
Facilmente extensível para
adicionar outros componentes.
29. Karaf: Definições
29
Container OSGI, responsável pelo deploy dos artefatos
gerados no desenvolvimento das integrações (bundles)
Opcional se for apenas utilizados os frameworks de
integração dentro de aplicações executadas em servidores
de aplicação.
KARAF
Inicialização
Consoles
Segurança
Patching
Logging
Deployment
...
O que estudar?
Funcionalidades básicas de um
container
31. Karaf: Benefícios
31
● Hot deploy via OSGi bundles.
● Configuração dinâmica dos serviços OSGi via
“ConfigurationAdmin”.
● Logging dinâmico provido pelo Log4J mas suporta outras APIs
(SLF4J, Java Utils, JCL, Avalon, Tomcat, OSGI).
● Provisionamento da aplicação via cópia de arquivo, maven
acessando repositório remoto ou Fuse Fabric.
● Administração via shell console e remoto via ssh.
● JAAS como framework de segurança.
32. Karaf: OSGi
32
● Tem sua origem “Open Services Gateway initiative”.
● Resolve o problema de deploy e administração de módulos em Java
(conhecidos como “bundles”).
● Ciclo de vida (como carregar, iniciar e parar Java bundles sem ter que
parar JVM.
● Gerenciamento e administração remota.
● Class-loading.
● Versionamento.
● Gerenciamento de dependência.
● “The OSGi Alliance” foi fundada em 1999 para promover em larga escala
da adoção da tecnologia OSGi (http://www.osgi.org).
● Entre os membros: Red Hat, SpringSource, Progress, IBM etc.
34. Karaf: Deployment
34
Como um bom container OSGI, toda instalação consiste de bundles
JAR contendo informações específicas em seu MANIFEST
Há outros tipos deploy, mas tornam-se um bundle internamente
Regular library JAR
Web archives (WAR)
Enterprise Archives (EAR)
Descritores XML (Datasources, etc)
Alguns bundles já estão pré-instalados no Karaf
Karaf bundles
Spring bundles
Camel bundles
ServiceMix bundles
Jetty bundles
CXF bundles
Bundle
35. Karaf: Deployment
35
Deployment através do terminal
Qualquer URL, inclusive Maven
Deployment através do console Web
Hot deployment através do diretório deploy
etc/org.apache.felix.fileinstall-deploy.cfg
38. Karaf: Provisionamento
38
O sistema de provisionamento provém uma interface
simplificada para gerenciar OSGi bundles individualmente.
Comandos para registrar, lookup, instalar e desinstalar
bundles.
Configurações são definidas via único arquivo XML.
Bundles podem estar locais ou remotos.
39. Karaf: Gerenciamento
39
Scripts de inicialização no diretório bin
bin/fuse
bin/fuse server | bin/start
bin/fuse client
Mas e o console?
Inicializa o container com console ativo
Inicializa o container sem console ativo
Inicializa o container sem acesso remoto
Utilizando outra instância
Utilizando comando ssh
Utilizando script client
ssh:ssh -l user -P pwd -p 8108
ssh user@host -p 8108
bin/client
40. Karaf: Gerenciamento
40
Criação de script de serviço para o gerenciamento
bin/karaf-wrapper
bin/karaf-service
etc/karaf-wrapper.conf
lib/libwrapper.so
lib/karaf-wrapper.jar
/etc/init.d
41. Karaf: Console Administrativo
41
Console por linha de comando, local ou remoto
Console Web pode ser instalado
Deployment
Configurações
Operações
Embedded Console
43. Karaf: Logging
43
Baseado no padrão OPS4J Pax Logging
(http://www.ops4j.org/projects/pax/logging).
Suporta API de log como Apache Commons Logging, SLF4J,
Log4j, Java Util Logging.
Combina todos em único sincronizado output.
Usa modelo de configuração do Log4j.
44. Karaf: Logging
44
Log padrão gerado em data/log/fuse.log
Configurações em etc/org.ops4j.pax.logging.cfg (hot deploy)
Comandos de log no console
45. Karaf: Logging
45
Configuração de log por aplicação (bundle), utilizando MDC
Divisão pode ser feita por qualquer propriedade, basta configurá-las na
aplicação (não só bundle-name)
47. Karaf: Admin
47
Cada instância do Karaf roda em uma JVM separada, sendo
assim, com suas próprias configurações, estado, logs e
arquivos temporários.
Instâncias na mesma máquina podem compartilhar arquivos de
instalação, bundles de sistemas e JAR de inicialização.
48. Karaf: Configurações
48
Toda configuração é localizada em arquivo .cfg, sendo o prefixo
o pid da configuração
etc/ ...
Alterações podem ser aplicadas pelo terminal
49. Karaf: Aplicação de Patches
49
Distribuídos na forma de um ZIP, contendo arquivos de patch e
um descritivo dos mesmos
Não destrutivo: aplicação de patch armazena antigos artefatos
para posterior rollback
Possibilidade de simulação do patch
50. Karaf: Múltiplas instâncias
50
Possibilidade de criação de múltiplas instâncias (containers)
Karaf em uma única estação
JBoss Fuse Installation
root container
mycontainer
yourcontainer
instances/mycontainer/...
instances/yourcontainer/...
Portas ssh e rmi são
incrementadas
automaticamente
Como criar novos containers ...
51. Karaf: Deployment Failover
51
Arquitetura Master/Slave garantido pelo controle de lock
master slave master slave
SimpleFileLock DefaultJDBCLock
Segundo container fica em modo de espera
aguardando o lock ser liberado para iniciar
Podemos otimizar a performance de carregamento do
slave realizando o preload dos bundles com
karaf.lock.level=50
53. Karaf: Segurança
53
Segurança dos consoles baseada em JAAS
Por padrão utiliza-se o login-module karaf
Baseado em arquivo de propriedades /etc/users.properties
Aumentando a segurança
Controle de permissão no arquivo de propriedades
Encriptação da senha dentro do arquivo
etc/org.apache.karaf.jaas.cfg
54. Karaf: Segurança
54
Podemos sobrescrever o login-module karaf
Deploy de um novo login-module através de um
descritor blueprint, utilizando um rank maior
deploy/myjaas.xml
56. Karaf: Segurança
56
Gerenciamento dos usuários através do console
Por isso faz-se necessária a query de insert ...
Facilidade de gerenciamento com auto complete e --help
58. Karaf: Console
58
Sub-módulo que provém interface de linha de comando.
Formato dos comandos: {subshell}:{comando} [opções]
Sub-shell é um grupo de comandos relacionados.
Exemplo: admin
Acesso via ssh.
60. Karaf: Messaging Broker
60
JBoss Fuse incorpora produto JBoss A-MQ, sendo que o Karaf
vem configurado com um broker padrão
Propriedades específicas Broker template
org.apache.activemq.server-default.cfg activemq.xml
61. Karaf: Messaging Broker
61
Interação com o broker através do terminal
Além dos comandos de terminal, os MBeans são expostos via JMX
Utiliza o JMX server do próprio Karaf
service:jmx:rmi:///jndi/rmi://localhost:1099/karaf-root
62. Karaf: ActiveMQ Web Console
62
Web Console específico para o ActiveMQ
Distribuído como uma feature: feature:install mq-web-console
Acessível em http://localhost:8181/activemqweb
Configurado em etc/org.apache.activemq.webconsole.cfg
63. Fuse: Gerenciamento com Fabric
63
Possibilita o gerenciamento do deployment em ambiente distribuído
Baseado em três conceitos
Container: Instância do servidor Karaf (Broker e ESB)
Profile: Descrição de como os containers serão provisionados
Version: Versionamento dos profiles
64. Fabric: Infra estrutura
64
Possibilita o gerenciamento do deployment em ambiente distribuído