您(您的公司)如何管理您构建的应用程序/系统的配置文件?让我告诉你我们是怎么做的,问题是什么。
我在一家公司工作,我们与大约 15 名开发人员一起开发软件。我们构建部署在我们的托管托管服务提供商处的业务线 Web 应用程序。我们的主要应用程序之一由一个网站和大约十个 WCF 服务组成。一些服务是相互连接的。
我不知道这是一个大系统还是小系统,但我认为这需要我们太长时间才能在我们不同的环境(测试、验收和生产)中启动和运行。
我们的 Visual Studio 项目中每个环境都有配置文件。所以 a web.test.config
, a web.acc.config
, aweb.prod.config
和 aweb.config
用于发展。它们都有相同的键,但值可能不同,具体取决于它们所使用的环境。
如果我快速计算 web.config 中 webapp 的 appsettings 数,我数为 32。我数了 5 个端点。我们有四个环境(dev、test、acc 和 prod),这意味着一个 web 应用程序总共有 128 个 appsettings 和 20 个端点。我们很容易犯错,尤其是在最后期限临近的时候。
我们都是人类,所以这样的事情可能发生在任何人身上:
- 我们对其中一个配置文件进行了更改,但在构建和部署之前忘记签入。
- 或者我们在 WebServer 上进行了更改而忘记在其他四个 web.configs 中进行相应的更新。
- 或者我们只更改四个配置文件中的三个。等等。
然后,我们在托管托管服务提供商处拥有基础设施。默认情况下,每个端口都是关闭的。因此,如果其中一个 WCF 服务需要与位于不同服务器上的另一个 WCF 服务通信,则必须打开受防火墙保护的端口。
我们在Test中这样做,但是在Acceptance中我们必须再次这样做,并且我们忘记了必须打开哪些端口,所以它更像是试错:哦我的服务无法连接到数据库,可能是端口关闭。同样的问题也可能在生产中发生。
根据 SLA,我们的托管主机提供商可能需要几天时间才能在防火墙中打开一个端口。所以,这很快就变成了一个相当漫长的过程。最后,我们需要大约两个月的时间来启动和运行测试、验收和生产。
所以,我的问题是:您如何管理配置和基础设施以及围绕它的流程?