TDC2014 - OSGi e ESBs - A Saga!

Preview:

DESCRIPTION

TDC2014 - Florianópolis - Trilha de Arquitetura - OSGi e ESBs - A Saga!

Citation preview

OSGi e ESBsA Saga!

DISCLAIMER!O CONTEÚDO DOS

SLIDES REPRESENTA A VISÃO PESSOAL

DOS PALESTRANTES

Oi!

Hanneli (a.k.a. @hannelita)!

Middleware Consultant at !

Café e Pokémon <3

Luan (a.k.a. @BR_LuanCestari)!

Cloud Developer!

Naruto e Tecnologia

O que vamos ver aqui• Buzzwords que trollam sua vida

• Problemas que parecem simples (Só parecem)

• Um pouco sobre OSGi e conceitos

• Um pouco sobre ESBs e conceitos

• Um ESB++

• Dicas de escolhas para sua arquitetura

• Gifs e imagens engraçados (ou não)

O que NÃO vamos ver aqui

• Buzzwords explicadas de forma complexa

• Um manual detalhado sobre Camel, ESBs e Patterns de Integração

Java

Ruby

Python

EJB

JMS

Rails

NoSQL

Lambda

Go

ErlangORM JS

PHP

Cloud

PaaSMySQL

JSFWSRESTAWS

CDI Angular CSS

JUnit

Test

JMeter

Hibernate

XMLYML

JSONHTTP

OAuthApache

EclipseJBoss

LinuxJSPGitHTML

JPARedis Neo4j Mongo

Oracle Heroku

Tomcat

Struts

JDBC

OSGiESB Camel

CloudPatterns

Problemas simples

MyEnterpriseMothaFucka.ear

MyEJBs.jar

MyWebApp.war

Como builda o projeto?1. mvn clean install2. parar o server3. deploy no server4. server starta5. acessa aplicação

Temos o seguinte EJBpackage tdc; !

@javax.ejb.Stateless public class MeuEJB { public String listarLocais() { return "{\"locais\": [\"a\",\"b\",\"c\"] }"; } }

Vamos dar uma mexidinhapackage tdc; !

@javax.ejb.Stateless public class MeuEJB { public String listarLocais() { return "{\"locais\": [\"d\",\"e\",\"f\"] }"; } public int size() {! return 42;! }!}

Como colocar as alterações no ar?

1. para tudo - para o server2. rebuild3. redeploy4. restart no server

Sério mesmo?

Você muda UMA CLASSE

UMA CLASSEUMA

E REBUILDA TUDOTUDO

Você aprendeu 2348743578 novos frameworks

Para rebuildar o projeto todo quando muda UMA CLASSE

Durma com peso na consciência depois disso.

Como evito essa tragédia?Servidor de Aplicação

MyEnterpriseMothaFucka.ear

MeuEJB.java

*

Mais umaServidor de Aplicação

financeiro.ear

rh.ear

MyEnterpriseMothaFucka.ear

O update de MeuEJB.java precisa entrar em produção

urgente para atender o rh.ear

Mas o financeiro.ear ainda precisa da versão antiga de MeuEJB.ear

Como evito essa tragédia - parte II?

Servidor de Aplicação

MyEnterpriseMothaFucka.ear

MeuEJB_V2_.java

*

MeuEJB.java

Sabe com o que isso se parece?Droga, é uma peça contínua

Sabe com o que isso se parece?Peças menores!

Sabe com o que isso se parece?

É exatamente essa a base do

OSGi

pen

ervice

ateway

nitiative

Container OSGi

Arquitetura de um Container OSGiFUC***** BORING

Arquitetura de um Container OSGiBundle =

Services

Pecinha == Conecta pecinhas =

Life Cycle = Install, start, stop e uninstall nas pecinhas

Modules = Qual parte do código das pecinhas será privada ou pública

Security

Execution Environment = Qual versão do OSGi está sendo implementada

JVM

SO

Exemplos de Container OSGi

FelixEquinox

Knopflerfish

Esse tal de OSGi parece legal

Vamos pensar em “OSGi em Macro Escala"

JMS EJB

Vamos pensar em “OSGi em Macro Escala"

JMS Web Service

Como fica o lado de JMS?1. para tudo - para o server2. rebuild3. redeploy4. restart no server

Você já viu isso antes…

SÉRIO MESMO QUE VOCÊ VAI PARAR UM LADO PORQUE

TROCOU O OUTRO???

O OSGi não resolve as coisas nesse nível

Vamos dar um jeitoAplicações

JMS

EJBWeb Service

ESB

nterpriseerviceus

Arquitetura do ESBFUC***** BORING

Arquitetura (Prática) do ESB

Container OSGi

Deploy + Log + Segurança + Utils

Ferramenta para comunicar os bundles

Um Exemplo de ESB

Ferramenta para comunicar os bundlesJMS

Web Service

Não precisa escrever uma estratégia do zero para!comunicar os bundles

Apache Camel

Canivete Suíço das Integrações

Fórmulas infalíveis para integrar qualquer !tipo de aplicação

Que podem estar em linguagens diferentes!

from(“jms”).to(“xml")

Pra quem quer falar difícil, fale Enterprise Integration Pattern

(EIP)

Container OSGi

Deploy + Log + Segurança + Utils

Ferramenta para comunicar os bundles

Um ESB Com Camel

No Cloud

==

Fabric8==

A Saga! (ou nosso ESB++)

Quando preciso de um ESB?

• Quando possuir diversas aplicações que se comunicam

• Aplicações com linguagens ou protocolos distintos

• Coexistência de duas ou mais versões distintas da mesma aplicação

Quando NÃO preciso de um ESB?

• Só tenho uma app na empresa

• Um Web Service ou um JMS resolve tudo às vezes

Mantenha sua arquitetura tão simples quanto um slide de fundo branco com

texto negro.

Obrigado!

Perguntas?

@hannelitahannelita@gmail.com

@BR_LuanCestari

luan.cestari@gmail.com

Valeu, TDC!!!