Magentoのアップグレードの見積もりをどのように示しますか?


63

概要:

この質問はもともと尋ねられ、後でStackOverflowで閉じられましたmetaで、この質問に適切な場所がここにあると述べました。

この質問は、Magentoのアップグレードを見積もる適切な方法を見つけるために多くの人々を支援することに賛成です。

質問:

Magentoのアップグレードに必要な時間をどのように測定しますか?ほとんどの人は、クライアントの質問に答えるのに苦労したと思います:「Magentoストアをアップグレードするのにどれくらい時間がかかりますか?」

通常、クライアントは、たとえば「X時間かかり、Yドルの費用がかかる」などの数字だけを聞く必要があります。

この質問の背後にある主なアイデアは、技術的な側面と、Magentoのアップグレードのために独自の計算を行うために開発者として何をチェックするかということです。

次のチェックリストは、自分の計算用に作成しました。

  • Magentoコアに触れていますか?
  • Magento DBスキーマは変更されていますか?
  • DBに一貫性のないデータがありますか?
  • ローカルおよびコミュニティコードプールにインストールされているカスタム拡張機能の数
  • カスタム拡張機能は、Magentoの最新バージョンと互換性がありますか?
  • テーマ開発者はレイアウトディレクティブにlocal.xmlファイルを使用しましたか、それともbase / default / layoutからカスタムテーマのレイアウトディレクトリにxmlファイルをコピーしましたか?
  • レイアウトxmlファイルに非推奨のレイアウトディレクティブ/ブロックメソッドがありますか?
  • このMagentoショップを開発しましたか?

私は何かが欠けていると思いますか?もしそうなら、チェックリストの追加のポイントを私とコミュニティに共有しますか?


比較的単純な年間収入の約0.875〜1.75%、中程度の年間収入の1.75%〜3.5%、困難な年間収入の2.625%〜5.25%。

回答:


100

Magentoのアップグレードの見積もりは、最新のインストールに適用された変更に関する情報を収集し、それらの変更が問題を引き起こす可能性があるかどうかを確認し、それらを回避するのに必要な時間を評価するプロセスです。

すべての変更は、文字通りに分割することができるコアオフにコア

コア外の変更は、アップグレードで上書きされないものです。これらは、サードパーティの拡張機能ローカルスコープ(app / code / local / Mage)に配置されたコアファイル、およびカスタムテーマです。

では、コア変更はMagentoの上で直接適用されるコアファイル(アプリ/コード/コア)、ローカライズファイル(アプリ/ロケール/ en_USの)、コアテンプレートなどいくつかのJavaScript外部ライブラリめったにそれにもかかわらず、カスタマイズされていない考慮に入れなければなりません。

コア外の変更

サードパーティの拡張機能

アップグレード中、サードパーティの拡張機能が問題の主な原因です。つまり、より多くの拡張機能を使用して、それらを分析する必要があります。

最初に確認することは、拡張機能によって提供される機能がアップグレード先のMagentoのバージョンにまだ実装されていないかどうかです。例えば、のようないくつかの拡張機能Yoast_CanonicalUrlMxperts_CustomerAddressまたはをFontis_Wysiwyg広くMagentoの1.3.xxで使用しないと古いが、今コアMagentoの機能の一部であり、もはや必要とされました。

次に、持っている拡張機能が本当に必要かどうかを確認する(顧客に尋ねる)ことをお勧めします。いくつかの拡張機能がインストールされていても、実際に使用されたことはありません。そのため、この時点で、一種のクリーンアップを行うことをお勧めします。

次に、確認する重要なことは、残りの各拡張機能とアップグレードするMagentoのバージョンとの互換性です。一部の拡張機能に互換性がなく、同様の拡張機能が利用できない場合、一部の機能を失うか、既存の拡張機能を変更して互換性を確保するかを選択できます。

注:サードパーティの拡張機能を直接変更するのではなく、古い拡張機能を拡張する新しい拡張機能を作成してから、新しい拡張機能のブートストラップXMLに依存関係を設定します。

これらすべてを実行した後、残りの各拡張機能の実際の分析を提供できます。常にetc/config.xmlファイルの検査から始まります。次の3つを確認する必要があります。

  • クラスの書き換えはそれ自体ではクリーンな手法ではありませんが、場合によっては他の方法はありません。したがって、Magentoの新しいバージョンで書き換えられたクラスが変更された場合、これは潜在的な問題になる可能性があります。
  • レイアウトの更新によりアップグレードで問題が発生する可能性は低くなりますが、拡張機能が新しいMagentoバージョンで廃止されたブロックを参照している場合は、この問題を回避する必要があります。
  • SQL更新は、アップグレード中に非常に過小評価されている問題の原因です。この問題は、サードパーティの拡張機能がデフォルトのMagentoテーブルの一部のフィールドを参照する外部キーを作成しているときに発生します。その結果、このフィールドは変更できなくなります。そして、ネイティブインストールスクリプトがこのフィールドを更新しようとすると、サイレントに失敗します。その後、このフィールドを参照する次のインストールスクリプトはすべて、アップグレードをクラッシュさせます。

app / code / local / Mage

拡張機能を使い終わったら、app/code/local/Mageディレクトリを見てみましょう。ここでは、修正されたコアファイルがlocalスコープに移動されています。そこに何が修正され、どのような理由で変更されたのかがわからないので(それらをそこに置いたのがあなたでなかった場合)、白髪が必ずかかります。そのため、それぞれをオリジンと比較し、追加された機能を新しいバージョンの対応するファイルに移行する必要があります。

カスタムテーマ

最後の一連のオフコア変更は、カスタムテーマです。これは大したことではないように見えるかもしれませんが、実際にはこれは灰色の領域です。Magentoのベーステーマはバージョンごとに変更されており、各カスタムテーマはそれらの変更の一部を模倣する必要があります。残念ながら、何を探し、何を移行する必要があるかを決定する特効薬はありません。そのため、アップグレード後にいくつかの大きな驚きと些細な不注意に備えてください。

コア内の変更

完璧な世界には何もありません。しかし、安価で多く提供しているサードパーティの開発者に悪用された後、Magentoをインストールした場合、何でも期待できます。したがって、コア内の変更は、アップグレードプロセス中に上書きされるものです。ほとんどの場合、エラーは発生しませんが、その結果、そのような残忍な方法で追加された機能は失われます。

コア内の変更を検出する唯一の方法は、Magentoインストールのすべてのファイルを同じバージョンのクリーンファイルと比較することです。gitで行うことをお勧めします。どうして?それはすべての改行と空白をうまく処理するからです。

Magentoのインストールがgitの下にない場合でも、ファイルを別のディレクトリにコピーしてからgit initを実行できます。次に、最初のコミットを行い、「クリーン」なMagentoファイルをコピーして実行しgit statusます。次のようなものが得られます。

変更されたファイルの数に応じて、git diff各ファイルまたはバッチ全体で一度に実行できます。これにより、行われたすべてのコア内変更の包括的なリファレンスが提供されます。phpStormのようなgitビジュアライゼーションがある場合、人生はずっと簡単です:

そうすることをお勧めします。git diff > changes.txt常に手作業で変更のリストを入手してください。

コアの変更のリストがあると、新しいバージョンに転送する必要があるものと、そのために必要な時間を見積もることができます。

ここで、実際のアップグレードについていくつかアドバイスをしたいと思います。このプロセスは十分に文書化されているため、実行するコマンドとクリックする場所を記述しません。ただし、いくつかの重要なことに重点を置きたいと思います。

  • 開発環境でアップグレードすることを想定しています。実稼働サーバーでアップグレードを実行することは自殺です。
  • アップグレード中は、本番環境で何も変更させないでください。Magentoをバージョン管理下に置くか、一時ファイルの書き込みを禁止します。
  • すべてのサードパーティの拡張機能を無効にしますが、最初に無効になった拡張機能をメモして、後で有効にしないようにします。
  • サーバーで実行されているMagentoクリーンアップスクリプトがあるかどうかを確認します。それ以外の場合で始まるすべてのテーブルを切り捨てdataflow_*log_*report_*
  • アップグレード時にデフォルトのテーマに戻します。

アップグレードスクリプトの完了後:

  • changes.txt実際に移行する価値があるすべてのコア内の変更を移行する前に行った参照。
  • app/code/local/Mageアップグレード前に見つかった変更を移行します。
  • サードパーティの拡張機能を1つずつ有効にします。
  • テーマを元に戻し、結果を運用サーバーと包括的に比較します。
  • 結果に満足したら、運用環境に展開します。

結論

これはすべて怖いように聞こえますが、定期的にアップグレードし、コアをクリーンに保ち、本当に信頼できるベンダーからのみ拡張機能をインストールする場合、本当に必要な場合にのみ、この記事で説明する困難のほとんどに直面することはありません。Magento EcoSystemを健康に保つと、報酬が与えられます。

ポスト台本

非常に複雑な場合は、最新のMagentoの新規インストールからやり直して、ストアのテーマと機能を段階的に移行するのが理にかなっています。これには間違いなく時間がかかりますが、最終的には、何が起こっているのかを完全に認識した健全なMagentoシステムになります。


コア内の変更を検出する別の方法は、n98-magerunのプラグインMagento Project Mess Detectorを使用することです。
ジュリアンLoizelet

15

一般的に言って、開発中にコアコードに手を触れないでください。Magentoには、内部バグなどの問題を回避するための多くのメカニズムがあります。そうは言っても、他にも注意すべき問題があります。

  1. コミュニティまたはローカルモジュールがコアコードをオーバーライドするか(モジュールフォルダーでを検索できます。<rewrite>イベントなどの控えめなコードを実際に使用する必要があるため、悪い習慣です)
  2. Magentoはコードの下位互換性を維持しようとしますが、下位互換性のない変更が多数ある場合、コードが大幅に変更されることがあります(ここで確認できます)。
  3. コードを開発環境に複製することは簡単/可能ですか?もしそうなら、単にアップグレードとテストを実行するだけで十分かもしれません。
  4. アップグレードは必要ですか?新しいバージョンには、クライアントがなくてはならない機能がありますか?セキュリティの問題(Magentoはバックパッチも提供します)

テンプレートに関する限り、以前の経験から、開発者がテンプレートコーディングに夢中にならなければ(とにかくブロックである必要があります)、ほとんど壊れないことがわかります。


10

留意するべきいくつかの事柄はここにあります:

  • テーマに互換性があるかどうかを確認します(テンプレートファイルに広範なコーディングがあるかどうかを確認します-ジュニア開発者がこれを行うことがあります)
  • メディアの保存方法を確認します(CDNなどを使用していますか)
  • 特別なキャッシュ方法が設定されているかどうかを確認します(APC Memcachedなど)

このタイプのクライアントリクエストを処理する1つの方法は、見積もりの​​レビューを行うことです。

これには、クライアントに、(請求可能な)時間を費やしてプロジェクトを実行するためのより正確な時間枠/コストを与えることを伝える必要があります。

このルートに行くことは、あなたとクライアントの両方に利益をもたらします。

通常、クライアントは見積もりに自信を持ち、推奨事項を尊重します。これにより、考えられるストレスが軽減されます。

レビューの見積もり:

実際の見積もりレビューは、次のようなものになります。

  • ライブデータベースをダンプし、開発マシンにインポートします
  • magentoファイルをライブマシンから開発マシンにコピーします
  • すべてがうまく機能していることを確認してください
  • アップグレードを試みて、初期テストを実行して、何が壊れているのかを確認します

このプロセスには平均2時間の請求が必要であり、手元のシステムについて必要な多くの洞察が得られます。


1
「ライブデータベースをダンプし、開発マシンにインポートします」-PCIコンプライアンスが頭にありました。してくださいませ ...ライブの資格情報をエクスポート
ルークA.レーバー

10

Magento CEでさまざまなアップグレードを行いましたが、最悪の場合は1.3から1.7になり、ほぼ4日間かかりました。最初の見積もりは1〜2日でした。1.xから2.xへのアップグレードも同様に大きな仕事になると思います。たとえ移行チームがコアチームから提供されたとしても、ゼロから始める方がクリーンかもしれません。


6

上記の優れた回答に1つ追加したいことがあります。

  • VCSと適切な展開プロセスが整っているかどうかを確認します。

適切なプロセスと、問題が発生したときに後退する可能性がない限り、アップグレードを実行しません(以前にサイトで作業していなかった場合でも)。Magentoのアップグレードのために私たちに近づいているクライアントの約90%(以前はクライアントではありませんでした)は、テスト/ステージング、VCSがまったく整っていないライブ環境のみを持っています。


6

他のエンティティとの統合は、重要な質問です。これは、サイトを見ても見つけることができないかもしれません-たとえば、クライアントがバックエンドシステムにMagento APIを介して注文を取得させ、アップグレード中にその統合の継続性を処理しない場合混乱する可能性があります。

コンポーネントを確認するときは、他のシステムと通信するコンポーネントに注意してください。テストデータを誤って稼働中のシステムにプッシュしたくないので、これらはそれぞれテストが困難です。多くの場合、元の開発者によって使用されたテストエンドポイントが存在しますが、アップグレード時にはその情報がもうない場合があります。


ありがとう
ceckoslab
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.