gpt4 book ai didi

deployment - 跨环境管理配置文件

转载 作者:行者123 更新时间:2023-12-03 10:16:38 24 4
gpt4 key购买 nike

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

我在一家公司工作,该公司与大约15位开发人员一起开发软件。我们构建了在托管托管提供商处部署的业务线Web应用程序。
我们的主要应用程序之一包括一个网站和大约十个WCF服务。某些服务相互连接。

我不知道这是一个大系统还是一个小系统,但是我的观点是,这使我们花费太长时间才能在不同的环境(测试,验收和生产)中启动和运行它。

在Visual Studio项目中,每个环境都有配置文件。因此,需要开发web.test.configweb.acc.configweb.prod.configweb.config。它们都具有相同的键,但是值可能有所不同,具体取决于它们所针对的环境。

如果我对webapp的web.config中的appsettings进行了快速计数,那么我计数为32。并且我计数了5个端点。我们有四个环境(开发,测试,acc和prod),这意味着一个Web应用程序总共有128个应用程序设置和20个端点。我们很容易犯错,尤其是在截止日期临近之时。

我们都是人类,所以任何人都可能发生这样的事情:

  • 我们对一个配置文件进行了更改,但是在构建和部署之前忘记检入。
  • 或者我们在WebServer上进行更改,而忘记在其他四个web.configs中进行相应的更新。
  • 或者我们仅更改四个配置文件中的三个。等等。

  • 然后,我们在托管托管服务提供商处拥有基础架构。默认情况下,每个端口都是关闭的。因此,如果WCF服务之一需要与位于不同服务器上的WCF服务中的另一个进行对话,则必须打开受防火墙保护的端口。

    我们在测试中执行此操作,但是在“验收”中,我们必须再次执行此操作,而我们忘记了必须打开哪些端口,因此更像是反复试验:哦,我的服务无法连接到数据库,可能是端口已关闭。生产中也可能发生相同的问题。

    根据SLA,我们的托管托管服务提供商可能需要几天时间才能在防火墙中打开端口。因此,这很快就变成了一个相当长的过程。最后,我们要花大约两个月的时间才能完成测试,验收和生产。

    因此,我的问题是:您如何管理配置,基础架构及其周围的流程?

    最佳答案

    Config4*项目(免责声明:我是它的主要开发人员)没有与.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.
    #--------
    ...

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

    关于deployment - 跨环境管理配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13762211/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com