Яка найкраща стратегія розгортання?


82

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

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

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

Нещодавно я почав використовувати Selenium IDE для відтворення завдань адміністратора, але час, необхідний для налаштування всіх тестових наборів, недалеко від зазначеного вище.

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

Тому:

  • яка ваша стратегія розгортання?
  • чи є модуль, здатний зробити знімок системи Magento, що дозволяє вам вибрати, що розгорнути?
  • якщо такий модуль не існує, і якщо такий модуль є розумним рішенням, чи є хтось зацікавлений у тому, щоб дати свій внесок у його розвиток?

Дякую!


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

Моя точка зору - це розробник, який належить до команди розробників. Припустимо, я розробляю розділ, для якого потрібні деякі дані, наприклад структура структури. Я створюю структуру через Admin, роблю код і натискаю свій код. Мені цікаво, чи найкраща стратегія - це також написати та нажати код, який створює необхідну структуру категорій. Що робити, якщо структура моїх категорій чи налаштування конфліктують з тими, якими користуються інші розробники, які підштовхнули свої власні? Як вирішувати конфлікти? Це моя суть.
Алессандро Рончі

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

@dedmeet, на жаль, у світі, якого я знаю і працюю, все змінюється щодня; клієнти передумають, розробники передумають, трапляються чорні лебеді. Я маю бути готовим до змін; у будь-якому випадку, навіть якщо структуру категорій не потрібно змінювати з першого дня, це лише невеликий фрагмент всієї частини, і вся частина - це проект "незавершене виробництво", який, як передбачається, зміниться для того, щоб все можна було виконати.
Алессандро Рончі

Ок, дано, ми працюємо в умовах постійно мінливих умов, але я все одно вважаю, що конфлікт структури категорії не повинен відбуватися. Не повинно існувати декількох гілок, де кожна змінює структуру, що просто призведе до проблем та марнотратського часу. Чому розробник витрачає час, змінюючи структуру, в той час як dev b робить те ж саме, для іншої структури, і вони обидва підштовхують свою роботу? Якщо структура повинна змінитися, усі розробники, що беруть участь у проекті, повинні бути залучені до процесу розробки нової структури. Чи можете ви надати приклад, щоб допомогти мені зрозуміти, коли це може статися?
ProxiBlue

Відповіді:


39

Моя думка - це все це сценарій. Зазвичай у мене є базовий конфігураційний модуль для всього, що функціонально не пов'язане безпосередньо з певними модулями. .

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

Зміни тарифів на оплату поштових відправлень, правила кошика тощо (в основному такі, що клієнти здійснюють в адміністраторі) вважаються "нестабільними даними" і не розписуються. Сюди входять дані про товар. Клієнт має можливість, і рекомендується спочатку перевірити новий імпорт на сайті uat.

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

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


1
Я згоден з dedmeet. Коли ви вперше дізнаєтесь, як скриптувати всі оновлення, це може бути більш початковою роботою, але якщо вам доведеться застосувати оновлення конфігурації вручну для 3-4 розробників, інсценування, uat та live, координація та реальна робота забирає набагато більше часу. Наш робочий процес досить схожий: якщо конфігу потрібно для (багаторазового) розширення, покладіть його туди. Якщо конфігурація залежить від клієнта, введіть його в розширення, що відповідає проекту. Одне з небагатьох винятків - правила кошика, які зовсім не цікаво оновлювати / створювати.
Маттіас Зейс

1
Я просто випускаю модуль, який допомагає створити необхідний скрипт конфігурації, тим самим усуваючи повсюдну роботу від необхідності вручну створити сценарії встановлення. Модуль використовує сіткове відображення таблиці core_config_data, щоб дозволити експортування значень конфігурації. Зробіть моє життя просто трохи простішим, і я сподіваюся, що це спрацює для інших. proxiblue.com.au/blog/magento-config-data-generator
ProxiBlue

27

1
Дякую, я їх прочитаю і повернусь з деякими міркуваннями.
Алессандро Рончі

Я прочитав усі дають ресурси; Деякі з них я вже знав, інші, яких я не знав, дуже цікаві. Жоден із них не є вирішенням моєї проблеми, і я вирішив намалювати розширення, яке намагатиметься виконати мої потреби. Дякую всім вам, що дали мені дорогоцінну пораду. Я сподіваюся повернутися сюди з деякими результатами.
Алессандро Рончі

Шановний Алессандро, я хотів би побачити ваш спосіб, який я виглядаю і більш комфортною технікою!
Oğuz Çelikdemir

18

Я хотів би подякувати всім вам за те, що ваші міркування надихнули і підштовхнули мене розробити розширення під назвою "Mageploy" з наміром вирішити проблему підтримки синхронізації різних середовищ.

http://www.mageploy.com

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

Це відкритий код, і будь-яка допомога чи пропозиція буде оцінена.

З повагою


7

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

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

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


1
"Що стосується встановлення скриптів та створення об'єктів, моє загальне відчуття полягає в тому, що якщо модуль цього вимагає чи очікує, він повинен бути створений як частина сценарію встановлення." Це найбільш важливий момент, який слід врахувати, і стосується налаштувань конфігурації. Мій швидкий тест: коли мені потрібен новий розробник для клонування репо і встановлення середовища, що потрібно існувати, щоб система працювала?
орієнтири

Спільний доступ до веб-сайту, що працює з клієнтами, для співпраці в налаштуваннях - це теоретично. На практиці клієнти не розповідають вам все, що вони змінили 99% часу, що полегшує щось викрутити. Ми можемо дозволити клієнтам працювати над такими предметами, як правила, кошики, продукти чи подібне, але ми не дозволяємо їм заважати конфігурації.
Маттіас Зейс

6

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

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


Ні, "один розмір підходить усім" не в цьому справа; це та ж ситуація, в яку ми, як розробники, потрапляємо, коли прийшов час злити наш вихідний код з іншим членом команди розробників: у цьому випадку у нас є системи управління джерелами, які роблять магію. Моє запитання було більше пов'язане з можливістю злиття "non-dev" речей, таких як налаштування конфігурації та типові параметри адміністратора та записи.
Алессандро Рончі

Ну добре, це робить більш зрозумілим
Rutger

Скажімо, ми створюємо цілком новий веб-сайт, тому жодних проблем зі старими даними тощо. Майже весь час усі наші розробники використовують одну і ту ж базу даних для розробки. Це вирішує багато проблем. Для інших випадків у мене немає кращого рішення (поки), ніж виписати всі кроки, необхідні в якійсь дорожній карті / сценарії, і повторно застосувати їх після об'єднання. Якщо за налаштування адміністратора "magento core" відповідає лише одна людина, це не повинно бути багато кроків. Я колись це знайшов, але ніколи не пробував це tinybrick.com/magento-modules/admin-tools/…
Rutger

2

Я хотів би додати два чудових інструменти економії часу:

  • Для розробки: PhpStorm IDE із плагіном Magicento
  • Для розгортання: Magentify , рецепт Capistrano для Magento

Дякую, що повідомили нам про Magentify, я цього не знав, і спробую. Хоча я зосереджувався більше на синхронізації іншого середовища розробки, ніж на розгортанні в сенсі публікації кодової бази. Mageploy може бути інтегрований з Magentify, але це інший інструмент, який використовується для автоматичного вирівнювання частини змін у базі даних, незалежно від конкретних ідентифікаторів, які відрізняються між різними середовищами. З повагою, Алессандро
Алессандро Рончі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.