Як ви даєте оцінки для оновлення Magento?


63

Огляд:

Спочатку це питання було задано, а пізніше було закрито в StackOverflow . Ми мета заявили , що тут є правильне місце для цього питання.

Це питання на користь того, щоб допомогти багатьом людям знайти правильний спосіб оцінити оновлення Magento.

Питання:

Мені цікаво знати, як ви вимірюєте необхідний час для оновлення Magento? Я думаю, що більшості з вас було важко відповісти на запитання клієнта: "Скільки часу знадобиться для оновлення мого магазину Magento?"

Зазвичай клієнту потрібно почути лише номер, наприклад: "Це займе X годин, і це коштуватиме Y доларів".

Основна ідея питання полягає в технічній стороні і що ви перевіряєте як розробник, щоб зробити власні розрахунки для оновлення Magento.

Я створив наступний контрольний список, лише для власних розрахунків:

  • Чи торкнулося ядро ​​Magento?
  • Чи торкнулась схема бази даних Magento?
  • Чи є в БД непослідовні дані?
  • Скільки спеціальних розширень встановлено в локальному коді та у спільноті коду?
  • Чи сумісне розширення користувача з останньою версією Magento?
  • Чи розробник теми використовував файл local.xml для директив макета, або просто скопіював xml файли з базового / за замовчуванням / макета в каталог макетів власної теми?
  • Чи є у нас застарілі директиви компонування / методи блоку у файлах xml-макета?
  • Я розробив цей магазин Magento?

Як ви вважаєте, що я щось пропускаю, і якщо так, ви хочете поділитися зі мною та громадою своїми додатковими балами за контрольний список?


Для відносно простих ~ 0,875 до 1,75% річних доходів, для середніх 1,75% до 3,5% річних доходів, для складних 2,625% до 5,25% річних доходів.

Відповіді:


100

Оцінка оновлення Magento - це процес збору інформації про модифікації, застосовані до інсталяції, яку ви збираєтесь вносити в сучасний термін, перевіряючи, чи можуть ці зміни викликати проблему, а потім оцінювати, скільки часу потрібно, щоб обійти їх.

Усі модифікації можуть бути буквально розділені на безпрофільні та основні .

Поза основні модифікації - це ті, які не будуть перезаписані оновленням. Це сторонні розширення , основні файли, розміщені в локальному масштабі (додаток / код / ​​локальний / маг) та спеціальна тема .

Зміни в основному застосовуються безпосередньо до основних файлів Magento (додаток / код / ​​ядро), файлів локалізації (app / locale / en_US), основних шаблонів і деяких речей, таких як javascripts , зовнішні бібліотеки, які рідко налаштовані, але все-таки повинні бути враховані. .

Позакласні модифікації

Розширення третьої сторони

Під час оновлень сторонні розширення є основним джерелом проблем. Що означає більше розширень, вам більше часу знадобиться для їх аналізу.

Перше, що потрібно перевірити, - чи функціональність, що надається розширенням, ще не реалізована у версії Magento, до якої ви модернізуєтесь. Наприклад , деякі розширення , наприклад Yoast_CanonicalUrl, Mxperts_CustomerAddressабо Fontis_Wysiwygбули широко використані в Magento 1.3.xx і старше , але в даний час є частиною основної функціональності Magento і більше не потрібно.

Тоді корисно перевірити (запитайте свого клієнта), чи справді вам потрібні всі ці розширення. Можливо, ви встановили деякі розширення, але ніколи не використовувались. Тож у цей момент добре зробити своєрідне очищення.

Тоді важливою справою є сумісність кожного з розширень, що залишилися, з версією Magento, до якої ви модернізуєтесь. Якщо деякі розширення не сумісні та немає подібних розширень, у вас буде важкий вибір: або втратити певну функціональність, або змінити існуючі розширення, щоб зробити їх сумісними.

Примітка. Не змінюйте безпосередньо розширення сторонніх розробників, а створюйте нове розширення, яке розширить застаріле, а потім встановіть залежність у XML завантаження з нового розширення.

Після всіх тих, хто зробив, може бути наданий фактичний аналіз кожного з розширень, що залишилися. Він завжди повинен починатися з перевірки etc/config.xmlфайлу. Треба шукати 3 речі:

  • Переписування класів - це не сама чиста техніка, але в деяких випадках іншого способу немає. Тож якщо змінити переписаний клас у новій версії Magento це може стати потенційною проблемою.
  • Оновлення макетів менш імовірно спричинить проблеми з оновленням, але все ж якщо розширення посилається на блок, який застарів у новій версії Magento, вам доведеться це обійти.
  • Оновлення SQL є сильно заниженим джерелом проблем під час оновлення. Проблема виникає, коли стороннє розширення створює зовнішній ключ, посилаючись на якесь поле в таблиці Magento за замовчуванням. В результаті це поле блокується від модифікацій. І тоді, якщо нативний скрипт встановлення спробує оновити це поле, він вийде з ладу. Після цього кожна наступна сценарій встановлення, що посилається на це поле, призведе до краху оновлення.

додаток / код / ​​локальний / Mage

Після закінчення розширень настав час поглянути на ваш app/code/local/Mageкаталог. Тут ви знайдете модифіковані основні файли, переміщені в localобласть застосування. Кожен з них, безумовно, коштуватиме вам сивого волосся, тому що ви ніколи не дізнаєтесь (якщо не ви їх посадили туди), що там було змінено і з якої причини. Тож вам доведеться порівняти кожен із них із походженням та перенести додану функціональність у файл-кореспондент нової версії.

Спеціальна тема

Остання купа непрофільних модифікацій - спеціальна тема. Це може здатися не великою справою, але насправді це сіра зона. Основна тема Magento змінюється від версії до версії, і кожна спеціальна тема повинна імітувати деякі з цих модифікацій. На жаль, не існує срібної кулі, яка б визначала, на що звернути увагу та на що потрібно мігрувати. Тож просто будьте готові до кількох великих сюрпризів та незначних покупок після оновлення.

Основні модифікації

У ідеальному світі таких немає. Але коли ви отримали установку Magento після того, як вона зловживала сторонніми розробниками, які пропонують багато за дешеве, ви можете розраховувати на що завгодно. Отже, основні модифікації - це ті, які будуть перезаписані в процесі оновлення. У більшості випадків це не призведе до помилок, але в результаті ви втратите функціонал, який був доданий таким жорстоким способом.

Єдиний спосіб виявити основні модифікації - порівняти всі файли вашої установки Magento з чистими файлами тієї ж версії. Я рекомендую робити це з git. Чому? Просто тому, що він прекрасно обробляє всі нові лінії та пробіли.

Навіть якщо ваша установка Magento не знаходиться під git, ви все одно можете скопіювати свої файли в окремий каталог, а потім запустити git init. Потім зробіть початкову фіксацію, скопіюйте “чисті” файли Magento та запустіть git status. У вас вийде щось подібне:

Тепер залежно від кількості модифікованих файлів, які можна запустити git diffна кожному файлі або на всій партії одночасно. Це дасть вам повну інформацію про всі основні модифікації, внесені. Якщо у вас є візуалізація git, наприклад phpStorm, життя вам набагато простіше:

Я пропоную зробити git diff > changes.txtтак, щоб у вас завжди був перелік змін вручну.

Маючи список основних модифікацій, ви можете оцінити, що потрібно перенести в нову версію і скільки часу знадобиться для цього.

Тепер я хотів би дати кілька порад щодо фактичного оновлення. Цей процес добре задокументований, тому я не буду писати, які команди запускати та де натискати. Однак я хочу акцентувати увагу на кількох важливих речах:

  • Ми припускаємо, що ви модернізуєтесь у своєму розвитку. Запуск оновлення на виробничому сервері - це самогубство.
  • Не дозволяйте їм нічого змінювати у виробництві під час оновлення. Покладіть Magento під контроль версій або навіть тимчасові файли блокування від написання.
  • Вимкніть усі розширення сторонніх розробників, але зауважте, які спочатку були відключені, щоб потім не вмикати їх.
  • Перевірте, чи на сервері працює сценарій очищення Magento. В іншому випадку усічення всіх таблиць , починаючи з dataflow_*, log_*, report_*.
  • Поверніться до теми за замовчуванням під час оновлення.

Після завершення сценарію оновлення:

  • Посилання на changes.txtзроблені вами, перш ніж перенести всі основні модифікації, які дійсно гідні міграції.
  • Змінити app/code/local/Mageзміни, знайдені перед оновленням.
  • По черзі вмикайте розширення сторонніх розробників.
  • Поверніть свою тему і всебічно порівняйте результат з виробничим сервером.
  • Розгортайтеся на виробництві, як тільки будете задоволені результатом.

Висновок

Я знаю, що це звучить страшно, але якщо ви регулярно оновлюєте, зберігаючи основні в чистоті та встановлюючи розширення лише у тих постачальників, яким ви справді довіряєте, і лише якщо вони вам справді потрібні, ви не зіткнетесь із більшістю труднощів, описаних у цій статті. Зберігайте свою Magento EcoSystem здоровою, і ви отримаєте нагороду.

Post Scriptum

У дуже складних випадках має сенс почати все із нової установки найновішого Magento та поетапно перенести тему та функціональність магазину. Це, безумовно, потребує часу, але врешті-решт у вас буде здорова система Magento з повною обізнаністю про те, що відбувається.


Інший спосіб виявлення змін в основному - це використання плагіна Magento Project Mess Detector для модуля n98-magerun .
Julien Loizelet

15

Взагалі кажучи, основний код ніколи не слід чіпати під час розробки. У Magento існує багато механізмів, які дозволяють вам вирішувати будь-які проблеми, навіть внутрішні помилки. Незважаючи на це, є і інші питання, на які слід звернути увагу.

  1. Чи будь-який модуль спільноти чи локальні модулі замінює основний код (Можна шукати у папці модулів для <rewrite>, і це погана практика, оскільки вони дійсно повинні використовувати ненав'язливий код, наприклад події)
  2. Magento намагається зберегти код назад сумісним, але іноді код суттєво змінюється (його можна знайти тут ), якщо зміни, несумісні із зворотніми змінами, багато, які можуть додати процес.
  3. Чи легко / можливо дублювати код у середовищі розробки. якщо це так, просто потрібно запустити оновлення та тестування.
  4. Чи потрібне оновлення? Чи є в новій версії функції, без яких клієнт не може залишитись? Будь-які проблеми із безпекою (багато разів Magento також надає резервні виправлення)

Що стосується шаблону, то з попереднього досвіду я можу вам сказати, що він ледве ламається, якщо тільки розробник не з глузду змирився на кодування шаблону (Що в будь-якому випадку має бути в блоках).


10

Ось деякі речі, про які слід пам’ятати:

  • Перевірте, чи сумісна тема (перевірте, чи є у файлах шаблонів велике кодування - іноді це роблять молодші розробники)
  • Перевірте, як зберігаються носії (чи використовують CDN тощо)
  • Перевірте, чи є якісь спеціальні методи кешування (APC Memcached тощо)

Одним із способів обробки такого типу запиту клієнта є аналіз кошторису.

Це тягне за собою повідомлення клієнту про те, що ви витратите певний час (який можна оплатити), переглядаючи його, і надасте їм більш точні часові рамки / витрати на виконання проекту.

Перехід цього маршруту вигідний і вам, і клієнту.

Зазвичай клієнт буде відчувати себе впевненіше у вашій оцінці та поважатиме ваші рекомендації, що, у свою чергу, вам приносить користь, зменшуючи можливий стрес.

Оцінка огляду:

Фактичний огляд кошторису буде таким чином:

  • Скиньте живу базу даних та імпортуйте її на розроблювальну машину
  • Скопіюйте файли magento зі своєї живої машини на вашу машину розробки
  • Переконайтесь, що все добре і працює
  • Спробуйте здійснити оновлення та зробіть початкове тестування, щоб побачити, що може бути зламаним

Цей процес повинен тривати в середньому дві години, що підлягають оплаті, і дасть вам багато необхідного ознайомлення з системою.


1
"Скиньте живу базу даних та імпортуйте її на розроблювальну машину" - відповідність PCI щойно вистрілила в голову. Обов’язково НЕ експортуйте живі облікові дані ...
Лука А. Лебер

10

Ми зробили різні оновлення на Magento CE, найгірше - від 1,3 до 1,7, що зайняло у нас майже 4 повних дні. Початкова оцінка становила 1-2 дні. Я думаю, що модернізація з 1.x до 2.x буде таким же величезним завданням, і навіть якщо інструменти для міграції надаватиме основна команда, можливо, буде легше почати з нуля.


6

Я хочу додати одне до відмінних відповідей, наведених вище:

  • Перевірте, чи існує система VCS та правильний процес розгортання.

Я не буду робити оновлення без належних процесів за цим і можливістю відступити, коли виникають проблеми (навіть більше, якщо я раніше не працював на сайті). Близько 90% клієнтів, які звертаються до нас за оновленням Magento (які раніше не були нашими клієнтами), мають живу середу без тестування / постановки, а VCS - на місці.


6

Інтеграція з іншими суб'єктами є важливою справою. Це те, що ви, можливо, не зможете помітити, переглянувши сайт - клієнтам зазвичай доводиться мати резервні системи, що отримують замовлення через API Magento, і якщо ви не обробляєте безперервність цієї інтеграції під час оновлення може потрапити в безлад.

Переглядаючи компоненти, слідкуйте за тими, які спілкуються з іншими системами - кожна з них буде перевірена, оскільки ви не хочете випадково пересилати тестові дані до живої системи. Часто існує тестова кінцева точка, яка використовувалася оригінальними розробниками, але ви, можливо, більше не матимете цієї інформації під час оновлення.


Спасибі, це те, чого я ще ніколи не помічав, але це добре знати!
ceckoslab
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.