/rizafahmi /rizafahmi /rizafahmi22
APLIKASI WEB DENGAN


ELIXIR & PHOENIX
PRODUKTIF, HANDAL, CEPAT.
/rizafahmi /rizafahmi /rizafahmi22
PHOENIX FRAMEWORK
Framework modern untuk membangun
aplikasi web interaktif, backend API dan
sistem terdistribusi.
/rizafahmi /rizafahmi /rizafahmi22
PHOENIX FRAMEWORK
Menerapkan pola Model-View-Controller
yang dibangun dengan bahasa
pemrograman Elixir.
/rizafahmi /rizafahmi /rizafahmi22
BAHASA PEMROGRAMAN ELIXIR
Bahasa pemrograman fungsional, dinamis, dan mudah
dikelola.


Berjalan diatas BEAM (Erlang Virtual Machine) yang
terkenal tangguh.


Biasa digunakan untuk membangun sistem


yang terdirstribusi, hemat sumber daya dan fault-
tolerant.
/rizafahmi /rizafahmi /rizafahmi22
BAHASA PEMROGRAMAN ELIXIR
PARADIGMA FUNGSIONAL
Paradigma fungsional menawarkan
penulisan kode yang lebih jelas,


transformasi data yang transparan dan
mudah dites.
/rizafahmi /rizafahmi /rizafahmi22
BAHASA PEMROGRAMAN ELIXIR
Sintaksis terinspirasi dari bahasa Ruby dengan
performa setara Erlang.


Menggunakan actor-model dalam implementasi
concurrency.


Sudah memiliki


ekosistem yang lengkap.
/rizafahmi /rizafahmi /rizafahmi22
EKOSISTEM ELIXIR
iex — Interactive Elixir, REPL. Dapat digunakan untuk eksperimen dan debugging


mix — Alat bantu untuk kompilasi, testing, mengelola pustaka tambahan


hex — Kumpulan pustaka yang bisa digunakan di proyek Elixir


exunit — Unit testing framework
/rizafahmi /rizafahmi /rizafahmi22
PROYEK ELIXIRYANG MENARIK
Ecto — Alat untuk pemetaan data dan database. Terinspirasi dari C# LINQ


Nerves — Platform dan infrastruktur untuk IoT


Membrane Framework — Framework untuk mengelola multimedia stream


Nx — Numerical framework, biasa digunakan untuk kebutuhan machine learning


Livebook — Alat untuk menulis kode dan berkolaborasi secara interaktif
/rizafahmi /rizafahmi /rizafahmi22
PENGGUNA ELIXIR
ELIXIR-COMPANIES.COM
Discord — Kebutuhan real-time dan Elixir digunakan sebagai


tulang-punggung infrastruktur chat


Pepsico — Digunakan oleh tim sales dan marketing untuk kebutuhan


analisa data


Spotify — Digunakan untuk aplikasi internal


Heroku — Digunakan di beberapa servis seperti lisensi dan
fi
nansial


seperti invoice, pembayaran kartu kredit dll.


Pinterest — Digunakan untuk mengirim 14 ribu noti
fi
kasi per detik
/rizafahmi /rizafahmi /rizafahmi22
PENGGUNA ELIXIR/ERLANG
1 miliaran pengguna aktif


6 miliaran pesan terkirim


4.5 miliaran foto terkirim


55 miliaran panggilan
/rizafahmi /rizafahmi /rizafahmi22
PENGGUNA ELIXIR/ERLANG
PER HARI
1 miliaran pengguna aktif


6 miliaran pesan terkirim


4.5 miliaran foto terkirim


55 miliaran panggilan
Demo singkat Elixir
KESIMPULAN
ELIXIR
• Elixir adalah bahasa pemrograman fungsional dan dinamis.


• Berjalan diatas BEAM atau Erlang VM yang sudah terbukti
kehandalannya.


• Sering digunakan untuk membangun sistem terdistribusi, hemat
sumber daya dan fault-tolerant.


• Digunakan oleh banyak perusahaan untuk berbagai kebutuhan seperti
mengirimkan noti
fi
kasi, aplikasi real-time, dsb.
/rizafahmi /rizafahmi /rizafahmi22
KOMPONEN PHOENIX
Plug — Spesi
fi
kasi modul-modul untuk membangun web server.


Cowboy — HTTP server yang ringan dan cepat


Ecto — DSL untuk berinteraksi dengan database
/rizafahmi /rizafahmi /rizafahmi22
FITUR EKSTRA PHOENIX
BATTERIES INCLUDED
Channel — Fitur real-time, berbahan dasar websocket


LiveView — Membangun aplikasi web modern tanpa JavaScript


PubSub — Sistem pub/sub terdistribusi


Auth — Menyediakan sistem otentikasi
Memulai Phoenix
/rizafahmi /rizafahmi /rizafahmi22
TAMPILAN AKHIR APLIKASI
kreasi.
fl
y.dev
github.com/rizafahmi/kreasidev
/rizafahmi /rizafahmi /rizafahmi22
MEMULAI PHOENIX
INSTALASI
$ mix archive.install hex phx_new
/rizafahmi /rizafahmi /rizafahmi22
MEMULAI PHOENIX
MEMBUAT PROYEK PHOENIX
$ mix phx.new kreasidev


$ cd kreasidev


$ mix ecto.create


$ mix phx.server
/rizafahmi /rizafahmi /rizafahmi22
MEMULAI PHOENIX
MEMBUAT PROYEK PHOENIX
Eksplorasi Phoenix
/rizafahmi /rizafahmi /rizafahmi22
PHOENIX
REQUEST & RESPONSE
Endpoint
GET /posts
Router
Controller
View
200 …
Template
Context
Schema
Model
Demo Phoenix
/rizafahmi /rizafahmi /rizafahmi22
KESIMPULAN
PHOENIX
• Phoenix adalah web framework yang lengkap, biasa digunakan untuk
membangun aplikasi web ataupun web services.


• Mengadopsi pola MVC dan mengutamakan produktivitas developer
sekaligus performa memukau.


• Sering digunakan untuk membangun sistem terdistribusi, dan aplikasi
real-time.


• Framework bergaya “batteries included” namun tetap
fl
eksibel.
LiveView
/rizafahmi /rizafahmi /rizafahmi22
PHOENIX LIVEVIEW
Sebuah metode untuk mengirimkan html, css dan aset
lainnya dari server ke client melalui websocket.


Digunakan untuk membangun real-time, single-page
application tanpa JavaScript.
/rizafahmi /rizafahmi /rizafahmi22
PHOENIX
REQUEST & RESPONSE
Endpoint
GET /posts
Router
Controller
View
200 …
Template
Context
Schema
Model
/rizafahmi /rizafahmi /rizafahmi22
PHOENIX LIVEVIEW
Endpoint
GET /posts
Router
Controller
View
200 …
Template
Context
Schema
Model
Browser
/rizafahmi /rizafahmi /rizafahmi22
PHOENIX LIVEVIEW
Endpoint
GET /posts
Router
Controller
View
200 …
Template
Context
Schema
Model
Browser
/rizafahmi /rizafahmi /rizafahmi22
PHOENIX LIVEVIEW
Endpoint
AJAX Request
Router
Controller
View
JSON Response
Template
Context
Schema
Model
Browser
/rizafahmi /rizafahmi /rizafahmi22
PHOENIX LIVEVIEW
WebSocket
Browser
/rizafahmi /rizafahmi /rizafahmi22
PHOENIX LIVEVIEW
WebSocket
Browser
LiveView
click
updates
Demo LiveView
/rizafahmi /rizafahmi /rizafahmi22
TAMPILAN AKHIR APLIKASI
kreasi.
fl
y.dev
github.com/rizafahmi/kreasidev
/rizafahmi /rizafahmi /rizafahmi22
PHOENIX LIVEVIEW
KESIMPULAN
• LiveView adalah metode untuk mengirimkan perubahan halaman web
melalui websocket. HTML over the wire, istilah yang sedang dipopulerkan.


• Digunakan untuk membangun aplikasi real-time ataupun single-page
application tanpa menulis kode JavaScript.


• Dapat dikombinasikan dengan dengan
fi
tur Phoenix lainnya seperti
PubSub, LiveComponent, dll.
Paralelisme
/rizafahmi /rizafahmi /rizafahmi22
PHOENIX
REQUEST & RESPONSE
Endpoint
GET /posts
Router
Controller
View
200 …
Template
Context
Schema
Model
/rizafahmi /rizafahmi /rizafahmi22
PHOENIX
REQUEST & RESPONSE
/rizafahmi /rizafahmi /rizafahmi22
PHOENIX
REQUEST & RESPONSE
/rizafahmi /rizafahmi /rizafahmi22
PHOENIX
REQUEST & RESPONSE
Demo Paralelisme
Joe Armstrong
“We do not have ONE web-server handling
2 millions sessions. We have 2 million
webservers handling one session each.”
KESIMPULAN
• Elixir adalah bahasa pemrograman fungsional dan dinamis yang
berjalan diatas BEAM atau Erlang VM yang sudah terbukti
kehandalannya.


• Phoenix adalah sebuah web framework lengkap yang mengutamakan
produkti
fi
tas sekaligus performa aplikasi.


• Memiliki berbagai
fi
tur menarik mulai dari LiveView, PubSub, Channel,
Auth dan banyak lagi.
/rizafahmi /rizafahmi /rizafahmi22
REFERENSI
youtube.com/rizafahmi
Sekian
/rizafahmi
/rizafahmi
/rizafahmi22

Membangun Aplikasi Web dengan Elixir dan Phoenix