Integrações 
e o ecossistema Java 
Fabric8 ao 
Resgate!
Quem sou eu? 
Leandro O. Gomes 
blog.leandrogomes.com 
@leandro_gomes 
7 anos de estrada 
Arquiteto de Software na Owse no Rio de Janeiro 
Apaixonado por desenvolvimento de software!
Integração
O que é uma integração? 
Promover interação entre os sistemas 
para que juntos possam executar 
“alguma função do negócio "
Porque integração é difícil? 
• Diferentes plataformas 
• Produtos de terceiros? Feitos em "casa"? 
• Formatos de dados, protocolos 
• "Timing"
Soluções comerciais?
Apache Camel 
• Open-source 
• Framework Lightweight de integração 
• Domain specific language 
• Enterprise Integration Patterns 
• Componentes 
• Funciona em qualquer container e até 
stand alone
Não é um ESB 
• Framework de integração 
• Routing 
• Mediation 
• DSL 
• Opções baseados em Camel 
• Jboss Fuse 
• Talend 
• WSO2 
• Não está vinculado à um fornecedor!
Exemplo
Rotas Camel 
• Pode ser definida em várias DSLs 
• Java, Scala, Xml, Groovy 
• Processamento passo-a-passo da mensagem 
• Consumers 
• Processors/filters 
• Producers
Java DSL 
! 
public class DocumentoProcessorRouteBuilder extends RouteBuilder { 
@Override 
public void configure() throws Exception { 
from(“activemq:docs”) 
.choice() 
.when(header(“tipo”).isEqualTo(“notaFiscal”)) 
.to(“activemq:notasFiscais”) 
.otherwise() 
.to(“ftp://user@host/docs”) 
.end() 
.log(“Documento recebido ${body.id}”) 
.to(“ibatis:salvarDocs?statementType=Insert”); 
}
Componentes 
• ActiveMQ 
• CXF 
• File 
• FTP 
• jclouds 
• JPA 
• Twitter 
• MyBatis 
•JDBC 
•Bean 
•Spring WS 
•FTP 
•HTTP 
•Gmail 
•AMQP 
•etc...
Complexidade
KEEP CALM 
AND 
BE 
AWESOME
Fabric8 
• ServiceMix foi o início de tudo há mais de 9 
anos 
• Introduzido no Fuse ESB como Fuse Fabric 
• Grande foco no runtime 
• Projeto community open source para o 
Fuse Fabric
Fabric8 
• É uma plataforma de integração 
• Open source 
• Simplifica o deployment e gerenciamento 
• Aproxima-se de uma PaaS 
• Provê recursos de clusterização e coordenação 
• Provê ferramentas para gerenciamento 
centralizado
Fabric8 
Web services 
soap, restful, http 
Framework de 
integração 
transformação, mediation 
Apache 
Camel 
Mensageria 
EAI patterns, 
JMS, STOMP, MQTT, pubsub 
Container 
provisionamento, gerenciamento de recursos, deployment, 
segurança 
Gerenciamento 
Monitoramento 
status, métricas, 
console 
Apache 
CXF 
Apache 
ActiveMQ 
Apache 
Karaf 
+ 
Fuse 
Fabric 
Hawt.io
Arquitetura do Fabric8 
• Profiles 
• Runtime Registry 
• Repositório de configuração 
• Monitoramento
Rutime registry 
• Baseado no Apache Zookeeper 
• Consistência sequencial 
• Atomicidade 
• Sincronização 
• Ideal para coordenação de sistemas 
distribuídos
Rutime registry 
• Usado para dados que não são de configuração 
• Status do container 
• Serviços do container 
• Endereços de conexões dos containers etc. 
• Locks distribuídos 
• Leader Election 
• Service Discovery
Repositório de 
configuração 
• Armazena todas as configurações 
• Versionamento 
• Histórico para auditoria 
• Fácil acesso por clients externos 
• Alta disponibilidade
Profiles 
• Um grupo configurações que podem 
ser aplicados à um container 
• Hierárquico 
• Reusável 
• Versionado
Profiles 
• Define o código para 
execução(bundles, wars, features 
etc.) 
• Define a configuração(properties, 
arquivos Xml, Json, OSGi config) 
• DRY!
Containers 
Suporte à vários tipos de containers 
providers: 
Karaf Container 
Java Container 
Process Container 
Spring Boot Container 
Kubernetes 
Docker 
SSH Containers 
Cloud Containers
Java Containers 
• É a forma de provisionar um 
processo da JVM 
• Ideal para trabalhar com micro 
serviços 
• Nenhum jar do Fabric8 é 
necessário dentro da JVM
SSH Containers 
• Criação de containers via SSH 
• Não é necessário ter o Fabric8 
no host remoto 
• Login/senha 
• Public key authentication
Cloud Containers 
• Usa Apache JClouds para criar 
containers em nuvens privadas 
ou públicos 
• AWS, Rackspace, OpenStack 
• Registre seu cloud provider no 
Fabric8
Docker 
•Open Source 
•Lightweight 
•Linux Containers(LXC) 
•Portável 
•Versionamento 
•Reutilizável 
•Compartilhamento
Docker Container 
• Fabric8 pode utilizar o Docker para criar 
novos containers 
• Containers são criados via Docker Remote 
Api 
• Com o Docker Container é possível 
executar serviços como MongoDB, 
Cassandra, ElasticSearch etc.
Como usar tudo isso?
Containers, Profiles e Git 
Container Git 
PPrroofifliele Profile 
1.0 
recupera 
profiles
Containers, Profiles e Git 
Container 
Git 
1.0 
PPrroofifliele Profile 
Container 
1.0 
recupera 
profiles 
Provisionamento 
Container 
1.0 
Container 
1.0 
Container 
1.0 Container 
1.0 
Container 
1.0 
Container 
1.0
Como gerencio tudo isso?
Hawtio 
• Open source 
• Console Web HTML5 
• Desenvolvido com AngularJS 
• Usa Jolokia no servidor para 
acessar JMX via HTTP/JSON
Hawtio 
• Extensão Chrome 
• Vários plugins disponíveis: 
fabric8, camel, activemq etc.
Hawtio
Hawtio
no código!
Perguntas?
Leandro O. Gomes 
blog.leandrogomes.com 
@leandro_gomes 
github.com/logol 
Obrigado!

Integrações e o ecossistema Java - Fabric8 ao Resgate!

  • 1.
    Integrações e oecossistema Java Fabric8 ao Resgate!
  • 2.
    Quem sou eu? Leandro O. Gomes blog.leandrogomes.com @leandro_gomes 7 anos de estrada Arquiteto de Software na Owse no Rio de Janeiro Apaixonado por desenvolvimento de software!
  • 3.
  • 5.
    O que éuma integração? Promover interação entre os sistemas para que juntos possam executar “alguma função do negócio "
  • 6.
    Porque integração édifícil? • Diferentes plataformas • Produtos de terceiros? Feitos em "casa"? • Formatos de dados, protocolos • "Timing"
  • 7.
  • 8.
    Apache Camel •Open-source • Framework Lightweight de integração • Domain specific language • Enterprise Integration Patterns • Componentes • Funciona em qualquer container e até stand alone
  • 9.
    Não é umESB • Framework de integração • Routing • Mediation • DSL • Opções baseados em Camel • Jboss Fuse • Talend • WSO2 • Não está vinculado à um fornecedor!
  • 10.
  • 11.
    Rotas Camel •Pode ser definida em várias DSLs • Java, Scala, Xml, Groovy • Processamento passo-a-passo da mensagem • Consumers • Processors/filters • Producers
  • 12.
    Java DSL ! public class DocumentoProcessorRouteBuilder extends RouteBuilder { @Override public void configure() throws Exception { from(“activemq:docs”) .choice() .when(header(“tipo”).isEqualTo(“notaFiscal”)) .to(“activemq:notasFiscais”) .otherwise() .to(“ftp://user@host/docs”) .end() .log(“Documento recebido ${body.id}”) .to(“ibatis:salvarDocs?statementType=Insert”); }
  • 13.
    Componentes • ActiveMQ • CXF • File • FTP • jclouds • JPA • Twitter • MyBatis •JDBC •Bean •Spring WS •FTP •HTTP •Gmail •AMQP •etc...
  • 14.
  • 17.
    KEEP CALM AND BE AWESOME
  • 19.
    Fabric8 • ServiceMixfoi o início de tudo há mais de 9 anos • Introduzido no Fuse ESB como Fuse Fabric • Grande foco no runtime • Projeto community open source para o Fuse Fabric
  • 20.
    Fabric8 • Éuma plataforma de integração • Open source • Simplifica o deployment e gerenciamento • Aproxima-se de uma PaaS • Provê recursos de clusterização e coordenação • Provê ferramentas para gerenciamento centralizado
  • 21.
    Fabric8 Web services soap, restful, http Framework de integração transformação, mediation Apache Camel Mensageria EAI patterns, JMS, STOMP, MQTT, pubsub Container provisionamento, gerenciamento de recursos, deployment, segurança Gerenciamento Monitoramento status, métricas, console Apache CXF Apache ActiveMQ Apache Karaf + Fuse Fabric Hawt.io
  • 22.
    Arquitetura do Fabric8 • Profiles • Runtime Registry • Repositório de configuração • Monitoramento
  • 23.
    Rutime registry •Baseado no Apache Zookeeper • Consistência sequencial • Atomicidade • Sincronização • Ideal para coordenação de sistemas distribuídos
  • 24.
    Rutime registry •Usado para dados que não são de configuração • Status do container • Serviços do container • Endereços de conexões dos containers etc. • Locks distribuídos • Leader Election • Service Discovery
  • 25.
    Repositório de configuração • Armazena todas as configurações • Versionamento • Histórico para auditoria • Fácil acesso por clients externos • Alta disponibilidade
  • 26.
    Profiles • Umgrupo configurações que podem ser aplicados à um container • Hierárquico • Reusável • Versionado
  • 27.
    Profiles • Defineo código para execução(bundles, wars, features etc.) • Define a configuração(properties, arquivos Xml, Json, OSGi config) • DRY!
  • 28.
    Containers Suporte àvários tipos de containers providers: Karaf Container Java Container Process Container Spring Boot Container Kubernetes Docker SSH Containers Cloud Containers
  • 29.
    Java Containers •É a forma de provisionar um processo da JVM • Ideal para trabalhar com micro serviços • Nenhum jar do Fabric8 é necessário dentro da JVM
  • 30.
    SSH Containers •Criação de containers via SSH • Não é necessário ter o Fabric8 no host remoto • Login/senha • Public key authentication
  • 31.
    Cloud Containers •Usa Apache JClouds para criar containers em nuvens privadas ou públicos • AWS, Rackspace, OpenStack • Registre seu cloud provider no Fabric8
  • 32.
    Docker •Open Source •Lightweight •Linux Containers(LXC) •Portável •Versionamento •Reutilizável •Compartilhamento
  • 33.
    Docker Container •Fabric8 pode utilizar o Docker para criar novos containers • Containers são criados via Docker Remote Api • Com o Docker Container é possível executar serviços como MongoDB, Cassandra, ElasticSearch etc.
  • 34.
  • 35.
    Containers, Profiles eGit Container Git PPrroofifliele Profile 1.0 recupera profiles
  • 36.
    Containers, Profiles eGit Container Git 1.0 PPrroofifliele Profile Container 1.0 recupera profiles Provisionamento Container 1.0 Container 1.0 Container 1.0 Container 1.0 Container 1.0 Container 1.0
  • 37.
  • 38.
    Hawtio • Opensource • Console Web HTML5 • Desenvolvido com AngularJS • Usa Jolokia no servidor para acessar JMX via HTTP/JSON
  • 39.
    Hawtio • ExtensãoChrome • Vários plugins disponíveis: fabric8, camel, activemq etc.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
    Leandro O. Gomes blog.leandrogomes.com @leandro_gomes github.com/logol Obrigado!