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
• MyBatis
•JDBC
•Bean
•Spring WS
•FTP
•HTTP
•Gmail
•AMQP
•etc...
Complexidade
KEEP CALM
AND
BE
AWESOME
• 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
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
Fabric8Web services
soap, restful, http
Mensageria JMS, STOMP, MQTT, pubsub
Container provisionamento, gerenciamento de recursos, deployment,
segurança
Gerenciamento Monitoramento
status, métricas, console
Apache CXF
Apache ActiveMQ
Framework de integração
EAI patterns, transformação, mediation
Apache Camel
Apache Karaf + Fuse FabricHawt.io
• Profiles
• Runtime Registry
• Repositório de configuração
• Monitoramento
Arquitetura do Fabric8
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
• Armazena todas as configurações
• Versionamento
• Histórico para auditoria
• Fácil acesso por clients externos
• Alta disponibilidade
Repositório de configuração
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!
Suporte à vários tipos de containers providers:
Containers
Karaf Container
Java Container
Process Container
Spring Boot Container
Kubernetes
Docker
SSH Containers
Cloud 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
Java Containers
• Criação de containers via SSH
• Não é necessário ter o Fabric8
no host remoto
• Login/senha
• Public key authentication
SSH Containers
• Usa Apache JClouds para criar
containers em nuvens privadas
ou públicos
• AWS, Rackspace, OpenStack
• Registre seu cloud provider no
Fabric8
Cloud Containers
Docker
•Open Source
•Lightweight
•Linux Containers(LXC)
•Portável
•Versionamento
•Reutilizável
•Compartilhamento
• 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.
Docker Container
Como usar tudo isso?
Containers, Profiles e Git
Container GitProfileProfile
Profile
1.0recupera
profiles
Containers, Profiles e Git
Container
Git
ProfileProfileProfile
1.0
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?
Obrigado!
Leandro O. Gomes blog.leandrogomes.com @leandro_gomes github.com/logol