Instalasi Ekstensi & Konsekuensi
Gagasan memiliki sistem yang dapat diperluas memang bagus, tetapi seperti yang kita ketahui pengembang, tidak semudah itu. Banyak hal yang dapat (dan, sayangnya, dilakukan) salah.
Gambaran
Saya akan mulai dengan daftar masalah yang berpotensi disebabkan oleh menginstal ekstensi. Kemudian, saya akan membuat poin utama saya dan menyatakan kesimpulan yang saya buat secara pribadi dari semua itu, dan akhirnya saya akan menyarankan solusi. (Ini mungkin akan lama, maaf sebelumnya. Saya akan mencoba menulis sesedikit mungkin dan masih membahas topik.)
Jadi untuk memulai, berikut adalah daftar masalah umum yang ditemukan karena pemasangan ekstensi.
Keamanan
Tidak ada tinjauan kode yang dilakukan sebelum ekstensi diterima di Magento Connect. Akibatnya, banyak ekstensi mengandung kerentanan. Ada banyak alasan, seperti pengembang yang tidak berpengalaman atau malas, penggunaan kode pihak ketiga yang rentan, dan beberapa ekstensi bahkan mengandung kode berbahaya. Eksekusi kode jauh, injeksi SQL, dan downtime adalah kenyataan. Konsekuensinya adalah data pelanggan yang hilang, kredensial pembayaran yang hilang, pendapatan yang hilang, waktu yang hilang dan kepercayaan yang hilang.
Performa
Ekstensi dapat berfungsi dengan baik di satu situs atau pada instance pengembang, tetapi dengan katalog atau basis pelanggan yang berbeda, ekstensi dapat menyebabkan masalah kinerja yang serius. Mungkin ada banyak alasan konkret mulai dari pemuatan entitas yang tidak efisien, gabungan SQL yang tidak dioptimalkan, sejumlah besar permintaan ajax, sejumlah besar opsi atribut atau atribut, dan banyak lagi. Karena setiap panggilan pedagang memberi tahu kami pengembang, kinerja penting. Ini membebani pendapatan pedagang.
Konflik
Bahkan hanya dua ekstensi, bahkan ketika dikembangkan menggunakan praktik terbaik, dapat bertentangan. Ini sebagian besar disebabkan oleh cara kerangka kerja Magento menggabungkan konfigurasi XML. Dalam kasus terbaik konflik ini terlihat melalui jejak tumpukan atau layar kosong, dalam kasus terburuk situs tersebut menghambat perilaku aneh dan sulit untuk debug. Pedagang tidak akan dapat memperbaiki masalah dan membuat ekstensi yang bertentangan hidup berdampingan tanpa bantuan pengembang. Ini menghabiskan waktu dan uang.
Tingkat peningkatan
Tidak meningkatkan tidak ada opsi, jika hanya untuk alasan keamanan. Ekstensi perlu dipertahankan, sebagai basis kode individu dan sebagai bagian dari kerangka kerja Magento. Jika ekstensi sedang digunakan dan pengembang asli terjadi tidak terus mempertahankan ekstensi, beberapa pengembang lain harus mengambil alih. Tidak memiliki pengembang sering membuat tidak mungkin bagi pedagang untuk memutakhirkan, yang pada gilirannya menyebabkan situs menjadi lebih lambat maka mereka harus melakukannya, masalah keamanan dieksploitasi dan dengan demikian kehilangan pendapatan.
Kemungkinan diperpanjang
Menambahkan fitur baru ke situs yang sudah ada menjadi semakin kompleks dan mahal, karena setiap ekstensi dalam sistem menambah utang teknisnya. Utang keseluruhan jauh lebih besar daripada masing-masing ekstensi karena kompleksitas gabungan juga lebih besar daripada masing-masing sendiri. Tidak dapat dengan mudah bereksperimen dengan fitur dan perubahan baru menyebabkan pedagang kehilangan banyak pendapatan.
Penghapusan Instalasi
Hal-hal berikut menyebabkan kerusakan pada Magento saat mencopot pemasangan ekstensi:
- Catatan basis data yang merujuk ke kelas dalam ekstensi yang dihapus instalasinya (misalnya model pengindeks atau model backend atribut). Bahkan ekstensi yang mengikuti praktik terbaik cenderung mengalami hal ini.
- Menghapus instalasi ekstensi yang menimpa kode inti membuat Magento kehilangan file aslinya. Ini tentu saja hanya terjadi jika ekstensi tidak mengikuti praktik terbaik, tetapi fakta bahwa banyak ekstensi buruk.
Kerusakan situs tentu membutuhkan biaya.
Magento Connect
Dengan daftar masalah di atas, bagaimana mungkin ada orang yang mengharapkan non-pengembang untuk memasang ekstensi dan mengevaluasi apakah itu berfungsi di situs tertentu?
Tidak ada pembersihan yang dijamin bersih, sehingga seringkali instalasi yang rusak bahkan tidak dapat diperbaiki. Satu-satunya pilihan adalah membuat cadangan lengkap sebelumnya, dan kemudian lakukan rollback manual jika terjadi kesalahan. Bisakah orang non-teknis melakukan itu? Dalam pengalaman saya, tidak.
Mari kita asumsikan semuanya terlihat baik-baik saja. Apakah pedagang tahu semuanya baik - baik saja?
Bagaimana dengan keamanan? Bagaimana dengan masalah kinerja? Bagaimana dengan masalah peningkatan?
Tidak mungkin seorang non-pengembang dapat mengevaluasi hal-hal ini.
Pesan yang berkomunikasi Magento Connect adalah bahwa mudah untuk memperluas toko Magento Anda dengan menginstal Magento tanpa pengembang. Mungkin berguna dalam promosi penjualan untuk memberi tahu seseorang bahwa ini masalahnya, tetapi itu tidak benar.
Apa yang saya alami sebagian besar adalah bahwa dalam komunikasi kebutuhan untuk pengembang tersirat dan tidak dikomunikasikan. Akibatnya banyak pemilik toko memecah toko mereka dengan memasang ekstensi. Itu membutuhkan uang, waktu, keberanian, dan Magento serta reputasi pengembang.
Saya suka kelas saya memiliki antarmuka yang eksplisit, dan saya percaya itu akan baik jika persyaratan pengembang untuk Magento akan dikomunikasikan secara eksplisit juga.
Kesimpulan
Ini tidak baik untuk ekosistem sama sekali, bahkan jika memperbaiki situs yang rusak memberikan penghasilan bagi beberapa pengembang Magento. Uang yang sama dapat digunakan untuk menciptakan nilai nyata bagi pelanggan pedagang.
Di Twitter seseorang berkata bahwa pedagang adalah orang dewasa, yang dapat memutuskan sendiri apakah mereka memasang ekstensi atau tidak. Saya tidak setuju. Jika seorang pedagang bukan pengembang sekaligus, ia tidak dapat memutuskan sendiri.
Magento Connect seharusnya tidak membuat orang non-teknis mudah menembak diri sendiri.
Secara pribadi saya muak dan lelah melihat instalasi Magento yang kacau karena ekstensi. Saya lebih suka membuat hal-hal yang hanya membersihkan kekacauan.
Saya sedang berpikir untuk menghapus ekstensi saya dari Magento Connect karena saya tidak ingin mendukung ide yang cacat lagi.
Larutan
Menurut saya solusinya mudah dan murah. Ini bukan tentang menciptakan lagi Extension Marketplace baru , komersial atau gratis. Ini bukan masalah teknis, ini semua tentang komunikasi.
Jika Magento Connect akan menyatakan itu adalah sumber daya pengembang, dan ekstensi itu harus ditinjau sebelum pemasangan, dan bahwa hanya pengembang yang memasang ekstensi, ini bukan masalah. Pedagang yang masih memasang ekstensi melakukannya dengan mengetahui risikonya.
Jadi, inilah tiga langkah sederhana yang akan membuat Magento lebih ramah bagi pedagang:
- Hapus opsi untuk menginstal ekstensi melalui antarmuka Admin Magento (mis. Pengunduh).
- Nyatakan dengan jelas dan jelas di Magento Connect bahwa itu adalah tugas pengembang untuk mengunduh, meninjau, dan memasang ekstensi apa pun.
- Mendidik pengembang untuk melakukan peninjauan lengkap tentang ekstensi yang akan dipasang di situs.
Kata finishing
Saya suka berbagi ekstensi. Saya suka open source. Saya pikir Komunitas Pengembang Magento luar biasa !!
Meninjau ekstensi adalah cara yang bagus untuk belajar. Magento Connect tidak buruk, hanya pesan yang diproyeksikannya kepada orang-orang non-teknis.
Setiap situs Magento adalah aplikasi. Ini unik dan perlu diperlakukan sebagai upaya pengembangan yang unik.
Seharusnya konsensus umum dalam ekosistem bahwa ekstensi dapat bermanfaat, tetapi menginstalnya lebih sering maka tidak akan memerlukan kode untuk ditulis atau dimodifikasi, dan dengan demikian memerlukan pengembang.
EDIT : Saya memposting beberapa informasi latar belakang yang kurang teknis di blog saya .