ダークローンチとは?
ダークローンチとは、機能を本番環境にdeployしつつユーザーからは隠しておく手法であり、公開release前に実環境で検証できるようにするものです。
ダークローンチは、コードを出荷する行為と機能を明らかにする行為を切り離します。新しい機能は本番環境で動作します - テスト、内部ユーザー、あるいはバックグラウンド負荷によって動かされます - が、一般のユーザーには何も見えません。これにより、告知する前に静かにローンチのリスクを下げられます。
ダークローンチが意味すること
ダークローンチでは、コードは本番環境でライブになっていますが、ユーザーに向けた効果は通常feature flagの背後で抑制されています。機能は不可視のまま実環境の条件下で動かし、計測し、ウォームアップできるため、ローンチ当日は未知への飛躍ではなく、低リスクの切り替えになります。
なぜチームはこれを行うのか
本番環境こそが、本番環境に本当に似ている唯一の環境です。ダークローンチにより、機能を公開する前に、実データ、実スケール、実インフラに対して動作することを検証できます。また、大きな変更が一度にすべて到来するのではなく、本番環境で段階的になじんでいくようにもできます。
どのように行うか
最も一般的なアプローチは、機能をflagで包み、ユーザーに対してはオフ、内部アカウントやテストトラフィックに対してはオンにするというものです。backendの変更も、新しいコードパスを並行して実行し結果を比較することで、ユーザーには何も見せずにダークローンチできます。
ダークローンチ対shadow traffic
これらの用語は重なり合います。ダークローンチは一般に、機能がdeployされているが隠されていることを意味します。shadow trafficは特に、実リクエストを新しいコードパスに複製しつつ、その応答を使わないことを意味します。shadow trafficは、backendの変更をダークローンチする一つの手法です。
release時の見返り
コードはすでに本番環境でその価値を証明しているため、実際のreleaseはdeployというイベントではなく、静かな設定変更になります。これによりローンチのリスクが劇的に縮小し、エンジニアリング作業を、公開のマーケティングやプロダクト上のタイミングから切り離せます。
重要なポイント
- ダークローンチは機能を本番環境にdeployしつつ、ユーザーからは隠します。
- 公開release前に、実際のスケールとデータに対してコードを検証します。
- shadow trafficは、backendの変更をダークローンチする一つの手法です。