我目前正在与一家处于过渡阶段的初创公司合作。
我们有一个 PHP Web 应用程序,并利用在 jenkins 上运行的标准单元和回归测试(selenium)的持续集成。我们有一个开发服务器来托管新提交的代码和一个暂存服务器,它可以将构建准备好部署到生产服务器。我们部署到生产服务器的方式是通过一个基本的脚本来提取最新的 svn 副本并覆盖 htdocs 目录中的更改。任何 SQL 更改都通过 MySQL Workbench 的同步功能应用。
此设置适用于非常基本的环境,但由于高流量,我们现在正处于从单服务器设置到集群的过渡中,我遇到了一个难题。
我主要关心的是我们如何将部署从单个服务器切换到服务器集群?每台服务器都有自己的 htdocs 和 SQL 数据库,在当前设置下,我需要在每台服务器上执行脚本,这听起来像是一件可恶的事情。我正在研究可用于自动化系统管理员任务的 puppet,但我不确定它是否是一种将新构建部署到集群的强大方法。
我的第二个问题与数据库有关。现在我的假设是代码更改将立即应用,但由于我们将有一个数据库主/从复制,我担心数据库更改将需要更长的时间来传播,从而在部署期间引入不一致。代码和数据库如何同时同步?
我的第三个问题与数据库更改的自动化有关。有谁知道我可以自动化更新数据库模式的过程而无需手动运行同步?目前我必须手动运行工作台同步工具,而我真的在寻找一种提交和忘记的方法。我提交它,数据库更改会在开发和 QA 设置中自动同步。