Erlang/OTP - Caelum Tech Day 2009

  • 1,405 views
Uploaded on

Uma muito breve introdução a Erlang e à sua Open Telecom Platform, apresentada no Caelum Tech Day 2009.

Uma muito breve introdução a Erlang e à sua Open Telecom Platform, apresentada no Caelum Tech Day 2009.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • Ver esse tipo de material aparecendo aqui (Brasil) traz bastante esperança no quesito novidade e soluções não triviais.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
1,405
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
34
Comments
1
Likes
6

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Erlang/OTP Alta disponibilidade para você Leandro Silva Thadeu Russo Caelum Tech Day 2009
  • 2. Mais uma linguagem de programação?!
  • 3. Hammm...
  • 4. Histórico Década de 80 - Estocolmo - Suécia Ericsson precisava criar sistemas de telecom para ‘próxima’ geração
  • 5. Eu quero alta: - disponibilidade; - escalabilidade; - confiabilidade. E milhares de processos concorrentes!
  • 6. C/C++, ML, Ada? Smalltalk? Prolog?
  • 7. Problemas comuns no universo da concorrência: shared memory lock & deadlock no hot swap
  • 8. Por que não uma linguagem pra Ericsson?
  • 9. É...
  • 10. Erlang
  • 11. Principais características de Erlang Funcional (high-level functions, list comprehension, loop by recursion, tail recursion) Concorrência baseada em troca de mensagens entre micro- processos ultra-leves (tem até um tipo de dado Pid) Pattern-matching (quase onipresente) Single-assignment variables (aka ‘variáveis imutáveis’) Runtime gerenciado (sim, uma ‘vm’) Sistema de tipos simples Pensando em Java, todas as ‘variáveis’ são final! Se não há o que alterar, não há concorrência!
  • 12. Ops! Só um minutinho...
  • 13. Da para programar com variáveis imutáveis?
  • 14. Exemplo: Somatório função avaliação
  • 15. Mas e a concorrência, onde foi parar?
  • 16. Exemplo: Somador ‘Distribuído’ somador cliente
  • 17. Exemplo: Somador ‘Distribuído’
  • 18. Exemplo: Somador ‘Distribuído’ ProcessoServidor
  • 19. Exemplo: Somador ‘Distribuído’ ProcessoCliente ProcessoServidor
  • 20. Exemplo: Somador ‘Distribuído’ {self(), {soma, [1, 2, 3, 4, 5]}} ProcessoCliente ProcessoServidor
  • 21. Exemplo: Somador ‘Distribuído’ {self(), {soma, [1, 2, 3, 4, 5]}} {resultado, 15} ProcessoCliente ProcessoServidor
  • 22. “Nada está tão bom que não possa melhorar.”
  • 23. Open Telecom Platform
  • 24. Telecom?
  • 25. Não deixe o ‘T’ te enganar!
  • 26. O que é a OTP então?
  • 27. É análogo ao Java EE! Uma plataforma, Com princípios de design, Componente reuzáveis E bibliotecas uteis
  • 28. Princípios de Design Processos Aplicações Supervisores ‘trabalhadores’ Comportamentos padrões
  • 29. Aplicações
  • 30. Podem ser compostas por N outras CaelumWeb Mochiweb Mnesia Inets Crypto CaelumCore StdLib Kernel
  • 31. Seguem uma estrutura de diretórios dependências específicas arquivos privados código compilado código fonte
  • 32. Possuem releases versionados $erlang_home 1. estrutura de aplicação 2. versão do release
  • 33. Supervisores
  • 34. Formam uma árvore Mnesia CaelumWeb Processo ‘Trabalhador’ N CaelumWeb CaelumWeb Mochiweb ‘Top Level’ Server `Trabalhador’ Supervisor Processo Processo Inet ‘trabalhador’ ‘Trabalhador’ 1 2
  • 35. São responsáveis por ‘restarts’ Supervisor Supervisor Processo ‘trabalhador’ 1 X Processo ‘Trabalhador’ 2 Processo ‘Trabalhador’ N X X X Processo ‘trabalhador’ 1 Processo ‘Trabalhador’ 2 Processo ‘Trabalhador’ N estratégia one_for_one estratégia one_for_all
  • 36. Processos ‘trabalhadores’
  • 37. São quaisquer processos que não sejam supervisores em uma árvores de supervisão Supervisor N CaelumWeb CaelumWeb ‘Top Level’ Server `Trabalhador’ Supervisor Processo ‘Trabalhador’ N Processo Processo ‘trabalhador’ ‘Trabalhador’ 1 2
  • 38. E finalmente...
  • 39. Os tais ‘behaviors’
  • 40. Definem comportamentos padrão application - comportamento comum para aplicação OTP supervisor - comportamento comum para processo supervisor
  • 41. Implementam design patterns frequentes gen_server - comportamento genérico para client/server gen_fsm - comportamente genérico para máquina de estado finita gen_event - comportamento genérico para lidar com eventos
  • 42. Como?
  • 43. Através de módulos de...
  • 44. Quer ver alguns exemplos?
  • 45. Vai ficar pra próxima! :)
  • 46. Mas...
  • 47. Há um kickoff fácil para a OTP http://github.com/leandrosilva/otp_kickoff