建立高效且有效的开发流程
Posted
技术标签:
【中文标题】建立高效且有效的开发流程【英文标题】:Setting up an efficient and effective development process 【发布时间】:2011-01-24 22:39:08 【问题描述】:我正在为我的初创公司设置开发环境 (php/mysql)。我们使用三组服务器:
LIVE - 提供实际应用程序的服务器 TEST - 在实际发布之前提供测试版本 DEV - 开发服务器
开发服务器运行 SVN,每个开发人员检查他们的本地副本。每天结束时,完成的修复会被签入,然后我们使用 Hudson 来自动化我们的构建过程,然后将其转移到 TEST。然后,我们使用测试仪检查应用程序是否仍然正常运行,然后如果一切正常,将其移至 LIVE。我对这个过程很满意,但我确实有两个问题:
您建议我们如何进行本地测试 - 因为每个开发人员都会添加新页面或更改功能,我希望他们能够测试他们正在做的事情。您是否只需设置本地 Apache 和本地数据库并让它们在自己的机器上进行本地测试?
您建议如何处理数据层更改?
您还有什么建议可以真正使我们的开发过程尽可能简单和高效吗?
提前致谢
【问题讨论】:
【参考方案1】:任何从事开发的人都应该有自己的本地环境。我使用 Mac,所以我运行 MAMP,这样我就可以在本地拥有自己的 LAMP 环境,并且独立于任何其他环境。这也将使我知道没有其他人正在更改/处理与我相同的组件,并消除了任何可能的混淆。如果您是 Windows 用户,还可以轻松安装 LAMP 堆栈的本地版本,例如 XAMP 等。如果您将 Linux 作为桌面运行,您很可能已经知道如何安装 LAMP 以适应您的 Linux 风格正在运行。
数据库架构版本是个好主意。这也是我们使用的。除了受版本控制的架构外,我们还在架构中添加了架构版本表并保持更新,以便我们在需要比较时快速判断生产/qa/dev 中的版本。
至于数据层的变化,我建议做两件事。
始终创建您的迁移路径,向前和向后。这意味着当您拥有想要投入生产以升级现有架构的架构时,您应该始终将其作为发布的一部分。 ALTERing 表的简洁明了的过程。出于同样的原因,您还需要有一个工作且经过测试的 ROLLBACK 版本,以防出现问题。
我发现有用的是使用生产备份来加载我的本地(或 QA/DEV),这样我就可以在不影响生产的情况下使用最新的数据/架构。如果您没有执行生产的定期备份,那么现在可能是实施策略的好时机。然后你会用一块石头杀死两只鸟。您将拥有任何中断的备份和一个有用的实时模式,其中包含您可以加载以在另一台机器上进行测试的数据。这也将有助于引发架构更改的任何可能问题,因为数据将与生产相匹配。因此,如果它在本地(以及在 DEV/QA 上)工作,它可以降低生产中出现问题的风险。
【讨论】:
【参考方案2】:对每个运行自己的设置(包括 Apache 和数据库)的开发人员 +1。
将数据库架构保持在版本控制之下。
您可以在测试数据库中保存(可能在单独的存储库中)一小部分但具有代表性的数据。每天早上你检查这个测试数据库的最新副本,然后开始破解。当您更改架构时,请相应地更新您的测试数据存储库。
【讨论】:
如何将数据库模式保存在版本控制中?听起来真是个好主意——我以前没见过。 我写了一篇关于它的文章:gsdesign.ro/blog/mysql-database-versioning-strategy,你也可以在这里阅读更多内容:***.com/questions/1607/…以上是关于建立高效且有效的开发流程的主要内容,如果未能解决你的问题,请参考以下文章
《Python高效开发实战》实战演练——开发Django站点1
《Python高效开发实战》实战演练——开发Django站点1