brief intro to phoenix - elixir meetup at bukalapak
TRANSCRIPT
Riza Fahmi - ElixirDose.com - @rizafahmi22 - riza@ hacktiv8.com
PRODUCTIVE. RELIABLE. FAST.
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!
INTRODUCTION
SLIDES ARE UP!
slideshare.net/rizafahmi
speakerdeck.com/rizafahmi
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
INTRODUCTION
WHAT WE’LL SEE
▸ The Awesomeness of Phoenix
▸ Build something with Phoenix
▸ Some live coding
SOME GLOSSARY
Web Framework
Programming Language
Erlang Virtual Machine
WHAT IS PHOENIX
“Framework for building HTML5 apps, API backends and distributed systems to take on the modern web.”
Chris McCord
HOW IS PHOENIX DIFFERENT?
PRODUCTIVITYPERFORMANCE VS
LET’S TALK PRODUCTIVITY
PRODUCTIVITY
SHORT TERM
▸ Documentation / Guides / Generators
▸ Eliminates trivial choices
PRODUCTIVITY
LONG TERM
▸ Maintainability
▸ Tried and true architecture patterns
▸ Let it crash mentality
“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
MORE FEATURES PLEASE…
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
FEATURES
PRETTY AND HELPFUL ERROR PAGES
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
FEATURES
MORE…
▸ Form builder
▸ Live reloading
▸MCV with twist
▸much more…
LET’S TALK PERFORMANCE NOW
PERFORMANCE
VIEWS & TEMPLATES
▸Precompiled and pretty fast!
▸Views render templates
▸ It’s beyond HTML
PERFORMANCE
WHAT ABOUT SOME BENCHMARK
Frameworks Throughput (req/s) Latency (ms)Plug (Elixir) 54,948.14 3.83
Gin (Go) 51,483.20 1.94Phoenix (Elixir) 43,063.45 2.82
Express Cluster (Nodejs) 27,669.46 3.73Martini (Go) 14,798.46 6.81
Express (Nodejs) 9,965.56 10.07Sinatra (Ruby) 9,182.86 6.55
Rails (Ruby) 3,274.81 17.25
https://github.com/mroth/phoenix-showdown
PERFORMANCE
ROBUST CONCURRENCY MODEL
▸ “processes” is extremely lightweight units of concurrency
▸ Garbage collection is per process, no global pauses
“ WE DO NOT HAVE ONE WEB-SERVER HANDLING 2 MILLIONS SESSIONS. WE HAVE 2 MILLION WEBSERVERS HANDLING ONE SESSION EACH.”
Joe Armstrong - Erlang Fatherhttp://goo.gl/DprVTC
LET’S BUILD SOMETHING
WHAT WE’LL BUILD
ELIXIR TALKS VIDEO PORTAL
▸ CRUD app for collecting Elixir-related video talk
▸ Similar confreaks.tv or pyvideo.org
OFF ROAD… WE GO!
INSTALLING…
INSTALL PHOENIX
$ mix archive.install https://github.com/phoenixframework/archives/raw/master/phoenix_new.ez
$ mix phoenix.new -v
WANT MORE?
WANT MORE…
READ SOME BOOKS
WANT MORE…
WATCH AND LEARN
I’M DONE. THANKS FOR TUNING IN!