究竟什么是DevOps? 要想回答这个问题,首先要明确DevOps这个过程参与的人员是谁,即开发团队和IT运维团队。那么,DevOps的意图是什么呢?即在两个团队之间,创建良好的沟通和协做,更快更可靠的建立高质量软件。安全
事实上,并非这两个团队之间的协做帮助交付了更好的软件,而是“开发”和“运维”团队之间的统一致使了软件的改进,并以更快的速度交付。咱们不要忘记DevOps工具在实现自动化方面所扮演的角色。服务器
开发和运维“一体”的感受是由开发人员和操做工程师之间的技能组合和实践的桥接以及自动化(DevOps)工具的实现引发的。世界各地的大型互联网公司都已采用DevOps方法来完全改进其性能、安全性和团队动态。 架构
在本篇文章中,让咱们看看什么是DevOps,以及它为何如此重要。咱们将跟踪DevOps软件开发方法的演变,而后探索什么是DevOps及其生命周期,并经过评估世界顶级公司,来看看如何使用DevOps来得到益处。运维
软件开发的演变工具
多年来,DevOps从现有的软件开发策略/方法发展而来,以响应业务需求。让咱们简要地看一下这些模型是如何演变的,以及它们最适合的场景。性能
缓慢而繁琐的瀑布模型演变成敏捷,开发团队在短期内完成软件开发,持续时间甚至不超过两周。如此短的发布周期帮助开发团队处理客户反馈,并将其与bug修复一块儿合并到下一个版本中。测试
虽然这种敏捷的SCRUM方法为开发带来了敏捷性,但它在运维方面却失去了敏捷实践的速度。开发人员和运维工程师之间缺少协做仍然会减慢开发过程和发布。网站
DevOps方法就是基于对更好的协做和更快的交付的需求而产生的,DevOps容许用较少复杂问题的持续软件交付来修复和更快地解决问题。spa
如今咱们已经了解了DevOps的发展,让咱们来详细看看DevOps是什么。3d
什么是DevOps?
DevOps是一种软件开发方法,涉及软件在整个开发生命周期中的持续开发、持续测试、持续集成、持续部署和持续监控。这些活动只能在DevOps中实现,而不是敏捷或瀑布,这就是为何顶级互联网公司选择DevOps做为其业务目标的前进方向。DevOps是在较短的开发周期内开发高质量软件的首选方法,能够提升客户满意度。
在不了解DevOps生命周期的状况下,对DevOps的理解也会片面化。咱们以CORNERSTOEN一站式云端DevOps平台为例。让咱们看看它的DevOps生命周期,并探讨它是如何与下图所示的软件开发阶段相关联。
持续开发:
这是DevOps生命周期中软件不断开发的阶段。与瀑布模型不一样的是,软件可交付成果被分解为短开发周期的多个任务节点,在很短的时间内开发并交付。
在CORNERSTONE任务模块里,任务分配给谁,就会是谁的责任。并且任务支持多责任人与子任务关联,全部的任务和状态都会体如今任务模块里,这个任务过程当中的参与人员随时知道任务的状态和目前碰到的问题,可有效推动工做的解决。有了CORNERSTONE可以帮助咱们追溯和监控,促进对于接任务的人员有效负起责任,并可以及时同步到信息。
持续测试:
在这个阶段,开发的软件将被持续地测试bug。CORNERSTONE平台覆盖完整的测试流程,可进行测试用例的编写,创建用例库,减小重复性操做,让研发团队的协做更高效,产品交付更快速。经常使用的两个功能为:
1)测试用例管理
经过编写测试⽤例,制定测试计划并执⾏,测试结果可直接关联到缺陷,方便对问题进行跟踪处理,实现对迭代质量的全程把控。
2)缺陷管理
强大的缺陷管理与统计功能,经过分组、解决状态、优先级等列表对缺陷进行全方位记录与跟踪,同时明确缺陷责任人,及时跟进解决缺陷;同时支持导入导出功能,导出时支持任意格式,不受模板限制。
持续集成:
这是支持新功能的代码与现有代码集成的阶段。因为软件在不断地开发,更新后的代码须要不断地集成,并顺利地与系统集成,以反映对最终用户的需求更改。更改后的代码,还应该确保运行时环境中没有错误,容许咱们测试更改并检查它如何与其余更改发生反应。
CORNERSTONE⽀持将持续集成的结果部署到对应的测试环境,全部部署版本在测试环境中可随时访 问,⽀持灰度发布到⽣产环境中。
持续部署:
它是将代码部署到生产环境的阶段。在这里,咱们确保在全部服务器上正确部署代码。若是添加了任何功能或引入了新功能,那么应该准备好迎接更多的网站流量。所以,系统运维人员还有责任扩展服务器以容纳更多用户。
CORNERSTONE支持依赖脚本pipeline实现的DevOps,支持持续集成与自动化部署,可直接在可视化的服务器上进行操做,同时知足多种开发语言,完全解决敏捷开发在运维层面的瓶颈,方便开发人员对项目开发生命周期进行全盘管理。
持续监控:
这是DevOps生命周期中很是关键的阶段,旨在经过监控软件的性能来提升软件的质量。这种作法涉及运营团队的参与,他们将监视用户活动中的错误/系统的任何不正当行为。这也能够经过使用专用监控工具来实现,该工具将持续监控应用程序性能并突出问题。
CORNERSTONE嵌⼊一体化监控运维平台,实现IT环境的数字化、标准化,直接运维分析的基础,减小人工干预,下降⼈工成本。
既然咱们已经肯定了DevOps的重要性,而且了解了它的不一样阶段以及所涉及的DevOps工具,如今让咱们看看Facebook的一个案例研究,并理解为何他们从敏捷转向DevOps。咱们将采用Facebook曾推出的新特性的用例,这些新特性致使Facebook从新评估其产品交付并采用DevOps方法。
DevOps案例研究
曾经,Facebook向遍及全球的若干亿用户推出了一系列新功能——时间轴,推荐和音乐功能。发布后Facebook上产生的巨大流量致使服务器崩溃, 推出的功能得到了用户的大规模超常规响应,这致使了新功能产生了不可控的结果,使他们没有预料到。
这致使了Facebook从新评估和战略调整,从而使Facebook推出了暗启动技术。使用DevOps原则,Facebook为其新版本的发布建立了如下方法。
Facebook暗启动技术
暗启动是在新功能彻底发布给全部用户以前,逐步将新功能,推广到选定的一组用户的过程。这容许开发团队尽早得到用户反馈,测试错误,而且还能够测试基础架构性能。
这种发布方法是持续交付的直接结果,有助于实现更快,更迭代的版本,确保应用程序性能不会受到影响,而且用户能够很好地更新该版本。
在暗启动技术中,新功能经过专用的部署管道发布给小型用户群。在上面给出的Facebook暗启动图表中,能够看到只打开了一个部署管道,将新功能部署到一组选定用户。此时剩余的数百条管道所有关闭。
持续监视部署功能的特定用户群,以收集反馈并识别错误。这些错误和反馈将被归入开发,测试和部署在同一用户群中,直到功能变得稳定。一旦实现稳定性,经过启用其余部署管道,将逐步在其余用户群上部署这些功能。
Facebook经过将代码包装在功能标记或功能切换中来实现此目的,该切换用于控制谁能够看到新功能以及什么时候查看。与此同时,模拟向用户启动代码的所有效果,在向用户开放所有功能以前,能够及早的暴露应用程序基础架构的痛点和区域,功能稳定后,将经过多个版本将其部署到其他用户。
经过这种方式,Facebook拥有一个受控或稳定的机制,能够为其庞大的用户群开发新功能。相反,若是功能没有获得很好的响应,他们能够选择彻底回滚部署。这也帮助他们为部署准备服务器,由于他们能够预测网站上的用户活动,并相应地扩展服务器。
总结
腾讯,阿里巴巴,百度以及许多领先的科技巨头,在向全部人发布以前,都使用暗发布逐渐向一小部分用户发布和测试新功能。
DevOps的目的是更快速、更可靠地建立质量更好的软件,同时开发、运维团队之间进行更多的沟通和协做。它是一个自动化过程,容许快速、安全和高质量的软件开发和发布,同时保持全部利益相关者在一个循环中。这就是DevOps得到愈来愈多的大型互联网公司青睐的真正缘由。想要了解更多DevOps解决方案,请百度搜索CORNERSTOEN官网了解体验!