Magento yükseltmesi için tahminleri nasıl veriyorsunuz?


63

Genel bakış:

Bu soru başlangıçta istendi ve daha sonra StackOverflow'ta kapatıldı . Meta olarak belirttiğimiz gibi , bu soru için doğru yer burası.

Bu soru, Magento güncellemelerini tahmin etmenin doğru yolunu bulmak için birçok kişiye yardımcı olmak içindir.

Soru:

Magento güncellemesi için gereken süreyi nasıl ölçtüğünüzü bilmek istiyorum. Galiba, çoğunuzun müşterinin sorusuna cevap vermek için zor zamanları oldu: "Magento mağazamı yükseltmek ne kadar sürer?"

Genellikle müşterinin örneğin: “X saat sürecek ve Y dolarına mal olacak” gibi bir sayı duyması gerekiyor.

Sorunun ardındaki ana fikir, teknik yönle ilgili ve Magento yükseltmeleri için kendi hesaplamalarınızı yapmak üzere geliştirici olarak neyi kontrol ediyorsunuz?

Sadece kendi hesaplarım için bir sonraki kontrol listesini hazırladım:

  • Magento çekirdeğine dokunuldu mu?
  • Magento DB şemasına dokunuldu mu?
  • Veritabanında tutarsız veriler var mı?
  • Yerel ve topluluk kodu havuzunda kaç tane özel uzantı yüklü?
  • Özel uzantı, Magento'nun en son sürümüyle uyumlu mu?
  • Tema geliştiricisi, yerleşim yönergeleri için local.xml dosyasını mı kullandı ya da yalnızca temel / varsayılan / düzenden özel temanın düzen dizinine xml dosyaları kopyaladı mı?
  • Layout xml dosyalarında kullanımdan kaldırılmış düzenleme yönergeleri / blok metotlarımız var mı?
  • Bu Magento mağazasını geliştirdim mi?

Bir şeyi kaçırdığımı ve evet ise kontrol listesi için ek puanlarınızı benimle ve toplulukla paylaşmak ister misiniz?


Yıllık basit gelirin yaklaşık% 0,875'i ila 1,75'i, yıllık gelirinin ortası% 1,75 ila% 3,5'i, zor olan yıllık% 2,625 ila% 5,25'i için.

Yanıtlar:


100

Magento güncellemesini tahmin etmek, yapmak üzere olduğunuz kurulumda uygulanan değişiklikler hakkında bilgi toplama, bu değişikliklerin soruna neden olup olmayacağını kontrol etme ve daha sonra bunların etrafında çalışmak için ne kadar zamanın gerekli olduğunu değerlendirme sürecidir.

Tüm değişiklikler anlamıyla ayrılabilir dışı çekirdek ve in çekirdek .

Çekirdek dışı değişiklikler, yükseltme ile üzerine yazılmayacak değişikliklerdir. Bunlar, üçüncü taraf uzantıları , yerel kapsam içine yerleştirilen çekirdek dosyalar (app / code / local / Mage) ve özel bir tema .

Çekirdek içi değişiklikler doğrudan Magento çekirdek dosyalarına (app / code / core), yerelleştirme dosyalarına (app / locale / en_US), core şablonlarına ve javascript'ler , nadiren özelleştirilen harici kütüphaneler gibi bazı şeylere de uygulanır. .

Çekirdek Dışı Değişiklikler

3. Parti Uzantıları

Yükseltmeler sırasında 3. parti uzantıları, sorunların ana kaynağıdır. Bu, daha fazla uzantıya sahip olacağınız anlamına gelir, onları analiz etmeniz gerekecektir.

Kontrol edilmesi gereken ilk şey, uzantının sağladığı işlevselliğin henüz yükseltme yaptığınız Magento sürümünde uygulanmadığıdır. Örneğin , Magento 1.3.xx ve daha önceki sürümlerde olduğu gibi veya yaygın olarak kullanılan bazı uzantılar Yoast_CanonicalUrl, ancak şimdi çekirdek Magento işlevselliğinin bir parçasıdır ve artık gerekli değildir.Mxperts_CustomerAddressFontis_Wysiwyg

Öyleyse, sahip olduğunuz tüm bu eklentilere gerçekten ihtiyacınız olup olmadığını kontrol etmek (müşterinize danışın) iyi bir fikirdir. Yüklediğiniz bazı uzantılar olabilir, ancak gerçekten kullanılmadı. Yani bu noktada bir çeşit temizlik yapmak iyi olur.

O zaman kontrol edilmesi gereken önemli bir şey, geriye kalan her bir uzantının, yükseltmekte olduğunuz Magento sürümüyle uyumluluğudır. Bazı uzantıların uyumlu olmaması ve benzer uzantıların bulunmaması durumunda, bazı işlevselliklerini kaybetme ya da mevcut uzantıları uyumlu hale getirmek için değiştirme konusunda zor bir seçeneğiniz olacaktır.

Not: 3. taraf uzantısını doğrudan değiştirmeyin, ancak eski olanı uzatacak yeni bir uzantı oluşturun ve ardından yeni uzantının önyükleme XML'inde bir bağımlılık ayarlayın.

Tüm yapılanlardan sonra kalan uzantıların her birinin gerçek analizi sağlanabilir. Her zaman etc/config.xmldosyanın incelenmesi ile başlamalıdır . Aramanız gereken 3 şey var:

  • Sınıf yeniden yazmaları tek başına temiz bir teknik değildir, ancak bazı durumlarda etrafta başka bir yol yoktur. Yani eğer yeniden yazılmış sınıf Magento'nun yeni sürümünde değiştirilmişse, bu potansiyel bir sorun olabilir.
  • Mizanpaj güncellemelerinin yükseltme işleminizde bir soruna neden olması muhtemel değildir, ancak uzantı daha yeni bir Magento sürümünde kullanımdan kaldırılmış bir bloğa başvuruyorsa, bunun üzerinde çalışmanız gerekir.
  • SQL güncellemeleri , yükseltme sırasındaki sorunların önemsiz olarak karşılandığı bir kaynaktır. Sorun, üçüncü taraf uzantısının, varsayılan Magento tablosundaki bazı alanlara başvuran yabancı bir anahtar oluşturması durumunda ortaya çıkar. Sonuç olarak, bu alan değişikliklerden kilitlendi. Ve eğer yerel kurulum betiği bu alanı güncellemeye çalışırsa, sessizce başarısız olacaktır. Bundan sonra, bu alana atıfta bulunulan her yükleme betiği yükseltme işleminizi çökertecektir.

Uygulama / kod / yerel / Mage

Uzantılarınızı tamamladıktan sonra app/code/local/Magedizine bir göz atın . Burada bir localkapsam içine taşınan değiştirilmiş çekirdek dosyaları göreceksiniz . Bunların her biri kesinlikle bir miktar gri saça mal olacak çünkü hiçbir zaman (onları oraya yerleştiren siz olmasaydınız) orada neyin değiştirildiğini ve ne nedenle olduğunu asla bilemezsiniz. Bu nedenle, her birini bir kökenle karşılaştırmanız ve yeni sürümün ilgili dosyasına dosya eklenmiş işlevselliği geçirmeniz gerekir.

Özel tema

Çekirdek dışı yapılan son değişiklik özel tema. Bu önemli bir şey değil gibi görünebilir ama aslında bu gri bir alandır. Magento temel teması sürümden sürüme değiştiriliyor ve her özel temanın bu değişikliklerden bazılarını taklit etmesi gerekiyor. Ne yazık ki, neyin aranacağını ve neyin taşınacağını belirleyen gümüş kurşun yoktur. Bu yüzden sadece yükseltme işleminden sonra bazı büyük sürprizler ve küçük nitpicking için hazır olun.

Çekirdek Değişiklikleri

Mükemmel dünyada hiç yoktur. Ancak Magento kurulumunu yaptığınızda, üçüncü taraf geliştiriciler tarafından istismara uğradıktan sonra, ucuza çok şey teklif eden bir şey bekleyebilirsiniz. Bu yüzden içsel değişiklikler , yükseltme işlemi sırasında üzerine yazılacak olanlardır . Çoğu durumda herhangi bir hata üretmez ancak sonuç olarak böyle acımasız bir şekilde eklenen işlevselliği kaybedersiniz.

İçteki değişiklikleri tespit etmenin tek yolu, Magento kurulumunuzun tüm dosyalarını aynı sürümdeki temiz dosyalarla karşılaştırmaktır. Git ile yapmanı tavsiye ederim. Neden? Bunun nedeni tüm yeni satırları ve boşlukları güzel bir şekilde işlemesidir.

Magento kurulumunuz git altında olmasa bile, dosyalarınızı ayrı bir dizine kopyalayıp git init'i çalıştırabilirsiniz. Ardından ilk işlemi yapın, “temiz” Magento dosyalarını kopyalayın ve çalıştırın git status. Böyle bir şey alacaksınız:

Şimdi, değiştirilmiş dosyaların sayısına bağlı olarak, git diffher bir dosyada veya tüm partide aynı anda çalıştırabilirsiniz. Bu size yapılan tüm içsel değişikliklerin kapsamlı bir referansını verecektir. PhpStorm gibi herhangi bir git görselleştirmesi varsa, hayat sizin için çok daha kolaydır:

Bunu yapmayı öneririm git diff > changes.txt, her zaman elle yapılan bir değişiklik listesi olacaktır.

Temel değişikliklerin listesine sahip olarak neyin yeni sürüme aktarılacağını ve bunun için ne kadar zamana ihtiyaç duyulacağını tahmin edebilirsiniz.

Şimdi gerçek bir yükseltme için bazı tavsiyeler vermek istiyorum. Bu işlem iyi belgelenmiştir, bu nedenle hangi komutları çalıştırıp nereye tıklayacağımı yazmam. Ancak birkaç önemli konuda aksan yapmak istiyorum:

  • Geliştirme ortamınızda yükseltme yaptığınızı varsayıyoruz. Üretim sunucunuzda yükseltme yapmak bir intihardır.
  • Siz yükseltme yaparken üretimde bir şeyleri değiştirmelerine izin vermeyin. Magento'nuzu sürüm kontrolü altına alın, hatta geçici kilitleme dosyalarının yazmasını engelleyin.
  • 3. parti uzantılarının tümünü devre dışı bırakın ancak hangilerinin başlangıçta devre dışı bırakıldığını unutmayın, böylece daha sonra etkinleştiremezsiniz.
  • Sunucuda çalışan bir Magento temizleme komut dosyası olup olmadığını kontrol edin. Aksi ile başlayan tüm tabloları kesecek dataflow_*, log_*, report_*.
  • Yükseltme zamanında varsayılan temaya geri dönün.

Yükseltme komut dosyası tamamlandıktan sonra:

  • changes.txtGöç etmeden önce yaptığınız atıfta, gerçekten taşımaya değer tüm temel değişiklikleri değiştirin.
  • Geçiş app/code/local/Mageyükseltme önce bulunan modifikasyonlar.
  • Tek tek 3. parti uzantılarını etkinleştirir.
  • Temanızı geri alın ve sonucu üretim sunucusuyla kapsamlı bir şekilde karşılaştırın.
  • Sonuçtan memnun kaldığınızda üretime dağıtın.

Sonuç

Bunun çok korkutucu geldiğini biliyorum ama düzenli olarak geliştiriyorsanız, çekirdeğinizi temiz tutar ve uzantıları yalnızca gerçekten güvendiğiniz satıcılardan yüklerseniz ve yalnızca gerçekten ihtiyacınız varsa, bu makalede açıklanan zorlukların çoğu ile karşılaşmazsınız. Magento EcoSystem'inizi sağlıklı tutun; ödüllendirileceksiniz.

Scriptum sonrası

Çok karmaşık durumlarda, en yeni Magento yüklemesiyle baştan başlamak ve adım adım mağaza temanızı ve işlevselliğinizi taşımak mantıklıdır. Bu kesinlikle zaman alacak ancak sonunda neler olup bittiğinin tam farkındalığınızla birlikte sağlıklı bir Magento sistemine sahip olacaksınız.


Çekirdek değişimlerini saptamanın başka bir yolu, n98-magerun eklentisi Magento Project Mess Detector'ü kullanmaktır .
Julien Loizelet

15

Genel olarak konuşursak, çekirdek kod geliştirilirken asla dokunulmamalıdır. Magento'da herhangi bir konuda çalışmanıza izin veren birçok mekanizma vardır, hatta iç hatalar bile. Olduğu söyleniyor, dikkat edilmesi gereken başka konular da var.

  1. Herhangi bir topluluk veya yerel modüller çekirdek kodu geçersiz kılar (modüller klasöründe aranabilir <rewrite>ve olaylar gibi rahatsız edici olmayan kodları kullanmaları gerektiği için kötü bir uygulamadır)
  2. Magento, kodu geriye dönük olarak uyumlu tutmaya çalışır, ancak bazen geriye dönük uyumsuz değişiklikler çok fazlaysa sürece ekleyebilecek kod önemli ölçüde değişir ( burada bulunabilir ).
  3. Bir geliştirme ortamına kodu çoğaltmak kolay mı / mümkün mü? eğer öyleyse, sadece yükseltme işlemini çalıştırmak ve test etmek için gereken her şey olabilir.
  4. Yükseltme gerekli mi? Yeni sürümde müşterinin onsuz bırakamayacağı özellikler var mı? Herhangi bir güvenlik sorunu (çoğu kez Magento da arka ekler sağlar)

Şablon söz konusu olduğunda, önceki deneyime göre, geliştirici şablon kodlaması konusunda delirmediği sürece (ki zaten bloklar içinde olması gerekir), size zar zor kırıldığını söyleyebilirim.


10

Akılda tutulması gereken bazı şeyler:

  • Temanın uyumlu olup olmadığını kontrol edin (şablon dosyalarında kapsamlı kodlama olup olmadığını kontrol edin - bazen küçük geliştiriciler bunu yapar)
  • Medyanın nasıl depolandığını kontrol edin (CDN'ler kullanıyorlar mı?)
  • Özel önbelleğe alma yöntemleri olup olmadığını kontrol edin (APC Memcached vb.)

Bu tür bir müşteri isteğini yerine getirmenin bir yolu, tahmini bir inceleme yapmaktır.

Bu, müşteriye bakarak (faturalandırılabilir) zaman harcayacağınızı ve projeyi yapmak için onlara daha doğru bir zaman dilimi / maliyet vereceğini söylemeyi gerektirir.

Bu rotaya gitmek hem siz hem de müşteriden faydalanır.

Müşteri, tahmininize genellikle daha güvende hissedecek ve olası stresi azaltarak size yararı olan önerilerinize uyacaktır.

Tahmini inceleme:

Gerçek tahmin incelemesi bu satırlar boyunca bir şeyler olacaktır:

  • Canlı veritabanını boşaltın ve bir geliştirme makinesine alın
  • Magento dosyalarını canlı makinelerinden dev makinenize kopyalayın
  • Her şeyin yolunda ve çalıştığından emin olun
  • Yükseltmeyi deneyin ve neyin kırıldığını görmek için ilk testlerden birini yapın

Bu işlem ortalama iki faturalandırılabilir saat sürer ve eldeki sisteme ilişkin gerekli bilgileri size sunar.


1
"Canlı veritabanını boşalt ve bir geliştirme makinesine al" - PCI uyumluluğu daha yeni ele geçirildi. Emin olun DEĞİL ... canlı kimlik ihracat
Luke A. Leber

10

Magento CE'de çeşitli sürümler yaptık, en kötüsü 1,3'den 1,7'ye yükseldi ve bu da neredeyse 4 tam gün sürdü. İlk tahmin 1-2 gündü. Sanırım 1.x'ten 2.x'e yükseltme aynı derecede büyük bir girişim olacak ve geçiş araçları çekirdek ekip tarafından sağlansa bile, sıfırdan başlamak daha temiz olabilir.


6

Yukarıda verilen mükemmel cevaplara bir şey eklemek istiyorum:

  • Bir VCS ve uygun bir yerleştirme işlemi olup olmadığını kontrol edin.

Arkasında uygun işlemler olmadan ve sorun oluştuğunda geri adım atma olasılığı olmadan yükseltme yapmam (daha önce sitede çalışmadıysam bile daha fazlası). Magento yükseltmesi için bize yaklaşan müşterilerin yaklaşık% 90'ı (daha önce müşterilerimiz olmamıştır) yalnızca herhangi bir test / aşamalandırma olmadan, VCS olan herhangi bir yerde canlı bir ortama sahiptir.


6

Diğer kuruluşlarla entegrasyon sorulması gereken önemli bir şeydir. Bu, siteye bakarak tespit edemeyeceğiniz bir şeydir - müşterilerin Magento API'sı aracılığıyla siparişleri geri gönderen sistemlere sahip olması yaygındır, örneğin ve sizi geliştirirken bu entegrasyonun sürekliliğini ele almazsanız bir karmaşa içine alabilirsiniz.

Bileşenleri gözden geçirirken, diğer sistemlerle konuşanlara dikkat edin - bunların her biri test etmek için kıllı olacaktır, çünkü test verilerini yanlışlıkla canlı bir sisteme zorlamak istemezsiniz. Genellikle, orijinal geliştiriciler tarafından kullanılan bir test bitiş noktası vardır, ancak yükseltme yaparken bu bilgilere artık sahip olamayabilirsiniz.


Teşekkürler, bu daha önce hiç görmediğim bir şey, ama bilmek güzel!
ceckoslab
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.