Ada banyak artikel yang berbicara tentang sistem CMS dan Framework. Apa yang harus dipilih? Mana yang terbaik?
Artikel-artikel terkait CMS dan framework tersebut banyak membicarakan keunggulan sistem CMS dan Framework dari perspektifnya masing-masing. Suatu saat, disaat kita dihadapkan pada suatu proyek baru, mungkin bahasan dalam artikel-artikel tersebut tidak banyak membantu kita dalam menentukan teknologi mana yang akan digunakan.
Dalam artikel ini akan ditulis sebuah perspektif yang sama sekali berbeda. Namun pertama-tama mari kita pemahami perbedaan antara terminologi "CMS" dan "Framework" terlebih dahulu.
CMS (Content Management System) adalah sebuah kerangka kerja manajemen konten dan didasarkan pada modul daripada kode. Siapapun dapat menangani CMS karena tidak memerlukan pengetahuan pemrograman. Tentu saja seorang programmer juga dapat menggunakan CMS karena mereka dapat melakukan pekerjaan mereka lebih cepat....
Ketika kita menggunakan terminologi "Framework" kita lebih sering berbicara tentang kerangka aplikasi Web. Sebuah kerangka aplikasi web hanya berdasarkan coding. Jika kita seorang programmer atau pengembang web yang mencintai pemrograman, kita tentunya cenderung untuk memilih kerangka aplikasi Web untuk proyek-proyek kita.
CMS adalah singkatan dari (Content Management System). Merupakan sebuah software yang memungkinkan seseorang untuk menambah, menghapus, atau memanipulasi isi dari suatu situs web. Dalam CMS, tidak diperlukan keahlian khusus dalam menguasai bahasa pemrograman web seperti HTML, PHP, ASP, dsb. Proses memodifikasi atau memanipulasi datanya berbentuk GUI (Graphics User Interface), tidak berbentuk coding. Kemampuan dari CMS berbeda-beda, walaupun begitu, kebanyakan dari software ini memiliki fitur publikasi berbasis web, manajemen format, kontrol revisi, pembuatan index, pencarian, dan pengarsipan.
Contoh CMS antara lain :
Pemanfaatan CMS antara lain:
Framework adalah kumpulan dari fungsi-fungsi/prosedur-prosedur(function, method) dan kelas-kelas (class) untuk tujuan tertentu yang sudah siap digunakan dan disusun secara sistematis berdasarkan kegunaan atau fungsionalitas tertentu untuk mempermudah pembuatan atau pengembangan suatu aplikasi. Sehingga bisa mempermudah dan mempercepat pekerjaan seorang programmer, tanpa harus membuat fungsi atau class dari awal. Jadi, dengan adanya framework, pekerjaan kita akan lebih tertata dan terorganisir. Sehingga dalam pencarian kesalahan dalam pembuatan program akan lebih mudah dideteksi. Intinya, framework merupakan pondasi awal kita sebelum menentukan memakai bahasa pemrograman apa yang akan kita pakai. Setelah kita menentukan mau pakai framework apa, baru kita bangun programnya diatas framework itu. Tanpa framework, kita akan kesulitan saat membuat program. Sebagian besar framework yang beredar saat ini dibangun berdasarkan Konsep OOP (Object Oriented Programming).
Saat kita memutuskan menggunakan framework sebagai pondasi proses pembuatan website, kita masih harus menulis kode, menyusun logika program. Bedanya, kode-kode yang kita tulis harus menyesuaikan dengan lingkungan framework yang kita gunakan. Kita harus menyesuaikan pattern-pattern (pola) yang sudah menjadi acuan dalam suatu framework. Ya, konsekuensi dari menggunakan framework adalah kita harus mempelajari lagi lingkungan pengembangan, aturan-aturan, dan pola pengkodean berdasarkan framework yang kita gunakan. Akan tetapi, hal tersebut dirasa wajar dan akan terbayar lunas setelah kita benar-benar menguasai dan bisa menggunakan framework tersebut.
Disamping menyediakan lingkungan pengembangan sendiri-sendiri, sebuah framework PHP juga menyediakan library fungsi yang disiapkan khusus, yang bisa pengembang gunakan untuk lebih memudahkan dalam pembuatan website dan aplikasi berbasis web. Jadi sat kita menggunakan framework, kita akan menemukan banyak kode dan fungsi-fungsi yang tidak biasa kita lihat pada saat kita membuat program sendiri. Fungsi-fungsi tersebut bukanlah fungsi-fungsi bawaan dari PHP, melainkan fungsi-fungsi yang khusus dibuat oleh pengembang framework masing-masing. Jumlahnya mungkin berbeda, dan gaya programingnya mungkin berbeda, tetapi kegunaannya hampir sama, yaitu mempermudah pengembang yang menggunakan framework tersebut.
Fungsi-fungsi yang terdapat pada masing-masing framework terkadang merupakan pengembangan atau penyesuaian dari fungsi asli PHP. Tujuannya agar lebih mudah digunakan atau agar lebih sesuai dengan kebutuhan pengguna framework
Keuntungan menggunakan Framework
Contoh Framework :
Pemanfaatan Framework antara lain
Ada banyak kesalahpahaman tentang apa yang dapat dilakukan dengan Framework dan CMS. Banyak penggemar yang menggunakan CMS mereka mengatakan bahwa "Kita bisa melakukan segala sesuatu dengan CMS" dan penggemar framework berkata "Tidak ada yang tidak bisa kita lakukan segala sesuatunya dengan framework" dan seterusnya ... Sebagai programmer kebanyakan yang juga biasanya penggemar framework tentu saja akan memiliki pendapat yang sama tetapi sebenarnya ini tidak sepenuhnya benar! Yang benar adalah bahwa ketika kita menggunakan basis yang sama (PHP, RoR, python,. NET ... dll), kita semua dapat melakukan segala sesuatu (hampir segalanya, terbatas pada hal-hal tertentu) yang sama juga. Bahkan mitos bahwa CMS tidak menggunakan struktur yang baik juga bukan suatu kebenaran. Misalnya Drupal 8 didasarkan pada framework Symfony, framework aplikasi web berorientasi objek yang sangat baik ....
Sebagai seorang programmer, yang kebaykan merupakan framework fan boy, hal-hal yang di sebutkan dalam website Symfony berikut mungkin bisa jadi pertimbangan juga:
You're making progress and that's a good thing! You already know that you are going to use a framework to develop your site or your application. But which one?
Sepuluh kriteria untuk memilih framework yang benar
Pada sisi yang lain tidaklah buruk jika mengetahui web programing namun juga menjadi penggemar CMS. Hal yang tidak baik terhadap hal tersebut adalah ada beberapa penggemar CMS yang tidak memiliki pengetahuan programming dan berpikir bahwa mereka dapat melakukan segala sesuatu dengan CMS. hal ini juga sebenarnya hanya sebuah mitos, karena seperti yang sudah diutarakan sebelumnya bahwa meski dengan CMS pun kita dapat melakukan apapun karena antara CMS dan Framework memiliki dasar yang sama, dan ini sangat tergantung terhadap penguasaan dasar-dasar pemrograman tentunya.Jika tidak maka kita dapat melakukan segala sesuatu sejauh programmer / pengembang web membiarkan kita menguasainya. Jadi ada baiknya jika kita adalah penggemar CMS dan belum mempunyai pengetahuan tentang pemrograman, mulailah belajar mengenai hal-hal dasar dan mencoba membuat kustomisasi plugin untuk CMS dari awal.
Saat ini CMS lebih populer daripada framework web aplikasi dikarenakan CMS sangat mudah dalam penggunaannya. Bahkan jika kita tidak memiliki pengetahuan pemrograman,kita dapat menginstal dan membuat website secara utuh hanya dengan CMS. Jadi apa yang harus dipilih?
Selalu ada empat hal mendasar yang harus kita pikirkan sebelum kita memilih farmework atau CMS:
Untuk customer tidaklah berpengaruh perangkat apa yang akan kita pakai. Hal yang penting buat customer adalah proyek/aplikasi yang mereka inginkan selesai dikerjakan
CMS | Framework |
---|---|
Aspek Dasar | |
Menyediakan fungsionalitas dasar yang bagus | Menyediakan perangkat pengembangan dasar yang bagus |
Bagus untuk jumlah website yang banyak dengan fungsionalitas yang serupa | Bagus untuk website dengan fungsionalitas yang unik |
Tidak perlu untuk membuat kembali hal-hal yang umum digunakan, seperti breadcrum, manajemen menu atau file media yang mudah, dan sebagainya | Hal-hal yang umum digunakan dapat dengan mudah dibuat dan ditambahkan. |
Tersedia banyak plugins yang siap digunakan | Tersedia banyak API Library yang siap digunakan |
Aspek Kostumisasi | |
Membatasi apa yang dapat dilakukan | Tidak terbatas |
Kustomisasi terhadap kebutuhan khusus susah dilakukan | Dapat dikustomisasi dengan mudah dan cepat |
Membuat perubahan pada kode program bisa susah dilakukan dan beresiko terhadap kompatibilitas dengan versi CMS yang baru atau plugins yang lain | Membuat perubahan pada kode program mudah dilakukan karena program inti (core) tidak tergantung dari kode third party |
Kode program pada modules dan plugins dapat mengandung bug yang susah diperbaiki | Semua kode program mudah untuk di kontrol |
Aspek Pemrograman | |
Tidak memungkinkan untuk melakukan pratek pemrograman yang baik seperti automated tests, refactoring, dsb. | Praktek pemrograman yang baik mudah dan bisa dilakukan |
Tidak memungkinkan penggunaan standar pengkodean dalam pengelolaan kualitas kode | Standar pengkodean digunakan secara luas dan menyeluruh untuk mengelola kualitas kode |
Banyak CMS mempunyai masalah performance yang tidak dapat diatasi jika permasalahannya terdapat pada kode intinya (core) | Masalah performance dapat diatasi oleh para programmer |
Aspek Bisnis | |
CMS yang profesional sangat mahal pada saat investasi pertama dan untuk jangka panjang | Pengembangan dengan framework sangat mahal paa saat investasi awal tapi lebih murah untuk jangka panjang |
Pemilihan teknologi CMS atau Framework akhirnya akan kembali lagi kepada apa dan bagaimana kebutuhan yang diperlukan saat ini dan mendatang. Setiap teknologi diciptakan untuk suatu alasan, seberapapun yang kita kuasai (CMS atau Framework), jadilah profesional programmer yang fleksibel. Tidak masalah kita menjadi penggemar CMS atau framework. Hanya perlu memilih perangkat yang terbaik dan sesuai untuk situasi yang dihadapi, itu saja...
Kita dapat melihat bahwa CMS baik untuk membangun sebuah situs yang khas dengan plugin yang siap pakai. Biasanya tidak memerlukan kualifikasi tinggi untuk membuat situs menggunakan CMS. Kita harus menganalisis CMS yang kita pilih dengan hati-hati untuk memutuskan apakah itu memenuhi kebutuhan kita saat ini atau mungkin yang mendatang. Perubahan pada CMS mungkin melibatkan banyak menyesuaikan, coding dan bahkan masalah bisnis. Jika kita ingin menghindari masalah tersebut memilih Framework akan menjadi keputusan yang bijaksana.
Framework itu sendiri tidak menjamin pada hasil produk berkualitas tinggi. Tapi tanpa framework pun bahkan programmer paling jago pun tidak akan mampu menghasilkan kode yang baik, yang merupakan kunci untuk sebuah proyek yang sukses.