アプリケーションのデモ版を維持するには?


8

プロダクションアプリケーションを見込み顧客にデモできるようにする必要があります。今日のセットアップ方法は簡単です。デモアプリケーションは、現在のクライアントのデータを保護するためにデータベース内のデータが難読化されていることを除いて、運用システムの完全な複製です。アプリケーションの変更を必要としないため、これはうまく機能します。

Bossは本日、潜在的なBOMBSHELLをドロップし、デモシステムには特別なリンクを含める必要があり、デモにのみ表示されると述べました。彼はさらに、将来的にはデモアプリと本番アプリの間には大きな違いがあるかもしれないと説明しました(たとえば、機能の全領域)。私は今何をしますか?

私がやることについて考えたいくつかのこと:

  • デモシステムに固有のSubversionで別のブランチを維持する
  • デモ用の変更を含むインストールパッケージを作成し、本番インストールパッケージを元に戻してビルドする
  • アプリケーションをモジュール化する(方法がわからない)
  • 説明:「ネジを締めてください!私はそれをしません!」(笑)
  • アプリで何らかの条件付きロジックを使用して、それがデモアプリか本番アプリかを判断します。例(URLに「デモ」が含まれている場合は、それ以外の場合は非表示)。

これまでに推測していない場合、これはWebアプリケーションです。

とにかく、私はこのシナリオでどちらが良いか、またはどれも良いものがないかどうかについての経験はありません。誰かが答え、戦略、何かを持っています!?


あなたがそれを助けることができるなら、これの上でコードを分岐させないでください。あなたがそれを助けることができるなら、別個のインストールをしないでください。URLに「デモ」を含めないでください。製品を偽装しているように見えます。これを構成パラメーターにすることができるはずです。理想的には、コード全体で構成をチェックするifステートメントがなく、機能がサポートされているかどうかを確認するための呼び出し、およびその理由を知っている実装オブジェクトのみがアプリケーションに依存します。
psr

回答:


3
  • デモシステムに固有のSubversionで別のブランチを維持する

    • はい!これは本当に役立ちます。ただし、その方法には注意してください。最善の方法は、メインシステムが進化したときに、変更を可能な限り近づける方法を知っておく必要があることです。
  • デモ用の変更を含むインストールパッケージを作成し、本番インストールパッケージを元に戻してビルドする

    • これはうまくいくかもしれません-しかし、あなたが多くのデモをしているなら-あなたはこれであなたの人生の良い部分を失うでしょう。
  • アプリケーションをモジュール化する(方法がわからない)
    • これが最良の答えです。下記参照。
  • 説明:「ネジを締めてください!私はそれをしません!」(笑)
    • 間違いなく!あなたが恐れるべきだからではありません。しかし、優れたエンジニアは挑戦をやめません。
  • アプリで何らかの条件付きロジックを使用して、それがデモアプリか本番アプリかを判断します。例(URLに「デモ」が含まれている場合は、それ以外の場合は非表示)。
    • 間違いなく!これにより、時間の経過とともに製品が非常に弱くなります。

デモ製品を考えるとき(試用版について話しているのでない限り)-「個別の製品」とは考えず、「個別の環境」と考えてください。あなたと私が両方ともそれぞれのサイトにワードプレスエンジンをインストールした場合、製品は同じですがデータが異なります。インストール(および使用方法)固有のものを作成するように製品を設計する必要があります-さまざまなコンテンツソースを作成する方法のように作成できます。同様に、たとえば-ネイティブ.NetまたはJAVAアプリケーションを作成している場合、機能は同じですが、表示される場所(スプラッシュ画面やボタンを含む)は、異なる形式で表示するために異なるフォルダーにすることができます。後で-レイアウトを変更することも求められます-それはあなたがより多くのテンプレートのものが必要であることがわかったときです!

ワンショットのモジュール化のためにジャンプしないでください。要件が発生したら、まず別のブランチ(開発ライン)を開始して、デモを行います!(通常、すべてのデモは翌日の午前10時30分なので)。ここで作成した偏差は、外部リソースから取得するためにモジュール化されている必要があるものを示しています。それを適用し、再度マージします。次回、同じデモが標準バージョンになります(URLは異なります)。

結局のところ、デモとして「個別の製品」を作成する場合、ほとんどの場合、トラブルや苦痛、あるいはその両方を招いています。

ディパン。


私はあなたの答えが本当に好きです。リンクを簡単に隠したり表示したりするために、別のブランチを用意することができます。
OO

この回答のいくつかの点に同意しません。別のブランチを作成することは、「個別の製品」を作成することとそれほど違いはありません。これは、OPに対して(正しく)警告することです。開発のメインラインとマージされない長期ブランチは、別に維持する必要があるコピーにすぎません。これを回避するために、機能切り替えを使用するよく知られたアプローチがあります。これは「アプリの条件付きロジック」を意味し、SVNブランチを悪用するよりもはるかに優れたソリューションであることがよくあります。
Doc Brown

@DocBrown-質問と回答をまだ読んでいない。4つのオプションはOPによって提供され、答えは影響を示すだけです。その答えは、それぞれの短所だけでなく、その短所も示しています。いくつかのバリアントがある場合、機能トグルは間違いなく最良の解決策をトグルします-svnブランチは、基本的にそのような変更を1つにする簡単な方法です。それはすべて、これらの変動がどのようなものである可能性があるかについての短期的見解と長期的見解に本当に依存しています。そして、私がそれを見ると、答えは本当にすべてのオプションとそれらの影響をかなり中立的に評価します!
Dipan Mehta 2016

そして率直に言って、-1票に値するほどこの回答の何が悪いのでしょうか。
Dipan Mehta 2016

私を侮辱する必要はありません。私のコメントはまさにあなたの含意についてです。あなたは「Subversionで別のブランチを維持する- はい!」と書きました。私の意見:「いいえ、これを行わないでください。デモはおそらく長期的な機能であるため、これは非常に悪いアドバイスです。」そして、「アプリである種の条件付きロジックを使用する- 間違いなく!」と書きました。しかし、これは機能トグルの使用とはまったく逆です。反対票に問題がある場合は、質問を編集してこれらの矛盾を解決してください。
Doc Brown

9

最良のアプローチは、どのアプリでもアイテムをオンまたはオフにできるようにモジュール化することです。

デモは本番インストールであり、実際の本番アプリとは異なるものをオンにし、別のデータベースを指す設定が含まれています。


上司からのかなり単純な要求に対する単純な回答の場合は+1。
dodgy_coder
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.