JBoss Fuse Workshop Desenvolvimento - Parte 1

1.907 visualizações

Publicada em

Curso de JBoss Fuse.
Curso é dividido em 6 partes:
- Apache Karaf.
- Apache Karaf - Hands on.
- Apache Camel.
- Apache Camel - Hands on.
- Apache ActiveMq.
- Apache ActiveMq - Hands on.

Para treinamento todo entrar: http://www.paulorcf.com

Publicada em: Software
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.907
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1.055
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

JBoss Fuse Workshop Desenvolvimento - Parte 1

  1. 1. 1 Red Hat JBoss Fuse Paulo Castro paulof@gmail.com
  2. 2. Agenda – 1 dia – Manhã - 1 ● Introdução ao JBoss Fuse. ● História. ● SOA. ● ESB. ● EIP. ● Fuse 2 ● Componentes. ● Fabric ● Fuse IDE. ● Fuse Service Works. ● SwitchYard. ● Overlord.
  3. 3. Agenda – 1 dia – Manhã - 2 ● Karaf ● Arquitetura. 3 ● Definições. ● Benefícios. ● OSGi ● Deployment ● Provisionamento ● Gerenciamento. ● Console Administrativo. ● Logging. ● Administração. ● Configuração. ● Aplicações de Patches. ● Múltiplas instâncias. ● Deployment failover. ● Segurança. ● Console. ● Extras ● Message Broker. ● ActiveMQ Web Console. ● Gerenciamento Fabric. ● Infraestrutura.
  4. 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. 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. 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. 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. 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. 9. Fuse: SOA 9 Introduzindo um novo software. SOA Design Patters, Thomas Erl, Prentice Hall.
  10. 10. Fuse: SOA 10 Modelo de serviço para uma ordem de compra. SOA Design Patters, Thomas Erl, Prentice Hall.
  11. 11. Fuse: SOA 11 SOA Design Patters, Thomas Erl, Prentice Hall. Composição de exemplo para fluxo de serviço.
  12. 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.
  13. 13. Fuse: ESB 13 Fuse ESB Diagram.
  14. 14. Fuse: ESB 14 Service-Oriented Infrastructure: On-premise and in cloud, John deVadoss, Francois Lascelles.
  15. 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/)
  16. 16. EIP: Exemplos 16 Shared database File transfer
  17. 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. 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. 19. Fuse: Componentes Development Layer 19 CXF Camel Karaf A FABRIC ActiveMQ Infrastructure Layer ... Karaf N Deployment
  20. 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
  21. 21. Fuse: Componentes – JBoss Fuse 6 21 ● Apache ActiveMQ 5.8.0. ● Apache Camel 2.10.0. ● Apache CXF 2.6.0 ● Apache Karaf kernel 2.3.0. ● Fuse Fabric 7.2.0. ● Spring 3.1.3. Ref: Migration Overview - https://access.redhat.com/site/documentation/JBoss_Fuse/
  22. 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. 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. 24. JBFuse: Fuse Service Works 24 SwitchYard 11 22 33 https://docs.jboss.org/author/display/SWITCHYARD/User+Guide 44
  25. 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. 26. JBFuse: Fuse Service Works 26 Overlord 11 http://docs.jboss.org/overlord/presentations/SOAGovernance.pdf 22 Governança
  27. 27. 27 Apache Karaf
  28. 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. 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
  30. 30. Karaf: Definições Technology layer 30 Core Karaf runtime. Technology layer Exemplos de aplicações suportadas. JMS JAX-WS JAX-RS Camel Spring JBI LLooggggiinngg DDeeppllooyyeerr PPrroovviissiioonniinngg AAddmmiinn OOSSGGii KARAF Core
  31. 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. 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.
  33. 33. Karaf: Deployment 33 LLooggggiinngg DDeeppllooyyeerr PPrroovviissiioonniinngg AAddmmiinn OOSSGGii KARAF
  34. 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. 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
  36. 36. Karaf: Deployment 36
  37. 37. Karaf: Provisioning 37 LLooggggiinngg DDeeppllooyyeerr PPrroovviissiioonniinngg AAddmmiinn OOSSGGii KARAF
  38. 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. 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. 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. 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
  42. 42. Karaf: Logging 42 LLooggggiinngg DDeeppllooyyeerr PPrroovviissiioonniinngg AAddmmiinn OOSSGGii KARAF
  43. 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. 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. 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)
  46. 46. Karaf: Admin 46 LLooggggiinngg DDeeppllooyyeerr PPrroovviissiioonniinngg AAddmmiinn OOSSGGii KARAF
  47. 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. 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. 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. 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. 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
  52. 52. Karaf: Segurança 52 LLooggggiinngg DDeeppllooyyeerr PPrroovviissiioonniinngg AAddmmiinn OOSSGGii KARAF
  53. 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. 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
  55. 55. Karaf: Segurança 55 Existência de diversas implementações de login-module
  56. 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
  57. 57. Karaf: Console 57 LLooggggiinngg DDeeppllooyyeerr PPrroovviissiioonniinngg AAddmmiinn OOSSGGii KARAF
  58. 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.
  59. 59. 59 Apache Karaf Extras
  60. 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. 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. 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. 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. 64. Fabric: Infra estrutura 64 Possibilita o gerenciamento do deployment em ambiente distribuído
  65. 65. https://access.redhat.com/site/documentation/JBoss_Fuse/ http://www.infoq.com/articles/ESB-Integration 65 Espaço para dúvidas e discussões Obrigado pela atenção, Paulo Castro paulof@gmail.com

×