CMS vs Framework

Menggunakan CMS atau memakai Framework? Mana yang sebaiknya dipilih?

Mau lihat artikel lainya? Dapatkan artikel-artikel lain seputar pemrograman website di sini, dan dapatkan ide-ide baru

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 (Content Management System)

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 :

  • Joomla
  • Drupal
  • Wordpress
  • Plone
  • VBulletin
  • Moodle

Pemanfaatan CMS antara lain:

  • Situs web perusahaan, bisnis, organisasi, atau komunitas
  • Galeri foto
  • Aplikasi E-commerce (Jual-Beli Online)
  • Mengelola website pribadi (Blog)
  • Situs E-learning
  • dsb

Framework

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

  • Mempercepat dan mempermudah pembangunan sebuah aplikasi web.
  • Memudahkan dalam proses maintenance karena sudah ada pola tertentu dalam setiap framework. (Dengan syarat programmer mengikuti pola standar yang ada)
  • Umumnya framework menyediakan fasilitas-fasilitas yang umum dipakai sehingga kita tidak perlu membangun dari awal (misalnya validasi, email, pagination, scaffolding, pengaturan session, error handling dsb)

  • Lebih bebas dalam pengembangan jika dibandingkan CMS

Contoh Framework :

  • Yii
  • Zend Framework
  • CodeIgniter
  • Laravel
  • Symfony
  • CakePHP
  • dll

Pemanfaatan Framework antara lain

  • Manajemen Sistem Informasi yang bersifat khusus
  • Aplikasi web yang memerlukan laporan/report dalam bentuk grafik/Chart, file pdf,xls, doc dan sebagainya
  • Aplikasi web yang perlu terintegrasi dengan sistem lain
  • dsb

Begitu Banyak Pertentangan

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

  1. Popularitas dan Besarnya Komunitas
    Semakin terkenal dan diakui framework tersebut,maka akan semakin "hidup," berkembang dan lengkap: ide-ide baru, jumlah dan kualitas plug-in, dll
  2. Filosofi
    Ini adalah inti dari framework: itu adalah kriteria mendasar untuk memastikan bahwa framework tersebut akan memenuhi kebutuhan kita. Sebuah alat yang dikembangkan oleh para profesional untuk kebutuhan mereka sendiri jelas akan memenuhi tuntutan profesional lainnya
  3. Kelangsungan Hidup(Sustainability)
    Sebelum memilih suatu framework, pastikan bahwa itu akan mampu mengiringi kerja kita selama waktu yang kita perlukan untuk mengerjakan aplikasi. hal ini akan memudahkan dan menyederhanakan langkah-langkah pemeliharaan dan peningkatan(upgrade) aplikasi kita.
  4. Dukungan(Support
    Kriteria lain yang tidak boleh dilupakan adalah kemudahan untuk menemukan jawaban atas pertanyaan kita dan mendapatkan bantuan. Kenali dukungan yang tersedia: dari penerbit/pembuat. Dari masyarakat (mailing list, grup, IRC, dll)? Dari Perusahaan Jasa (pengembangan, dukungan, pelatihan)?
  5. Teknik
    Agar tidak terjebak dalam sebuah labirin, lebih baik memilih framework dengan solusi interoperabilitas, yang menggunakan praktik terbaik dalam hal pengembangan aplikasi (design pattern).
  6. Keamanan
    Setiap aplikasi mempunyai potensi kerentanan dari segi keamanan. Untuk meminimalkan risiko, lebih baik untuk memilih framework yang mampu menjamin fungsi keamanan (manajemen XSS, misalnya)
  7. Dokumentasi
    Ini merupakan kebutuhan mutlak untuk mengevaluasi sifat, volume dan kualitas literatur yang ada tentang framework tersebut: perangkat yang terdokumentasi dengan baik adalah lebih mudah digunakan dan lebih upgradeable.
  8. Lisensi
    Lisensi menjadi penting karena dapat memiliki dampak yang signifikan pada aplikasi kita. Sebagai contoh, sebuah aplikasi yang dikembangkan dengan menggunakan framework berlisensi GPL akan selalu tunduk pada GPL. Di sisi lain, hal ini tidak terjadi misalnya untuk framework berlisensi MIT
  9. Ketersediaan Sumber Daya di Pasaran
    Mungkin kita ingin memiliki tim teknis yang membantu kita dalam tahap pengembangan atau dalam jangka panjang, baik untuk pemeliharaan maupun upgrade. Dengan kata lain, pastikan bahwa keterampilan yang mendukung dan dibutuhkan untuk framework yang kita gunakan tersedia dilingkungan kita.
  10. Mencobanya
    Itulah kuncinya! Jangan puas dengan membaca ulasan, komentar dan rumor, baik atau buruk, di Internet. Dengan pengujian itu, kita akan dapat membuat pertimbangan kita sendiri dan memastikan bahwa kita benar-benar nyaman dengan framework tersebut.

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.

Mana Yang Sebaiknya Dipilih?

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:

  1. Berapa banyak waktu yang akan digunakan?
  2. Apa yang ingin kita lakukan dan harus seberapa fleksibel proyek ini di masa depan?
  3. Berapa banyak hasil/keuntungan (jika itu penting) yang akan kita ambil setelah akhir proyek?
  4. Seperti apa lingkungan (environment) hosting/server yang akan digunakan?

Untuk customer tidaklah berpengaruh perangkat apa yang akan kita pakai. Hal yang penting buat customer adalah proyek/aplikasi yang mereka inginkan selesai dikerjakan

Pertempuran di Tiap Lini

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

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.