Pengantar CGI/Perl Salah satu protokol gateway yang pertama diciptakan, dan tersukses, untuk menghubungkan web server dan aplikasi adalah Common Gateway Interface, atau CGI. 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. 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. Kelemahan CGI Kecepatan (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 sebuah situs web 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) 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. 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 Kelemahan Mod_Perl Masalah utama memakai mod_perl ada dua. 1. 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. 2. Segi Non teknis 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 Developer’s 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 jika sekarang CGI Anda di-cache oleh web server. Administrasi server mod_perl pun perlu dipahami dan dikuasai dengan baik. Pecinta Perl dianjurkan 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, bisa dibilang “bertukar cincin”, berikrar sehidup-semati bersama Apache. Sebab mod_perl modul Apache, spesifik untuk Apache. 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.