あなた(あなたの会社)は、あなたが構築したアプリ/システムの構成ファイルをどのように管理していますか? 私たちがどのようにそれを行うのか、そして何が問題なのかをお話ししましょう。
私は、約 15 人の開発者でソフトウェアを開発する会社で働いています。マネージド ホスティング プロバイダーに展開される基幹業務 Web アプリを構築します。主なアプリの 1 つは、1 つの Web サイトと約 10 の WCF サービスで構成されています。一部のサービスは相互に接続されています。
これが大規模なシステムなのか小規模なシステムなのかはわかりませんが、さまざまな環境 (テスト、受け入れ、本番) で物事を立ち上げて実行するには時間がかかりすぎるというのが私の意見です。
Visual Studio プロジェクトには、環境ごとに構成ファイルがあります。したがって、 a web.test.config
、 a web.acc.config
、 aweb.prod.config
および aweb.config
は開発用です。それらはすべて同じキーを持っていますが、対象の環境に応じて値が異なる場合があります。
web.config で webapp の appsettings を簡単に数えると、32 と数えます。そして、5 つのエンドポイントを数えます。4 つの環境 (dev、test、acc、prod) があります。つまり、1 つの Web アプリに対して合計 128 の appsettings と 20 のエンドポイントがあります。特に締め切りが迫っているときは、間違いを犯しやすいです。
私たちは皆人間なので、次のようなことは誰にでも起こる可能性があります。
- 構成ファイルの 1 つを変更しましたが、ビルドしてデプロイする前にチェックインするのを忘れました。
- または、WebServer に変更を加え、それに応じて他の 4 つの web.config を更新するのを忘れています。
- または、4 つの構成ファイルのうち 3 つだけを変更します。等々。
次に、マネージド ホスティング プロバイダーにインフラストラクチャを用意します。デフォルトでは、すべてのポートが閉じられています。そのため、WCF サービスの 1 つが別のサーバーにある別の WCF サービスと通信する必要がある場合は、ファイアウォールで保護されたポートを開く必要があります。
これは Test で行いますが、Acceptance ではもう一度行う必要があり、どのポートを開く必要があるか忘れてしまったので、試行錯誤のようなものです: ああ、私のサービスはデータベースに接続できません。ポートが閉じています。本番環境でも同様の問題が発生する可能性があります。
SLA によると、当社のマネージド ホスティング プロバイダーは、ファイアウォールでポートを開くのに数日かかる場合があります。したがって、これはすぐにかなり長いプロセスになります。最終的に、テスト、受け入れ、本番稼働までに約 2 か月かかります。
私の質問は、構成、インフラストラクチャ、およびその周辺のプロセスをどのように管理しているのかということです。