Erlang e Elixir por uma web mais feliz

2.258 visualizações

Publicada em

Publicada em: Tecnologia

Erlang e Elixir por uma web mais feliz

  1. 1. Erlang e Elixir Por uma web mais feliz
  2. 2. Bruno Henrique - Garu
  3. 3. https://www.facebook.com/groups/natalonrails
  4. 4. https://www.facebook.com/wdevtips
  5. 5. Motivação
  6. 6. Necessidade de aprender coisas novas
  7. 7. Estudar o paradigma funcional
  8. 8. Criar um sistema Realtime para atender milhares de usuários
  9. 9. Mas, entre todas as linguagens funcionais, porque Erlang?
  10. 10. Um pouco de história...
  11. 11. Por que uma nova linguagem?
  12. 12. Contexto no qual Erlang foi criada
  13. 13. Switch
  14. 14. Nenhuma linguagem atendia a todos os requisitos ...
  15. 15. ... alta concorrência
  16. 16. ... tolerância a falhas
  17. 17. ... alta disponibilidade
  18. 18. Isso nos anos 80 ...
  19. 19. ... então por que usar agora?
  20. 20. Nosso contexto
  21. 21. Server
  22. 22. Fazendo a coisa certa em um contexto diferente.
  23. 23. Entendendo suas features na prática
  24. 24. Como atender uma grande quantidade usuários ?
  25. 25. Podemos escalar na horizontal ?
  26. 26. Podemos ...
  27. 27. ... mas existe um limite tanto físico quanto financeiro
  28. 28. Fazer isso nem sempre é uma coisa simples
  29. 29. Load balance etc. cache Slave Master Proxy
  30. 30. E dependendo da tecnologia escolhida pode haver desperdício.
  31. 31. Exemplo
  32. 32. https://speakerdeck.com/plataformatec/elixir
  33. 33. Erlang - Distributed
  34. 34. https://speakerdeck.com/plataformatec/elixir
  35. 35. Como manter um número elevado de usuários simultâneos?
  36. 36. Agora começa a concorrência.
  37. 37. Mas o que é concorrência?
  38. 38. Two queues and one coffee machine. Joe Armstrong http://joearms.github.io/2013/04/05/concurrent-and-parallel-programming.html
  39. 39. Ruby, Python, Java, PHP, C# - O que elas possuem em comum?
  40. 40. Orientação a Objeto
  41. 41. E um forte conceito de estado mutável.
  42. 42. Estado e concorrência não funcionam muito bem juntos.
  43. 43. Como lidamos com concorrência?
  44. 44. Podemos usar threads
  45. 45. O que é uma thread?
  46. 46. Temos algum problema com thread?
  47. 47. Sim, estado compartilhado é um grande problema.
  48. 48. Soluções?
  49. 49. locks
  50. 50. transactional memory
  51. 51. message-passing
  52. 52. E é assim que Erlang funciona.
  53. 53. Quando não temos estado compartilhado fica mais fácil
  54. 54. Exemplo
  55. 55. https://gist.github.com/brunohenrique/5428281#file-no_side_effects-rb
  56. 56. Elixir
  57. 57. O poder da Erlang VM com uma bela sintaxe.
  58. 58. Sintaxe
  59. 59. Erlang https://speakerdeck.com/plataformatec/elixir
  60. 60. Elixir https://speakerdeck.com/plataformatec/elixir
  61. 61. Protocol
  62. 62. http://elixir-lang.org/getting_started/4.html
  63. 63. Macros
  64. 64. http://elixir-lang.org/getting_started/5.html
  65. 65. Referências Asynchronous to Real-time Web Programming - http://www.infoq.com/presentations/Asynchronous-Web- Programming Erlang - software for a concurrent world - http://www.infoq.com/presentations/erlang-software-for-a- concurrent-world A True Conversational Web - http://www.infoq.com/presentations/A-True-Conversational-Web 1000 Year-old Design Patterns - http://www.infoq.com/presentations/1000-Year-old-Design-Patterns Erlang, the Language from the Future? - http://www.infoq.com/presentations/Erlang-Pros-Cons Elixir: Modern Programming for the Erlang VM - http://www.infoq.com/presentations/Elixir-Erlang-VM Let It Crash ... Except When You Shouldn't - http://www.infoq.com/presentations/Let-It-Crash Message Passing Concurrency in Erlang - http://www.infoq.com/presentations/Message-Passing- Concurrency
  66. 66. Referências Death by Accidental Complexity - http://www.infoq.com/presentations/Death-by-Accidental-Complexity Systems that Never Stop (and Erlang) - http://www.infoq.com/presentations/Systems-that-Never-Stop-Joe- Armstrong Multicore Programming in Erlang - http://www.infoq.com/presentations/wiger-multicore-erlang Concurrency: Past and Present - http://www.infoq.com/presentations/goetz-concurrency-past-present Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages - http: //pragprog.com/book/btlang/seven-languages-in-seven-weeks Programming Erlang: Software for a Concurrent World - http://pragprog.com/book/jaerlang/programming- erlang Elixir language - http://elixir-lang.org/getting_started/1.html
  67. 67. squall.bruno@gmail.com github.com/brunohenrique @GaruHenr Obrigado!

×