ユーザーのサブグループ向けに新しいことを試したり、さまざまなアプリの動作で A/B テストを行ったり、通常はサンドボックスを提供したりするために、エンジニアが実験的なコードと機能をアプリに投入できる簡単なメカニズムをセットアップしたいと考えています。開発者がメインの本番コードに影響を与えずに夢中になれる環境。実験的機能 (EF) の要件の一部は次のとおりです。
- Rails、JS/Coffee、およびアプリの基本的な知識があれば、EF の追加は非常に簡単です。
- EF コードは、可能な限り製品コードの外 (「島」) に置く必要があります。
- EF コードは、がんの触手を製品コードにまで成長させてはなりません。つまり、可能な限り疎結合のままにしてください。
- 何が EF コードで何がそうでないかは一目で明らかなはずです。
- EF コードは、TDD や UX などの完全な組織ポリシーを支持する必要はありません。実際、迅速で汚い実験がこれの目標であり、プロセスとポリシーによって創造性と熱意が妨げられることは望ましくありません。実験が (ユーザー テストを通じて) 成功したと見なされた場合にのみ、それをすべてのポリシーに反映させるために労力を費やす必要があります。
- EF 機能は、ダッシュボード サイトでオン/オフを切り替えたり、特定のユーザーにロールアウトしたりできます。
- 実稼働コードに取り組んでいる開発者は、実験的なコードを処理するためにいかなる方法でも負担を負うべきではありません。理想的には、完全な分離です。実稼働コードが更新された場合、実験は壊れる可能性があります。実稼働コードの開発者にすべての実験を最新の状態に保つように強制するよりも、それが望ましいです。実験を続けられるかどうかは、実験者次第です。
- 私たちのシステムは、サーバー用の Rails 上に構築されており、Knockout.js と Backbone.js を使用して CoffeeScript で記述されたリッチなクライアント側アプリを備えています。EF は、Rails コード (コントローラー アクション、ルート、モデル)、ビュー テンプレート、CoffeeScript コード (データ バインディング、jQuery テンプレート、モデル、ビュー モデルなど)、CSS/SCSS に触れることができ、メカニズムはこれらすべてをサンドボックス化できるようにする必要があります。
分割テストや多変量テストの測定プロセスについては、現時点ではそれほど心配していません。これは、Vanity gem などのツールや、KissMetrics や MixPanel などの商用ソリューションで解決済みの問題です。私たちは、分離、マージ、およびメンテナンスの問題を解決するセットアップを作成する方法に関心があります。Rails用のそのようなツールは存在しますか?