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