开发|希望这是我最后一次谈DevOps

【51CTO.com原创稿件】什么是 DevOps?“DevOps”是“开发”development 和“运维”operations 两者的组合。
 开发|希望这是我最后一次谈DevOps
文章图片
图片来自 Pexels
DevOps 可看作一种文化风向标,在该文化引领下,能促进项目团队中开发,测试,运维,产品等成员间的无缝协作。
它通过有效的自动化及可重复的方式更快地将代码部署到生产环境中,提高企业交付应用程序或服务的速度,从而更好地为客户提供高质量的产品,并在市场上获取更强有力地竞争优势。
因此,DevOps 可视为企业项目团队中一条持续优化,密切配合,协同运转的“隐形生产链”。
 开发|希望这是我最后一次谈DevOps
文章图片
为什么需要 DevOps?
在那些没有 DevOps 实践的日子里,项目团队都经历了什么:

  • 项目内部开发团队和运维团队是完全独立的。
  • 当开发团队针对需求进行代码设计/构建后,测试任务和部署任务也是完全孤立彼此的活动,往往导致整体项目实际周期比预期构建耗时更长。
  • 团队成员各自花费大量时间用于设计,开发,测试,部署,而非汇聚于整体项目构建本身(即,分而不合)。
  • 手动部署代码往往不可避免出现人为错误,即便通过 Jenkins 持续集成,这仅仅是构建中的一部分而已。
  • 产品,开发,测试,运维团队有各自的时间轴,并不同步,将导致累计延迟的情况。
持续提升团队产品的交付率,在确保产品质量的前提下缩短交付时间,是每个项目团队共同的目标,然而理想与现实间总会横着一道难以逾越的鸿沟。
全球知名研究机构 Forrester 曾指出:只有 17% 的团队能在足够快地时间内交付客户所需产品。
在无 DevOps 文化引入及实践的情况下,从以上列出的 5 大痛点不难得出团队生产力低下,协同工作效率不尽如人意的原因所在。
DevOps 与传统 IT 的区别
为了清晰认识到 DevOps 引入给项目运作带来的变化, 以下将结合一则场景对比“传统研发模式” VS “DevOps”的相异之处。
假设当前项目团队工作进展如下:
“传统研发模式” VS “DevOps”对比图如下:
 开发|希望这是我最后一次谈DevOps
文章图片
DevOps 的价值
在敏捷项目研发大规模盛行的当下,DevOps 有助于敏捷团队更好地实行持续集成和持续交付,进而帮助项目团队更快地将他们所研发的产品/系统/平台投放市场。
此外 DevOps 的优势不仅局限于此,它还有其他值得关注的因素:
  • 可预测性:DevOps 有效降低了新版本的故障率。
  • 可重复性:DevOps 可将所有项目中的内容进行版本控制,便于随时还原早期版本。
  • 可维护性:在新版本崩溃或当前系统不可用的情况下,通过 DevOps 可轻松执行恢复过程。
  • 上市时间:DevOps 通过简化的软件交付程序,大大缩短了产品上市时间(保守估计至少可缩短 50% 的时间),这抢占市场先机的数据对当下的移动应用程序来说绝对是一大亮点。
  • 更高的质量:DevOps 中的基础设施建设有助于团队提高应用程序开发的质量。
  • 降低风险:DevOps 将安全因素纳入到软件交付的生命周期中,这大大减少了整个生命周期中的缺陷。
  • 将较大的代码库分成小段:DevOps 基于敏捷编程方法,将较大的代码库分解为较小的可管理模块。
DevOps 生命周期
DevOps 在开发和运营间构建了一座深度集成桥梁,只有全面了解 DevOps 生命周期才能进一步体会到持续集成持续部署(CI/CD)的实际意义。
以下罗列出 DevOps(CI/CD)生命周期中各阶段的核心任务:
①开发(Development)
DevOps 实践中会将整个软件开发过程分为若干个小的开发周期,这有益于 DevOps 团队通过小规模迭代来加快软件开发和软件交付的过程。
②测试(Testing)
QA 团队通过自动化手段辅助测试,协助开发人员识别和修复新代码中的错误。
③持续集成(Continues Integration)
在此阶段,新增功能将集成进之前的代码中,进行集成测试;言下之意,我们顺理成章地得出:持续开发只有通过持续集成和持续测试才能有效验证,从而确保能够顺利进入下一阶段的迭代。
④持续部署(Continues Deployment)
在 DevOps 中,除了强调持续集成(CI)外,部署过程也是持续进行的,在持续部署(CD)过程中,必须确保代码在任何时间所做的任何更改都不会影响到当前网站/系统已上线的功能(尤其是那些高流量的网站)。
⑤监控(Monitoring)
在此阶段,运维团队将密切关注系统/平台中的错误,Bug 等任何异常行为,实时反馈一切异常情况。
DevOps VS 敏捷
项目利益干系人和沟通链是 IT 流程中典型的核心要素,如果说敏捷模式的引入是为了解决客户方与研发团队沟通中的空白,那么 DevOps 的植入则填补了研发团队与 IT 运维团队间的空白。
 开发|希望这是我最后一次谈DevOps
文章图片
 开发|希望这是我最后一次谈DevOps


推荐阅读