use*_*117 27 deployment environment configuration configuration-management
您(您的公司)如何管理您构建的应用程序/系统的配置文件?让我告诉你我们是如何做到的,以及问题是什么.
我在一家公司工作,我们与大约15名开发人员一起开发软件.我们构建了部署在托管主机提供商处的业务线网络应用程序.我们的主要应用程序之一包括一个网站和大约十个WCF服务.一些服务相互连接.
我不知道这是一个大系统,还是小系统,但我认为这需要我们太长时间才能在不同的环境(测试,验收和生产)中运行起来.
我们的Visual Studio项目中的每个环境都有配置文件.所以a web.test.config,a web.acc.config,a web.prod.config和a web.configfor development.它们都具有相同的键,但值可能不同,具体取决于它们的环境.
如果我快速计算webapp的web应用程序中的appsettings,我会计算32个.我计算5个端点.我们有四个环境(dev,test,acc和prod),这意味着一个Web应用程序共有128个appsettings和20个端点.我们很容易犯错误,特别是在最后期限结束时.
我们都是人类,所以这样的事情可能发生在任何人身上:
然后我们在托管主机提供商处拥有基础设施.默认情况下,每个端口都关闭.因此,如果其中一个WCF服务需要与位于不同服务器上的其他一个WCF服务进行通信,则必须打开防火墙保护的端口.
我们在Test中执行此操作,但在Acceptance中我们必须再次执行此操作,并且我们忘记了必须打开哪些端口,因此它更像是试错:哦我的服务无法连接到数据库,可能是港口关闭.生产中也可能出现同样的问题.
根据SLA,我们的托管主机提供商可能需要几天时间才能在防火墙中打开端口.所以,这很快就会成为一个漫长的过程.最后,我们需要两个月的时间才能完成测试,验收和生产.
所以,我的问题是:你如何管理配置和基础设施及其周围的过程?
该CONFIG4*项目(免责声明:我是它的主要开发者)没有与.NET或WCF一个彻头彻尾的现成的集成,所以它可能不是对你有用.但是,Config4*中的一个功能与您的问题相关:它能够在配置文件中嵌入if-then-else语句,以便文件可以"适应"不同的环境(如开发,测试) ,接受和生产).
您可以修改该概念以使用您在基于.Net/WCF的项目中使用的任何配置语法(我不熟悉这些技术,但我猜他们可能使用基于XML的配置文件) .特别是,您可以使用Python编写一个脚本,该脚本使用if-then-else语句在a中设置特定于环境的name = value对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.
#--------
...
Run Code Online (Sandbox Code Playgroud)
对于奖励积分,脚本还可以生成需要为环境执行的测试清单,例如,"检查是否需要在以下端点之间打开防火墙端口:......"
| 归档时间: |
|
| 查看次数: |
8736 次 |
| 最近记录: |