Cara mendapatkan efisiensi maksimum dengan Magento 2. Wawancara dengan Max Pronko
Diterbitkan: 2017-01-17Max Pronko adalah salah satu guru Magento yang harus diikuti oleh seorang pemula. Dia adalah pakar Magento dan pembicara publik, Pengembang Bersertifikat Magento dan blogger Magento 2 yang populer.
Dengan 10 tahun pengalaman pengembangan perangkat lunak dan konsultasi di Magento, Max telah berhasil merancang dan mengimplementasikan produk berkualitas tinggi dari skala menengah hingga besar.
Ikuti Max di Twitter.
Baru-baru ini Max mengunjungi Magento Hungaria dan mempresentasikan kasus penggunaan nyata dari optimalisasi kinerja di keynote Magento 2. Dalam hal ini, kami ingin memulai wawancara kami dengan beberapa pertanyaan yang berhubungan langsung dengan presentasi ini.
Bagian 1: Tantangan Umum Ekstensi Magento
Hampir setiap pedagang Magento 2 menggunakan ekstensi pihak 3d yang sangat meningkatkan fungsionalitas platform default di satu sisi, tetapi di sisi lain, memengaruhi alur kerja kinerja secara negatif.
Natalie: Secara keseluruhan, bagaimana Anda bisa menilai kualitas kode ekstensi pihak 3d dan bagaimana pengaruhnya terhadap beban server?
Max: Terima kasih atas kesempatan untuk berbicara tentang Magento 2, Natalie. Saya telah mengikuti blog Anda selama lebih dari setahun dan setiap kali saya mengunjunginya, saya menemukan beberapa artikel menarik. Terima kasih untuk ini.
Seperti yang Anda ketahui, saya suka meninjau kode karena sejumlah alasan:
- Pertama, saya mendapatkan pengalaman dan mengamati teknik menarik tentang cara mengubah persyaratan bisnis menjadi fitur yang berfungsi penuh dan berkualitas tinggi. Terutama ketika datang ke Magento 2.
- Kedua, ini membantu saya memahami betapa bagusnya berbagi pengetahuan di ekosistem Magento.
95% dari ekstensi pihak ketiga memerlukan tinjauan kode yang ekstensif dan panduan untuk meningkatkan kode.
Saya telah melakukan tinjauan kode ekstensi pihak ke-3 selama sekitar 2 tahun untuk saat ini. Sayangnya, saya tidak bisa mengatakan saya puas dengan hasil yang saya dapatkan: 95% ekstensi pihak ketiga memerlukan tinjauan kode yang ekstensif dan panduan untuk meningkatkannya. Biarkan saya diam tentang standar pengkodean.
Saya mengalami masalah dengan kinerja semua halaman situs web meskipun ekstensi hanya membuat dan mencakup halaman pilihan dengan beberapa fungsi tertentu. Misalnya, memasukkan blok yang tidak dapat di-cache ke dalam file konfigurasi tata letak default. Magento menonaktifkan cache halaman secara otomatis untuk semua halaman.
Contoh lain adalah menggunakan operasi backend yang memakan waktu tanpa menyimpan hasil eksekusi dalam variabel kelas. Ini dapat secara dramatis mengurangi pemuatan halaman pertama.
Saya memiliki kesempatan untuk meninjau sekitar 60 ekstensi termasuk yang berbayar dan gratis, jadi peringkat saya didasarkan pada nomor ini. Yang pasti, ada ekstensi yang mungkin saya rekomendasikan untuk digunakan.
Natalie: Apa masalah pengoptimalan kode yang paling sering menurut Anda?
Saya belum pernah melihat penggunaan kelas Proxy di ekstensi pihak ke-3. Namun, ini dapat mengurangi waktu inisialisasi objek rekursif.
Maks: Biasanya ekstensi dibuat dalam satu putaran tanpa pengoptimalan kinerja yang saya sebut "Implement and Deliver". Putaran kedua jarang datang, dan kode dibiarkan tidak dioptimalkan. Misalnya, saya belum pernah melihat penggunaan kelas Proxy di ekstensi pihak ke-3 . Namun, ini dapat mengurangi waktu inisialisasi objek rekursif.
Natalie: Saran pengoptimalan apa yang dapat Anda berikan kepada pengembang pemula, yang menulis ekstensi pertama mereka untuk Magento 2?
Max: Merupakan ide bagus untuk menguji ekstensi Anda dengan Magento 2 di luar lingkungan lokal, lebih disukai di suatu tempat di cloud. Saat ini, tidak mahal untuk memiliki server virtual dari DigitalOcean atau AWS seharga $5-10 dan menjalankan pengujian pengguna ujung-ke-ujung dasar . Setidaknya, itu mungkin menunjukkan perbedaan kinerja yang cukup baik dibandingkan dengan versi Magento 2.x yang out-of-the-box.
Bagian 2: Optimalisasi Kinerja M2
Natalie: Apa yang dapat Anda katakan tentang keanehan cache blok (apa yang lebih baik untuk digunakan/dihindari dalam kunci cache)?
Max: Magento 2 Community Edition hadir dengan dukungan server proxy Varnish. Ini bagus untuk semua pedagang yang tidak khawatir tentang pengunjung pertama kali saat cache belum siap. Blokir cache ikut bermain untuk halaman yang tidak disimpan di Varnish. Anda mungkin tidak mengharapkan pernis pada halaman seperti Akun Pelanggan, Pencarian Katalog, Keranjang Belanja.
Kunci cache yang tepat per blok sangat penting untuk membangun entri cache yang tepat dan meningkatkan cache hit ke penyimpanan backend seperti Redis. Idealnya, semua entitas yang terlibat dalam rendering front-end harus mengimplementasikan antarmuka Magento\Framework\DataObject\IdentityInterface yang hadir dengan metode getIdentities() . Metode ini sangat membantu jika Anda perlu mengkompilasi kunci cache yang tepat untuk memblokir cache.
Natalie: Apa saja tentang pengoptimalan kueri SQL?
Maks: Untuk pengoptimalan SQL, saya biasanya mencoba membuat daftar semua kemungkinan variasi data yang dipilih dari sebuah tabel. Idealnya, semua kueri harus mencapai Indeks MySQL untuk kinerja yang lebih baik. Saya tahu ini adalah kasus yang ideal, namun, ini benar-benar dapat membantu mempercepat kueri pada sejumlah besar catatan dalam sebuah tabel. Tentu saja, pengoptimalan kueri SQL adalah topik besar, jadi saya dapat membicarakannya selama berjam-jam.
Bagian 3: Pencarian Magento 2
Magento 2 dapat membanggakan memiliki pencarian out-of-the-box yang lebih baik daripada M1, tetapi masih menggabungkan kueri, kesalahan ketik, koreksi otomatis, sinonim tidak didukung. Selain itu, pencarian M2 tidak memindai kategori dan halaman CMS.
Natalie: Apa cara terbaik untuk meningkatkan penelusuran di edisi CE: ekstensi atau mesin telusur eksternal?
Max: Saya mempertimbangkan untuk menggunakan Elasticsearch untuk Magento 2 Community Edition. Tentu saja, ini membutuhkan pengembangan baik in-house atau menggunakan ekstensi pihak ke-3. Untuk salah satu proyek Magento 2, kami telah menggunakan penelusuran bawaan dengan konfigurasi tambahan seperti sinonim dan pengalihan ke laman landas untuk kueri penelusuran umum. Namun, ini adalah solusi jangka pendek, saya akan menggunakan beberapa layanan eksternal.
Natalie: Berbicara tentang mesin pencari eksternal, mana yang lebih baik untuk situs web data kecil/menengah/besar: Solr, Sphinx atau Elasticsearch (atau yang lainnya)?
Maks: Untuk situs web kecil, saya akan mempertimbangkan pencarian Magento 2 default. Untuk yang lain, ini lebih tentang seberapa bagus ekstensi dan dokumentasi jika Anda ingin membangun solusi Anda sendiri. Elasticsearch hadir sebagai opsi pilihan saya.
Natalie: Bisakah Anda merekomendasikan ekstensi pencarian yang dapat meningkatkan fungsionalitas default?
Max: Saya memiliki pengalaman untuk meninjau modul AutoComplete untuk Magento 2 yang dibuat oleh MageWorx. Ini secara signifikan meningkatkan pengalaman pengguna dibandingkan dengan fungsi saran otomatis Edisi Komunitas Magento 2 default. Modul MageWorx AutoComplete akan mendorong lebih banyak konversi dan penjualan untuk Merchant. Sehubungan dengan implementasi kode, skor saya adalah 4,5 dari 5. Ada beberapa perbaikan kecil yang dapat dilakukan untuk meningkatkan pengalaman pengembang secara keseluruhan. Salah satu hal yang menyenangkan tentang modul AutoComplete adalah fakta bahwa modul ini dapat diunduh secara gratis. Saya akan mempertimbangkan untuk menggunakan dan merekomendasikan modul ini untuk Pedagang Magento 2.
Selain itu, saya akan terus meninjau modul terkait pencarian untuk Magento 2 dan memberikan umpan balik saya tentang kualitas kode.
Bagian 4: Tantangan Magento 2
Natalie: Anda adalah pengembang Magento yang telah teruji dalam pertempuran, setelah bertahun-tahun bekerja dengan Magento, masalah apa yang paling menantang yang dibawa oleh platform versi kedua?
Misalnya, seperti yang saya tahu, bahkan sedikit perubahan kode di M2 menyebabkan sejumlah tindakan (seperti bin/magento setup:upgrade, bin/magento setup:static-content:deploy, bin/magento setup:di:compile, dll. )
Max: Saya pikir dalam sebagian besar kasus ketika seorang pengembang duduk di depan PHPStorm dan menulis kode, tidak ada waktu untuk benar-benar menggali arsitektur Magento 2. Misalnya, saya mengenal beberapa pengembang bagus yang mengeluh tentang komponen UI dan kurangnya contoh nyata dalam menggunakannya. Magento DevDocs baru memberikan gambaran yang baik tentang komponen UI.
Pengembang dengan pengalaman yang baik di Magento 1 menemukan Magento 2 kompleks dan terkadang menantang. Teknologi baru selalu membawa peluang baru untuk mempelajari sesuatu yang baru.
Bahkan ada gambar tentang itu.
Natalie: Dan akhirnya, Magento 2 dirilis pada November 2015. Menurut Anda, apakah Magento 2 sudah siap untuk bermigrasi ke seluruh dunia?
Maks: Benar-benar YA. Magento 2, sebagai perangkat lunak, memiliki lebih banyak manfaat daripada sejumlah masalah terbuka di GitHub. Ini jelas dapat menghasilkan lebih banyak pendapatan dibandingkan dengan Magento 1 dalam hal migrasi dan strategi pemasaran yang terencana dengan baik. Saya ingat saya mengatakan 'Ya' ke salah satu proyek Magento 2 kami pada bulan Agustus 2015 ketika itu hanya rilis Beta. Sekarang kami dengan senang hati menggunakan dan membangun situs web eCommerce berdasarkan Magento 2.
Tim saya di Pronko Consulting akan dengan senang hati mewujudkan visi baru dan meluncurkan situs web Magento 2 baru.
*****
Kami ingin berterima kasih kepada Max untuk wawancara ini dan berharap dia dan timnya mendapatkan tahun yang produktif dan sukses.