跨环境管理配置文件

2024-01-19

您(您的公司)如何管理您构建的应用程序/系统的配置文件?让我告诉你我们是如何做到的,以及问题是什么。

我在一家开发软件的公司工作,该公司约有 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,我们的托管托管提供商可能需要几天时间才能在防火墙中打开端口。因此,这很快就会变成一个相当漫长的过程。最后,我们花了大约两个月的时间来进行测试、验收和生产并运行。

所以,我的问题是:如何管理配置、基础设施及其周围的流程?


The Config4* http://www.config4star.org项目(免责声明:我是其主要开发人员)没有与 .Net 或 WCF 的开箱即用集成,因此它可能对您没有用处。但是,Config4* 中的功能之一与您的问题相关:它能够在配置文件中嵌入 if-then-else 语句,以便该文件可以“适应”自己以适应不同的环境(例如开发、测试) 、验收和生产)。

您也许能够修改该概念,以使用您在基于 .Net/WCF 的项目中使用的任何配置语法(我不熟悉这些技术,但我猜测它们可能使用基于 XML 的配置文件) 。特别是,您可以使用 Python 等编写脚本,该脚本使用 if-then-else 语句来设置特定于环境的名称=值对在一个map,然后使用一些print语句来生成一组针对环境定制的配置文件。这种脚本的伪代码概要是:

#--------
# Set up configuration variables suitable for a specified environment
#--------
cfg["variable1"] = "default value";
cfg["variable2"] = "another default value";
if (environment == "testing") {
  cfg["variable1"] = "override default value for this environment";
  cfg["variable3"] = "value suitable for this environment";
  ...
} else if (environment == "production") {
  ...
}
#--------
# Now use print statements to generate configuration files
# Alternatively, use the _name=value_ pairs in the map to
# perform global search-and-replace on template versions of
# configuration files.
#--------
...

为了获得加分,该脚本还可以生成需要针对环境执行的测试清单,例如,“检查是否需要在以下端点之间打开防火墙端口:...”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

跨环境管理配置文件 的相关文章

随机推荐