Erlang/OTP - Caelum Tech Day 2009

1,835 views

Published on

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

Published in: Technology
1 Comment
6 Likes
Statistics
Notes
  • Ver esse tipo de material aparecendo aqui (Brasil) traz bastante esperança no quesito novidade e soluções não triviais.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
1,835
On SlideShare
0
From Embeds
0
Number of Embeds
408
Actions
Shares
0
Downloads
40
Comments
1
Likes
6
Embeds 0
No embeds

No notes for slide
  • Erlang/OTP - Caelum Tech Day 2009

    1. 1. Erlang/OTP Alta disponibilidade para você Leandro Silva Thadeu Russo Caelum Tech Day 2009
    2. 2. Mais uma linguagem de programação?!
    3. 3. Hammm...
    4. 4. Histórico Década de 80 - Estocolmo - Suécia Ericsson precisava criar sistemas de telecom para ‘próxima’ geração
    5. 5. Eu quero alta: - disponibilidade; - escalabilidade; - confiabilidade. E milhares de processos concorrentes!
    6. 6. C/C++, ML, Ada? Smalltalk? Prolog?
    7. 7. Problemas comuns no universo da concorrência: shared memory lock & deadlock no hot swap
    8. 8. Por que não uma linguagem pra Ericsson?
    9. 9. É...
    10. 10. Erlang
    11. 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. 12. Ops! Só um minutinho...
    13. 13. Da para programar com variáveis imutáveis?
    14. 14. Exemplo: Somatório função avaliação
    15. 15. Mas e a concorrência, onde foi parar?
    16. 16. Exemplo: Somador ‘Distribuído’ somador cliente
    17. 17. Exemplo: Somador ‘Distribuído’
    18. 18. Exemplo: Somador ‘Distribuído’ ProcessoServidor
    19. 19. Exemplo: Somador ‘Distribuído’ ProcessoCliente ProcessoServidor
    20. 20. Exemplo: Somador ‘Distribuído’ {self(), {soma, [1, 2, 3, 4, 5]}} ProcessoCliente ProcessoServidor
    21. 21. Exemplo: Somador ‘Distribuído’ {self(), {soma, [1, 2, 3, 4, 5]}} {resultado, 15} ProcessoCliente ProcessoServidor
    22. 22. “Nada está tão bom que não possa melhorar.”
    23. 23. Open Telecom Platform
    24. 24. Telecom?
    25. 25. Não deixe o ‘T’ te enganar!
    26. 26. O que é a OTP então?
    27. 27. É análogo ao Java EE! Uma plataforma, Com princípios de design, Componente reuzáveis E bibliotecas uteis
    28. 28. Princípios de Design Processos Aplicações Supervisores ‘trabalhadores’ Comportamentos padrões
    29. 29. Aplicações
    30. 30. Podem ser compostas por N outras CaelumWeb Mochiweb Mnesia Inets Crypto CaelumCore StdLib Kernel
    31. 31. Seguem uma estrutura de diretórios dependências específicas arquivos privados código compilado código fonte
    32. 32. Possuem releases versionados $erlang_home 1. estrutura de aplicação 2. versão do release
    33. 33. Supervisores
    34. 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. 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. 36. Processos ‘trabalhadores’
    37. 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. 38. E finalmente...
    39. 39. Os tais ‘behaviors’
    40. 40. Definem comportamentos padrão application - comportamento comum para aplicação OTP supervisor - comportamento comum para processo supervisor
    41. 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. 42. Como?
    43. 43. Através de módulos de...
    44. 44. Quer ver alguns exemplos?
    45. 45. Vai ficar pra próxima! :)
    46. 46. Mas...
    47. 47. Há um kickoff fácil para a OTP http://github.com/leandrosilva/otp_kickoff

    ×