DevOps指北

DevOps指北

  • DevOps是什么
  • DevOps与敏捷开发
  • DevOps成功实践需要哪些条件

DevOps是什么

DevOps是一种持续增长、现代化的应用交付方式,强调开发(Dev)与运维(Ops)之间的沟通(Communication)、协作(Collaboration)和整合(Integration),以上三点同时也是DevOps的三个主要原则。DevOps由Patrick Debois在2009年提出,我们可以将其理解为敏捷开发环境的扩展,旨在整体加强应用交付的过程。

DevOps是新一代的敏捷

早在2009年,许多IT从业人员便已逐渐放弃传统瀑布流的应用交付方式,转而采用非线性敏捷方法,使每个开发阶段相对独立,并在开发周期的早期和整个时间内结合持续性的测试:

这种方法允许开发人员根据持续的反馈,在应用交付至生产之前进行快速修正,从而提高应用交付效率并降低风险。此时,开发得到了优化,但在部署方便并未有太大改观,仍然遵循了传统瀑布流的方式,换句话说,虽然开发通过敏捷方法得到了风险的降低和效率的提高,但采用瀑布流方式的部署减缓着整体的应用交付,导致测试环节依然停留在整个交付过程的最后进行 - 这是错误的所有权分割过程。对于应用交付来说,这是一个巨大的瓶颈,一旦我们在部署时发现问题,开发人员还是需要重头来过。

对比开发和部署之间的断裂,DevOps概念在应用交付各个方面的优势是很实在的:提高效率、降低风险。

DevOps需要文化的转变

DevOps既非工具,亦非技术,而是一种文化的转变。对于任何类型的组织来说,变革都不是一件容易的事,变革所采用的新方法往往是极具挑战的。因此,企业首先应该明确变革可能带来的业务需求变化及挑战。企业都期望能够快速地为用户提供完美的应用和体验,但如果没有合适的工具、应用、行动,这个看似简单的目标很可能会变得极其复杂和混乱,最终导致交付失败而错过商业机会。

当企业内部人员理解一致时,DevOps将发挥出最大的作用。正确的技术、清晰的目标和一致的态度有助于落地DevOps,并实现成功的应用开发和交付。这是一个需要“齐心”和“协力”的团队工作。

DevOps需要统一的多技能团队

如上所述,沟通、协作和整合是将DevOps落地任何开发和交付环境的关键要素。建立多技能团队(如开发、运维和测试人员)可以增加巨大的收益,但没有正确的团队合作精神和态度,人才几乎是无用的。而身处DevOps之中,人们可以互相依靠,整个团队也会更加快速有效地运转,最终带来更高的客户满意度。

DevOps方法的第一步包括理解应用的开发、运维及质量保障如何相互依赖,通过跨部门的协作和交付流程中关键角色之间的开放式沟通,以提高效率、可预测性、可维护性。在整个流程的早期将这些因素整合并自动化,使得团队可以真正像“流”一样快速交付应用。

DevOps是企业IT的未来

现代化的应用相对更复杂,使用多种技术、多个数据库和各种终端,DevOps很可能是应对如此趋势的唯一可行办法。

DevOps要点

以下是DevOps工程师需要知道的术语和工具:

IaaS:时至今日,不知道公有云,不知道AWS、Azure、GCP的IT从业者几乎不存在。IaaS(基础设施即服务)供应商通过互联网在虚拟化环境中的公共连接向客户提供计算资源,包括存储、带宽、虚拟服务器、负载平衡器、网络连接和IP地址等。

PaaS:平台即服务(PaaS)使开发人员能够在基于云的平台上构建应用程序和服务。合格的PaaS产品可能需要很少甚至没有运维,支持多种架构并提供各类预置工具。PaaS提供商通过升级和新功能定期更新其服务,并向开发人员提供从源码到部署的支持。PaaS服务通常以按使用付费的方式提供。

无服务器PaaS:好雨云帮ACP

SaaS:托管在云端的应用(如即时消息、电子邮件、性能监控、财务会计)如果允许个人和组织在线轻松访问和使用。与购买包含许可限制的传统应用相反,SaaS是基于订阅的。

敏捷 vs. 瀑布流

“瀑布流”是一种分离应用开发和交付各个阶段(例如分析、设计、开发、测试)并以线性方式执行每个阶段的方法。因此,项目进行不顺利的话可能会导致代码无法开发;如果某一阶段有延迟,则可能会需要缩短或省略测试和质量保证阶段;如果在测试或QA中出现问题,代码很可能需要重写。

“敏捷开发”是一种以非线性方式查看业务和软件开发项目的方法,相比“瀑布流”更有效率。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。

集成和交付

持续集成(CI) - 开发人员将代码(每天多次)整合到一个共享存储库中,每个代码的独立更改都会立即进行测试以便检测和防止集成问题。

持续交付(CD) - 作为CI的扩展和增量应用交付的下一步,持续交付(CD)可确保在任何时候都可以发布在CI存储库中测试的每个版本的代码。

配置管理(CM)

简单来说,维护硬件和软件并详细记录(包括版本、要求、网络地址以及设计和操作信息)的过程被称为配置管理(CM)。有很多工具可以帮助我们实现CM,也可以使用Bash和Python来构建自己的配置管理自动化。

资源编排

在微服务、面向服务架构、融合基础设施、虚拟化和配置方面,计算机系统之间的协调和集成被称为编排(orchestration)。通过利用定义的自动化工作流,编排确保业务需求与IT基础架构资源保持一致。

容器

容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。开发人员在自己笔记本上创建并测试好的容器,无需任何修改就能够在生产系统的虚拟机、物理服务器或公有云主机上运行。

版本控制

版本控制包括帮助R&D维护和控制其源代码存储库中的更改的实践和工具。R&D使用源代码管理工具来记录和跟踪系统配置文件。

Bug Tracking

Bug tracker是汇总和报告软件错误和缺陷的系统,帮助R&D进行任务管理,是DevOps方法所需一致反馈循环的一部分。

测试自动化

测试自动化通过支持持续运行的多个测试来帮助测试工程师工作,它可以提高测试覆盖率,同时支持有效的释放周期,例如测试自动化工具有助于管理、执行和测量功能测试和负载测试。

单元测试 - 单元测试是允许测试人员检查应用程序的小部件(如特定代码或模块)的过程。该测试通常是自动化和重用的,以支持连续测试和集成。

监控

监控是IT绩效管理的主要内容,是运行在线服务时最重要的方面之一。监控工具至关重要,并提供关键信息,有助于在可用性、安全性和性能方面确保服务的健壮性。

应用程序性能监控(APM) - APM允许您自动检测并收到应用程序框架中包含应用程序和数据库层的热点。

基础设施监控 - 此类别中的工具会自动检测和警告基础物理或虚拟资源性能和可用性的降级。

日志管理

日志管理(或日志分析)是处理大量计算机生成的消息的做法,可以是操作消息(例如,当跟踪服务性能或安全性)或用于BI目的(例如当跟踪在线用户行为时)。

Author Idan Zioni

好雨 - DevOps / 开发运维一体化

https://www.goodrain.com/devops.jsp

DevOps是一种理念,鼓励开发和运维之间沟通、协作、集成和自动化,以便更快捷、更频繁、更可靠的构建、测试、发布应用,而云帮ACP通过对CI/CD、高效运维、微服务架构等功能特性的设计和打磨,为DevOps的实现提供了一个可靠平台。