Post on 11-Apr-2019
Perbandingan Node.Js vs PHP ?
Rohmatullah
Rohmattullah990@gmail.com
Abstrak
Akhir-akhir ini kita mendengar pengembangan aplikasi menggunakan Node.js .
Kita juga memahami bahwa dalam lingkungan pemrograman berbasis web kita mengenal
PHP sebagai bahasa pemrograman sisi server yang sangat terkenal. Sebenarnya
bagaimanakah Node.js ini dibandingkan dengan PHP ? Manakah yang lebih baik
dipelajari antara PHP dengan Node.js? Apakah Node.js akan segera menggantikan PHP?
Benarkah PHP akan mati dalam waktu dekat?
Untuk menjawab pertanyaan seperti ini, kita akan bandingkan beberapa aspek
antara PHP dengan Node.js. Artikel ini lebih ditujukan untuk programmer pemula yang
bingung mau belajar dan belum pernah membuat kode program dengan PHP maupun
Node.js. Oleh karena itu bahasannya saya batasi agar tidak akan terlalu teknis supaya
mudah dipahami. PHP dan Node.js ini sama-sama bisa digunakan di sisi server. Pertama-
tama kita akan melihat usianya, kemudian dari usia ini kita dapat membuat analisa lebih
lanjut. Secara sejarah PHP lebih tua dibandingkan dengan Node.js. Bahasa pemrograman
lahir pada tahun 1994, sedangkan Node.js lahir pada tahun 2009.
Usia PHP lebih tua, ini tentu akan memberikan tingkat kedewasaan yang lebih baik.
Kedewasaan ini berarti kelengkapan pustaka dan juga kelengkapan dokumentasi. Dengan
menggunakan bahasa PHP kita tentu lebih mudah belajar pemrograman karena mudah
dalam mendapatkan dokumentasi pembelajaran. Dan karena kedewasaan tersebut, kita
mudah mendapatkan tool-tool untuk mengebangkan aplikasi menggunakan bahasa PHP.
Kata Kunci: pemrograman, programmer, developer, learning
Lisensi Dokumen: Copyright © 2008-2019 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit),
dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak
diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
Pendahuluan
Pengertian PHP dan Node.js
PHP dan Node.js sering dibandingkan karena sama-sama berperan di sisi server
(back-end). Dalam pemrograman web, istilah back-end merujuk ke pemrosesan yang
dijalankan di sisi web server. Sebagai contoh, untuk menjalankan PHP kita harus
menggunakan aplikasi web server seperti apache yang menjadi satu paket dari XAMPP.
Apakah sebuah web harus menggunakan back-end? Tidak juga. Untuk web
sederhana, HTML dan CSS saja sudah cukup. Teknologi back-end seperti PHP dan
Node.js baru diperlukan jika web tersebut butuh memproses form atau mengakses
database.
PHP dan Node.js sebenarnya berbeda dalam hal konsep dasar. PHP adalah sebuah
bahasa pemrograman back-end murni, sedangkan Node.js adalah sebuah platform.
Maksudnya, tidak ada namanya bahasa pemrograman Node.js, yang ada adalah Node.js
itu menggunakan bahasa pemrograman JavaScript yang dibawa ke sisi back end.
Dengan kata lain, agar bisa menggunakan Node.js kita harus paham JavaScript terlebih
dahulu.
JavaScript sendiri pada awalnya merupakan bahasa pemrograman web yang
berjalan di front-end. Disini JavaScript dipakai untuk memprogram HTML dan CSS di
dalam web browser. Hal tersebut berlangsung puluhan tahun sejak 1995. JavaScript
pertama kali dirancang oleh Brendan Eich saat bekerja sebagai programmer di Netscape
Communications Corporation. PHP sendiri juga hadir di tahun yang sama (1995).
Pada saat itu konsep dasarnya cukup simple. HTML, CSS dan JavaScript dipakai
di sisi front-end, sedangkan PHP dipakai di sisi back-end. PHP sendiri bisa diganti
dengan bahasa pemrograman lain seperti ASP.
Hal ini berubah ketika JavaScript di bawa ke sisi server oleh Ryan Dahl di tahun
2009, dan lahirlah Node.js. Dengan demikian, JavaScript bisa dipakai di sisi front-end
maupun back-end, sehingga komunikasi antar keduanya menjadi lebih efisien.
Lisensi Dokumen: Copyright © 2008-2019 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit),
dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak
diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
Pembahasan
Airbnb, LinkedIn, Walmart, Uber, dan bahkan NASA telah menggunakan Node.js dalam
produksi mereka. Banyak perusahaan kecil dan pemula mengikuti jejak mereka dan
memanfaatkan teknologi dalam membangun aplikasi. Manfaat Node.js tidak terhitung
jumlahnya, namun Anda juga harus menyadari kendalanya
Apa itu Node.js?
Node.js adalah server-side JavaScript . Akhir-akhir ini mungkin Anda sudah mulai sering
mendengar kata tersebut di dunia programming. Tapi mengapa sebenarnya kita
membutuhkan JavaScript di server?
Untuk membuat konsep Node.js jelas kita bisa membandingkannya dengan bahasa server-
side biasa seperti PHP. Node.js menggunakan prosedur eksekusi server berbasis event
dan bukan eksekusi multithread di PHP. Untuk menjelaskannya lebih lanjut, kita akan
membicarakan terlebih dahulu apa itu Node.JS.
Pertimbangkan sebuah situs web di mana Anda perlu memuat konten secara dinamis dari
server web lain yang lambat. Di PHP Anda bisa melakukannya dengan 2 cara –
mengkodekannya dalam file sederhana dan mengkodekannya sebagai skrip lain,
kemudian mengeksekusinya secara multithread.
Lisensi Dokumen: Copyright © 2008-2019 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit),
dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak
diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
Pada metode pertama walaupun kodenya sederhana, eksekusi akan berhenti sebentar pada
saat server web lambat diakses. Metode kedua lebih dioptimalkan jika terjadi kinerja
namun sulit untuk dikodekan dan memiliki overhead pengelolaan multithread. Kasus ini
serupa untuk sebagian besar bahasa pemrograman web selain JavaScript sisi server, yaitu,
Node.js.
Apa bedanya Node.js? Untuk memahami Node.js, Anda harus mengingat pemrograman
berbasis JavaScript di browser. Kami menggunakan teknologi yang sama di sini. Alih-
alih menggunakan thread terpisah, sebuah function dilampirkan pada acara akhir dari
“akses server web lambat” yang disebutkan di atas, sehingga Anda mendapatkan
fungsionalitas penuh pada opsi kedua yang dioptimalkan yang disebutkan di atas tanpa
overhead multithread.
Kenapa Node.js dianggap lebih baik?
Node.js dianggap sebagai revolusioner. JavaScript yang dulunya hanya dipakai untuk
membuat efek-efek animasi di dalam web browser (berjalan di sisi front-end), sekarang
juga bisa dipakai untuk memproses form dan berkomunikasi dengan database (berjalan
di sisi back-end).
Salah satu fitur utama yang sering dibandingkan dengan PHP adalah, Node.js
menggunakan konsep non-blocking I/O model. Konsep ini membuat pemrosesan di
Node.js lebih efisien karena tidak terkunci ketika sebuah proses sedang berjalan.
Katakanlah kita ingin memproses 2 tugas dalam waktu yang hampir bersamaan: 1. Ambil
data dari database dan 2. menghapus sebuah file di server.
Di dalam PHP, kedua tugas ini dikerjakan dengan sistem antrian. Proses hapus file baru
berjalan setelah data selesai diambil dari database.
Lisensi Dokumen: Copyright © 2008-2019 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit),
dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak
diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
Sedangkan di Node.js, keduanya bisa berjalan bersamaan tanpa harus menunggu proses
yang satu selesai terlebih dahulu. Pertama, Node.js akan memberi instruksi untuk
mengambil data dari database. Tanpa menunggu data tersebut sampai, ia akan lanjut ke
proses kedua untuk menghapus file. Hasilnya, bisa jadi file dihapus duluan sebelum data
dari database sampai.
Namun di sisi lain, Node.js juga menggunakan konsep single threaded. Maksudnya,
hanya ada 1 proses yang berjalan sepanjang waktu. Ini berbeda dengan PHP yang
menggunakan konsep multi threaded.
Katakanlah pada waktu yang bersamaan ada 1000 orang mengunjungi web kita. Di dalam
PHP, akan dibuat 1000 thread dimana setiap pengunjung dilayani oleh 1 thread khusus.
Setiap thread akan diproses dengan sistem antrian seperti sebelumnya. Berikut ilustrasi
dari konsep ini:
Pemrosesan multi thread di PHP. Sumber: quora.com
Dalam gambar diatas, ada 4 orang pengunjung yang dilayani oleh 4 thread. Masing-
masing 1 untuk setiap pengunjung.
Lisensi Dokumen: Copyright © 2008-2019 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit),
dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak
diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
Sedangkan di Node.js, 1000 pengunjung itu akan di layani oleh 1 thread saja. Thread
secara bergantian berpindah dari satu proses ke proses lain tanpa harus menunggu proses
yang satu selesai (kopsep non-blocking I/O model). Berikut ilustrasinya:
Pemrosesan single thread di Node.js. Sumber: quora.com
Dalam gambar diatas, ada 4 orang pengunjung yang dilayani oleh 1 thread yang berpindah
secara bergantian. Tapi kembali, berbeda dengan thread di PHP, di dalam Node.js thread
tersebut tidak harus menunggu setiap proses selesai, tapi cukup memberikan instruksi dan
thread akan ‘loncat’ ke tugas berikutnya. Istilahnya asynchronous requests.
Jadi, mana yang lebih baik? Banyak faktor yang mesti dipertimbangkan. Secara umum,
untuk tugas-tugas sederhana, konsep 1 thread, non-blocking I/O model kepunyaan
Node.js akan memberikan performa yang lebih baik. Ditambah lagi efisiensi dari konsep
single thread ini. Sedangkan untuk web yang butuh pemrosesan besar, konsep multi
thread kepunyaan PHP akan lebih baik.
Lisensi Dokumen: Copyright © 2008-2019 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit),
dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak
diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
Meskipun begitu, masih banyak faktor-faktor lain yang bisa mempengaruhi seperti
optimisasi server, update teknologi, perancangan kode program, dll. Sebagai contoh, PHP
7 menawarkan peningkatan performa yang jauh lebih besar dibandingkan dengan PHP 5.
Jadi menurut saya, dari segi performa PHP tidak otomatis kalah dari Node.js. Hanya saja,
memang ada aplikasi-aplikasi yang lebih cocok menggunakan Node.js daripada PHP,
terutama website yang terus-menerus realtime dan butuh banyak JavaScript.
Sebagai contoh, aplikasi Google seperti Gmail, Google Docs, Google Analytics itu full
JavaScript, sehingga paling pas dipadukan dengan Node.js di server.
Ditambah lagi ada jargon “JavaScript: One programming language to rule them all”.
Maksudnya JavaScript saat ini bisa dipakai untuk memprogram apa saja, mulai dari
aplikasi desktop, mobile app, web server, hingga Internet of things. Hal ini Semakin
menambah alasan untuk belajar Node.js yang berbasis JavaScript.
Jadi, Apakah Lebih baik belajar Node.js daripada PHP?
Dari penjelasan diatas, terlihat bahwa Node.js tampak lebih menarik daripada PHP. Ini
pula yang menimbulkan anggapan bahwa sebaiknya kita belajar Node.js yang lebih
modern daripada PHP yang sudah mulai tua. Betulkah? Kita akan lihat dari sisi lain.
Pangsa Pasar Penggunaan PHP vs Node.js
Tidak dapat dipungkiri bahwa teknologi JavaScript (termasuk di Node.js), berkembang
dengan sangat pesat, terutama dalam beberapa tahun belakangan. Namun untuk pangsa
pasar penggunaan teknologi back-end, PHP masih jauh lebih kuat.
Berikut beberapa data yang saya dapat tentang perbandingan penggunaan PHP dengan
Node.js:
Lisensi Dokumen: Copyright © 2008-2019 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit),
dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak
diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
Diagram pangsa pasar bahasa pemrograman web server. Sumber: w3techs.com
Terlihat bahwa 80% website yang ada di dunia masih menggunakan PHP di sisi server,
ini sangat dominan. Diantaranya, sekitar 30% menggunakan CMS WordPress, yang juga
berbasis PHP.
Dari 20% sisa web yang tidak menggunakan PHP, itupun terdiri dari berbagai teknologi
back-end lain seperti ASP, Java, Ruby, ColdFusion dan JavaScript. Jika kita menganggap
JavaScript ini adalah Node.js, maka hanya 0,4% saja website yang menggunakan
Node.js. Ini berdasarkan hasil riset dari w3techs.com.
Lisensi Dokumen: Copyright © 2008-2019 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit),
dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak
diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
Salah satu alasannya adalah karena Node.js merupakan teknologi baru, jadi jika
dibandingkan dengan keseluruhan website yang sudah ada sejak puluhan tahun yang lalu,
angkanya menjadi sangat kecil.
Jadi agak mustahil jika menyebut PHP akan mati dalam waktu dekat. Saya yakin dalam
5 tahun ke depan PHP masih tetap ada. Dan tentu saja PHP akan terus berinovasi agar
lebih baik dan lebih efisien lagi.
Migrasi sebuah website yang sudah ada dari PHP ke Node.js akan butuh tenaga dan biaya
yang cukup besar, sehingga mayoritas website jarang yang mau beralih dari PHP kecuali
ada hal yang sangat urgent.
Lisensi Dokumen: Copyright © 2008-2019 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit),
dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak
diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
Dasar Keahlian untuk belajar PHP vs Node.js
Bagi saya, inilah alasan terbesar untuk tidak langsung belajar Node.js. Alur belajar
(learning curve) Node.js lumayan sulit. Bagi pemula jauh lebih mudah belajar PHP
dibandingkan Node.js. Bahkan boleh dibilang mustahil pemula bisa langsung ke
Node.js.
Syarat untuk bisa ke PHP hanya perlu paham HTML (disarankan juga punya dasar CSS
meskipun tidak wajib). Dua materi dasar ini (HTML dan CSS) sudah cukup untuk bisa
belajar PHP sebagai bahasa pemrograman web.
Sebagai contoh, untuk menampilkan teks “Hello World” di web browser, kode PHPnya
adalah sebagai berikut:
1
2
3
<?php
echo 'Hello World!';
?>
Sangat sederhana. Satu paragraf saja sudah cukup untuk membahas kode diatas, dimana
sebuah kode PHP dibuka dengan tag <?php dan diakhiri dengan tag ?>. Perintah echo
dipakai untuk menampilkan teks ke dalam web browser.
Bagaimana dengan Node,js? Setelah punya dasar HTML dan CSS, harus belajar lagi
JavaScript karena Node.js berbasis kepada bahasa pemrograman JavaScript.
Untuk menampilkan teks “Hello World” di Node.js, berikut perintahnya:
1
2
3
4
5
6
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World!');
}).listen(3000, '127.0.0.1');
Lisensi Dokumen: Copyright © 2008-2019 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit),
dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak
diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
Selain lebih panjang, kode-kode diatas butuh pemahaman yang mendalam tentang
JavaScript dan pengetahuan seputar cara kerja web server.
Bagi pemula, saya rasa perlu 1 halaman bahkan lebih untuk membahas semua kode ini,
mulai dari konsep variabel, object, function, callback, http header, http respond, http
port, dan alamat IP Server. Inilah yang saya maksud bahwa Node.js lebih susah
dipelajari, khususnya untuk pemula.
Hosting untuk PHP vs Node.js
Selain kode program yang lebih sulit, meng-onlinekan sebuah web yang dibuat dengan
Node.js juga perlu skill yang mumpuni. Setidaknya kita mesti nyaman men-setting VPS
(Virtual Private Server) yang biasanya harus menggunakan command line Linux
(perintah terminal) via SSH. Yakni mengetik perintah secara manual baris per baris.
Sedangkan untuk PHP, web hosting yang dipakai untuk meng-onlinekan website ada
dimana-mana dan harganya relatif murah (pakai shared hosting). Selain itu konfigurasi
web server juga sangat mudah karena semua tinggal pakai sistem cPanel yang berbasis
grafis. Kita cuma perlu beberapa kali klik dan website sudah online. Tidak perlu hapal
perintah-perintah linux. Kecuali jika webnya sudah ramai dan butuh server sekelas VPS.
Disisi ini menurut saya PHP juga lebih user friendly untuk pemula dibandingkan Node.js.
Atau setidaknya sampai ada hosting yang menyediakan cara mudah menjalankan web
yang dibuat dengan Node.js
Lisensi Dokumen: Copyright © 2008-2019 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit),
dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak
diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
Materi Belajar PHP vs Node.js
Karena relatif baru, materi belajar untuk Node.js tentu saja belum sebanyak PHP,
terutama referensi / web berbahasa Indonesia.
Khusus bagi pelajar atau mahasiswa, menurut saya masih cukup jarang guru / dosen yang
update dan paham tentang Node.js. Jika bicara tentang bahasa pemrograman web, mereka
mungkin hanya tahu PHP. Ini bisa menjadi salah satu bahan pertimbangan sebelum
membuat skripsi web menggunakan Node.js
Penutup
Jadi lebih baik belajar PHP atau Node.js?
Dari artikel ini tentu anda bisa menebak bahwa saya cenderung menyarankan untuk
belajar PHP terlebih dahulu. Alasan paling kuat karena Node.js lumayan susah
dipelajari bagi pemula. Banyak yang harus dipersiapkan sebelum bisa ke Node.js.
Saya bukan tidak suka Node.js, tapi hanya mengarahkan jalur yang paling pas. Setelah
paham PHP dan JavaScript, silahkan lanjut ke Node.js.
Terkait masa depan keduanya, baik PHP maupun Node.js sama-sama menarik. PHP
sudah sangat mapan dan masih menjadi bahasa mayoritas untuk pemrograman server.
CMS PHP populer seperti WordPress juga akan ‘menjamin’ bahwa PHP akan terus
hadir. Sehingga saya kurang sependapat jika dikatakan bahwa PHP akan segera
digantikan oleh Node.js. Jika pun hal itu akan terjadi, mungkin butuh waktu 5 – 10 tahun
lagi.
Lisensi Dokumen: Copyright © 2008-2019 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit),
dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak
diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
Referensi
Duniailkom.com
Dewaweb.com
Proweb.co.id
Bukacode.blogspot.com
Biografi
Nama saya Rohmatullah, tempat tinggal di Kota Tangerang, sebuah kota kecil di
pinggiran ibu kota Indonesia, samapi tulisan ini di buat saya sedang menjalani studi di
sebuah kampus swasta di Kota Tangerang. Saya merupakan anak bungsu dari 2
bersaudara yang mempunyai hobbi yang mungkin belum banyak orang mengetahui
yaitu bermain Hockey Indoor & outdoor. Saya lahir di Kota Tangerang pada 21 tahun
yang lalu. Jika ingin mengetahui pribadi diri saya lebih lanjut anda bias mengikuti akun
sosmed saya di facebook dengan nama akun rohmatullah atau bias juga di akun
Instagram saya di @rhmatt98.
Lisensi Dokumen: Copyright © 2008-2019 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit),
dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak
diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org