我们公司正接近其“上线”日期(以及获得 QA 部门日期),我正在尝试定义正确的运营流程来支持这一点。我的一个重要考虑是如何避免不可避免地发生的部署/配置地狱。你们有没有找到一个很好的解决方案来将构建移交给非程序员,以便他们可以在 QA、登台和生产环境中成功安装和配置它?
对我们来说,一个完整的环境由异构计划任务、Windows 服务和网站的混合组成,所有这些都可以通过并行部署进行横向扩展。值得庆幸的是,配置方式是一致的。不幸的是,这一切都是通过 .NET web/app.config 文件进行管理的。根据我的经验,QA 和运维人员在尝试修改它们时总是搞砸(XML 对大多数人来说难以处理!)
这是我正在考虑的选项:
使用 machine.config 文件
这是我在实践中没有做过的事情,但看起来很有希望。如果我们创建一个 machine.config 模板,其中包含可能因环境而异的每个应用程序的每个设置,这将允许管理员对一个文件进行所有更改并将其部署到环境中的每台机器上。
- 优点:
- 这可能会减少部署系统所需的步骤数量
- 缺点:
- 必须以某种方式记录配置架构更改
- 未知数:
- 我们使用自定义配置部分和其他引用程序集的配置扩展。这是否需要我们在机器的 GAC 中安装我们的 .NET 程序集?
在构建过程中执行配置文件操作
如果我们设置 QA、登台和生产环境,使它们看起来与我们的软件(虚拟服务器和 LAN 等)相同,那么 QA 应该能够将无需更改配置的现成软件直接转换到登台环境,并登台到生产环境. 有了这个设置,理论上我们可以交给 QA 预先配置的 foo.config 文件,没有人需要接触。
- 优点:
- 工程将更擅长确保配置文件有效
- 缺点:
- 工程师意识到生产配置可能被认为是糟糕的安全实践(一个糟糕的论点,恕我直言)
拥有一个网络集中的设置存储库
这个看起来对我没有吸引力,因为我以三种方式尝试过,但最终都失败了:
- 在以前的公司,我们在数据库中有配置设置,但当然你不能把它们都放在那里,因为你需要配置到那个数据库的连接字符串。此外,在部署之前确保数据库得到正确更新同样困难。
- 我们尝试过的另一种方法是建立一个网络服务,作为一种集中式注册中心。这几乎奏效了,但是本地缓存总是存在问题,确保配置服务器的 URL 正确配置,当然还有配置配置服务器。
- 活动目录?哇!需要我多说?
想法?
您在使用我正在考虑的选项方面取得了多大的成功?是否有其他对您有效的替代方案?