Post pertama ini saya akan menjelaskan perbedaan antara CMS dan Framework. Sedikit definisi dari CMS, Content Manajemen Sistem
 adalah perangkat lunak yang digunakan untuk menambahkan atau 
memanipulasi (mengubah) isi dari suatu situs web. Umumnya, sebuah CMS 
(Content Management System) terdiri dari dua elemen:
- aplikasi manajemen isi (Content Management Application, CMA)
 - aplikasi pengiriman isi (content delivery application, CDA)
 
Elemen CMA memperbolehkan si manajer isi
 -yang mungkin tidak memiliki pengetahuan mengenai HTML (HyperText 
Markup Language)-, untuk mengatur pembuatan, modifikasi, dan penghapusan
 isi dari suatu situs Web tanpa perlu memiliki keahlian sebagai seorang 
Webmaster. Elemen CDA menggunakan dan menghimpun informasi-informasi 
yang sebelumnya telah ditambah, dikurangi atau diubah oleh si empunya 
situs web untuk meng-update atau memperbaharui situs Web tersebut. 
Kemampuan atau fitur dari sebuah sistem CMS berbeda-beda, walaupun 
begitu, kebanyakan dari software ini memiliki fitur publikasi berbasis 
Web, manajemen format, kontrol revisi, pembuatan index, pencarian, dan 
pengarsipan. Wikipedia Indonesia.
Karena CMS memisahkan antara isi dan 
desain, konsistensi tampilan dapat senantiasa dijaga dengan baik.Setiap 
bagian dari website dapat memiliki isi dan tampilan yang berbeda-beda, 
tanpa harus khawatir kehilangan identitas dari website secara 
keseluruhan. Oleh karena semua data disimpan dalam satu 
tempat,pemanfaatan kembali dari informasi yang ada untuk berbagai 
keperluan dapat dengan mudah dilakukan. CMS juga memberikan 
kefleksibelen dalam mengatur alur kerja atau ‘workflow’ dan hak akses,
 sehingga memperbesar kesempatan berpartisipasi dari pengguna dalam 
pengembangan website. Hal ini akan sangat menguntungkan bila website 
yang dikelola memiliki kompleksitas yang tinggi dan mengalami kemajuan 
yang cukup pesat.
- Manajemen data
 - Mengatur siklus hidup website
 - Mendukung web templating dan standarisasi
 - Personalisasi website
 - Sindikasi
 
CMS pada prinsipnya dapat dipergunakan untuk berbagai macam keperluan dan dalam berbagai kondisi, seperti untuk:
- Mengelola website pribadi.
 - Mengelola website perusahaan/bisnis.
 - Portal atau website komunitas.
 - Galeri foto, dan lain sebagainya.
 - Forum.
 - Aplikasi E-Commerce.
 - Dan lain-lain
 
Dan juga Content Manajement System 
didefenisikan sebagai Sebuah System yang memberikan kemudahan kepada 
penggunanya dalam mengelola dan mengadakan perubahan isi sebuah website 
dinamis tanpa tanpa sebelumnya dibekali pengetahuan tentang hal – hal 
yang bersifat teknis dalam sebuah mendesign sebuah website. Contoh CMS 
diantaranya WordPress,Joomla, Mambo, Drupal dll.
CMS (Content Management System) dapat 
membantu kita untuk membangun suatu website dengan harga yang relatif 
murah dan open source lagi. Menggunakan CMS memang mudah dalam jangka 
pendek
Pada saat ini banyak sekali pemanfaatan dari penggunaan cms, diantaranya adalah untuk membuat website perusahaan, bisnis, organisasi atau komunitas. Lalu juga dimanfaatkan untuk Portal, Galeri foto, Aplikasi E-Commerce, dan Mengelola website pribadi / blog serta masih banyak lagi yang bisa kita fungsikan pada penggunaan cms ini.
Pada saat ini banyak sekali pemanfaatan dari penggunaan cms, diantaranya adalah untuk membuat website perusahaan, bisnis, organisasi atau komunitas. Lalu juga dimanfaatkan untuk Portal, Galeri foto, Aplikasi E-Commerce, dan Mengelola website pribadi / blog serta masih banyak lagi yang bisa kita fungsikan pada penggunaan cms ini.
FRAMEWORK
Framework adalah sekumpulan library yang
 diorganisasikan pada sebuah rancangan arsitektur untuk memberikan 
kecepatan, ketepatan, kemudahan dan konsistensi di dalam pengembangan 
aplikasi dari definisi tersebut, framework mengandung unsur-unsur 
berikut :
Librari
Arsitektur
Metodologi
Librari
Arsitektur
Metodologi
Framework menyediakan librari yang 
lengkap dan terintegrasi. Unsur inilah yang paling banyak memberikan 
keuntungan bagi pengembang aplikasi. Sebagai contoh, framework aplikasi 
web menyediakan librari-librari dasar berkaitan layanan web, seperti 
authentication, database access, html generation, template engine, 
session management, caching, searching, email, http, pdf, zip dan ajax. 
Framework juga menyediakan sarana extension untuk librari-librari yang 
belum tersedia atau librari yang perlu ditingkatkan kemampuannya.
Arsitektur. Sebuah aplikasi membutuhkan 
rancangan bagaimana sistem dibangun, yaitu bagaimana elemen-elemen di 
dalam aplikasi disusun dan diintegrasikan, seperti pengorganisasian file
 dan librari, dan bagaimana librari-librari digunakan. Framework 
menyediakan struktur aplikasi dan bagaimana interaksi di dalam struktur 
tersebut. MVC [Model View Controller] adalah salah satu pola rancangan 
[design pattern] yang banyak digunakan dalam arsitektur aplikasi saat 
ini. Jika digambarkan akan seperti berikut :
Input > Processing > Output = Controller > Model > View
Input > Processing > Output = Controller > Model > View
Controller mencakup semua proses yang 
terkait dengan pemanggilan database dan kapsulisasi proses-proses utama.
 Jadi semisal di bagian ini ada file bernama member.php, maka semua 
proses yang terkait dengan member akan dikapsulisasi/dikelompokan dalam 
file ini.
Model mencakup semua proses yang terkait
 dengan pemanggilan struktur data baik berupa pemanggilan fungsi, input 
processing atau mencetak output ke dalam browser.
View mencakup semua proses yang terkait layout output. Bisa dibilang untuk menaruh template interface website atau aplikasi.
PHP Framework menggunakan metode 
pengembangan berbasis MVC. Namun apa itu MVC ? MVC merupakan suatu 
metode untuk memisahkan bagian-bagian dari suatu web aplikasi. MVC 
adalah kependekan dari Model View Controller. MVC terdiri dari tiga 
bagian yaitu;
- Model : Model mewakili struktur data. Biasanya model berisi fungsi-fungsi yang membantu kita dalam pengelolaan database seperti memasukkan data ke database, update data dan lain-lain.
 - View : View adalah bagian yang mengatur tampilan ke user. Bisa di katakan berupa halaman web.
 - Controller : Controller merupakan bagian yang menjembatani model dan view. Controller berisi script-script php yang berfungsi untuk memproses suatu data dan mengirimkannya ke halaman web.
 
Disinilah letak perbedaan utama antara 
framework dengan CMS atau PHP konvensional. Dengan metode MVC, bagian 
tampilan, logika serta query database diletakkan secara terpisah namun 
tetap sinkron sehingga pembuatan aplikasi menjadi lebih terstruktur dan 
sederhana. Model digunakan dalam menuliskan script database, Controller 
untuk mengembangkan logika pemrogramannya, sedangkan View berfungsi 
dalam menampilkan layout dari aplikasi yang kita buat. Kelebihan 
framework antara lain sebagai berikut :
- Ringan dan cepat. Framework hanya melakukan pemanggilan pustaka/kelas yang dibutuhkan sehingga meminimalkan resource yang diperlukan sehingga ketika kita me-load sebuah halaman akan menjadi ringan dan cepat.
 - Menggunakan metode MVC. Seperti yang telah dijelaskan sebelumnya, dengan metode MVC akan mempermudah kita dalam memahami alur pemrograman karena untuk bagian tampilan, logika dan query database telah dipecah sedemikian rupa.
 - Mayortitas mendukung berbagai jenis database.
 
Secara umum tujuan suatu aplikasi web 
adalah menampilkan informasi yang diminta oleh pengguna. Pengguna 
mengirimkan permintaannya melalui program browser ke web server, web 
server akan melakukan pemrosesan atas permintaan tersebut, kemudian 
hasilnya akan dikirimkan kembali dan akan ditampilkan juga di program 
browser. Berdasarkan mekanisme ini, aplikasi web dapat dibagi menjadi 
tiga bagian:
1. Bagian yang berfungsi untuk mengintepretasikan permintaan dari pengguna (HTTP Request).
2. Bagian yang memodelkan problem domain atau bussines logic.
3. Bagian yang mengelola tampilan yang akan dikirimkan ke pengguna.
2. Bagian yang memodelkan problem domain atau bussines logic.
3. Bagian yang mengelola tampilan yang akan dikirimkan ke pengguna.
Dalam pemrograman aplikasi web yang 
menggunakan PHP terkadang ketiga bagian program dicampur menjadi satu 
bagian. Aplikasi web merupakan bagian yang sangat sering mengalami 
perubahan. Seperti perubahan tampilan, layout, penambahan menu dan 
banyak lagi yang tidak ada kaitannya atau tidak memberikan dampak pada 
logika dari aplikasi web tersebut. Dengan mencampuradukkan ketiga bagian
 tersebut maka setiap kali dilakukan perubahan pada tampilan ada 
kemungkinan diperlukan juga perubahan pada bagian logikanya. Hal ini 
memperbesar kemungkinan timbulnya kesalahan pada aplikasi.
MVC(Model View Controller) adalah pola 
dasar yang memisahkan ketiga bagian program menjadi tiga buah objek yang
 terpisah. Interaksi antara ketiga bagian program tersebut dapat 
digambarkan seperti dibawah ini:
Controller pada dasarnya merupakan 
penerima tamu dari permintaan yang datang (HTTP request). Controller 
merupakan bagian yang mengatur hubungan antara bagian model dan bagian 
view, controller berfungsi untuk menerima request dan data dari user 
kemudian menentukan apa yang akan diproses oleh aplikasi.
View merupakan bagian yang menangani 
presentation logic. Pada suatu aplikasi web bagian ini biasanya berupa 
file template HTML, yang diatur oleh controller. View berfungsi untuk 
menerima dan merepresentasikan data kepada user. Bagian ini tidak 
memiliki akses langsung terhadap bagian model.
Model merupakan representasi dari proses
 bisnis di dalam setiap aplikasi perangkat lunak. Model adalah bagian 
yang bertugas mengolah data mentah menjadi data yang mengandung arti 
yang diinginkan oleh pengguna. Model biasanya berhubungan langsung 
dengan database untuk memanipulasi data, menangani validasi dari bagian 
controller, namun tidak dapat berhubungan langsung dengan bagian view.
Beberapa manfaat yang dapat kita peroleh dengan menggunakan framework dalam pengembangan aplikasi :
* Penggunaan komponen-komponen reusable, waktu pengembangan lebih 
singkat penerapan design patterns memudahkan dalam rancangan, 
pengembangan dan pemeliharaan sistem.* Stability dan reliability, aplikasi yang kita bangun lebih stabil dan handal karena berbasis pada framework yang sudah teruji stabilitas dan kehandalannya.
* Coding style konsisten, memudahkan dalam membaca kode dan dalam menemukan bugs.
* Security concern, framework mengantisipasi dan memasang perisai terhadap adanya berbagai masalah keamanan yang mungkin timbul.
* Dokumentasi, framework dapat mendisiplinkan kita untuk menulis dokumentasi untuk apa yang kita tulis.
Kekurangan Framework
Dari satu sisi framework tidak mempunyai
 kekurangan. Namun pemilihan framework yang salah akan menjadi sebuah 
bencana bagi penggunanya.
Ada beberapa hal yang harus di pertimbangkan dalam memilih framework :
Pertama dokumentasi dari framework itu 
sendiri. Dokumentasi sangat penting adanya mengingat pada umumnya tidak 
banyak orang/perusahaan yang membuat framework sendiri dalam membuat 
applikasi. Oleh karena itu kita akan sangat tergantung dengan 
dokumentasi yang di sediakan oleh framework yang kita pilih.
Berikutnya kesesuaian framework tersebut
 dengan applikasi apa yang hendak kita kembangkan. Mengambil filosofi 
“tidak perlu membunuh nyamuk dengan meriam”. Artinya sebaiknya kita 
memilih framework dengan fasilitas yang pas dengan kebutuhan kita.
Kedua perhatikan standar – standar 
framework yang ada, misalkan apakah framework tersebut MVC, apakah 
framework tesebut mendukung versi sekian, apakah mendukung templating 
dan lain-lain. Semakin banyak hal yang di support oleh framework 
tersebut semakin baik. Karena hal tersebut akan mempengaruhi kualitas 
dari software yang dikembangkan.
Yang terakhir adalah faktor kemudahan. 
Tentunya ini sangat tergantung dari sumberdaya yang ada. Standar 
kemudahan sangat sulit di ukur karena ini berhubungan dengan minat 
seseorang akan sesuatu. Namun berdasarkan dokumentasinya kita bisa 
mengira – ngira pola kerja framework tersebut.
Ada bermacam-macam framework yang dapat digunakan antara lain :
* .NET Framework,* PHP Framework,
* Ruby On Rails (untuk membuat aplikasi web dengan bahasa Ruby),
* Django (untuk membuat aplikasi Web dengan bahasa Python),
* Zend Framework,
* Prado.
PHP Framework berbeda jika dibandingkan 
dengan CMS (Content Management System), meski sama-sama meringankan 
dalam pembuatan web. Jika menggunakan CMS, kita tidak perlu pusing 
menulis script. Semuanya telah dibuat menjadi Fix dan kita hanya perlu 
mengatur bagian content dan interfacenya saja. Tidak demikian dengan 
Framework. Membangun sebuah aplikasi web dengan menggunakan framework, 
kita tetap harus menuliskan kode perintah PHP sesuai dengan ruang 
lingkungan yang disediakan oleh framework.
Mengapa Framework?
• Mempercepat dan mempermudah pembangunan sebuah aplikasi PHP
• Relatif
memudahkan dalam proses maintenance karena sudah ada pola tertentu
dalam sebuah 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, ORM, pagination, multiple database, scaffolding,
pengaturan session, error handling, dll
• Lebih bebas dalam pengembangan jika dibandingkan CMS
 
• Mempercepat dan mempermudah pembangunan sebuah aplikasi PHP
• Relatif
memudahkan dalam proses maintenance karena sudah ada pola tertentu
dalam sebuah 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, ORM, pagination, multiple database, scaffolding,
pengaturan session, error handling, dll
• Lebih bebas dalam pengembangan jika dibandingkan CMS
sumber:
