Menggunakan CMS atau Framework?
Tags: cakephp, cms, codeigniter, drupal, framework, opensource, rubyonrails, Website
Saya termasuk orang yang mengembangkan website tanpa pernah membuatnya dari nol. Maksudnya, saya tidak membuat komponen dari website itu secara manual satu demi satu. Mulai dari arsitektur website, komponen modul, file uploader, user access, image manager, dll. Biasanya semua dilakukan dengan menggunakan CMS yang OpenSource, seperti Wordpress dan Drupal (jaman dulu juga termasuk PHPNuke). Biasanya memang saya melakukan modifikasi disana - sini agar website ini bisa bekerja sesuai keinginan. Umumnya akhirnya website tersebut akhirnya bisa berjalan sesuai harapan.
Tetapi kemudian datang masalah seperti berikut ini :
1. Website tersebut membutuhkan galery foto dengan fasilitas slideshow.
2. Website tersebut membutuhkan katalog produk.
3. Website tersebut ingin mengimplementasikan fasilitas social network.
4. Website itu ingin menyediakan fasilitas bagi membernya untuk bisa mengupload file MP3. Dan tiap member nantinya bisa mengatur level akses terhadap file MP3 yang dia upload.
5. Website tersebut ingin mempunyai form yang terintegrasi untuk arsip wawancara.
6. dll
Jika saya menggunakan CMS seperti Drupal. Mungkin hal ini masih bisa ditangani dengan ketersediaan modulnya yang sangat banyak. Atau jika memang modulnya belum tersedia, kita bisa membuat sendiri. Selain itu jika kurang puas, kita masih bisa melakukan oprek lebih dalam dengan menggunakan API yang disediakan Drupal. Dengan tujuan agar website ini sesuai dengan apa yang kita inginkan.
Tetapi, hal ini bisa jadi merupakan masalah baru. Tentunya kadangkala hal ini bisa menjadi solusi untuk satu masalah tetapi bukan tidak jarang malah menimbulkan masalah baru. Beberapa skenario yang sering terjadi :
1. Modul untuk CMS tersedia. Tetapi ada bagian yang tidak sesuai, bahkan mungkin ada bagian yang akhirnya malah terasa mengganggu. Misal modul e-commerce dari Drupal menyediakan begitu banyak fasilitas yang pada kenyataannya tidak saya butuhkan. Sedangkan untuk beberapa bagian justru masih belum sesuai harapan. Dan untuk bisa merubah modul ini, kita harus memahami hampir kesuluruhan struktur modul ini. Ditambah pengetahuan tentang API dari Drupal.
2. Terlalu banyak pilihan modul. Misal modul untuk upload gambar di Drupal. Secara default tidak ada. Kita masih bisa menginstal modul tambahan, sehingga nantinya upload gambar di Drupal akan semudah di Wordpress. Tetapi ketika sampai di tahap theming, saya menyadari bahwa field untuk gambar hasil upload modul tersebut tidak bisa diakse langsung. Berbeda dengan image yang diupload menggunakan bantuan module Image Field (CCK).
3. Dengan API yang disediakan, kadangkala kita masih membutuhkan pengetahuan tentang API lain. Dan pada akhirnya mau tidak mau saya harus mempelajari banyak API, hanya untuk mengetahui bagian mana dari API ini yang tepat untuk solusi masalah saya.
4. Salah satu hal yang paling sulit adalah merubah alur kerja dari website ini. Misal jika user ingin register, tidaklah langsung ditampilkan ke halaman register, tetapi harus melalui satu halaman polling terlebih dahulu. Untuk bisa mengimplementasikan ini, secara tidak langsung kita harus tahu alur kerja (workflow) dari CMS yang kita gunakan.
5. Butuh field yang custom untuk tiap post (tidak hanya field TITLE dan POST saja). Secara default Wordpress menyediakan fasilitas Custom Fields, tetapi penggunaannya masih belum senyaman CCK di Drupal. Untuk itu harus dibuat modul sendiri.
6. dll
Jika memang akhirnya saya ingin menjadi ahli dari CMS tersebut, saya rasa tidak masalah untuk mengikuti solusi yang saya berikan di atas. Tetapi jika saya hanya ingin menggunakan CMS ini sebagai bantuan, sepertinya effort nya terlalu besar.
Bahkan tidak jarang saya merasa, ketika mempelajari semua API, hook, templating, konvensi, dll dari suatu CMS, effortnya mungkin sama besarnya dengan jika saya membangun website tersebut dari nol.
Jadi apakah akhirnya membuat CMS dari nol?
Tidak. Bagi saya tetap tidak. Karena ada beberapa kemudahan di CMS yang tidak saya dapatkan jika saya harus membangun dari nol. Saya harus membangun kerangka / arsitektur dari website tersebut. Dan cukup banyak pula waktu yang tersita untuk membangunnya.
Jadi apa solusinya?
Framework. Bagi saya solusi di tengah - tengahnya adalah framework. Framework menjadi solusi yang tepat jika saya ingin mengembangkan website yang berbasis konten, tetapi dengan beberapa fasilitas yang tidak umum (seperti kasus di atas tadi). Dengan framework yang tepat, saya bisa membuat API saya sendiri, tetap mendapatkan fasilitas templating secara default, fasilitas layering untuk database, dan salah satu yang paling saya sukai adalah fasilitas URL Friendly secara default. Saya tidak tahu apakah semua framework menyediakan fasilitas tersebut, tetapi yang jelas Framework yang saya pakai (CodeIgniter) menggunakannya.
Pilihan framework yang cukup terkenal :
1. Prado - PHP (contoh : website Univertias Indonesia) : Kalau tidak salah ini seperti menjadi ASP.Net pada PHP
2. CodeIgniter - PHP(contoh : OkeZone.com), Jujur saja, saya tahu CodeIgniter dari situs OkeZone ini, dan sampai saat ini paling nyaman menggunakan ini, karena framework ini terdokumentasi dengan baik.
3. Ruby On Rails - Ruby (contoh : SharingFoto.com) : Situs ini diklaim sebagai web aplikasi pertama di Indonesia yang menggunakan Ruby On Rails.
4. CakePHP - PHP (contoh : OwnCafe.com) : Salah seorang yang sangat aktif dalam edukasi CakePHP di Indonesia adalah Sunu Wibirama (alumni Teknik Elektro UGM). Situs lokal cake-php bisa dilihat di idcake.web.id
5. Symfony (PHP), Django (Python), dll
Saya sendiri masih penasaran dan menantikan Mambo CMS versi 5.0 yang akan menggunakan CakePHP sebagai basisnya. Dengan kondisi seperti itu, maka level kustomisasi bisa dilakukan dari tingkat yang paling dasar (langsung menggunakan framework),di lapis tengah (modul), maupun lapis akhir (theming).
Jika ada yang tertarik dengan framework - framework di atas, jangan lupa pahami satu istilah ini : MVC (Model View Controller).
Monday, 8 September 2008
Symfoni
Framework PHP yang ideal
http://dody.ws/framework-php-yang-ideal.html
Mengapa kita butuh framework?
Bagi anda yang belum familiar dengan framework, framework adalah sekumpulan fungsi, class, dan aturan-aturan. Berbeda dengan library yang sifatnya untuk tujuan tertentu saja, framework bersifat menyeluruh mengatur bagaimana kita membangun aplikasi.
Framework memungkinkan kita membangun aplikasi dengan lebih cepat karena sebagai developer kita akan lebih memfokuskan pada pokok permasalahan sedangkan hal-hal penunjang lainnya seperti koneksi database, form validation, GUI, dan security; umumnya telah disediakan oleh framework. Disamping itu dengan aturan-aturan yang jelas dan harus dipatuhi, aplikasi kita lebih solid, more readable, dan kolabarasi dalam tim dapat lebih mudah dilaksanakan.
Kita sebagai seorang software developer bisa dianalogikan sebagai seorang tukang bangunan. Apabila anda perhatikan, seorang tukang bangunan bisa membuat sebuah rumah. Tidak akan menjadi masalah bila hanya untuk membangun rumah dengan satu atau dua lantai. Tetapi akan menjadi masalah apabila dia mendapatkan pekerjaan untuk membangun sebuah gedung bertingkat. Permasalahan akan menjadi semakin komplek, makin banyak pekerja dan material yang dilibatkan, belum lagi dengan jadwal yang ketat. Kita pun seperti itu. Membangun aplikasi kecil tentu tidak menjadi masalah. Namun bagaimana bagaimana apabila aplikasi kecil kita tersebut dengan makin lama makin bertambah requirementnya sejalan dengan kebutuhan user. Di sini lah peran penting sebuah framework dalam membangun aplikasi.
Framework yang ideal menurut saya
Sejak fenomena Ruby on Rails, sebuah framework untuk bahasa Ruby, yang mana mampu memberi kemudahan yang luar biasa bagi developer dalam membangun aplikasi web; tumbuh menjamur framework-framework sejenis yang mengadopsi kemampuan Ruby on Rails untuk bahasa lainnya. Untuk PHP sendiri, terdapat PHP on Track, Symfony, PHPCake, CodeIgniter, dan masih banyak lainnya.
Saya telah mencoba Symfony, PHPCake, dan CodeIgniter. Symfony memiliki fasilitas paling lengkap, terdapat command line interface untuk membangun Object Relational Model (ORM), yang menterjemahkan relational database menjadi kode program; dukungan AJAX; scaffolding, yaitu membuat mekanisme CRUD (create, retrieve, update, and delete). Namun sayangnya Symfony hanya berjalan di PHP5. Sebenarnya tidak menjadi masalah, karena saat ini telah banyak web hosting yang menyediakan PHP5. Apa yang saya rasakan adalah, bahwa Symfony adalah framework yang sangat solid. Saya sangat menyukai fasilitas ORMnya, scaffolding yang kompleks, dan tutorial dan dokumentasi yang sangat bagus dan komplit. Bagaimana tidak bagus, selain disediakan User Guide yang berisi referensi API, juga disediakan sebuah buku berisi study case pembuatan aplikasi ASKEET mulai dari desain awal sampai selesai pengkodean. Di samping itu terdapat juga tutorial yang berupa file movie, namun karena berukuran yang cukup besar, saya enggan mendownloadnya, saya merasa sudah cukup dengan manual berbentuk pdf. Secara kontras, saya juga merasakan bahwa Symfony adalah seperti senjata kelas berat. Untuk mengoperasikannya butuh learning curve yang cukup lama. Saya juga merasakan kekuatan yang out of control, dimana ketika terjadi saya menginginkan sebuah perubahan yang agak berbeda dari tutorial yang diberikan, saya seperti tidak tahu harus kemana dan bagaimana. Saya mencoba bertahan selama 3 hari dengan berusaha membuat aplikasi sederhana, namun pada akhirnya saya putuskan untuk berhenti.
Berikutnya adalah CakePHP, framework ini juga memiliki ORM dan scaffolding seperti halnya Symfony. Terdapat juga command line interface, yang disebut sebagai baker, namun sifatnya tidak mutlak digunakan. Secara keseluruhan CakePHP memiliki kemampuan tidak jauh dari Symfony, namun sekilas lebih sederhana dan ukurannya lebih kecil, dan yang tidak kalah menarik adalah kompatibilitasnya dengan PHP4. Namun sayang, dokumentasi kurang lengkap, sehingga saya kesulitan mencari informasi lebih dalam. Untung lah CakePHP membuka channel IRC sehingga kita bisa berkonsultasi langsung dengan para pakarnya. Saya sudah mencoba menanyakan permasalahan di channel IRC yang disediakan. Saya mendapatkan respon yang memuaskan dari pakarnya (developer CakePHP) sehingga permasalahn saya saat itu dapat diatasi. Namun di kesempatan lain, saya tidak mendapat respon sama sekali, saya mencari orang yang telah membantu saya sebelumnya, tetapi sepertinya dia tidak online. Saya merasa CakePHP tidak bisa memberikan apa yang saya inginkan, meski pun saya telah mencoba tutorial dan membaca panduan lainnya, saya tetap tidak besa melakukan apa-apa yang saya inginkan, atau bisa dibilang saya kebingungan, seperti halnya pada saat mencoba Symfony.
CodeIgniter, framework ini sebelumnya tidak masuk daftar yang akan saya coba. Hal ini dikarenakan oleh fiturnya yang jauh lebih sedikit dibandingkan Symfony dan CakePHP. Tidak ada ORM, scaffolding sangat sederhana, tidak ada AJAX, tidak ada user authentication. Lalu apa yang saya bisa harapkan darinya? Bermula dari membaca berbagai review php framework di blog lain, mereka mengatakan bahwa CodeIgniter memiliki kinerja yang lebih bagus daripada Symfony maupun CakePHP, dikarenakan oleh library yang di-load oleh framework lebih sedikit. Setelah saya mencobanya, memang framework ini terasa beda. Terasa lebih ringan dan lebih bebas. Meskipun CodeIgniter juga menggunakan design pattern MVC, namun tidak lah mutlak untuk menggunakan M (model). Jadi saya bisa dengan bebas menggunakan style yang saya sukai. Sajian dokumentasinya cukup lengkap, meskipun tidak selengkap Symfony, namun sangat memadai. Saya bisa melakukan ini itu setelah saya membaca panduan di online manual. Sangat menyenangkan, dimana Symfony dan CakePHP tidak bisa memberikannya untuk saya. Meskipun memiliki kemampuan yang dibawah framework lainnya, namun CodeIgniter sangat mudah untuk dipelajari. Mungkin ini lah yang dimaksud dengan framework lightweight. Mudah dan sangat ringan, namun tidak memiliki fasilitas sebanyak framework lainnya. Ketika saya amati forum dan halaman wiki, komunitas CodeIgniter memberikan solusi untuk permasalahan seperti User Authentication dan Ajax. Sepertinya memang pembuat CodeIgniter sengaja memberikan kebebasan kepada usernya untuk mengembangkan sendiri sesuai dengan kebutuhan masing-masing yang berbeda, sedangkan CodeIgniter bertanggungjawab terhadap tugas-tugas lain yang lebih utama.
Bagi saya CodeIgniter menarik, mudah dipelajari, dan sangat solid untuk membangun aplikasi yang besar. Peraturan-peraturan dan library yang disediakannya tidak membatasi saya untuk tetap menggunkan style pemrograman yang saya sukai. Ini adalah point penting. Siapa mengatur siapa, programer mengatur program atau program mengatur programer?
source : mamat.amikom.ac.id
http://dody.ws/framework-php-yang-ideal.html
Mengapa kita butuh framework?
Bagi anda yang belum familiar dengan framework, framework adalah sekumpulan fungsi, class, dan aturan-aturan. Berbeda dengan library yang sifatnya untuk tujuan tertentu saja, framework bersifat menyeluruh mengatur bagaimana kita membangun aplikasi.
Framework memungkinkan kita membangun aplikasi dengan lebih cepat karena sebagai developer kita akan lebih memfokuskan pada pokok permasalahan sedangkan hal-hal penunjang lainnya seperti koneksi database, form validation, GUI, dan security; umumnya telah disediakan oleh framework. Disamping itu dengan aturan-aturan yang jelas dan harus dipatuhi, aplikasi kita lebih solid, more readable, dan kolabarasi dalam tim dapat lebih mudah dilaksanakan.
Kita sebagai seorang software developer bisa dianalogikan sebagai seorang tukang bangunan. Apabila anda perhatikan, seorang tukang bangunan bisa membuat sebuah rumah. Tidak akan menjadi masalah bila hanya untuk membangun rumah dengan satu atau dua lantai. Tetapi akan menjadi masalah apabila dia mendapatkan pekerjaan untuk membangun sebuah gedung bertingkat. Permasalahan akan menjadi semakin komplek, makin banyak pekerja dan material yang dilibatkan, belum lagi dengan jadwal yang ketat. Kita pun seperti itu. Membangun aplikasi kecil tentu tidak menjadi masalah. Namun bagaimana bagaimana apabila aplikasi kecil kita tersebut dengan makin lama makin bertambah requirementnya sejalan dengan kebutuhan user. Di sini lah peran penting sebuah framework dalam membangun aplikasi.
Framework yang ideal menurut saya
Sejak fenomena Ruby on Rails, sebuah framework untuk bahasa Ruby, yang mana mampu memberi kemudahan yang luar biasa bagi developer dalam membangun aplikasi web; tumbuh menjamur framework-framework sejenis yang mengadopsi kemampuan Ruby on Rails untuk bahasa lainnya. Untuk PHP sendiri, terdapat PHP on Track, Symfony, PHPCake, CodeIgniter, dan masih banyak lainnya.
Saya telah mencoba Symfony, PHPCake, dan CodeIgniter. Symfony memiliki fasilitas paling lengkap, terdapat command line interface untuk membangun Object Relational Model (ORM), yang menterjemahkan relational database menjadi kode program; dukungan AJAX; scaffolding, yaitu membuat mekanisme CRUD (create, retrieve, update, and delete). Namun sayangnya Symfony hanya berjalan di PHP5. Sebenarnya tidak menjadi masalah, karena saat ini telah banyak web hosting yang menyediakan PHP5. Apa yang saya rasakan adalah, bahwa Symfony adalah framework yang sangat solid. Saya sangat menyukai fasilitas ORMnya, scaffolding yang kompleks, dan tutorial dan dokumentasi yang sangat bagus dan komplit. Bagaimana tidak bagus, selain disediakan User Guide yang berisi referensi API, juga disediakan sebuah buku berisi study case pembuatan aplikasi ASKEET mulai dari desain awal sampai selesai pengkodean. Di samping itu terdapat juga tutorial yang berupa file movie, namun karena berukuran yang cukup besar, saya enggan mendownloadnya, saya merasa sudah cukup dengan manual berbentuk pdf. Secara kontras, saya juga merasakan bahwa Symfony adalah seperti senjata kelas berat. Untuk mengoperasikannya butuh learning curve yang cukup lama. Saya juga merasakan kekuatan yang out of control, dimana ketika terjadi saya menginginkan sebuah perubahan yang agak berbeda dari tutorial yang diberikan, saya seperti tidak tahu harus kemana dan bagaimana. Saya mencoba bertahan selama 3 hari dengan berusaha membuat aplikasi sederhana, namun pada akhirnya saya putuskan untuk berhenti.
Berikutnya adalah CakePHP, framework ini juga memiliki ORM dan scaffolding seperti halnya Symfony. Terdapat juga command line interface, yang disebut sebagai baker, namun sifatnya tidak mutlak digunakan. Secara keseluruhan CakePHP memiliki kemampuan tidak jauh dari Symfony, namun sekilas lebih sederhana dan ukurannya lebih kecil, dan yang tidak kalah menarik adalah kompatibilitasnya dengan PHP4. Namun sayang, dokumentasi kurang lengkap, sehingga saya kesulitan mencari informasi lebih dalam. Untung lah CakePHP membuka channel IRC sehingga kita bisa berkonsultasi langsung dengan para pakarnya. Saya sudah mencoba menanyakan permasalahan di channel IRC yang disediakan. Saya mendapatkan respon yang memuaskan dari pakarnya (developer CakePHP) sehingga permasalahn saya saat itu dapat diatasi. Namun di kesempatan lain, saya tidak mendapat respon sama sekali, saya mencari orang yang telah membantu saya sebelumnya, tetapi sepertinya dia tidak online. Saya merasa CakePHP tidak bisa memberikan apa yang saya inginkan, meski pun saya telah mencoba tutorial dan membaca panduan lainnya, saya tetap tidak besa melakukan apa-apa yang saya inginkan, atau bisa dibilang saya kebingungan, seperti halnya pada saat mencoba Symfony.
CodeIgniter, framework ini sebelumnya tidak masuk daftar yang akan saya coba. Hal ini dikarenakan oleh fiturnya yang jauh lebih sedikit dibandingkan Symfony dan CakePHP. Tidak ada ORM, scaffolding sangat sederhana, tidak ada AJAX, tidak ada user authentication. Lalu apa yang saya bisa harapkan darinya? Bermula dari membaca berbagai review php framework di blog lain, mereka mengatakan bahwa CodeIgniter memiliki kinerja yang lebih bagus daripada Symfony maupun CakePHP, dikarenakan oleh library yang di-load oleh framework lebih sedikit. Setelah saya mencobanya, memang framework ini terasa beda. Terasa lebih ringan dan lebih bebas. Meskipun CodeIgniter juga menggunakan design pattern MVC, namun tidak lah mutlak untuk menggunakan M (model). Jadi saya bisa dengan bebas menggunakan style yang saya sukai. Sajian dokumentasinya cukup lengkap, meskipun tidak selengkap Symfony, namun sangat memadai. Saya bisa melakukan ini itu setelah saya membaca panduan di online manual. Sangat menyenangkan, dimana Symfony dan CakePHP tidak bisa memberikannya untuk saya. Meskipun memiliki kemampuan yang dibawah framework lainnya, namun CodeIgniter sangat mudah untuk dipelajari. Mungkin ini lah yang dimaksud dengan framework lightweight. Mudah dan sangat ringan, namun tidak memiliki fasilitas sebanyak framework lainnya. Ketika saya amati forum dan halaman wiki, komunitas CodeIgniter memberikan solusi untuk permasalahan seperti User Authentication dan Ajax. Sepertinya memang pembuat CodeIgniter sengaja memberikan kebebasan kepada usernya untuk mengembangkan sendiri sesuai dengan kebutuhan masing-masing yang berbeda, sedangkan CodeIgniter bertanggungjawab terhadap tugas-tugas lain yang lebih utama.
Bagi saya CodeIgniter menarik, mudah dipelajari, dan sangat solid untuk membangun aplikasi yang besar. Peraturan-peraturan dan library yang disediakannya tidak membatasi saya untuk tetap menggunkan style pemrograman yang saya sukai. Ini adalah point penting. Siapa mengatur siapa, programer mengatur program atau program mengatur programer?
source : mamat.amikom.ac.id
Labels:
ProGramminG
Subscribe to:
Posts (Atom)