tdc2014 - osgi e esbs - a saga!
Post on 24-Jan-2015
424 Views
Preview:
DESCRIPTION
TRANSCRIPT
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!!!
top related