多个服务器angular色的最佳开发设置?

在我工作的公司,我们有一个非常复杂的开发环境。 我们的系统在多台服务器上运行,每台服务器填充不同的angular色并拥有自己的代码库。 每个angular色可能有多个实际服务器(例如,我们可能有2个消息传递服务器,3个存储服务器,1个Web服务器,1个数据库等)

到目前为止,服务器端开发人员一直在开发SVN,而其他开发人员一直在跟踪自己的代码。 每个人都通过FTP手动上传到正确的服务器。 这意味着,如果某人更改了邮件服务器的代码,则他需要手动将更改上传到2台或更多台服务器。

重要说明:并不是所有的服务器都在同一个LAN上。

我一直在考虑改变每个人的工作stream程,我想咨询一下最好的设置是什么。

我想有一个单一的SVN服务器(基本上打开服务器端svn给大家),并为每个“服务器angular色”有不同的存储库。 并且为每个存储库提交一个到该types的服务器的提交后,将在每个服务器上的工作副本上运行“svn update”。 (我宁愿将所有服务器angular色的代码放在单个存储库上,但是我将如何处理提交后的脚本?)

我的问题是这样的:a)这是最好的设置? b)你将如何实现提交后的脚本? 它将如何知道发送更新的服务器? c)什么是最好的方式来保证这一点(与多个开发人员)?

在此先感谢您的答复。 任何帮助和build议,非常感谢!

肯。

看完你的问题之后,我认为你正在寻找更多的是部署工具集而不是开发设置。 不pipe你select的方向如何,我认为你需要做的第一件事是获得源代码控制下的所有代码 。 如果不能对每个子服务进行版本pipe理,就无法合理地使用可靠的系统进行部署。 把所有的项目都放在一个SVN服务器上, 你需要一个庞大的项目来超越单一服务器的方法,并且使你能够轻松地在所有子项目中轻松地分发/标记发行版。

我build议您查看部署的专用工具,如Capistrano , Fabric或ControlTier 。 每个项目都有自己的长处和短处(Capistrano在Rails,ControlTier和Java等方面效果很好),你可能会发现最好的工具取决于你的子项目所用的语言。一个简单的post-commit钩子:

  • 编写一些在less数服务器上给定目录上运行“svn up”的脚本并不难,但是部署系统将处理诸如分段和生产环境,失败部署的回滚等等。
  • 部署应该是检入代码的单独步骤。 通常情况下,我宁愿在某个特定的时间部署(例如,上午中午,当工程支持很可能时,或者在半夜网站stream量接近最低点时),开发人员应该可以自由签入不一定导致部署的代码。 如果您有持续集成系统,则需要在部署之前对您的代码进行testing/validation。 其中大部分可以通过提交后挂钩检查已提交文件的path来完成,只有在对发行版分支进行更改时才能部署。
  • 部署过程本身应该形成文件,可重复和版本控制。 有合理的理由要重新部署相同的版本(例如,添加更多的服务器到您的设置),不应该需要伪造提交源代码控制只是为了启动另一个版本。 另外,我喜欢有必要的步骤来部署可用和可见的开发人员。 Capistrano非常适合这样做,因为您真正在文件中检查源代码控制,以描述如何运行部署。 如果您只是使用post-commit hook,请确保将其与SVN存储库数据本身一起备份!

安全性很大程度上取决于业务需求。 在小商店里,我觉得给开发者“钥匙到城堡”,甚至把部署职责转给团队是没有错的。 如果您在开发人员无法访问生产数据的环境中工作,则需要devise一个可以触发部署的系统(通过签入或其他进程),但无法访问部署系统的身份validation本身。 如果您正在UNIX平台上运行,那么可以像生成用于部署的SSH密钥一样简单,只需将密钥交给负责部署的人员即可。