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 Apache CXF Framework de integração EAI patterns, transformação, mediation Apache Camel Gerenciamento Monitoramento status, métricas, console Mensageria JMS, STOMP, MQTT, pubsub Apache ActiveMQ Container provisionamento, gerenciamento de recursos, deployment, segurança 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 recupera profiles Profile Profile Profile 1.0 Git
Containers, Profiles e Git recupera profiles 1.0 Git Container 1.0 Container Profile Profile Profile 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!