50
OSGi e ESBs A Saga!

TDC2014 - OSGi e ESBs - A Saga!

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: TDC2014 - OSGi e ESBs - A Saga!

OSGi e ESBsA Saga!

Page 2: TDC2014 - OSGi e ESBs - A Saga!

DISCLAIMER!O CONTEÚDO DOS

SLIDES REPRESENTA A VISÃO PESSOAL

DOS PALESTRANTES

Page 3: TDC2014 - OSGi e ESBs - A Saga!

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

Page 4: TDC2014 - OSGi e ESBs - A Saga!

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)

Page 5: TDC2014 - OSGi e ESBs - A Saga!

O que NÃO vamos ver aqui

• Buzzwords explicadas de forma complexa

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

Page 6: TDC2014 - OSGi e ESBs - A Saga!
Page 7: TDC2014 - OSGi e ESBs - A Saga!

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

Page 8: TDC2014 - OSGi e ESBs - A Saga!

OSGiESB Camel

CloudPatterns

Page 9: TDC2014 - OSGi e ESBs - A Saga!

Problemas simples

MyEnterpriseMothaFucka.ear

MyEJBs.jar

MyWebApp.war

Page 10: TDC2014 - OSGi e ESBs - A Saga!

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

Page 11: TDC2014 - OSGi e ESBs - A Saga!

Temos o seguinte EJBpackage tdc; !

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

Page 12: TDC2014 - OSGi e ESBs - A Saga!

Vamos dar uma mexidinhapackage tdc; !

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

Page 13: TDC2014 - OSGi e ESBs - A Saga!

Como colocar as alterações no ar?

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

Page 14: TDC2014 - OSGi e ESBs - A Saga!

Sério mesmo?

Page 15: TDC2014 - OSGi e ESBs - A Saga!

Você muda UMA CLASSE

UMA CLASSEUMA

Page 16: TDC2014 - OSGi e ESBs - A Saga!

E REBUILDA TUDOTUDO

Page 17: TDC2014 - OSGi e ESBs - A Saga!

Você aprendeu 2348743578 novos frameworks

Page 18: TDC2014 - OSGi e ESBs - A Saga!

Para rebuildar o projeto todo quando muda UMA CLASSE

Page 19: TDC2014 - OSGi e ESBs - A Saga!

Durma com peso na consciência depois disso.

Page 20: TDC2014 - OSGi e ESBs - A Saga!

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

MyEnterpriseMothaFucka.ear

MeuEJB.java

*

Page 21: TDC2014 - OSGi e ESBs - A Saga!
Page 22: TDC2014 - OSGi e ESBs - A Saga!

Mais umaServidor de Aplicação

financeiro.ear

rh.ear

MyEnterpriseMothaFucka.ear

Page 23: TDC2014 - OSGi e ESBs - A Saga!

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

urgente para atender o rh.ear

Page 24: TDC2014 - OSGi e ESBs - A Saga!

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

Page 25: TDC2014 - OSGi e ESBs - A Saga!
Page 26: TDC2014 - OSGi e ESBs - A Saga!

Como evito essa tragédia - parte II?

Servidor de Aplicação

MyEnterpriseMothaFucka.ear

MeuEJB_V2_.java

*

MeuEJB.java

Page 27: TDC2014 - OSGi e ESBs - A Saga!

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

Page 28: TDC2014 - OSGi e ESBs - A Saga!

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

Page 29: TDC2014 - OSGi e ESBs - A Saga!

Sabe com o que isso se parece?

Page 30: TDC2014 - OSGi e ESBs - A Saga!

É exatamente essa a base do

OSGi

pen

ervice

ateway

nitiative

Container OSGi

Page 31: TDC2014 - OSGi e ESBs - A Saga!

Arquitetura de um Container OSGiFUC***** BORING

Page 32: TDC2014 - OSGi e ESBs - A Saga!

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

Page 33: TDC2014 - OSGi e ESBs - A Saga!

Exemplos de Container OSGi

FelixEquinox

Knopflerfish

Page 34: TDC2014 - OSGi e ESBs - A Saga!

Esse tal de OSGi parece legal

Page 35: TDC2014 - OSGi e ESBs - A Saga!

Vamos pensar em “OSGi em Macro Escala"

JMS EJB

Page 36: TDC2014 - OSGi e ESBs - A Saga!

Vamos pensar em “OSGi em Macro Escala"

JMS Web Service

Page 37: TDC2014 - OSGi e ESBs - A Saga!

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

Page 38: TDC2014 - OSGi e ESBs - A Saga!

Você já viu isso antes…

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

TROCOU O OUTRO???

Page 39: TDC2014 - OSGi e ESBs - A Saga!

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

Page 40: TDC2014 - OSGi e ESBs - A Saga!

Vamos dar um jeitoAplicações

JMS

EJBWeb Service

ESB

nterpriseerviceus

Page 41: TDC2014 - OSGi e ESBs - A Saga!

Arquitetura do ESBFUC***** BORING

Page 42: TDC2014 - OSGi e ESBs - A Saga!

Arquitetura (Prática) do ESB

Container OSGi

Deploy + Log + Segurança + Utils

Ferramenta para comunicar os bundles

Page 43: TDC2014 - OSGi e ESBs - A Saga!

Um Exemplo de ESB

Ferramenta para comunicar os bundlesJMS

Web Service

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

Page 44: TDC2014 - OSGi e ESBs - A Saga!

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)

Page 45: TDC2014 - OSGi e ESBs - A Saga!

Container OSGi

Deploy + Log + Segurança + Utils

Ferramenta para comunicar os bundles

Page 46: TDC2014 - OSGi e ESBs - A Saga!

Um ESB Com Camel

No Cloud

==

Fabric8==

A Saga! (ou nosso ESB++)

Page 47: TDC2014 - OSGi e ESBs - A Saga!

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

Page 48: TDC2014 - OSGi e ESBs - A Saga!

Quando NÃO preciso de um ESB?

• Só tenho uma app na empresa

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

Page 49: TDC2014 - OSGi e ESBs - A Saga!

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

texto negro.

Page 50: TDC2014 - OSGi e ESBs - A Saga!

Obrigado!

Perguntas?

@[email protected]

@BR_LuanCestari

[email protected]

Valeu, TDC!!!