在本地机器上进行Web开发与在集中式开发服务器上进行开发相比,有何优缺点?对于那些在本地开发的人来说,当涉及到多个开发人员时,您如何保持本地开发的最新数据库架构?
特别是,我目前正在尝试使用XAMPP进行PHP开发,并且很好奇其他开发者定期更改数据/数据库结构时我如何将MySQL数据库实例保持同步。
只有在独自工作时,本地开发才是可行的吗?
在本地机器上进行Web开发与在集中式开发服务器上进行开发相比,有何优缺点?对于那些在本地开发的人来说,当涉及到多个开发人员时,您如何保持本地开发的最新数据库架构?
特别是,我目前正在尝试使用XAMPP进行PHP开发,并且很好奇其他开发者定期更改数据/数据库结构时我如何将MySQL数据库实例保持同步。
只有在独自工作时,本地开发才是可行的吗?
有很多人似乎喜欢使用一个中心服务器供所有人进行开发 - 我真的不明白为什么你会更喜欢处于共享环境,让进行更改的人干扰你的开发过程。
在我的工作室中,每个人都有自己的开发 Web 服务器和开发数据库(通常位于同一台数据库 服务器 上,但是它们都是独立的)。这样他们就完全隔离于其他开发人员之外,不会相互干扰。
当他们实现一个功能或修复一个错误时,他们会将他们的代码和相应的数据库架构一起提交,以便其他开发人员可以获得一个完整的单位。测试服务器或部署服务器的发布是从源代码库中标记的版本进行的。
稳定而明智!当开发服务器是免费的时候,我不明白为什么你会以其他方式做。
我认为在开发过程中最好拥有完全受控的本地设置,以确保其他开发人员所做的更改不会干扰你自己的工作。我已经在本地建立了开发和测试环境,因此可以执行这两个任务而无需考虑其他开发人员。我使用autotest在编码时持续运行我的测试,这意味着我可以确保我的代码是正确的并满足正确的规范。
在代码库整理好之后,我会部署到一个暂存服务器(这是尽可能接近生产环境的环境),并重新运行测试。我们还使用我们的阶段来运行负载测试和用户测试。
当其他人在编辑您的数据库时,保持数据库“同步”的方法之一是将您的数据库架构纳入版本控制。这并不像将源代码纳入版本控制那样简单,并且有不同的处理方式。
请阅读Coding Horror上的这篇文章:
https://blog.codinghorror.com/get-your-database-under-version-control/
这篇文章并不重要,但是它链接了K. Scott Allen撰写的六篇文章。
基本上,这些文章中描述的是一种对数据库模式进行基线测试的方法,将基线的.sql文件检入,并且每次更改模式时编写增量的.sql“更改脚本”。现在,每当开发人员检出或更新工作副本时,任何未完成的更改脚本都将被运行。除非您使用一个能够为您执行此操作的框架,否则您需要自己设置一些脚本/工具来完成此操作。
本地化的优点:
本地化的缺点:
中心化的优点:
中心化的缺点:
我相信还有更多,但这些是我首先想到的。
在本地开发和测试是可以的,但是应该在反映目标环境的系统上进行质量测试,即不安装所有开发工具等。
这将有助于避免“在我的电脑上工作良好”的情况。
顺便提一句,我们的设置与Matt先生所描述的类似。每个开发人员都有自己的个人沙盒,其中包含自己的Web服务器和DB。在版本发布前,版本控制的代码被拍摄/分支,并移至一个应尽可能模拟真实在线环境的暂存服务器。随后进行测试,然后将发布到生产环境。
对于我自己的个人(非工作相关)项目,我会本地开发,然后推送上线。一两个项目可能会在开发和公共/现场之间具有中介测试服务器/环境。
在本地工作的另一个原因是所有内容运行速度更快。这意味着更快的开发速度。网络延迟可能会影响生产力!
本地开发。注意回答中的日期。不要误以为它们非常过时。
让我们澄清一下。这个问题在十年后仍然被问到,有些人继续传播过时的观念。请阅读已接受的答案。可以肯定的是,这些日子里局部开发的“缺点”在各种答案中已经得到了相当好的解决。
但是天哪! 这个问题的一些答案描述了在生产环境上进行开发,这是风险严重升级。明确指出:严格避免在生产环境上进行开发。(我相信那些开发者不再提倡这种方法。过时答案的赞同可能应该过期。也许那些投票的人会回来表明他们最新的想法。)
除了已接受的答案中提到的解决方案外,还建议使用:
两者兼备。在开发服务器上进行一些集成和单元测试(最好与生产服务器尽可能相似,但是本地),然后在QA环境中进行一些验收测试,这应该是与您的生产服务器相同的机器或完全相同的设置(硬件,软件等)。
在数据库部分的问题上,您可以选择: