15 Januari 2000, ESSAYS
Perl/CGI,
PHP, ASP ..
atau Platform
Lainnya?
Oleh : Steven
Haryanto
Pendahuluan,
Situs web yang dinamik?
Sebelum mulai, terlebih
dulu perlu dijelaskan apa arti situs
web dinamik.
- Di masa awal web (awal 1990-an),
web server yang ada praktis berfungsi hanya sebagai file
server (bedanya, protokol yang dipakai adalah HTTP).
- Yang dikerjakan oleh web server
saat itu hanyalah mentransfer file, terutama file-file
HTML dan gambar GIF atau JPEG, kepada klien yang memintanya.
- Tampilan dan isi halaman web,
selama file yang bersangkutan tidak diubah oleh pembuat
situs, akan tetap dari request ke request.
Jenis halaman-halaman web seperti
ini disebut statik.
Mekanisme seperti ini pada waktu
itu sudah memadai.
Bahasa markup hiperteks (HTML)
telah membedakan Web dari layanan internet yang lain, karena
informasi yang diberikan lewat Web terasa saling terkait melalui
hiperlink.
Namun karena situs web semakin
kompleks, terutama berkat kalangan komersial yang berbondong-bondong
online, di sisi server Web mulai berubah.
Muncullah kebutuhan-kebutuhan
baru untuk:
- Berinteraksi lebih dengan
pengunjung situs.
- Menampilkan informasi perusahaan
yang berasal dari database.
- Menampilkan halaman yang memproses
informasi dari klien, terupdate otomatis, berbeda tampilan
sesuai kondisi tertentu,
- dan sebagainya.
Apa yang harus berada di sisi
server kini tak cukup lagi hanya kumpulan file statik, tapi
program aplikasi dan database. Situs web seperti ini yang
disebut situs web dinamik.
Platform
Pengembangan Situs Web Dinamik
PERL/CGI
Salah satu protokol gateway yang pertama diciptakan,
dan tersukses, untuk menghubungkan web server dan aplikasi
adalah Common Gateway Interface,
atau CGI.
Bagaimana
cara kerja CGI?
- Aplikasi CGI, yang berupa
file skrip, ditaruh di lokasi direktori yang dapat diakses
oleh web server.
- Jika ada permintaan terhadap
aplikasi dari klien, web server akan membaca skrip dan menjalankan
program.
- Web server memberi program
ini masukan (termasuk masukan yang diberikan klien) dari
masukan standar (stdin) serta beberapa environment
variable.
- Web server menunggu program
berjalan hingga selesai lalu menangkap keluaran standar
program (stdout).
- Keluaran inilah yang diberikan
ke klien.
Apa Kelebihan
CGI?
- Skrip CGI dapat ditulis dalam
bahasa apa saja, namun barangkali sekitar 90% program CGI
yang ada ditulis dalam Perl.
- Protokol CGI yang sederhana,
serta
- Kefasihan Perl dalam mengolah
teks, menjadikan menulis sebuah program CGI cukup mudah
dan cepat.
- Meski tertua, hingga saat
ini menurut survei dari Netcraft
sekitar 70% aplikasi di web masih menggunakan CGI. Ini berarti,
lebih dari separuh situs web dinamik yang ada dibangun dengan
CGI.
Apa kelemahan
CGI?
- Kecepatan
(istilah kerennya: skalabilitas).
Untuk menghasilkan keluaran program CGI, overhead yang
harus ditempuh cukup besar.
Dalam kasus CGI
Perl, prosesnya sbb:
- Web server terlebih dahulu
akan menciptakan sebuah proses baru dan menjalankan interpreter
Perl.
- Perl kemudian mengkompilasi
script CGI tersebut, baru kemudian menjalankan skrip.
Keseluruhan siklus ini terjadi
untuk setiap request.
Dengan kata lain, terlalu banyak waktu
dibuang untuk menciptakan proses dan tidak
ada cache skrip yang telah dikompilasi.
Jika situs web Anda menerima kurang
dari sepuluh hingga dua puluh ribu hit CGI per hari,
rata-rata mesin web server Unix yang ada sekarang ini mampu
menanganinya dengan baik.
Angka ini relatif, bergantung
pada:
- Tingkat pembebanan mesin web
server untuk melakukan pekerjaan lain (misalnya, mengirim
mail dan menjalankan server database) dan juga
- Aplikasi CGI itu sendiri (sebab
beberapa aplikasi CGI berupa skrip tunggal berukuran besar
hingga waktu loading-nya cukup lama; umumnya aplikasi
CGI yang rumit memecah diri menjadi skrip-skrip terpisah
untuk mengurangi waktu loading).
- Cepat atau lambatnya penampilan
halaman web yang diterima klien akan lebih bergantung pada
koneksi jaringan.
MOD_PERL
Mod_perl adalah sebuah modul Apache. Mod_perl menempelkan
interpreter Perl ke dalam Apache, sehingga Apache mampu menjalankan
kode/skrip Perl secara langsung.
Apa Kelebihan
Mod_Perl ?
- Mod_perl
dapat memecahkan masalah skalabilitas CGI,
karena dapat men-cache skrip dalam memori. Dengan
mod_perl pun kita dapat membuat aplikasi web dalam gaya
embedded (kode ada di file yang
sama dengan HTML, seperti Javascript).
Ada beberapa modul yang bisa dipakai untuk ini, antara lain
HTML::Embperl dan HTML::Mason.
Dengan mod_perl sebuah mesin server tunggal mampu menangani
beban hingga jutaan hit per hari.
Contoh site yang memakai mod_perl:
Slashdot.org
Valueclick.com
Di Indonesia ada
Berpolitik.com
Satunet.com
Apa
Kelemahan Mod_Perl
Masalah utama memakai mod_perl ada dua.
- Dari segi teknis, penggunaan
memori yang besar.
Ukuran Perl cukup besar, sehingga jika Perl ditempelkan
kepada Apache akan dihasilkan proses Apache yang berukuran
besar. Dengan model Apache yang multiproses saat ini, jumlah
memori total yang dibutuhkan cukup banyak.
Umumnya mesin instalasi mod_perl sekarang rata-rata dilengkapi
memori minimal 256MB. Jika mesin ini dipasangi juga server
database, jumlah memori perlu ditambah. Dalam kondisi hit
tinggi, dapat terbentuk proses Apache yang banyak sekaligus
sehingga kebutuhan memori membludak.
Masalah ini dipecahkan dengan menaruh sebuah
web server lain yang kecil, apakah itu Apache biasa berproksi
atau Squid. Hubungan dengan klien ditangani oleh web server
yang kecil, sementara Apache besar dengan mod_perl hanya
bertugas memproduksi halaman dinamik.
- Dari segi nonteknis, relatif
lama dan sulit menguasai mod_perl (bukan
lagi steep, tapi "vertical learning curve,"
demikian pernah disebutkan oleh Stas Bekman, penulis tutorial
mod_perl mod_perl Developers Guide).
Meski program CGI tetap dapat
dijalankan lewat mod_perl (melalui modul
Perl Apache::Registry) sehingga kita tetap dapat membuat
program bergaya CGI, ada beberapa perbedaan yang perlu diperhatikan,
terutama karena sekarang CGI Anda di-cache oleh web
server.
Administrasi server mod_perl
pun perlu dipahami dan dikuasai dengan baik.
Pecinta Perl saya
anjurkan tetap mencoba dan memakai mod_perl,
karena :
- Tingkat
Kontrol yang ditawarkan amat tinggi.
Karena menyediakan antarmuka lengkap ke API Apache, dengan
mod_perl kita dapat menyetel Apache secara rinci.
- Berikrar
sehidup-semati bersama Apache. Dengan memilih
mod_perl, Anda bisa dibilang "bertukar cincin",
berikrar sehidup-semati bersama
Apache.
Sebab mod_perl modul Apache, spesifik untuk Apache.
Bukan masalah berarti, saya pikir, karena praktis semua
pihak telah mengakui stabilitas dan kinerja web server yang satu ini.
Menurut survei, web server yang paling banyak dipakai di
internet adalah Apache.
Beberapa produk komersial pun, seperti Stronghold (C2Net)
dan WebSphere (IBM), menggunakan kode sumber Apache.
PHP
PHP adalah salah satu bahasa scripting yang ditaruh di
dalam HTML (embedded).
Sintaks PHP mirip dengan Perl,
namun lebih sederhana (tidak neko-neko, less idiomatic, less
surprises :-).
Saat ini PHP termasuk salah satu
yang terpopular, setara dalam jumlah pemakaian dengan mod_perl,
di bawah CGI dan ASP (lihat survei dari Netcraft).
Beberapa situs terkenal yang
menggunakan PHP antara lain:
Di Indonesia ada:
PHP dapat dijalankan:
- Lewat
CGI atau
- Sebagai
modul Apache
Meski untuk memperoleh kecepatan
lebih Anda perlu menggunakan versi modul.
Ukuran
PHP tidaklah sebesar Perl, sehingga kebutuhan
untuk memasang proksi di depan web server ber-PHP tidaklah
terlalu mendesak seperti halnya mod_perl.
Apa
Kelebihan PHP?
Keuntungan utama memakai PHP saya pikir adalah:
- Kemudahan
dipelajari dibandingkan Perl/mod_perl. Karena
itulah sampai saat ini jumlah pemakai PHP meningkat lebih
banyak ketimbang pemakai mod_perl yang harus mempelajari
Perl terlebih dahulu.
Apa
Kekurangan PHP dibanding mod_perl?
Pertimbangan menggunakan mod_perl dibandingkan PHP
adalah jika ingin:
- Menyetel Apache lebih rinci
dan
- Menjalankan skrip-skrip lama
CGI/Perl.
ASP
Di dunia NT/IIS, ASP merupakan pilihan yang paling banyak dipakai
orang. ASP merupakan arsitektur rancangan Microsoft yang didasarkan
pada COM untuk membuat halaman situs web dinamik.
Halaman ASP dapat dibuat dalam
berbagai bahasa pemrograman, tapi yang dianjurkan oleh Microsoft
adalah VBScript (subset dari Visual Basic) dan JScript (bahasa
mirip C, Javascript versi Microsoft). Sebetulnya bahasa lain
pun, seperti Perl, dapat digunakan.
Apa
Kelebihan ASP?
Keuntungan memakai ASP adalah Kemudahan.
Di ASP dikenal memiliki:
- Session
Variable yang dapat dipakai untuk menyimpan data kunjungan
tunggal pengunjung. ASP pun terkenal cukup terintegrasi
dengan database. Dan yang juga perlu dipertimbangkan,
- Model
Obyek yang bagus. Lewat model objek ini, Anda dapat mengakses
dan memodifikasi header HTTP dan komponen dokumen melalui
serangkaian method dan property.
Namun kemudahan-kemudahan ini
bukan sesuatu yang tidak dapat dilakukan oleh mod_perl dan
PHP. HTML::Embperl,
misalnya, mendukung variabel
session. Baik PHP dan mod_perl dapat memodifikasi
header HTTP dan mendukung
koneksi database persisten.
Apa
Kelemahan ASP?
Kerugian memakai ASP yang paling perlu diperhatikan
yaitu:
- Masalah
Keamanan
Misalnya, bug ::$DATA yang memungkinkan pengunjung melihat
kode sumber sebuah halaman (coba berkunjung ke sini.[Catatan] Saat artikel ini ditulis,
URL ini masih bekerja.
Namun masalah keamanan ASP cukup terkait dengan arsitektur
di tingkat yang lebih bawah, yaitu IIS/NT,
dan bukan sepenuhnya karena rancangan dan implementasi ASP.
[Catatan Penulis buat
Pembaca]
Kalau ada yang bisa memberi informasi tambahan mengenai ASP
atau koreksi tulisan yang ada di sini, akan sangat dihargai.
Sebab saya tidak berpengalaman dengan ASP :-)
TOOL-TOOL
LAIN
Selain yang telah disebutkan ada banyak alternatif yang tersedia.
Java
Anda dapat membuat situs web dinamik dengan Java, baik dengan
servlet (non-embedded) maupun dengan JSP (embedded).
Kecuali Anda sudah mengenal Java, saya pikir ini bukan pilihan
yang tepat (Java relatif lebih sulit dari Perl, PHP, atau
bahasa scripting lain).
FastCGI
Dengan protokol FastCGI,
skrip Anda dapat berjalan persisten dari request ke request.
Ini memecahkan masalah kinerja CGI yang lambat. Seperti halnya
CGI, FastCGI adalah protokol terbuka, tidak spesifik untuk
server atau bahasa pemrograman tertentu. Anda bisa menulis
program FastCGI dengan Perl, Tcl, Python, atau yang lainnya.
IBM Patent Server
Contoh situs yang menggunakan FastCGI:
Velocigen, Perl for ISAPI
Tool lain berbasis Perl pun dapat dijumpai, gratis maupun
komersial. Misalnya Velocigen (Binary Evolution) dan Perl
ISAPI (Activestate). Velocigen dapat juga menggunakan bahasa
scripting Tcl. Untuk sekedar men-cache skrip CGI, terdapat
modul Perl SpeedyCGI yang bisa dipakai.
ColdFusion
Di platform NT, terdapat
sebuah tool komersial yang terkenal, ColdFusion (Allaire).
Seperti PHP dan ASP, gaya penggabungan kode dan HTML di ColdFusion
sama-sama embedded. Namun, jika di sisi lain PHP dan
ASP menggunakan bahasa pemrograman, ColdFusion menggunakan
tag-tag HTML tambahan. ColdFusion tumbuh di lingkungan NT,
meski baru-baru ini Allaire membuat port Unix dan Linux-nya.
Contoh Situs yang menggunakan
ColdFusion/NT adalah:
Content management
Beberapa produk lain menawarkan lingkungan pengembangan yang
lebih lengkap, termasuk mengatur alur kerja dan pemversian
dokumen (istilah kerennya: content management).
Umumnya produk ini ditujukan
untuk perusahaan besar dan berharga mahal.
Contohnya
- StoryServer (Vignette),
- Dynabase (Inso), atau
- Livelink (OpenText).
Contoh website pengguna Vignette
Story Server di Indonesia adalah:
Namun ada juga produk Open
Source seperti
- Zope
Yang kemampuannya secara teknis dapat ditandingkan dengan
StoryServer (tapi minus tool GUI).
- HTML::Mason
Untuk Perl pun sudah mulai dikembangkan produk
semacam ini, meski masih jauh dari saingan-saingannya yang
terlebih dulu muncul. Untuk HTML::Mason misalnya ada Mason
Content Management.
Barangkali di lain waktu sebagian
tool ini bisa dibahas di Toekangweb
KESIMPULAN
Sebagian besar tool pengembangan aplikasi saat ini mencampurkan
kode dan HTML dalam satu file (HTML-embedded).
Meski nyaman, dalam jangka panjang kemungkinan
cara ini akan ditinggalkan karena terlalu low-level
(mengurusi kode HTML). Saat ini pengembang situs web dinamik
banyak menghabiskan waktu men-debug kode HTML atau membereskan
masalah perbedaan antarbrowser.
Prediksi Penulis - [Visual]
Akan muncul lebih banyak lingkungan pengembangan aplikasi
web GUI/visual seperti halnya lingkungan pengembangan aplikasi
desktop visual seperti Visual Basic atau Delphi.
Lingkungan seperti ini relatif lebih mudah digunakan dan kemungkinan
akan lebih produktif. Pengembang menggambar langsung form,
screen, dan komponen-komponen interaksi lain, mendefinisikan
event, event handler, property, dsb. lalu lingkungan pengembangan
akan secara otomatis menghasilkan kode HTML yang bersesuaian
(termasuk membereskan perbedaan antarbrowser).
Setidaknya sudah ada satu produk dalam pengembangan yang memiliki
konsep demikian, meski minus tool GUI dan spesifik Apache/mod_perl,
yaitu SmartWorker.
Wah, ternyata ada banyak
pilihan ya?
Jika Anda masih asing dengan sebagian besar produk
dan teknologi yang disinggung dalam tulisan ini, ada baiknya
meluangkan waktu berjalan-jalan dan membaca FAQ, contoh-contoh
skrip dan berbagai artikel perbandingan untuk mengetahui apa-apa
saja yang disediakan.
Dari sekian banyak teknologi, bahasa pemrograman, dan produk
yang ditawarkan, mana yang harus dipilih? Anjuran saya saat
ini:
- Jangan terpaku dengan
produk komersial.
Tidak semua produk komersial unggul (bahkan orang bisa berargumen
bahwa produk Open-Source secara umum superior dalam hal
kualitas/teknis). Mungkin hanya sedikit produk yang berguna
bagi Anda.
- Pilih yang paling
familiar dengan Anda.
Misalnya, saya memilih mod_perl karena sebelumnya
familiar dengan Perl dan Apache. Jika memakai Unix/Linux,
namun tidak memakai Perl, pilihan paling cocok saat ini
rasanya PHP. Jika platform pilihan Anda NT, ASP dan ColdFusion
sama-sama bisa dipertimbangkan.
Memilih lingkungan pengembangan yang baru dengan tujuan
eksperimen tentunya tidak masalah, tetapi akan merugikan
dalam produksi karena akan membutuhkan waktu minimal beberapa
bulan untuk mempelajarinya.
© 1999,2000
toekangweb
All rights owned by their respective owners
|