问题:

问题:

问题:

部署和管理这个网站已经成为一场噩梦。部署从开发到 QA 再到预生产需要几天时间。我们遇到了很多错误,而且需要大量的人工。我们经常会遇到配置文件更新或更改不当的情况,然后该 Web 服务器上的整个网站就会出现故障。

环境:


  • 大量 Web 前端服务器(Windows 2003、IIS6)
  • 大量 MemCached 服务器 (Linux)
  • 多个数据库服务器 (SQL 2005)
  • 每月约 500 万个独立用户

更多详情:

我是负责开发该系统的开发人员之一。目前,该系统没有自动化,没有自动测试,部署过程涉及使用终端服务器登录服务器,手动更改 IIS 设置、更新配置文件等类似麻烦事。灾难恢复文档还有很多不足之处。

我希望能够让负责服务器运营的团队成功部署和维护我正在开发的应用程序。因此,出于部分非常自私的原因,我希望他们能够成功。

我想要一些指导;我可以问他们什么具体问题,或者我可以提出什么建议,作为开发人员我们如何创造事物来帮助他们取得更大的成功。

目前有一些诽谤行为,我认为真正解决这一问题的唯一方法是忽略诽谤,集中精力解决问题。目前的问题是维护、排除故障和部署网站需要大量劳动力。

谢谢 Rihan

答案1

  • 编写代码检查给定的任何配置的合理性,并将问题直接报告给执行配置的人员和日志。

  • 明确区分特定于环境的配置值和在开发、测试、验收、生产 (DTAP) 过程中应保持不变的配置值。

  • 使用版本管理软件(例如 subversion)来跟踪所有环境中的配置变化。

  • 像一个狂妄自大的人一样管理 DTAP 环境的配置。

  • 在您发布版本之后,再次开始编码之前,安排将生产环境复制到所有其他环境(包括开发环境)。当您将此情况传达给您的同事时,看看他们中哪些人脸色苍白,并询问他们哪些资产无法从源代码控制中随意替换。

  • 最重要的是!!!您可能正在阅读这篇文章,想着,这个白痴是谁?这不可能!我们无法做到这一切。没错 - 当然您不能 - 现在不能。(如果您还没有陷入困境,您就不会问这个问题了)。因此,将愿景与实施分开。与其他利益相关者分享这一愿景。共同决定您应该拥有哪些能力,并制定一个计划,让您开始实现这一目标。每个周期或发布或其他什么,确保您更接近愿景。设定切合实际的目标,并实现它们。(当然,您可以根据经验在过程中改变您的愿景。)

答案2

我想说,除了保持服务器设置和配置文件不变之外,您还应该在办公室中部署测试环境。如果您的开发人员测试他们开发的代码在与实时环境非常相似的环境中运行,那么他们会感到更自信。更自信意味着他们必然会开发得更快(因为这是我们从 SCRUM 团队那里学到的东西),而且更少的诽谤和失控感。

所以基本上我想说的是,只要给开发人员很多机器去玩和测试,你就会看到积极的结果。

答案3

最重要的一步是让整个基础架构中所有服务器的配置尽可能一致。标准操作环境 (SOE),如果您愿意的话:

  • 所有 IIS 实例具有相同的配置。
  • 所有网络服务器上都拥有该网站的相同副本。

一旦拥有了它,实现自动化推出、测试等等就变得更加可能。

如果所有服务器上的 IIS 配置都相同,您可以更新一台主服务器上的 IIS 配置文件,然后运行脚本将其推送到所有 Web 服务器,进行测试,然后重新加载 IIS。您可以对实际的网站文件执行相同操作。

答案4

在我的基础架构中,我们有一个称为预览的临时环境,数据在投入生产之前会先进入该环境。临时级别的应用程序代码与生产代码完全相同,因此任何数据问题都会在那里显示出来。

我们还为新代码建立了一个测试环境,它可以对旧的、已知良好的数据进行操作(我们可以在需要时对其进行处理以测试代码如何失败)。

一般来说,这种隔离使我们拥有一个非常稳固的生产环境,并且我们不会看到太多意外的事情发生。

我应该指出,我不会处理太多这方面的问题,因为我不是程序员。我只是在他们要求我时同步数据库并刷新文件 ;-)

相关内容