Our three years with Elixir

Our three years with Elixir

Presentation from the ElixirConf US 2018. Reflections on what makes Elixir special after 3 years of using it.

373dd7c51433dc3c38436dcfdec79cdc?s=128

Maciej Kaszubowski

September 07, 2018
Tweet

Transcript

  1. mkaszubowski94

  2. mkaszubowski94 Our three years with Elixir Maciej Kaszubowski

  3. mkaszubowski94

  4. mkaszubowski94 August 12th, 2015

  5. mkaszubowski94

  6. mkaszubowski94 %{"cowboy": {:hex, :cowboy, "1.0.2"}, "cowlib": {:hex, :cowlib, "1.0.1"}, "decimal":

    {:hex, :decimal, "1.1.0"}, "ecto": {:hex, :ecto, "0.15.0"}, "fs": {:hex, :fs, "0.9.2"}, "phoenix": {:hex, :phoenix, "0.16.1"}, "phoenix_ecto": {:hex, :phoenix_ecto, "0.9.0"}, "phoenix_html": {:hex, :phoenix_html, "2.1.0"}, "phoenix_live_reload": {:hex, :phoenix_live_reload, "0.6.0"}, "plug": {:hex, :plug, "0.14.0"}, "poison": {:hex, :poison, "1.4.0"}, "poolboy": {:hex, :poolboy, "1.5.1"}, "postgrex": {:hex, :postgrex, "0.9.1"}, "ranch": {:hex, :ranch, "1.1.0"}}
  7. mkaszubowski94

  8. mkaszubowski94

  9. mkaszubowski94 September 6th, 2018

  10. mkaszubowski94 Elixir 1.0.5 1.6.1 Erlang/OTP 17 21 Phoenix 0.16.1 1.3.4

    Ecto 0.15.0 2.2.7
  11. mkaszubowski94 2+ years in production

  12. mkaszubowski94 70_000+ Lines of Code

  13. mkaszubowski94 Happy Developers

  14. mkaszubowski94 What made us stay with Elixir Maciej Kaszubowski

  15. mkaszubowski94 Functional programming Massive concurrency Distribution Fault tolerance OTP

  16. mkaszubowski94 “The Rails Way”

  17. mkaszubowski94 www.youtube.com/watch?v=lDKCSheBc-8

  18. mkaszubowski94 We’re not building Phoenix applications

  19. mkaszubowski94 View Controller Model

  20. mkaszubowski94 App Web interface

  21. mkaszubowski94 Web interface

  22. mkaszubowski94 Phoenix Contexts

  23. mkaszubowski94 Concurrency

  24. mkaszubowski94 Massive Concurrency

  25. mkaszubowski94

  26. mkaszubowski94

  27. mkaszubowski94

  28. mkaszubowski94

  29. mkaszubowski94

  30. mkaszubowski94

  31. mkaszubowski94 “We do not have one web-server handling 2 millions

    sessions. We have 2 million webservers handling one session each.” Joe Armstrong
  32. mkaszubowski94 Behaviour, fault tolerance and performance become separate concerns

  33. mkaszubowski94

  34. mkaszubowski94

  35. mkaszubowski94

  36. mkaszubowski94

  37. mkaszubowski94 www.youtube.com/watch?v=5SbWapbXhKo

  38. mkaszubowski94 What has changed?

  39. mkaszubowski94 Not much, really…

  40. mkaszubowski94 We’ve learned more about Elixir

  41. mkaszubowski94 But mostly, we’ve learned more about software engineering

  42. mkaszubowski94 But mostly, we’ve learned more about our domain logic

  43. mkaszubowski94 Elixir is transparent

  44. mkaszubowski94 Disadvantages

  45. mkaszubowski94 Intensive computations? Machine learning? Hard real-time systems?

  46. mkaszubowski94 Massive concurrency Distribution Fault tolerance OTP

  47. mkaszubowski94 Having great tools can make us ignorant

  48. mkaszubowski94

  49. mkaszubowski94 AWS Lambda

  50. mkaszubowski94 Distributed Data Persistent Actors Cluster Sharding Streaming

  51. mkaszubowski94 AWS Lambda

  52. mkaszubowski94 Full isolation No shared memory Communication through events Activities

    scheduled by the runtime AWS Lambda
  53. mkaszubowski94 AWS Lambda

  54. mkaszubowski94 “It is not once, nor twice, but times without

    number that the same idea makes its appearance in the world.” Aristotle
  55. mkaszubowski94 Software Architecture Domain Driven Design Distributed Systems Algorithms /

    Data Structures Design Patterns (!) / OO
  56. mkaszubowski94 “Just modules and functions…”

  57. mkaszubowski94 Software Architecture Domain Driven Design Distributed Systems Algorithms /

    Data Structures Design Patterns (!) / OO
  58. mkaszubowski94 www.youtube.com/watch?v=lDKCSheBc-8

  59. mkaszubowski94 We’re not building Phoenix applications

  60. mkaszubowski94 We’re not building Elixir applications

  61. mkaszubowski94 Let’s not become “Elixir Developers”

  62. mkaszubowski94 Thanks! Maciej Kaszubowski

  63. mkaszubowski94 • http://haskell-distributed.github.io (Cloud Haskell) • https://dotnet.github.io/orleans/ (Microsoft Orleans) •

    https://github.com/SpaceTime-IoT/erleans (Orleans for Erlang) • https://doc.akka.io/docs/akka/2.5.4/scala/index.html (Akka) • www.youtube.com/watch?v=5SbWapbXhKo (Solid Ground by Saša Juric) • www.youtube.com/watch?v=lDKCSheBc-8 (Phoenix Is Not Your Application by Lance Halvorsen) Links