7 Alasan Mengapa Developer PHP seharusnya TIDAK menggunakan Yii Framework!
Sebelum penulis membahas tentang topik ini terlalu jauh, maka penulis akan membuat asumsi bahwa anda atau pembaca artikel ini adalah seorang developer atau programmer yang biasa menggunakan bahasa pemrograman PHP. Jika bukan, maka berusahalah untuk menganggap bahwa diri anda seperti asumsi itu. Hal ini supaya anda benar-benar tersentuh ketika membaca artikel ini ;)
Saat ini adalah era dimana banyak sekali teknologi, bahasa, dan framework pemrograman bermunculan. Sebut saja Javascript, yaitu bahasa pemrograman yang berjalan di browser atau disisi client, yang dahulu mungkin dianggap sebelah mata. Namun saat ini, Javascript bertransformasi menjadi bahasa yang cukup powerfull dan mampu berjalan baik di sisi client maupun server, mempunyai banyak librari dan implementasi serta didukung banyak teknologi.
Pertanyaan mendasar untuk anda adalah “mengapa anda masih menggunakan PHP?”
Mari kita flashback ditahun 1994 ketika itu Rasmus Ledorf membuat kode-kode dengan bahasa C untuk mencatat pengunjung blognya dan inilah cikal bakal bahasa pemrograman PHP. Pada tahun-tahun berikutnya PHP dikembangkan lagi sehingga mendukung database (97), mempunyai banyak fitur layaknya bahasa pemrograman pada umumnya (98), menggunakan zend engine (99), mendukung penuh paradigma pemrograman berbasis obyek / OOP (2004) hingga terakhir melalui versi 7, PHP fokus pada performa. http://php.net/manual/en/history.php.php
Fitrahnya, PHP merupakan bahasa pemrograman di sisi server dan spesifik untuk mendukung aplikasi berbasis web. Sehingga membandingkan PHP dengan bahasa pemrograman Javascript atau yang lain yang tidak fokus di sisi server dan web menurut saya merupakan cara-cara yang kurang bijak.
Menurut w3techs.com, berdasarkan data statistik 5 (sejak 2012) tahun terakhir tentang tren penggunaan bahasa pemrograman server untuk aplikasi berbasis web, tercatat bahwa PHP masih sangat populer dibandingkan dengan bahasa pemrograman lain seperti Java dan ASP.NET.
Pada tahun 2015 misalnya, penetrasi PHP mencapai 82% di seleuruh dunia, jauh meninggalkan ASP.NET yang hanya 17% dan Java sekitar 3%. Dari data tersebut terlihat bahwa tren penggunaan PHP terus meningkat dari tahun ke tahun. Lebih detail tentang hal ini bisa anda lihat pada link berikut. http://w3techs.com/technologies/history_overview/programming_language
Berkembangnya PHP membuat banyak developer kemudian membuat kerangka kerja atau framework yang merupakan kumpulan pattern-pattern dan best practice untuk memulai sebuah projek dengan bahasa PHP. Tercatat framework PHP mulai muncul diawal tahun 2000-an sebut saja Horder dan Mojavi. Kemudian sejak tahun 2004 perkembangan dunia framework PHP semakin pesat dengan lahirnya Prado (2004), Symfony & Cake (2005), Zend & Code Ignitier (2006) dsb.
Salah satu framework PHP yang ingin penulis bahas pada artikel ini adalah Yii Framework. Sekaligus penulis akan memaparkan beberapa alasan bagi anda para developer PHP untuk sebaiknya tidak menggunakan framework ini sebagai base coding anda.
Yii merupakan salah satu framework PHP yang dibangun oleh Qiang Xue pada 2006 (beta). Qiang sendiri bukan orang sembarangan di dunia pemrograman, karena pada tahun 2004 dia membangun framework PHP Prado yang sempat populer saat itu. Salah satu tujuannya membuat framework baru dibandingkan dengan mengembangkan Prado adalah karena ingin membuat framework yang fokus ke PHP 5 dan fokus pada performa dimana akan banyak break change jika harus mengembangkan Prado.
Terbukti ditahun 2008 saat launching versi stabil, Yii berhasil menggebrak melalui benchmark performance antara Yii dengan beberapa framework PHP populer saat itu. Hasilnya performa Yii jauh melampaui framework lain hingga kemudian banyak developer PHP berbondong-bondong migrasi ke Yii.
Yii sebagaimana umumnya framework PHP modern, mendukung banyak fitur seperti MVC, ORM/ActiveRecord, I18N/L10N, caching, authentication & role-based access control, scaffolding, testing, dsb. Pada versi terakhir yaitu 2.0, Yii mendukung teknologi & standard baru seperti composer, almost PSR, PHP7, HHVM dsb.lebih lengkap tentang Yii silahkan mengunjungi website resminya http://www.yiiframework.com, karena pada artikel ini saya tidak akan menjelaskan secara detail tentang Yii.
Kembali ke topik dari artikel ini, mengapa seharusnya developer PHP tidak menggunakan framework ini?
7 Alasan!
Berikut ini beberapa penjelasan mengapa anda sebagai developer PHP sebaiknya tidak menggunakan framework ini sebagai basis dari coding anda.
1.Framework PHP Jadul
Yii tergolong framework PHP yang berusia tua (2006) bahkan sebagaimana yang dipaparkan diatas bahwa foundernya telah menciptakan framework prado pada tahun 2004. 10 tahun sudah framework ini eksis. Lalu apa masalahnya pada framework yang berusia tua? Dengan perkembangan teknologi yang demikian pesat, maka dikhawatirkan Yii tidak mengikuti perkembangan itu dan mempertahankan diri mengikuti best practice yang telah lama ditinggalkan oleh banyak developer.
Meski sebenarnya kekhawatiran ini menjadi tidak berdasar, mengingat tiga hal berikut yaitu
- Sejak awal dibangun Yii hanya fokus pada PHP 5, ini merupakan visi yang jauh lebih maju dibandingkan dengan framework lain di tahun 2006 dimana banyak yang masih mendukung atau berkutat di PHP 4.
- Diskusi ilmiah tentang teknologi baru di github Yii begitu massive. Menunjukkan bahwa developer Yii care terhadap perkembangan teknologi baru.
- Sejak launchinya versi 2.0 dimana Yii mendukung teknologi & standard baru seperti composer, almost PSR, PHP7, HHVM dsb.
2. Performanya Bukan Yang Terbaik
Jika dibandingkan dengan framework lain khususnya yang full stack PHP dan no PHP c-extension maka performa Yii bukan yang tercepat. Berikut ini data hasil benchmark yang telah penulis buat berdasarkan source benchmark populer https://github.com/kenjis/php-framework-benchmark, yaitu CI3 (565 rps), Yii2 (393 rps), Zend2 (99 rps), Laravel5 (65 rps) dan Symfony(6 rps). Yii versi 2 menempati posisi ke dua dibawa code ignitier. Belum lagi jika dibandingkan dengan micro framework dan framweork dengan dukungan C extension.
These are my benchmarks, not yours. I encourage you to run on your (production equivalent) environments.
Meski bukan yang terbaik namun performa Yii tergolong bagus, mengingat fitur fitur yang ditawarkan sangat lengkap.
3. Membuat Anda Tidak Care Terhadap Security
Secara built-in, Yii hadir dengan banyak fitur terkait application security seperti: authentication & authorization, tools untuk mengatasi SQL injections XSS attacks CSRF attacks, input validation standard & output filtering, fitur hash password encrypt & decrypt, telah di review oleh web security expert (Tom Worster and Anthony).
Artinya ketika kita mengikuti best practice Yii maka by default Yii sudah aman. Saya pernah membuktikannya sendiri betapa tim quality assurance bersusah payah dalam melakukan penetration tester kepada aplikasi yang dibuat menggunakan Yii (2.0). Sehingga mereka menyimpulkan bahwa aplikasi tersebut secure. Padahal ketika membuatnya saya dan team lemah sekali pada pengetahuan tentang security.
Pertanyaan-pertanyaan tentang securitypun sangat jarang ditemui pada diskusi-diskusi di dunia maya. Hal ini tentu akan membuat anda tidak care terhadap security jika menggunakan framework Yii, karena security Yii membuat security yang harusnya ribet menjadi mudah, dan otomatis.
4. Banyak Hal-Hal Instan di Yii
Ada banyak hal-hal yang bersifat “instan” di Yii, pada bagian sebelumnya telah dibahas bahwa security di Yii juga bersifat instan. Developer yang menggunakan Yii menjadi manja, atau bahkan konon karena instan tersebut maka dikatakan framework ini membuat developer semakin bodoh.
Apa sebenarnya yang terjadi? Benarkah demikian?
Yii menganut prinsip convention over configuration, artinya konfigurasi di Yii sudah disetting pada hal-hal yang sudah umum. Misal secara umum, form mempunyai field token yang digunakan untuk security, maka Yii by default melakukannya. Setiap aplikasi membutuhkan routing tertentu, maka tanpa setting apapun Yii telah mengenerate routing secara otomatis. Menurut sebagian orang hal ini tidak flexible. Apa enaknya coding kalau semua sudah otomatis?
Yii mempunyai fitur generator Code bernama Gii. Cukup dengan mendefiniskan nama tabel maka kita bisa membuat aplikasi CRUD untuk tabel tersebut tanpa coding apapun. Banyak yang tidak suka dengan cara instan ini.
Yii mempunyai fitur-fitur untuk memudahkan membuat tampilan web, yaitu widget. Misal membuat form, membuat data tabel (paging, sorting dsb), membuat alert, semua sudah ada widgetnya. Definisi codingnya sederhana namun hasil tampilannya luar biasa. Yii seolah mengajari kita cara coding, bagi sebagian developer, keterlibatan Yii yang terlalu banyak akan membuat mereka merasa tersaingi
Banyak developer tidak menyukai hal ini. Coding adalah art atau seni, tidak cukup aplikasi jalan saja. Usaha keras nan manual memberi kepuasan tersendiri bagi sebagian developer. Oleh karena itu penganut aliran ini akan mengharamkan code builder, dan convention over configuration, serta tidak mementingkan kecepatan dalam pembuatan aplikasi. Apa fokus mereka? Keindahan bait-bait kode itu lebih penting dari segalanya.
Berikut ini beberapa fitur dari Yii yang bisa mengancam “eksistensi” developer itu sendiri, maksudnya mengurangi peran dari developer untuk membuat suatu aplikasi. Pembuatan aplikasi akan berlipat-lipat kali lebih cepat dibandingkan tanpa menggunakan Yii, tentu bagi sebagian developer hal ini gak asik. Kenapa? Karena mencintai coding adalah berlama-lama dengan coding, itu nikmat menurut mereka.
• Support PHP Dependency Manager — Composer
• Integrate with User Interface Framework — Twitter Boostrap, and You can use the other
Jika anda mahir dalam UI/UX maka fitur ini tentu akan menyebalkan. Yap karena tampilan aplikasi anda akan di dikte oleh Yii melalui framework twitter bootstrap.
• Application Template
• Built-in Scafolding Generator — Gii
• Centralize Validation in models, (client & server validation)
Ini fitur yang benar benar membuat developer menjadi “bodoh”. Bayangkan dengan hanya mensetting validasi di model atau disatu file, maka by default tanpa coding apapun lagi maka Yii akan otomatis menggenerate validasi pada dua sisi yaitu client (Javascript di browser) dan server (PHP).
• Many built-in useful Widgets
• Automatic routing (by default)
• Simplify to create API Restful Web Service
• Integrate with Testing Tools — Codeceptions
Meskipun demikian, hal-hal instan ini bisa kita matikan di Yii terutama bagi penganut aliran manualisme tadi
5. Tidak Cepat dalam Mengadopsi Teknologi Baru
Perkembangan teknologi IT yang sangat cepat seolah tidak diperhatikan oleh Yii. Banyak teknologi baru yang tidak segera di adopsi oleh Yii. Para para early adopter atau developer dengan jiwa muda maka hal ini tentu kurang cocok. Mereka ingin segera mengadopsi teknologi baru meskipun hal itu belum mature atau meskipun hal itu tidak benar-benar dibutuhkan.
Apa yang sebenarnya terjadi? Benarkah Yii menutup mata terhadap perkembangan teknologi baru?
Saat ini Yii mempunyai 2 versi yaitu versi 1 yang dilaunching sejak 2008 (beta 2006) sampai sekarang 2016 masih terus di support bugfix dan patch. Support selama lebih dari 10 tahun ini menunjukkan keseriusan dukungan Yii bagi para developer yang menggunakannya. Yii memastikan penambahan fitur baru tidak menyebabkan break change atau setidaknya meminimalkan hal itu. Lalu pada tahun 2014, Yii merelease versi 2.0 yang merupakan hasil tulis ulang dari versi 1. Yap 10 tahun baru punya 2 versi.
Jika anda teknologi fansboy maka Yii tidak cocok, namun jika anda mementingkan reliability dan dukungan yang lebih lama maka Yii sangan cocok terutama untuk aplikasi-aplikasi enterprise.
Salah satu core developer dari Yii Alexander Makarov pernah berkata
if we’ll adopt new tech too fast w/o supporting what we’ve built there will be no means using Yii as a framework at all. It will be thing for cool kids to play. Not to build real projects that are here to stay for decades
Artinya jika kita mengadopsi teknologi terlalu cepat tanpa mensupportnya maka apa artinya menggunakan Yii sebagai framework?. Itu hanya akan menjadi mainan anak-anak. Bukan untuk membangun real project yang bertahan hingga bertahun-tahun (1 dekade).
Ada dua prinsip dasar bagi developer sebelum memutuskan untuk mengadopsi teknologi baru yaitu apakah teknologi tersebut memang benar-benar dibutuhkan saat ini? dan apakah adopsi terhadapnya akan membuat break changes?. Diskusi-diskusi ilmiah tentang teknologi baru cukup massive di github Yii.
6. Keputusan di Yii diambil oleh Banyak Core Developer
Awalnya Yii hanya didevelop oleh satu orang yaitu Qiang Xue selaku foundernya. Kemudian seiring waktu bergabunglah beberapa developer terbaik dunia untuk membantu mengembangkan Yii dan menjadi core developer.
Saat ini ada 6 core developer Yii yang masing-masing punya suara untuk menentukan apakah suatu fitur di adopsi atau dibuang, tentunya dengan prinsip sebagaimana yang saya sebutkan diatas. Diskusi-diskusi ilmiah seringkali cukup alot untuk menentukan hal itu. Siapapun juga bisa mengikuti diskusi tersebut melalui github issue.
So, Yii bukan one man show. Tidak akan ada sebuah fitur yang tiba-tiba ada atau tiba-tiba menghilang. Semua melewati diskusi ilmiah.
7. Bukan Framework Populer
Berdasarkan survey terakhir 2015. Yii menempati posisi ke lima dunia. Hal ini menujukkan bahwa Yii bukanlah yang terpopuler. Namun meskipun demikian jumlah komunitas Yii tergolong besar, berikut ini datanya.
- https://web.facebook.com/groups/yiitalk 28.052
- https://web.facebook.com/groups/yii.indonesia 23.140
- http://www.yiiframework.com/forum 179.865
- http://stackoverflow.com/search?q=yii 41.124
- https://github.com/yiisoft/yii2 fork: 4453, star 7591
Itulah 7 alasan yang bisa dijadikan pertimbangan untuk tidak memilih Yii sebagai framework PHP anda.
Lalu adakah website Indonesia yang menggunakan Yii (versi 2) sebagai frameworknya? Berikut ini beberapa contohnya: http://m.urbanindo.com (jual beli properti), http://www.rajamobil.com (jual beli mobil), http://www.chasebrandbali.com (jual beli pakaian), http://smartgorontalo.net (smart city gorontalo), https://pictalogi.com (digital publishing).
Referensi: https://github.com/hscstudio/slides/blob/master/2016/2/NF/presentation-hafid.pdf
Jika anda ingin mengenal lebih jauh tentang framework Yii, silahkan kunjungi link berikut :) https://hscstudio.github.io/yii2-book-id
Promo Ebook “Be Fullstack Developer”
Untuk pembelian, silakan klik link http://bit.ly/e-book-laravel-vue