15.提早实现自动化部署

“没问题,可以手工安装产品,尤其是给质量保证人员安装,而且你不需要经常自己动手,他们都很擅长复制需要的所有文件。”

系统能在你的机器上运行,或者能在开发测试者和测试人员的机器上运行,当让效果很好,当然很好。但是它同时也需要能够部署在用户的机器上。如果系统能运行在开发服务器上,那很好,但是它同时也要运行在生产环境中。

这就意味着,你要能用一种可重复和可靠的方式,在目标机器上部署你的应用。不幸的是,大部分开发者智慧在项目的尾期才开始考虑部署问题。结果经常出现部署失败,要么是少了依赖的组建,要么是少了一些图片,要么就是目录结构有误。

广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元

如果开发者改变了应用的目录结构,或者是在不同的应用之间创建和共享图片目录,很可能会导致安装过程失败。当这些变化在人们印象中还很深的时候,你可以快速的找到各种问题。但是几周或者几个月之后查找它们,特别是在给客户演示的时候,可就不是一件闹这好玩的事情了。

如果现在你还是手工帮助质量保证人员安装应用,花一些时间,考虑如何将安装过程自动化。这样,只要用户需要,你就可以随时为他们安装系统。

要提早实现它,这样质量保证团队即可以测试应用,又可以测试安装过程。如果还可以手工安装应用,那么最后把应用部署到生产环境时会发生什么尼?就算公司给你加班费,你也不愿意为不同用户的机器或不同地点的服务器上一遍又一遍的安装应用。

阅读 ‧ 电子书库

有了自动化部署系统后,在项目开发的整个过程中,会更容易适应互相依赖的变化。很可能你在安装系统的时候,会忘记添加需要的库或组建------在任意一台机器上运行自动化安装程序,你很快就会知道什么丢失了。如果因为为缺少了一些组建或者库不兼容而导致安装失败,这些问题会很快浮现出来。

阅读 ‧ 电子书库

一开始就实现自动化部署应用。使用部署系统安装你的应用,在不同的机器上用不同的配置文件测试依赖的问题。质量保证人员要像测试应用一样测试部署。

切身感受

这些工作都应该是无形的。系统的安装或者部署应该简单,可靠及可重复。一切都很自然。

平衡的艺术

? 一般产品在安装的时候,都需要有相应的软,硬件的环境。比如,Java或Ruby的某个版本,外部数据库或者操作系统。这些环境的不同很可能会导致很多技术支持的电话。所以检查这些依赖关系,也是安装过程的一部分。

? 在没有询问并征的用户的同意之前,安装程序绝对不能删除用户的数据。

? 部署一个紧急修复的bug应该很简单,特别是在生产服务器的环境中。你知道这会发生,而且你不想在压力之下,在凌晨3点半,你还在手工部署系统。

? 用户应该可以安全并且完整的卸载安装程序,特别是在质量保证人员的机器环境中。

? 如果维护安装脚本变得很困难,那很可能是一个早期的警告,预示着----很高的维护成本(或者不好的设计决策)? 如果你打算把持续部署系统和产品CD或者DVD刻录机连接到一起,你就可以自动的为每个构建制作出一个完整且有标签的光盘。任何人想要最新的构建,只要从架子上拿最上面的一张光盘安装即可。