Unindo mundos –
Arquitetura orientada a
 serviços em Ruby e
         Java
        Maurício Linhares
WHO?

Software Developer da OfficeDrop.com


@mauriciojr


https://github.com/mauricio
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
SOA não é ruim, as
implementações da idéia
  que são um desastre
SOA é construir
       aplicações
  independentes, que
fazem uma coisa bem e
   delegam o que não
    sabem pra outros
      Lembra de alguma coisa?
Write programs that do
 one thing and do it well.
 Write programs to work
together. Write programs
  to handle text streams
      because it is an
    universal interface.
     Doug Mcllroy – The UNIX philosophy
Blame the
messenger, not the
    message
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Aplicação Rails antiga
(2.x), grande, com uma
   equipe crescente
    trabalhando nela
Rodar todos os testes dava
    uma preguiça…
Usávamos o banco de dados como fila
Longos períodos de QA
Tudo acontece num só
lugar, numa aplicação
   única, onde todos
trabalham o dia inteiro
         Por Que?
Como resolver isso?
Ah, o divórcio!
As duas zonas

Gestão de Documentos

  Processamento de
     Documentos
Gerenciar documentos
        fica na
webapp, processamento
 de documentos migra
    para uma nova
      aplicação
Se é uma nova
  aplicação, podemos
  escolher uma outra
   tecnologia? Como
integrar as duas apps?
resque como fila de
        trabalhos
nosso fork do jesque em - https://github.com/mauricio/jesque
API REST com JSON
 para comunicação
S3 para armazenamento
     de resultados
Cliente envia arquivo para app servers




                                         Worker
                                         sinaliza que o
                                         arquivo foi
                                         processado




      Worker aceita o trabalho
Funcionou?
As duas aplicações
passaram a evoluir em
      separado
O backend tinha ciclos
 de deployment mais
   curtos, que não
afetavam a aplicação
         web
   Lembre-se, fila do resque e interface REST
Menos código na
      aplicação web
significava menos testes
     sendo rodados
  Quem estava lá não se preocupava mais com backend
Não haviam mais
dependências diretas na
 hora de um release, se
  os contratos fossem
honrados, as aplicações
      funcionavam
Mensagens auto-
contidas – o backend
  recebe tudo o que
precisa na mensagem
WHERE DID WE
Ter aplicações
    separadas trouxe
      problemas de
   comunicação entre
         equipes
Você não pode esquecer que estão todos no mesmo barco
Nem todo mundo rodava
o ambiente completo e a
  documentação nem
   sempre era atual
  As aplicações ainda devem ser usadas em conjunto
A implementação do
Jesque é enrolada e não
 podemos usar plugins
       facilmente
API pública e API
privada não devem ser
      misturadas
Ter várias aplicações
com vários ambientes
 diferentes complica
    deployments e
montagem de equipes
O que aprendemos?
Construa aplicações
pequenas e focadas em
    algum trabalho
Só compartilhe dados
 pela API, não use
bancos de dados pra
       isso.
Defina o que cada
aplicação deve fazer
     claramente
Crie uma interface
mínima somente com o
que está sendo utilizado
         agora
Não misture a
representação de saída
 com os seus modelos!
Procure soluções como o Roar - https://github.com/apotonick/roar
Separe fontes/bancos
     de dados.
  A escalabilidade
     agradece.
Planeje e construa para
         falhas
Construa para falhar
Rails Engines? Será?
Onde nós estamos
     hoje?
Front-end HTML
migrando pra outra
    aplicação
Cluster com auto-scaling
   e independente de
    ambiente para o
  backend a caminho
ELES DISSERAM QUE SOA ERA RUIM




      NÃO DIZEM MAIS
FIM
Obrigado a todos 

Mais conteúdo relacionado

PPTX
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
PPT
PDF
Projeto e desenvolvimento de sistemas de informação 4 - computação em rede
PPT
Extreme programming explicada
DOC
Relatório final do projeto de pesquisa e-Teacher
PPTX
Mercado de TI
DOC
Relatório Final - Biblioteca Digital Paulo Freire
PPTX
IntroduçãO Ao Desenvolvimento Web 2
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Projeto e desenvolvimento de sistemas de informação 4 - computação em rede
Extreme programming explicada
Relatório final do projeto de pesquisa e-Teacher
Mercado de TI
Relatório Final - Biblioteca Digital Paulo Freire
IntroduçãO Ao Desenvolvimento Web 2

Semelhante a Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop (20)

PDF
O que move a web atualmente?
PPTX
Introdução ao desenvolvimento web - 2 - iDez 2010
PDF
Building Scalable Applications
ODP
Construindo Aplicações PHP com Twelve-Factor App
PDF
Palestra OSCON 2011
PDF
Front end architecture
PPTX
Introdução ao desenvolvimento de aplicações web
KEY
Sistemas para o Mundo Real
PDF
Liferay RoadShow 2010 | O Futuro no Desenvolvimento de Portais. Por Bruno Tar...
PPTX
Uaijug ADF - spring boot - microservice - Introdução
PDF
Service Oriented Front-End Architecture
PPTX
Cloud Native Microservices - Rumo a uma Arquitetura de Microsserviços Nativos...
PDF
Desenvolvimento Client-Side 2016 (BrazilJS)
PPT
O futuro do arquiteto e das arquiteturas Java Enterprise
PDF
Beyond Ruby with NodeJS - RubyConf Brasil 2010
PDF
O Desenvolvedor Web
PDF
Hexagonal Rails
PDF
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
PDF
Soa Woa Rest
PPTX
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
O que move a web atualmente?
Introdução ao desenvolvimento web - 2 - iDez 2010
Building Scalable Applications
Construindo Aplicações PHP com Twelve-Factor App
Palestra OSCON 2011
Front end architecture
Introdução ao desenvolvimento de aplicações web
Sistemas para o Mundo Real
Liferay RoadShow 2010 | O Futuro no Desenvolvimento de Portais. Por Bruno Tar...
Uaijug ADF - spring boot - microservice - Introdução
Service Oriented Front-End Architecture
Cloud Native Microservices - Rumo a uma Arquitetura de Microsserviços Nativos...
Desenvolvimento Client-Side 2016 (BrazilJS)
O futuro do arquiteto e das arquiteturas Java Enterprise
Beyond Ruby with NodeJS - RubyConf Brasil 2010
O Desenvolvedor Web
Hexagonal Rails
TDC2016SP - Revitalizando aplicações desktop usando CefGlue, MessageBus e Rea...
Soa Woa Rest
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Anúncio

Mais de Maurício Linhares (20)

PDF
Aprendendo ruby
PDF
Curso java 07 - exceções
PDF
Curso java 08 - mais sobre coleções
PDF
Curso java 06 - mais construtores, interfaces e polimorfismo
PDF
Curso java 05 - herança, classes e métodos abstratos
PDF
Curso java 04 - ap is e bibliotecas
PPTX
Curso java 01 - molhando os pés com java
PDF
Curso java 02 - variáveis
PDF
Curso java 03 - métodos e parâmetros
PDF
Extreme programming
PDF
Feature Driven Development
PDF
Migrando pra Scala
PPTX
Outsourcing e trabalho remoto para a nuvem
PDF
Mercado hoje
PDF
Análise de sistemas oo 1
PDF
Revisão html e java script
PPTX
Aulas de Java Avançado 2- Faculdade iDez 2010
PPTX
Aulas de Java Avançado 1 - Faculdade iDez 2010
PPT
Jdbc e hibernate
PPT
Apresentação sobre DB4O
Aprendendo ruby
Curso java 07 - exceções
Curso java 08 - mais sobre coleções
Curso java 06 - mais construtores, interfaces e polimorfismo
Curso java 05 - herança, classes e métodos abstratos
Curso java 04 - ap is e bibliotecas
Curso java 01 - molhando os pés com java
Curso java 02 - variáveis
Curso java 03 - métodos e parâmetros
Extreme programming
Feature Driven Development
Migrando pra Scala
Outsourcing e trabalho remoto para a nuvem
Mercado hoje
Análise de sistemas oo 1
Revisão html e java script
Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 1 - Faculdade iDez 2010
Jdbc e hibernate
Apresentação sobre DB4O
Anúncio

Último (20)

PPTX
Aula 7 - Listas em Python (Introdução à Ciencia da Computação)
PDF
Aula 9 - Funções 202yttvrcrg5-1.pptx.pdf
PPTX
3b - Bradesco Lean Agile Training Plan - Ritos Operacionais (1).pptx
PPTX
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
PDF
Customizing básico em SAP Extended Warehouse Management, EWM110 Col26
PDF
Visão geral da SAP, SAP01 Col18, Introdução sistema SAP,
PDF
instalacoes eletricas para industria apressentacao basicas
PPT
Apresentacao Do Trabalho de Inteligencia
PPT
01 - Arquitetura de Computadores 1 TEC [Salvo automaticamente].ppt
PDF
Capacitação em Logística – Instituto Federal
PDF
Integração da produção com o SAP Extended Warehouse Management, EWM130 Col26
PPTX
Do código à carreira: O Profissional de TI que o mercado realmente quer - com...
PPT
Padrões de Beleza I - Estética Corporal e Saúde
PDF
ASCENSÃO E QUEDA DO SOFTWARE LIVRE NO ESTADO BRASILEIRO
PDF
Administração de qualidade no SAP Extended Warehouse Management, EWM140 Col26
PDF
SEMINÁRIO DE IHC - A interface Homem-Máquina
PDF
Processos no SAP Extended Warehouse Management, EWM100 Col26
PPTX
ccursoammaiacursoammaiacursoammaia123456
PDF
Processamento da remessa no SAP ERP, SCM610 Col15
PDF
Personalização de tópicos adicionais no SAP Extended Warehouse Management, EW...
Aula 7 - Listas em Python (Introdução à Ciencia da Computação)
Aula 9 - Funções 202yttvrcrg5-1.pptx.pdf
3b - Bradesco Lean Agile Training Plan - Ritos Operacionais (1).pptx
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
Customizing básico em SAP Extended Warehouse Management, EWM110 Col26
Visão geral da SAP, SAP01 Col18, Introdução sistema SAP,
instalacoes eletricas para industria apressentacao basicas
Apresentacao Do Trabalho de Inteligencia
01 - Arquitetura de Computadores 1 TEC [Salvo automaticamente].ppt
Capacitação em Logística – Instituto Federal
Integração da produção com o SAP Extended Warehouse Management, EWM130 Col26
Do código à carreira: O Profissional de TI que o mercado realmente quer - com...
Padrões de Beleza I - Estética Corporal e Saúde
ASCENSÃO E QUEDA DO SOFTWARE LIVRE NO ESTADO BRASILEIRO
Administração de qualidade no SAP Extended Warehouse Management, EWM140 Col26
SEMINÁRIO DE IHC - A interface Homem-Máquina
Processos no SAP Extended Warehouse Management, EWM100 Col26
ccursoammaiacursoammaiacursoammaia123456
Processamento da remessa no SAP ERP, SCM610 Col15
Personalização de tópicos adicionais no SAP Extended Warehouse Management, EW...

Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop