SlideShare una empresa de Scribd logo
1 de 46
Descargar para leer sin conexión
/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

Más contenido relacionado

Similar a Membangun Aplikasi Web dengan Elixir dan Phoenix

Rekayasa web part 3 khaerul anwar
Rekayasa web part 3 khaerul anwarRekayasa web part 3 khaerul anwar
Rekayasa web part 3 khaerul anwarKhaerul Anwar
 
Tugas 3 0317 individu
Tugas 3 0317 individuTugas 3 0317 individu
Tugas 3 0317 individueko nofrianto
 
Workshop SuBali - CodeIgniter
Workshop SuBali - CodeIgniterWorkshop SuBali - CodeIgniter
Workshop SuBali - CodeIgniterAdi Setiawan
 
Framework 1411510744 azhar krisna pratama
Framework 1411510744 azhar krisna pratamaFramework 1411510744 azhar krisna pratama
Framework 1411510744 azhar krisna pratamaAzhar Krisna
 
Membangun aplikasi berbasis web dengan menggunakan framework
Membangun aplikasi berbasis web dengan menggunakan frameworkMembangun aplikasi berbasis web dengan menggunakan framework
Membangun aplikasi berbasis web dengan menggunakan frameworkGst Ayu Indriani
 
Modul Pelatihan CodeIgniter Dasar
Modul Pelatihan CodeIgniter DasarModul Pelatihan CodeIgniter Dasar
Modul Pelatihan CodeIgniter DasarRidwan Fadjar
 
Perkembangan web server di Linux
Perkembangan web server di LinuxPerkembangan web server di Linux
Perkembangan web server di LinuxTugas_SO2
 
Apa Itu Framework CodeIgniter?
Apa Itu Framework CodeIgniter?Apa Itu Framework CodeIgniter?
Apa Itu Framework CodeIgniter?jundi26
 
Proposal PA reynold syahputra
Proposal PA reynold syahputraProposal PA reynold syahputra
Proposal PA reynold syahputraReynold Syahputra
 
Proposal PA reynold syahputra
Proposal PA reynold syahputraProposal PA reynold syahputra
Proposal PA reynold syahputraReynold Syahputra
 
Tugas 4 rekweb
Tugas 4 rekwebTugas 4 rekweb
Tugas 4 rekwebrara1992
 
Pemrograman-Berbasis-Web-Pertemuan-1.ppt
Pemrograman-Berbasis-Web-Pertemuan-1.pptPemrograman-Berbasis-Web-Pertemuan-1.ppt
Pemrograman-Berbasis-Web-Pertemuan-1.pptAbdurRozak19
 
Code igneter
Code igneterCode igneter
Code ignetermaiefendi
 

Similar a Membangun Aplikasi Web dengan Elixir dan Phoenix (20)

Rekayasa web part 3 khaerul anwar
Rekayasa web part 3 khaerul anwarRekayasa web part 3 khaerul anwar
Rekayasa web part 3 khaerul anwar
 
Tugas 3 0317 individu
Tugas 3 0317 individuTugas 3 0317 individu
Tugas 3 0317 individu
 
Ci
CiCi
Ci
 
Workshop SuBali - CodeIgniter
Workshop SuBali - CodeIgniterWorkshop SuBali - CodeIgniter
Workshop SuBali - CodeIgniter
 
Tugas 3 rekweb
Tugas 3 rekwebTugas 3 rekweb
Tugas 3 rekweb
 
API
APIAPI
API
 
02 rekayasa web
02 rekayasa web02 rekayasa web
02 rekayasa web
 
Framework 1411510744 azhar krisna pratama
Framework 1411510744 azhar krisna pratamaFramework 1411510744 azhar krisna pratama
Framework 1411510744 azhar krisna pratama
 
Membangun aplikasi berbasis web dengan menggunakan framework
Membangun aplikasi berbasis web dengan menggunakan frameworkMembangun aplikasi berbasis web dengan menggunakan framework
Membangun aplikasi berbasis web dengan menggunakan framework
 
Tugas rekweb 4
Tugas rekweb 4Tugas rekweb 4
Tugas rekweb 4
 
Modul Pelatihan CodeIgniter Dasar
Modul Pelatihan CodeIgniter DasarModul Pelatihan CodeIgniter Dasar
Modul Pelatihan CodeIgniter Dasar
 
Frame work php
Frame work phpFrame work php
Frame work php
 
Framework fb1
Framework fb1Framework fb1
Framework fb1
 
Perkembangan web server di Linux
Perkembangan web server di LinuxPerkembangan web server di Linux
Perkembangan web server di Linux
 
Apa Itu Framework CodeIgniter?
Apa Itu Framework CodeIgniter?Apa Itu Framework CodeIgniter?
Apa Itu Framework CodeIgniter?
 
Proposal PA reynold syahputra
Proposal PA reynold syahputraProposal PA reynold syahputra
Proposal PA reynold syahputra
 
Proposal PA reynold syahputra
Proposal PA reynold syahputraProposal PA reynold syahputra
Proposal PA reynold syahputra
 
Tugas 4 rekweb
Tugas 4 rekwebTugas 4 rekweb
Tugas 4 rekweb
 
Pemrograman-Berbasis-Web-Pertemuan-1.ppt
Pemrograman-Berbasis-Web-Pertemuan-1.pptPemrograman-Berbasis-Web-Pertemuan-1.ppt
Pemrograman-Berbasis-Web-Pertemuan-1.ppt
 
Code igneter
Code igneterCode igneter
Code igneter
 

Más de Riza Fahmi

Berbagai Pilihan Karir Developer
Berbagai Pilihan Karir DeveloperBerbagai Pilihan Karir Developer
Berbagai Pilihan Karir DeveloperRiza Fahmi
 
Web dan Progressive Web Apps di 2020
Web dan Progressive Web Apps di 2020Web dan Progressive Web Apps di 2020
Web dan Progressive Web Apps di 2020Riza Fahmi
 
Remote Working/Learning
Remote Working/LearningRemote Working/Learning
Remote Working/LearningRiza Fahmi
 
How to learn programming
How to learn programmingHow to learn programming
How to learn programmingRiza Fahmi
 
Rapid App Development with AWS Amplify
Rapid App Development with AWS AmplifyRapid App Development with AWS Amplify
Rapid App Development with AWS AmplifyRiza Fahmi
 
Menguak Misteri Module Bundler
Menguak Misteri Module BundlerMenguak Misteri Module Bundler
Menguak Misteri Module BundlerRiza Fahmi
 
Beberapa Web API Menarik
Beberapa Web API MenarikBeberapa Web API Menarik
Beberapa Web API MenarikRiza Fahmi
 
MVP development from software developer perspective
MVP development from software developer perspectiveMVP development from software developer perspective
MVP development from software developer perspectiveRiza Fahmi
 
Ekosistem JavaScript di Indonesia
Ekosistem JavaScript di IndonesiaEkosistem JavaScript di Indonesia
Ekosistem JavaScript di IndonesiaRiza Fahmi
 
Perkenalan ReasonML
Perkenalan ReasonMLPerkenalan ReasonML
Perkenalan ReasonMLRiza Fahmi
 
How I Generate Idea
How I Generate IdeaHow I Generate Idea
How I Generate IdeaRiza Fahmi
 
Strategi Presentasi Untuk Developer Workshop Slide
Strategi Presentasi Untuk Developer Workshop SlideStrategi Presentasi Untuk Developer Workshop Slide
Strategi Presentasi Untuk Developer Workshop SlideRiza Fahmi
 
Lesson Learned from Prolific Developers
Lesson Learned from Prolific DevelopersLesson Learned from Prolific Developers
Lesson Learned from Prolific DevelopersRiza Fahmi
 
Clean Code JavaScript
Clean Code JavaScriptClean Code JavaScript
Clean Code JavaScriptRiza Fahmi
 
The Future of AI
The Future of AIThe Future of AI
The Future of AIRiza Fahmi
 
Chrome Dev Summit 2018 - Personal Take Aways
Chrome Dev Summit 2018 - Personal Take AwaysChrome Dev Summit 2018 - Personal Take Aways
Chrome Dev Summit 2018 - Personal Take AwaysRiza Fahmi
 
Essentials and Impactful Features of ES6
Essentials and Impactful Features of ES6Essentials and Impactful Features of ES6
Essentials and Impactful Features of ES6Riza Fahmi
 
Modern Static Site with GatsbyJS
Modern Static Site with GatsbyJSModern Static Site with GatsbyJS
Modern Static Site with GatsbyJSRiza Fahmi
 
Introduction to ReasonML
Introduction to ReasonMLIntroduction to ReasonML
Introduction to ReasonMLRiza Fahmi
 
Machine learning with py torch
Machine learning with py torchMachine learning with py torch
Machine learning with py torchRiza Fahmi
 

Más de Riza Fahmi (20)

Berbagai Pilihan Karir Developer
Berbagai Pilihan Karir DeveloperBerbagai Pilihan Karir Developer
Berbagai Pilihan Karir Developer
 
Web dan Progressive Web Apps di 2020
Web dan Progressive Web Apps di 2020Web dan Progressive Web Apps di 2020
Web dan Progressive Web Apps di 2020
 
Remote Working/Learning
Remote Working/LearningRemote Working/Learning
Remote Working/Learning
 
How to learn programming
How to learn programmingHow to learn programming
How to learn programming
 
Rapid App Development with AWS Amplify
Rapid App Development with AWS AmplifyRapid App Development with AWS Amplify
Rapid App Development with AWS Amplify
 
Menguak Misteri Module Bundler
Menguak Misteri Module BundlerMenguak Misteri Module Bundler
Menguak Misteri Module Bundler
 
Beberapa Web API Menarik
Beberapa Web API MenarikBeberapa Web API Menarik
Beberapa Web API Menarik
 
MVP development from software developer perspective
MVP development from software developer perspectiveMVP development from software developer perspective
MVP development from software developer perspective
 
Ekosistem JavaScript di Indonesia
Ekosistem JavaScript di IndonesiaEkosistem JavaScript di Indonesia
Ekosistem JavaScript di Indonesia
 
Perkenalan ReasonML
Perkenalan ReasonMLPerkenalan ReasonML
Perkenalan ReasonML
 
How I Generate Idea
How I Generate IdeaHow I Generate Idea
How I Generate Idea
 
Strategi Presentasi Untuk Developer Workshop Slide
Strategi Presentasi Untuk Developer Workshop SlideStrategi Presentasi Untuk Developer Workshop Slide
Strategi Presentasi Untuk Developer Workshop Slide
 
Lesson Learned from Prolific Developers
Lesson Learned from Prolific DevelopersLesson Learned from Prolific Developers
Lesson Learned from Prolific Developers
 
Clean Code JavaScript
Clean Code JavaScriptClean Code JavaScript
Clean Code JavaScript
 
The Future of AI
The Future of AIThe Future of AI
The Future of AI
 
Chrome Dev Summit 2018 - Personal Take Aways
Chrome Dev Summit 2018 - Personal Take AwaysChrome Dev Summit 2018 - Personal Take Aways
Chrome Dev Summit 2018 - Personal Take Aways
 
Essentials and Impactful Features of ES6
Essentials and Impactful Features of ES6Essentials and Impactful Features of ES6
Essentials and Impactful Features of ES6
 
Modern Static Site with GatsbyJS
Modern Static Site with GatsbyJSModern Static Site with GatsbyJS
Modern Static Site with GatsbyJS
 
Introduction to ReasonML
Introduction to ReasonMLIntroduction to ReasonML
Introduction to ReasonML
 
Machine learning with py torch
Machine learning with py torchMachine learning with py torch
Machine learning with py torch
 

Membangun Aplikasi Web dengan Elixir dan Phoenix