针对现代大连微信OA企业办公系统软件组织在软件发布、运营与维护过程中面临的种种挑战,ThoughtWorks建议在软件组织中建设DevOps [7] 能力,从而提升整个组织的IT融合程度,改善软件交付“最后一公里”的质量和效率,为实现业务敏捷打好基础。
DevOps是一组流程、技术与工具的统称,用于促进开发、技术运营和质量保障部门之间的沟通、协作与整合。“DevOps”这个名称即是指开发(Dev)与运营(Op)的无缝融合。具备 DevOps 能力的组织能够开展快速、反应灵敏同时又稳定可靠的业务运维,使其能够与开发过程的创新保持同步,从而使得敏捷开发的优势在组织层面上得到体现。
致远服软认为:http://www.soft8.com.cn/传统的软件运营人员通常倾向于尽量避免修改功能,从而降低满足非功能性需求的风险。但如果拒绝了小的修改,而给定时间段内需要修改的总量不变,那么每次变更的规模就会变大,从而增加每次发布的风险(因为变更涉及的范围更大)。
DevOps 的指导思想是“精益运维”。精益生产的很多原则,例如缩短交付周期、消除浪费、重视价值流动、拉动式生产、质量内建等,在 DevOps 中都得到了体现。与传统的大连微信OA企业办公系统软件发布方式相比,DevOps主要通过以下几方面的改变来提升效率和质量。
减少每次发布的变更范围。与传统的瀑布式开发模型相比,采用迭代的工作方式意味着更频繁的发布、每次发布包含的变化更少。由于部署经常进行,每次部署不会对生产系统造成巨大影响,应用程序会以平滑的速率逐渐生长(如图2所示)。与传统大连微信OA企业办公系统软件开发方法那种大规模的、不频繁的发布(通常以“季度”或“年”为单位)相比,具备DevOps能力的组织大大提升了发布频率(通常以“天”或“周”为单位)。
大连员工计件考勤功能加强开发与运营协调。通过强有力的发布协调机制来弥合开发与运营之间的技能鸿沟和沟通鸿沟;采用电话会议、即时消息、企业门户(wiki、sharepoint)等协作工具来确保所有相关人员理解变更的内容;使用统一的流程和工具,例如故事墙、燃尽图、在线项目管理工具(例如Mingle、JIRA)、配置管理工具(例如Subversion、Git、Mercurial)等。
自动化。借助强大的部署自动化手段和标准化的环境管理来降低部署操作的成本,确保部署任务的可重复性,减少部署出错的可能性,例如以下列举的几种方式。
(1)用VMWare或Xen等虚拟化技术标准化生产环境,实现生产环境的快速复制和快速恢复。
(2)用Puppet或Chef等工具自动化环境设置、软件安装/配置等操作,将配置信息转化为源代码,实现环境配置的版本控制。
(3)用Capistrano等工具自动化软件产品的部署,实现部署过程的版本控制。
(4)用dbdeploy等工具自动化数据库变更,实现数据迁移的版本控制。
(5)用Selenium、Cucumber等工具自动化生产环境的冒烟测试和回归测试。