ダークローンチ
2020年4月29日
機能のダークローンチとは、新しいものや変更されたバックエンドの動作を取り込み、ユーザーはその機能が呼ばれていることが分からないように既存のユーザーから呼び出すことを意味します。その目的は、新しい機能を公に発表する前に、追加の負荷やパフォーマンスへの影響を評価することです。

その例としては、小売サイトのチェックアウトフローにクロスセリングの推奨事項を追加することが考えられます。(もし私がトースターを買うと明らかに新しいステーキナイフのセットも欲しくなるだろうといったものです。)推奨事項を把握するには明らかにシステムに時間と負荷がかかり、チェックアウトプロセスを遅くし、さらにサイト全体を遅くする可能性があります。ダークローンチはこの影響を機能を公開する前に評価する手段を提供してくれます。まず、Keystone Interfaceを使用して新しい機能を構築し、コードの製品リリースに統合しますが、ユーザーインターフェースがないためユーザーにはそれが存在していることがわかりません。ただし、キーストーンを追加する前に、チェックアウトフローを変更して、本稼働時とまったく同じようにレコメンデーションエンジンを呼び出しますが、UIには結果を表示しません。このようにして、推奨事項はリリース時に実行される作業をすべて実行しますが、誰にもそれが実行されていることが見えません。 Feature Flagを使用すると、製品環境で推奨事項を簡単にオンとオフに切り替えることができるため、パフォーマンスに懸念される影響が見られる場合は誰も気づかないうちにオフにすることができます。その後、推奨事項エンジンのパフォーマンスが許容されるまで調整を続け、最終的にキーストーンを追加して機能を世界に公開できます。
ダークローンチは、再実装された機能の並列実行を可能にする場合もあります。古いコードと新しいコードの両方を呼び出し、結果をチェックして、新しいアルゴリズムによる変化があるかどうかを確認できますが、インターフェースに返される答えは1つだけです。
ダークローンチは、既存のユーザーの操作を向上させるプロセスであり、ユーザーが選択したものではない場合に最適に機能します。ユーザーの選択に依存するものをテストするには、カナリーリリースが適しています。
ただし、この用語が最初に登場して以来、セマンティックディフュージョンが発生しています。そのため、「ダークローンチ」がカナリーリリースや部分的なリリース戦略のバリエーションを意味する場合があります。