维护大型网站
Maintaining a large website
当我更新网站时,我只是用新文件替换内容。
大型网站如何更新其内容?当成千上万的访问者正在查看该站点时。
如何做的例子,Facebook或Twitter是怎么做的?数以千计的开发人员在网站上工作,数以百万计的访问者。他们是在复制网站然后切换 DNS 吗?他们在使用 Git 吗?
他们都在使用 Git、SVN 等版本控制系统。因此他们可以在不同职能的团队中工作,并推送和审查提交以在实时环境中被拉取(拉取请求)。此外,大网站也有非常大的测试基础设施。
蓝绿是一种广泛使用的部署策略,可以避免停机。
首先,您需要一个 router/load 平衡器,它可以将对虚拟 IP 的请求转发到实际机器。在我工作的地方,我们使用 F5.
您还必须有两个生产环境,称为 "blue" 和 "green"。
任何时候只有一个是"live"。
我的意思是,您的路由器必须将所有传入请求转发到 "blue" 环境、 或 "green" 环境。
假设 "green" 已上线,您需要将应用的新版本发布到生产环境。
- 您将新的 content/application 部署到您的 "blue" 环境(请记住,这里没有路由请求,因此环境是 "offline")
- 然后测试 "blue" 环境并确保在上线前一切都已正确部署。
- 然后您更改路由器以将所有请求转发到新的稳定 "blue" 环境。
如果在上线后您发现有一个错误,只需再次更改您的路由器以将所有请求路由到您的 "green" 环境,使用 "old" 应用程序。
更多关于蓝绿部署的信息:BlueGreenDeployment
另一个众所周知的部署策略是金丝雀发布,它为少数用户启用新功能,一旦一切都经过正确测试,它就会为所有用户启用。
当我更新网站时,我只是用新文件替换内容。
大型网站如何更新其内容?当成千上万的访问者正在查看该站点时。
如何做的例子,Facebook或Twitter是怎么做的?数以千计的开发人员在网站上工作,数以百万计的访问者。他们是在复制网站然后切换 DNS 吗?他们在使用 Git 吗?
他们都在使用 Git、SVN 等版本控制系统。因此他们可以在不同职能的团队中工作,并推送和审查提交以在实时环境中被拉取(拉取请求)。此外,大网站也有非常大的测试基础设施。
蓝绿是一种广泛使用的部署策略,可以避免停机。
首先,您需要一个 router/load 平衡器,它可以将对虚拟 IP 的请求转发到实际机器。在我工作的地方,我们使用 F5.
您还必须有两个生产环境,称为 "blue" 和 "green"。
任何时候只有一个是"live"。 我的意思是,您的路由器必须将所有传入请求转发到 "blue" 环境、 或 "green" 环境。
假设 "green" 已上线,您需要将应用的新版本发布到生产环境。
- 您将新的 content/application 部署到您的 "blue" 环境(请记住,这里没有路由请求,因此环境是 "offline")
- 然后测试 "blue" 环境并确保在上线前一切都已正确部署。
- 然后您更改路由器以将所有请求转发到新的稳定 "blue" 环境。
如果在上线后您发现有一个错误,只需再次更改您的路由器以将所有请求路由到您的 "green" 环境,使用 "old" 应用程序。
更多关于蓝绿部署的信息:BlueGreenDeployment
另一个众所周知的部署策略是金丝雀发布,它为少数用户启用新功能,一旦一切都经过正确测试,它就会为所有用户启用。