introduction to phoenix web framework

33
Riza Fahmi - ElixirDose.com - @rizafahmi22 - riza@ hacktiv8.com PRODUCTIVE. RELIABLE. FAST.

Upload: riza-fahmi

Post on 10-Feb-2017

320 views

Category:

Technology


1 download

TRANSCRIPT

Riza Fahmi - ElixirDose.com - @rizafahmi22 - riza@ hacktiv8.com

PRODUCTIVE. RELIABLE. FAST.

SPONSOR

THANKS!

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!

https://slideshare.net

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 VIDEO PORTAL

▸ CRUD app for collecting Elixir-related video

▸ Similar confreaks.tv or pyvideo.org

OFF ROAD… WE GO!

WANT MORE?

WANT MORE…

READ SOME BOOKS

WANT MORE…

WATCH AND LEARN

I’M DONE. THANKS FOR TUNING IN!