Your SlideShare is downloading. ×
Erlang/OTP - Caelum Tech Day 2009
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Erlang/OTP - Caelum Tech Day 2009

1,432
views

Published 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.

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,432
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
35
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