WordPressプラグインとテーマ開発者向けの段階的なロールアウト:「Clusterbugリリース」の回避
公開: 2020-12-23WordPressプラグインまたはテーマの新しいバージョンを最後にリリースしたときに、テストシーケンスのクラックをすり抜けた新しい主要なバグを誤って追加したことをすぐに発見したことを覚えていますか?
Yoast SEO 3.0は、2015年に多くのWebサイトを壊しました。Elementor3.0は、今年も同じことをしました。 そして、これらは、100人以上の従業員と専任のQA担当者がいる、私たちのスペースの素晴らしい企業の頭から離れた2つの例にすぎません(いいえ、バージョン3.0とは関係ありませんが、ソフトウェアでそのバージョンをスキップする兆候かもしれません; ))。
あなたが独学のコーダーであろうとソフトウェアエンジニアであろうと、インディー開発者であろうと、大規模なプラグイン/テーマショップの一部であろうと、私たちは皆バグに対処しなければなりません。 それはソフトウェア開発の必然的な部分です。
どのような高度なCI/CD /テスト自動化を導入しても、すべてをテストすることはできません。 サーバー構成(PHP、MySql、キャッシング、Webサーバー)、WPバージョン、プラグインとテーマの組み合わせなどの数はすべて無限です。
そして、それは直感に反します。 製品の人気が高く安定しているほど、恐ろしい「Clusterbug」リリースの可能性が高くなり、サポートが失われ、顧客の信頼と忠誠心に大きな影響を与え、ブランド全体の評判を損なう可能性があります。
バグを回避することはできませんが、リスクを可能な限り軽減することはできますし、間違いなく軽減する必要があります。
スマートフォンをお持ちの場合は、友達の中にはAndroid / iOSのアップデートを数日、数週間、場合によっては数か月前に入手していることに気付いたと思います。 それは偶然ではありません、そしていいえ、それはあなたに対して個人的なことではありません。 これは、段階的ロールアウトと呼ばれる意図的なプログレッシブ展開プロセスであり、Appleなどの企業が主要なソフトウェアアップデートを10億台を超えるデバイスに出荷するのに役立ちます。
はい、10億!
ライブアップデートを同時に15億台のモバイルデバイスにプッシュしなければならない場合、Appleのバージョンリードが彼らの肩に負う責任の大きさを理解することさえできますか? できません。 私は、正気の人がそのような責任を負うことに同意しないだろうに違いない。
では、段階的ロールアウトメカニズムはどのように機能しますか? どのようにそれを実装できますか? そして、WordPress.orgは何を待っていますか? これらは、以下で取り上げるトピックです。
WordPressプラグインとテーマの段階的なロールアウトとは何ですか?
段階的ロールアウトでは、新しいバージョンをロールアウトするWebサイトの数(またはパーセンテージ)を指定できます。 段階的ロールアウトメカニズムを使用すると、限られた露出でリリースサイクルを開始し、サポートとフィードバックを監視しながら段階的にリリースサイクルを増やすことができます。これにより、あなたとユーザーのリリースに対する信頼を築くことができます。
段階的ロールアウトの利点は何ですか?
潜在的なバグのリリース、サードパーティのプラグイン/テーマとの競合、またはUI / UXの問題でインストールベース全体を危険にさらす代わりに、バージョンを段階的にリリースして、予期しない問題にさらされる人やWebサイトの数を最小限に抑えることができます。 ロールアウトプロセス中に発見されたすべての問題とバグを解決すると、ユーザーの大多数が「成熟した」はるかに安定したバージョンにさらされるようになります。
新しいリリースの品質を確保するために、ローリングアップデートを使用しています。 新しいリリースに問題がある場合は、すぐに特定でき、影響を受けるのはごく一部のユーザーのみです。
SeedProdの創設者であるJohnTurner
段階的ロールアウトの使用は、責任を持ってソフトウェアをリリースするためのベストプラクティスです。これは、WPバブル以外の多くの企業(規模に関係なく)が従うプロセスです。
WordPressコミュニティには、段階的ロールアウトを利用する大きな機会があります。これについては、後で説明します。
ベータプログラムは段階的なロールアウトに似ていますか?
WordPress製品のベータプログラムを設定することは素晴らしいスタートですが、段階的なロールアウトほど効果的ではなく、根本的に異なる目的とダイナミックさを持っています。
プラグインまたはテーマが非常に人気があり、コミュニティが大きい場合を除いて、参加に関心があるのはごく一部のユーザーのみであるため、統計的に十分なベータグループを採用することは非常に困難です。 ベータテスターのまともなグループを採用することに長けているとしても、製品をテストするために彼らの可用性と善意に頼らなければならず、そして彼らが見つけた問題を報告するために余分な努力をすることを望みます。
このプロセス全体を通して何人の人が見られると思いますか? 多くはありません。
ベータテストは、サポートの取り組みが完全に制御され、テスターがベータリリースで問題が発生することを予期する実稼働前のプロセスです。 したがって、品質に関するテスターの期待は、ユーザーベースの一般的な感情を表すものではありません。
さらに、責任あるベータプログラムは、実稼働環境でベータバージョンを使用しないようにテスターに警告するため、ベータテストは実際の実稼働Webサイトをシミュレートしません。
WordPressプラグインまたはテーマの段階的なロールアウトリリースを管理する方法は?
段階的ロールアウトに関する調査の一環として、Amir Helzerにe-meetし、1,000,000を超えるWordPressWebサイトで実行されているプラグインであるWPMLとToolsetで段階的ロールアウトを使用した2年以上の経験から学ぶ機会がありました。
Amirが段階的ロールアウトの実装について共有したことは次のとおりです。
ウェブサイトがプラグインのいずれかをインストールするとき、1から100までの乱数を描画し、それをサイトのデータベースに保存して覚えておきます。 この方法では、基本的にWebサイトをランダムに100個のビンに分割します。
リリースを公開する準備ができると、選択した1つのビンでのみ段階的に利用できるようになります。 毎日、指定されたビン内のWebサイトの追加の5%へのリリースの露出を増やします。 そして、今後の問題を修正してパッチを適用します。
更新されたバージョンを使用して環境を多様化し、同じ初期リリースの「犠牲者」が繰り返し発生しないようにするために、Amirは、すべての新しいリリースが最初に異なるユーザーのビンに送られることを確認しました。
このアプローチは、平均的なリリースサイクルがすべてのユーザーに利用可能になるまでに約1か月かかることも意味します。
WP Adminで利用可能な新しいリリースが表示され、バージョンが更新されるまでには時間がかかります。 そして、彼らがそうした後でも、彼らが問題を発見するまでに数日かかることがあります。
私たちのオーディエンスのサイズでは、必然的に、すべてのリリースにいくつかの問題があります。 私たちの主な目標は、新しい問題の発生を回避することです。発生した場合、それらを解決するための信頼できるプロセスがあります。
リリースサイクルは確かに長いですが、最悪のシナリオで、テストで見逃したクレイジーなバグがあったとしても、ユーザーの95%は、リリースにさらされていないため、すべてのドラマに気づいていません。安定するまで。
Amirはまた、リリース前にチーム全体、特にカスタマーサポートと開発と同期することの重要性を強調しました。 このようにして、チームメンバーは、有効な問題を確認、確認、修正し、パッチをできるだけ早くリリースすることを目的として、進行中のリリースに関連する問題が原因でトリガーされたチケットにさらに焦点を当てることができます。
チームには3つのサポート層があります。 Tier 1は問題を調べ、プラグインのリリースに関連する問題であることを再現して検証します。 ケースが新しいリリースに関連していると思われる場合は、Tier 2に進み、問題をデバッグして、実際にリリースに関連していることを検証し、問題をトリガーするコード内の関連部分を特定します。 検証された場合、そのコードを担当する開発者は、修正を優先するようにすぐに通知されます。
OnTheGoSystemsは約100人の従業員を抱える大企業であるため、段階的展開プロセスを完成させたことは理にかなっています。 ただし、サポート層が1つ(あなたとあなた自身)の単一の製品開発者であっても、Amirの洞察から、リリースに専用のリソースを割り当てることが重要であることがわかります。 新しいリリースに関連するように「匂い」さえするサポートチケットに優先順位を付け、新しい問題からの露出を可能な限り減らすことをお勧めします。
段階的なロールアウトをサポートするプラグインやテーマが(ほとんど)ないのはなぜですか?
この記事を書く準備として、私はコミュニティに、彼らの経験や学んだことなどについてのフィードバックを得るために、段階的なロールアウトを利用しているのは誰かを確認するように依頼しました。
当然のことながら、リリースサイクルの一部として段階的ロールアウトを設定しているWordPress会社はネットワーク内に2社しかありませんでした。 多くの開発者はその概念さえ知らず、他の開発者は配布ソリューションがそれをサポートしていないため(または開発を考えていて時間がないため)、それを使用していません。
Freemiusを介して販売していないほとんどのプラグインおよびテーマ開発者は、EDDまたはWooCommerceを介してWebサイトから販売します。これらは、どちらも段階的ロールアウトをサポートしていません。 CodeCanyonやThemeForestのようなマーケットプレイスで販売している人も、すぐに使えるソリューションを持っておらず、おそらく決して持っていないでしょう。
この概念を知っている開発者でさえ、段階的ロールアウトをサポートする独自のメカニズムを開発する以外に選択肢はありません。 このインフラストラクチャの開発は、通常、製品会社内で優先順位を付けるのが非常に困難です。
購読して、無料のコピーを入手してください
WordPressプラグインビジネスブック
サブスクリプションエコノミーで繁栄するWordPressプラグインビジネスを作成する正確な方法。
友達と共有する
友達のメールアドレスを入力してください。 スカウトの名誉であるこの本だけをメールで送ります。
共有していただきありがとうございます
素晴らしい-「WordPressプラグインビジネスブック」のコピーが送信されました。 私たちがもっと言葉を広めるのを手伝いたいですか? 続けて、その本を友達や同僚と共有してください。
購読していただきありがとうございます!
-「WordPressプラグインビジネスブック」のコピーをに送信しました。
メールにタイプミスがありますか? メールアドレスを編集して再送信するには、ここをクリックしてください。
段階的な展開はどのように商業的優位性をもたらしますか?
現時点では、段階的ロールアウトを利用する人はほとんどいないため、段階的ロールアウトを利用し始め、ウェブサイトで適切に販売して、責任あるリリースサイクルがあることを訪問者に知らせると、確実に競争力が高まり、製品への信頼が高まります。 /ブランド!
開発者の観点から市場を分析すると、多くの開発者が競合他社を厳密にフォローし、通常、垂直方向の市場の価格範囲内に価格を設定していることに気付くでしょう。これにより、同じ価格帯で同様の機能を提供する競合するWordPress製品につながります。
購入者の観点からすると、それは、すべての製品が同等の機能と価格設定を備えているため、購入する製品についての議論が多いことを意味します。 しかし、同じコストで、同じ機能を備えた複数のプラグインを評価する場合、製品リリースが競合他社よりも安定していることを知って、段階的ロールアウトを提供する製品を使用する傾向がありませんか?
段階的な展開により、製品とビジネスへの信頼が高まります。 これは、段階的ロールアウトが標準的なプラクティスになる前に利用できるエッジです(私は彼らがそうすることを本当に望んでいます)。
Freemiusは、有料プラグインとテーマの段階的なロールアウトをサポートするようになりました
プレミアムWordPressプラグインとテーマエコシステムの段階的ロールアウトのパイオニアに興奮しています。 販売パートナーは、ユーザーやサポート/開発リソースへのブローバックを最小限に抑えながら、安全に、自信を持って、確実にアップデートをリリースできるようになりました。
特に「Clusterbug」リリースの後にブランドに悪影響を与える潜在的なリスクが常にあるため、メジャーリリースがいかに困難で神経質になる可能性があるかを知っています。
段階的ロールアウトを実施すると、パートナーのブランドの持続可能性と防御性にセーフティネットが導入され、大規模なユーザーベースへのリリースに伴う不要なストレスが軽減されます。
これは、パートナーのお客様にとってのメリットとして密接に関連しています。 ユーザーがFreemiusを通じて販売された製品を購入すると、段階的ロールアウトを利用したソリューションを選択していることを確信でき、メカニズムを利用したプレミアムプラグインやテーマからのより安定したリリースを期待できます。
Freemiusで販売している場合は、段階的ロールアウトメカニズムを適切に使用する方法を次に示します。
Freemiusは段階的なロールアウトをどのように実装しましたか?
プレミアムプラグインまたはテーマのロックを解除するライセンスをアクティブ化するすべてのWebサイトは、データベースにレコードを取得します。 最初に行ったのは、新しいlast_served_update_version
プロパティを導入して、Webサイトで利用できるようになった最新の製品バージョンを保存することです。
次に、リリースデータの保存を担当するテーブルを、 limit
、 uniques
の2つの新しいプロパティで強化しました。
開発者がバージョンにリリース済みのフラグを立てると、次のダイアログが表示され、有料バージョンを展開するアクティブなライセンスを持つWebサイトの割合(または数)を設定できます。
限定リリースのロールアウトを設定した場合、システムはアクティブなライセンスを持つアクティブなWebサイトの総数をカウントし、それに応じてリリースの新しいlimit
プロパティを設定します。
最後に、新しいリリースがあるかどうかを確認するためにWebサイトによって呼び出されるAPIエンドポイントを更新し、次のロジックを導入しました(擬似コード)。
latest_version = load latest version of product X If (website is on latest_version) return “no new version” If (last_served_update_version of website same as latest_version) return “no new version” If (latest_version is limited) If (latest_version is limited AND uniques >= limit) return “no new version” previous_version = load the previous version of product X If (previous_version is limited too AND uniques <= previous_version.uniques) If (website not using previous_version AND last_served_update_version different from previous_version) return “no new version” else If (random({true, false}) ) return “no new version” Set last_served_update_version of website to latest_version Increment uniques by 1 return latest_version
このアルゴリズムにより、次のことが保証されます。
- リリースの露出は、ロールアウトの設定されたパーセンテージに従って制限されます。
- 以前のバージョンがまだステージングされている場合、つまり、インストールベース全体に公開されていない場合、以前のステージングされたリリースを受け取ったWebサイトは、最初に最新のステージングされたリリースに公開されます。
各リリースが論理ビンを使用してインストールベースの異なるサブセットに移動することを保証するWPMLの段階的ロールアウトアーキテクチャとは異なり、私たちの実装はランダム性に依存しています。 したがって、Webサイトは、2つの連続したリリースサイクルで2つの初期段階のリリースを取得する場合があります。 ただし、このアプローチの利点は、SDKの更新をプッシュする必要なしに、段階的ロールアウトをすべてのパートナーの顧客に出荷できたことです。これは、すべての顧客に伝達するのに数か月、場合によっては数年かかる場合があります。
WordPressの将来にとって段階的なロールアウトが不可欠なのはなぜですか?
WPMLリリースサイクルの段階的ロールアウトを開発するきっかけは何だったのかをアミールに尋ねたところ、これが彼の話です。
3年前、WordCamp Europeで、私はWPMLの顧客とチャットして、彼らの全体的な経験に関するあらゆる種類のフィードバックを収集することに時間を費やしました。 私が見つけた一番のフラストレーションは、プラグインが予期せずサイトを壊してしまう可能性があるため、お客様がプラグインを更新することを恐れていたことです。
アミールヘルツァー、
OnTheGoSystems(WPML、ツールセット)の創設者
私は絶対にそれに関係しています。
プラグインとテーマの更新に関するFreemiusの内部ポリシーは、…単純にしないでください。 2つの例外を除いて:既知のセキュリティ問題またはサイトに必要な新しいバージョンで利用可能な機能がある場合。
私たちの更新ポリシーは、更新がうまくいかず、予期しない頭痛や時間の浪費を引き起こし、私たちの運用とタイムラインを中断させたいくつかの事件の後に「血によって書かれた」ものでした。 はい、ステージング環境でストレスの一部を回避することはできましたが、それでも本番環境への更新を追求したい場合は、時間と手間を節約できませんでした。
それ以来、WordPressは少し進化し、プラグインの障害が自動的に非アクティブ化されるようになりました。 ただし、それはテーマには当てはまらず、当社のWebサイトのミッションクリティカルなプラグインの非アクティブ化は依然として大きな問題です。
要するに、私がプラグイン開発者であり、何千ものプラグインとテーマの開発者がビジネスを成長させるのを支援する会社のCEOとして、サイトのプラグインやテーマを更新するたびにサイトを壊すことを心配している場合、それは確かに意味しますほとんどのユーザーは、私たちのスペースでソフトウェアを更新することに自信がありません。
段階的なロールアウトの欠如は、私たちとWPエコシステム全体を抑制し、SaaSベースの競合ソリューションにかなりの利点をもたらします。 WiXとShopifyのユーザーは、アップデートについてまったく考える必要はありません。 更新はバックグラウンドで行われるだけであり、ソフトウェアは常に最新で、セキュリティと機能の面で優れています。
段階的なロールアウトの欠如は、WPエコシステム全体を抑制し、SaaSベースのソリューションにかなりの利点をもたらします。 WiXとShopifyのユーザーは、ソフトウェアの更新について考える必要はありません。それらはバックグラウンドで発生するだけです。ツイート
先週のStateofthe Wordを見たなら、WordPressの共同創設者であるMatt Mullenwegは、明らかに最新のソフトウェアの重要性を理解しています。 WPアップデートに対するマットのビジョンは次のとおりです。
…Coreの自動更新にオプトインできます。 これは、WordPressを設定して忘れることができれば、WordPressが基本的にそれ自体を維持できるようにするという私たちの目標への最初のステップであり、すべてのプラグイン、テーマ、コアに対してバックグラウンドで手間のかからない更新が自動的に行われます。
WordPressが「設定して忘れる」ようになることを想像できる唯一の方法は、ソフトウェアの更新がより信頼でき、信頼できるかどうかです。これは、段階的ロールアウトでのみ発生します。
WordPress.org:プラグインとテーマリポジトリの段階的なロールアウトを導入する方法は次のとおりです
実装と同様に、WordPress.orgデータベースのすべてのプラグインとテーマのリリースに2つの新しいメタオプションを追加する必要がありますlimit
とuniques
です。
limit
メタオプションの編集は、ログに記録された所有者(および場合によっては他のコミッター)の詳細ビューで公開できます。
開発者は、すべてのリリースの公開を制御する方法と、次のリリースの制限を設定する機能を利用できます。
WordPress.orgは、WordPress.orgから更新を受信するすべてのWebサイトの構造化データを保存するわけではないため、Webサイトによって「表示」された最新バージョンをWordPress.orgデータベースに保存する代わりに、データの保存をWebサイトに委任できます。 。 つまり、 'update_plugins'
トランジェントと、更新を確認するときにWordPress.org APIに送信されるデータは、 last_served_update_version
で強化する必要があります。
最後に、WordPress.orgの更新APIエンドポイントは、FreemiusStagedRolloutsの実装に使用したのと同じロジックで強化できます。 wp.orgデータベースのlast_served_update_version
に依存する代わりに、メカニズムはWebサイトからコアごとに送信される値に依存します。
簡単-簡単ですよね?
更新ボタンを押すためにユーザーの自信を取り戻そう
私たちは皆、WordPressが成功し、絶えず大きくなり、より良くなることを望んでいます!
グーテンベルクには非常に多くのリソースが投入されているため、WordPressのリーダーシップは、平均的な非技術者のジョーがプラットフォームをよりアクセスしやすくする必要があることを認めていることは明らかです。 問題は、ソフトウェアの更新が信頼できない限り、グーテンベルクと私たちが利用できるすべての素晴らしいページビルダーを使用しても、技術者でない人が最初の壊れた更新でWixに逃げるということです。私は責任を負いません。彼ら。
EDDの創設者、Pippin Williamson、WooCommerce CEO、Paul Maiorana、およびWordPress.orgチームに呼びかけています。プラグインとテーマのエコシステムをより大きなWordPressコミュニティのためにはるかに安定させる機会があります。 ユーザーがソフトウェアを安全で最新の状態に保ち、恐れや欲求不満を軽減できるようにしましょう。 短期的には優先度が高くないように見えるかもしれませんが、長期的には私たち全員がその恩恵を受けると確信しています。