启迪云-高级测试工程师 杨俊
前言
在目前瞬息万变的业务场景下,IT企业要对市场和竞争对手的变化作出快速敏捷的响应,才能在市场中称雄,不被淘汰。在此背景下开发模式一直是IT界人士探讨的重点,从瀑布开发模式到今天的敏捷,DevOps,使得IT开发流程效率大大提高,客户的参与度也越来越高。今天我们就聊聊传统开发模式、敏捷、DevOps,还有DevOps跟云又有什么关系。
首先我们来看看传统瀑布开发模式。
在传统的软件组织中,开发、测试,运维都是独立的部门,开发部门完成所有软件需求上的开发之后,交给测试部门进行测试,测试部门针对所有软件需要上的功能进行测试,发现问题,返回开发组进行修复,一直重复,测试组通过所有测试之后,产品发布,交付运维部门去支持,产品交付运维后发现问题,或者得到客户反馈需要改进功能或者其他需求,再返回开发部门,开发部门再开发再测试。
开发测试之后,可能要到下一个版本发布才能给到客户手中。一个产品周期可能长达一年之久才能到达客户手中。所以在瀑布开发模式下产品周期长,沟通成本大,效率低,对客户的响应太慢。整个软件开发过程,只有发布之后,客户才能看道之前需求的软件的真面目,也许拿到的东西跟用户之前的需求已经千差万别。敏捷的开发方式解决了和客户沟通的问题。接下来我们看看什么是敏捷开发模式。
瀑布开发周期
为了解决开发和客户需求之间更紧密的交流,开发出来的软件即是客户所需要的,敏捷开发模式解决了这一问题。
敏捷开发提出scrum的概念:一个scrum需要负责一个模块的端到端的所有工作,模块整个开发、质量都有scrum负责,直到发布。
每个scrum把各个功能模块都先分解成多个epic,再把一个epic分解成多个story,每个story再分解成多个task,每个迭代完成多个story,每个story都是一个完整的功能,一般一个迭代一般1个月到2个月,包含2~3个sprint(根据项目的不同,有不同的sprint数量),一个迭代就有一个发布,可以直接地demo给客户。及时拿到客户的意见,在之后的迭代可以及时改进。实现了1、2个月就可以面向客户,如果有变动,代价也比较低。
由于开发过程跟客户的不断沟通,最终正确发布的产品才是用户所需的产品,同时也提高了生产效率。
敏捷开发模式
在敏捷开发模式的应用之下,逐渐的发现开发和运维之间仍存在有问题,DevOps解决了这一问题。
DevOps是什么呢?
DevOps是一种软件开发的思想理念,并不是一个具体的工具,也不仅仅是自动化测试。DevOps是一种公司文化,让软件从开发到后期运维更好的交流协作,更快速的对客户的需求作出响应。维基百科上对DevOps的解释是“DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或者惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。
在产品开发运行过程中,开发注重给产品增加更多的特色,而运维更希望产品稳定、不要有太过的改动。在DevOps的模式下,把开发测试运维都归结到一起,从开发到运维都由整个团队来执行。开发提交代码之后,马上就可以自动触发build,然后触发相关的自动测试脚本,通过测试之后,直接部署到环境,用户马上就可以拿到产品。
任何环节出了问题会马上返回开发,修改代码之后,重新提交,自动触发build, 测试,部署。运行期间遇到的问题,开发及时debug解决问题,及时部署新的代码。实现快速的开发、发布,也可以随时关注产品的稳定,及时发现问题解决问题。
DevOps能力环
DevOps有三大要素,分别是人员协作、流程融合、工具创造和探索。其中用到的工具有:
源码管理:Git、SVN…
代码编译:Ant、Maven…
配置管理:Ansible、Puppet、chef…
流水线:Jenkins、Buildbot…
自动测试:Junit..
服务编排:Kubernets…
DevOps三大要素
在DevOps下就不得不提到持续集成(CI)和持续部署/持续发布(CD)。持续集成(Continuous Integration)简称CI, 只要开发人员有提交新的代码,立刻会自动进行构建、单元测试,确保新的代码集成到原有代码,并且单元测试通过,快速集成代码。持续交付(Continuous Delivery)代码通过测试之后,自动部署到贴近真实运行的环境中评审验证。当新加的代码通过在相似的真实环境中运行一段时间之后,就可以持续部署(Continuous Deployment)。自动部署到生产环境。
DevOps在软件生命周期中的位置
DevOps虽然很好,但是企业想把DevOps很好的运行起来,除了对企业文化要有相应的转变,同时自动化覆盖率也要达到一定的比例(单元测试要大于80%覆盖率,自动化集成,自动化接口测试都要达到一定比例),生产环境和测试环境需要基本一致,员工需要提高业务技能可以快速解决问题。
最后,我们来聊聊云平台跟DevOps又有什么关联。DevOps之所以近些年来才开始被广泛使用,也得益于云平台的快速发展。毫无疑问云平台为DevOps的实现提供了助力,云平台的虚拟化使得环境部署更容易创建,修改,释放资源,资源共享,使得自动部署,自动测试,自动发布变的更方便快捷。有些云平台,只要用户产品代码准备好,几小时之内就可帮助产品上线,客户就可以直接应用,这在云没有到来之前是难以想象的,大大节省了公司成本。客户对产品代码一天之内可以进行多次改进多次部署。
请关注启迪云公众号-启迪云技术栈,了解更多更详细的内容。同时也欢迎各位有志之士加入启迪云研发部大家庭。我们将与您一起将启迪云发扬光大,为云计算事业贡献一份力量。
互动区
*你对以上内容有什么看法?你最关注云计算哪个趋势?如果你还有想了解的技术话题,欢迎留言分享。
*「启迪云技术栈」每周4⃣️由启迪云研发部提供技术干货,敬请期待。如需转载请联系小编。
-热门阅读-
/ 启迪云技术栈
开源社区的明星项目—Ceph谈。
/启迪云谈
细说Docker下篇。
启迪云计算有限公司 | 依托于清华启迪控股集团雄厚的资本和强大的科技创新及产业服务能力| 国际领先的私有云及行业云解决方案提供商 | 企业数字化转型首选平台
领取专属 10元无门槛券
私享最新 技术干货