Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduction To Phoenix Web Framework from Elixir

Introduction To Phoenix Web Framework from Elixir

Phoenix web framework is awesome. Backed by the beauty and productive Elixir and performance and realibility of Erlang VM. This presentation is for Singapore Elixir Meetup in March 2016

Riza Fahmi

March 31, 2016
Tweet

More Decks by Riza Fahmi

Other Decks in Technology

Transcript

  1. INTRODUCTION YOU’RE MY REGULATOR, MY COMPILER ▸ Scream when things

    go too fast / slow / are unclear ▸ Scream when cool things happen ▸ Help me when live coding, I’m suck at it. Find errors for me before the compiler do ▸ Similar to Phoenix channel, this is two way communication channel. Don’t let me do all the talking!
  2. INTRODUCTION WHO AM I ▸ Was at CitizenLab, a Belgium-based

    early stage startup. As a CTO ▸ Now at Hacktiv8, a startup for dev bootcamp ▸ Run ElixirDose — an Elixir-focused blog since November 2013
  3. INTRODUCTION WHAT WE’LL SEE ▸ The Awesomeness of Phoenix ▸

    Build something with Phoenix ▸ Some live coding
  4. “IF I HAVE TO BUILD SKYNET, KILLER ARTIFICIAL INTELLIGENT FROM

    TERMINATOR MOVIES, I WOULD USE ERLANG AND ERLANG VM. MOSTLY BECAUSE IT’S UNKILLABLE AND KEEP COMING BACK!” Simon St.Laurent from MostlyErlang Podcast
  5. FEATURES STATIC BUILD TOOLS WITH ES6 AS DEFAULT Ultra fast

    HTML5 build tools Compiles/lints your scripts and styles Concatenates your scripts and styles Minifies it Watches for file changes
  6. FEATURES CHANNELS ▸ The main reason why Phoenix exists in

    the first place ▸ It’s websocket with steroid ▸ Cross-platform, cross-languages ▸ For creating modern, real-time apps ▸ Beyond HTML
  7. PERFORMANCE VIEWS & TEMPLATES ▸ Precompiled and pretty fast! ▸

    Views render templates ▸ It’s beyond HTML
  8. PERFORMANCE WHAT ABOUT SOME BENCHMARK Frameworks Throughput (req/s) Latency (ms)

    Plug (Elixir) 54,948.14 3.83 Gin (Go) 51,483.20 1.94 Phoenix (Elixir) 43,063.45 2.82 Express Cluster (Nodejs) 27,669.46 3.73 Martini (Go) 14,798.46 6.81 Express (Nodejs) 9,965.56 10.07 Sinatra (Ruby) 9,182.86 6.55 Rails (Ruby) 3,274.81 17.25 https://github.com/mroth/phoenix-showdown
  9. PERFORMANCE ROBUST CONCURRENCY MODEL ▸ “processes” is extremely lightweight units

    of concurrency ▸ Garbage collection is per process, no global pauses
  10. “ WE DO NOT HAVE ONE WEB-SERVER HANDLING 2 MILLIONS

    SESSIONS. WE HAVE 2 MILLION WEBSERVERS HANDLING ONE SESSION EACH.” Joe Armstrong - Erlang Father http://goo.gl/DprVTC
  11. WHAT WE’LL BUILD ELIXIR VIDEO PORTAL ▸ CRUD app for

    collecting Elixir-related video ▸ Similar confreaks.tv or pyvideo.org