integrações e o ecossistema java - qcon rio...

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

Upload: lynga

Post on 13-Apr-2018

219 views

Category:

Documents


4 download

TRANSCRIPT

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

• 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