私たちの会社は「稼働」日が近づいています(そしてQA部門の日付を取得しています)。私はこれをサポートするための適切な運用プロセスを定義しようとしています。私の大きな考慮事項は、必然的に発生した展開/構成の地獄を回避する方法です。QA、ステージング、および実稼働環境でビルドを正常にインストールおよび構成できるように、プログラマー以外のユーザーにビルドを渡すための優れたソリューションを見つけた人はいますか?
私たちの完全な環境は、異種のスケジュールされたタスク、Windowsサービス、およびWebサイトの混合で構成されており、これらはすべて、並列展開によってスケールアウトできます。ありがたいことに、構成の手段は一貫しています。残念ながら、すべて.NET web/app.configファイルを介して管理されています。私の経験では、QAと運用担当者は、それらを変更しようとすると常に混乱します(XMLは、ほとんどの人にとって驚くほど扱いにくいです!)
これが私が検討しているオプションです:
machine.configファイルの使用
これは私が実際に行ったことのないことですが、有望に見えます。環境によって異なる可能性のあるすべてのアプリケーションのすべての設定を含むmachine.configテンプレートを作成すると、管理者は1つのファイルにすべての変更を加えて、環境内の各マシンにデプロイできます。
- 長所:
- これにより、システムの展開に必要な手順の数が減る可能性があります
- 短所:
- 構成スキーマの変更を何らかの方法で文書化する必要がある
- 不明:
- カスタム構成セクションおよびアセンブリを参照するその他の構成拡張機能を利用します。これには、マシンのGACに.NETアセンブリをインストールする必要がありますか?
ビルドプロセスで設定ファイルの操作を実行します
QA、ステージング、および本番環境をソフトウェア(仮想サーバーやLANなど)と同じように設定すると、QAは、構成を変更せずに、すぐに使用できるソフトウェアをステージング環境に直接移行し、ステージングを本番環境に移行できるはずです。 。この設定により、理論的には、誰も触れる必要のないQAの事前構成されたfoo.configファイルを渡すことができます。
- 長所:
- エンジニアリングは、構成ファイルが有効であることを確認するのにより熟達しています。
- 短所:
- エンジニアリングが本番構成を認識することは、セキュリティ慣行としては不十分であると見なされる場合があります(不十分な議論、IMHO)
ネットワークに一元化された設定リポジトリを用意する
これは私には魅力的ではありません。これは、最終的に失敗した3つの方法で試したためです。
- 以前の会社では、データベースに構成設定がありましたが、そのデータベースへの接続文字列を構成する必要があるため、もちろんすべてをそこに入れることはできません。また、展開前にデータベースが適切に更新されていることを確認することも同様に困難でした。
- 私たちが試したもう1つのアプローチは、一種の集中型レジストリとして機能するネットワークサービスを用意することでした。これはほぼ機能しましたが、ローカルキャッシュ、構成サーバーへのURLが適切に構成されていることの確認、そしてもちろん構成サーバーの構成には常に問題がありました。
- Active Directory?えっ!もっと言う必要がありますか?
考え?
私が検討しているオプションの使用にどの程度成功しましたか?あなたのためにうまくいったこれらの代替案はありますか?