最適な展開戦略は何ですか?


82

Magentoストアのセットアップは、自己インストール可能な拡張機能の開発だけでなく、最終編集属性、カテゴリ、製品、価格ルールCMSページなどの作成など、多くの「手動入力」操作も必要です。システム構成の変更。

Magentoストアを開発環境からステージング環境および実稼働環境に展開する際の最善の戦略を概説してください。

私の戦略の1つは、上記のエンティティをプログラムで作成する「デプロイモジュール」を作成することですが、それは非常に時間のかかるタスクであり、時には少しやり過ぎのように思えます。

最近、管理タスクを再現するためにSelenium IDEを使用し始めましたが、すべてのテストスイートのセットアップに必要な時間は、上記のものからそれほど遠くありません。

たぶん最適なソリューションは、Magentoシステムのスナップショットを作成できるモジュールを使用して、展開するものを選択できるようにすることです。

そう:

  • 展開の戦略は何ですか?
  • Magentoシステムのスナップショットを作成して、展開するものを選択できるモジュールはありますか?
  • そのようなモジュールが存在せず、そのようなモジュールが合理的なソリューションである場合、開発に貢献することに興味がある人はいますか?

ありがとうございました!


これは、別のタグまたはタグカテゴリの必要性を示している場合があります。あなたは一度きりの店ですか、またはサービスプロバイダーとして一般的な提案を探していますか?後者の場合、「クライアントがエンティティデータに対してどの程度の制御を望んでいるかに依存する」と答える必要があります。
ベンチマーク

私の視点は、開発チームに属する開発者の一人です。カテゴリ構造など、機能するためにいくつかのデータを必要とするセクションを開発しているとします。Adminで構造を作成し、コードを実行してコードをプッシュします。最善の戦略は、必要なカテゴリ構造を作成するコードを記述してプッシュすることでもあるのかと思っています。自分のカテゴリ構造や設定が、独自のプッシュを行った他の開発者のカテゴリ構造や設定と競合する場合はどうなりますか?競合を処理するにはどうすればよいですか?それが私のポイントです。
アレッサンドロロンキ

@AlessandroRonchiこれは論争点であり、決して起こらないはずの衝突です。カテゴリ構造は軽微に変更されるものではないため、ある開発者は、他の開発者に気付かれずに、構造に大きな変更を加えるべきではありません。これが発生した場合、開発者間のコミュニケーションに対処する必要があります。通常、サイトのカテゴリ構造は初日から固定する必要があり、再度変更する必要はなく、追加するだけです。変更する必要がある場合は、最初に正しくスコープしませんでした。
ProxiBlue

残念ながら、@ dedmeetは、私が知っている世界では、日々状況が変化しています。顧客は心を変え、開発者は心を変え、黒い白鳥が発生します。変更に備えなければなりません。とにかく、初日からカテゴリ構造を変更する必要がない場合でも、それは全体のほんの一部であり、全体は物事を成し遂げるために変更される「進行中の」プロジェクトです。
アレッサンドロロンキ

確かに、私たちは絶えず変化する環境で仕事をしていますが、カテゴリ構造の競合は起こらないはずです。それぞれが構造を変更する場所に複数のブランチが存在するべきではありません。それは単に問題につながり、開発時間の無駄になります。dev bが構造変更に時間を費やすのに、dev bは同じことを別の構造に行っているのに、なぜ彼らは仕事を進めているのですか?構造を変更する必要がある場合、プロジェクトに関与するすべての開発者は、新しい構造をスコーピングするプロセスに関与する必要があります。これがいつ起こるかを理解するのに役立つ例を提供できますか?
ProxiBlue

回答:


39

私の意見は、すべてをスクリプト化することです。私は通常、特定のモジュールに機能的に直接関係しないもののための基本構成モジュールを持っています。(たとえば、以前のサイトのURLを新しいサイトのURLに書き換えるカスタムURLを作成する)、モジュールに関連するものを独自のインストールスクリプトに追加します。

この背後にある考え方は、新しいデータベースを使用してサイトを再インストールする必要がある場合、すべてが元の状態に戻るということです。これは、ライブデータベースのコピーでuatサイトを定期的に更新するという事実にも役立ちます。その後、uatのモジュールは、構成に再びスロットが入るように機能し続けます。

郵便料金、カート規則など(基本的にクライアントが管理者自身で管理するもの)の変更は「揮発性データ」とみなされ、スクリプト化されません。これには製品データが含まれます。クライアントにはオプションがあり、最初にuatサイトで新しいインポートをテストすることをお勧めします。

クライアントは、属性を作成せず、チケットリクエストを介して属性を作成するように指示されます。これにより、クライアントが属性をどのように意図しているかに関する情報を収集することもできます。時には、より良い提案があるか、または存在する属性に加えて、選択可能な属性にハンドルを持っているので、より良いコードを作成して、データを確認できます掃除。

はい、スクリプト作成には時間がかかりますが、後でサイト全体の構成設定を手動で再作成するのにかなり時間がかかります。また、何かを忘れてサイトが正常に機能しなくなったり、重要な構成設定が欠落しているローカルサイトで新しい開発者が動作したりすると、困惑する可能性があります。


1
私はdedmeetに同意します。すべての更新をスクリプト化する方法を最初に学ぶとき、それは最初の作業よりも多いかもしれませんが、3-4人の開発者、ステージング、uat、およびliveに手動で構成更新を適用する必要がある場合、調整と実際の作業にはるかに時間がかかります。私たちのワークフローは非常に似ています:(再利用可能な)拡張機能に設定が必要な場合は、そこに配置します。構成がクライアント固有の場合、プロジェクト固有の拡張機能に配置します。いくつかの例外の1つは、更新/作成がまったく楽しくないカートルールです。
マティアスツァイス

1
必要な構成スクリプトの作成に役立つモジュールをリリースするだけで、インストールスクリプトを手動で作成しなければならない面倒な作業がなくなります。このモジュールは、core_config_dataテーブルのグリッド表示を使用して、エクスポートする構成値の選択を可能にします。私の人生をもう少しシンプルにし、他の人にも役立つことを願っています。proxiblue.com.au/blog/magento-config-data-generator
ProxiBlue

27

1
ありがとう、私はそれらのすべてを読み、いくつかの考慮事項とともに戻ってきます。
アレッサンドロロンキ

私はすべてのリソースを読みました。私はすでにそれらのいくつかを知っていました、私が知らなかった他のものは非常に面白いです。とにかく、それらのどれも私の問題の解決策ではないので、私は私のニーズを満たすためにしようとする拡張機能をスケッチすることにしました。貴重なアドバイスをくれた皆さんに感謝します。ここに戻っていくつかの結果が得られることを期待しています。
アレッサンドロロンキ

親愛なるアレッサンドロ、あなたのやり方を見たいです。私ももっと快適なテクニックを探しています!
オグズチェリクデミル

18

さまざまな環境の同期を維持するという問題を解決することを目的として、「Mageploy」と呼ばれる拡張機能を開発するよう促されたため、皆さんに感謝します。

http://www.mageploy.com

Mageployは、いくつかの利点があるいくつかのプロジェクトで既に使用している場合でも、拡張し、十分に文書化し、完全にテストする必要があります。

それはオープンソースであり、助けや提案は歓迎されます。

よろしく


7

インストールスクリプトとエンティティの作成に関して、私の一般的な感じは、モジュールで必要または期待される場合、インストールスクリプトの一部として作成する必要があるということです。

最近、開発/ステージ/プロダクションの観点から、ステージングサイトをコンテンツのデータベースのマスターコピーとして使用します。これは、クライアントがコラボレーションできることを意味します。過去に、おそらく私たちが遭遇した最大の問題は、特に製品のアップロードに関して、クライアントとコンテンツエントリを調整することです。

スナップショットはどのように機能すると思いましたか?理想的な世界では、特定のタイプ(製品、カテゴリ、CMSなど)の2つのデータベース間の差分を表示し、変更を相互にマージできるツールがあると思いますが、それ。


1
「スクリプトのインストールとエンティティの作成に関して、私の一般的な感じは、モジュールで必要または期待される場合、インストールスクリプトの一部として作成する必要があるということです。」これは考慮すべき最も重要なポイントであり、構成設定に適用されます。私の簡単なテスト:リポジトリのクローンを作成して環境をインストールするために新しい開発者が必要な場合、システムが機能するために何が必要ですか?
ベンチマーク

ステージングサイトをクライアントと共有して構成を共同で行うことは、理論的には素晴らしいことです。実際には、クライアントは、99%の時間変化したことをすべて教えてくれるわけではありません。クライアントがカートのルール、カテゴリ、製品などとして作業することを許可する場合がありますが、設定を妨げることはできません。
マティアスツァイス

6

私の意見では、属性、カテゴリ、製品、価格ルールの作成と編集は「展開戦略」とは関係ありません。これらのアイテムはすべてお店に非常にユニークであり、ほとんどの場合、製品の適切な分析と研究が必要です売ろうとしています。

言及したすべての要素の同様の構成で「すべてに適合する」ショップを作成している場合、すべてのショップに必要なすべてのセットアップを行った後、データベースの「スナップショット」エクスポートを行うことができます。


いいえ、「1つのサイズですべてに対応」がポイントではありません。開発者として、ソースコードを開発チームの別のメンバーの1つとマージするときと同じ状況です。その場合、魔法を行うソース管理システムがあります。私の質問は、構成設定や一般的な管理者設定やエントリなどの「開発者以外」のものをマージする機会にもっと関連していました。
アレッサンドロロンキ

ああ、それはより明確になります
ラトガー

完全に新しいWebサイトを作成しているため、古いデータなどの問題はほとんどありません。ほとんどすべての開発者が開発に同じデータベースを使用しています。それは多くの問題を解決します。他のケースでは、何らかのロードマップ/スクリプトに必要なすべての手順を書き、マージ後にすべてを再度適用するよりも良い解決策はありません(まだ)。「magentoコア」管理設定の責任者が1人だけの場合、これらの設定は多くの手順で行われるべきではありません。私はかつてこれを見つけましたが、tinybrick.com / magento
ラトガー

2

2つの優れた時間節約ツールを追加したいと思います。

  • 開発用:Magicentoプラグインを使用したPhpStorm IDE
  • 展開:Magentify、MagentoのCapistranoレシピ

Magentifyについてご連絡いただきありがとうございます。私はそれを知りませんでしたので、試してみます。ただし、コードベースを公開するという意味での展開よりも、異なる開発環境の同期に重点を置いています。MageployはMagentifyと統合できますが、異なるツールであり、異なる環境間で異なる特定のIDに関係なく、データベースの変更の一部を自動的に調整するために使用されます。心から、アレッサンドロ
アレッサンドロロンキ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.