SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 14 day free trial to unlock unlimited reading.
3.
Quem?
• Desenvolvedor web
• Ex Administrador de redes
• Desenvolvedor e Pesquisador Abril
• http://nuxlli.com.br
• @nuxlli
4.
O que queremos?
Criar uma arquitetura que junte as duas
linguagens de forma que uma possa
favorecer a outra e tentar eliminar
suas deficiências.
5.
Agenda
• Linguagens: Vantagens e
Desvantagens
• Onde usamos
• Erlang distribuída
• Lib para facilitar a vida
• Futuro da lib
6.
Erlang - Vantagens
• Suporte à concorrência (no threads)
• Hot Swapping Code nativo
• Distribuída
• Feita para ambientes Real Time
• Libs de alta performance
7.
Erlang - Desvantagens
• Curva de aprendizado muito alta
(paradigma funcional)
• Dificuldade para criação de
framework web
• Code base complexo
• Poucos desenvolvedores
8.
Ruby - Vantagens
• Curva de aprendizado baixa
• Menos é mais
• Comunidade de desenvolvedores
grande
9.
Ruby - Desvantagens
• Desempenho
• Pouca aceitação no mundo EE
• Complexidade para desenvolver
aplicações distribuídas
10.
O que elas ganham?
• Erlang
• Produtividade
• Facilidade em escrever testes
• Ruby
• Performance
• Programação distribuída
18.
Problemas identificados:
• Fora do padrão Erlang
• Manutenção, 3 pontos de mudança:
• Nós Erlang
• Servidor Erlang (API HTTP)
• Aplicação Ruby on Rails
19.
Uma forma melhor
EPMD (Erlang Port Mapper Daemon)
20.
Porque é melhor:
• É mantido o padrão Erlang
• Manutenção, 2 pontos de mudança:
• Nós Erlangs
• Aplicação Ruby on Rails
22.
rinterface
• http://github.com/nofxx/rinterface
• Lib de comunicação com nós erlang
• EPMD (Erlang Port Mapper Daemon)
• Criado por: Dave Bryson
• Contribuição: nofxx e nuxlli
23.
Como funciona?
Em Erlang:
rpc:call(smath@localhost, math, add, [10, 20])
Em Ruby:
Erlang::Node.rpc(:smath,:math,:add, [10,20])
24.
Status:
• O que faz:
• Chamadas rpc aos nós erlang
• Tratamento de tipos: inteiros, flutuantes, atoms,
tuplas, listas e strings
• API simples para execução de chamadas
• O que queremos:
• Comportar como um nó Erlang
• Facilities para rodar testes
• DSL para chamadas e respostas
29.
Futuro - Server Node
Erlang::Mod.new :math do
def add x, y
x + y
end
end
module Fib
def fib(n)
n < 2 ? n : fib(n-1) + fib(n-2)
end
end
Erlang::Mod.new :fib => Fib