问题1:您能告诉我们DevOps和Agile之间的根本区别吗?
答 :DevOps基于敏捷理念产生出来的一种方法论,既有相似处又有不同。
相似处:
(1)都是软件开发技术
(2)两者都追求软件的快速开发,都基于怎么在不伤害客户或者运维利益的情况下快速开发出软件。即,如何又快又好地开发出软件。
不同之处:
(1)软件开发完成之后发生的事情不同。在 DevOps 和敏捷中,都有软件开发、测试和部署的阶段。然而,敏捷流程在这三个阶段之后会终止。相反,DevOps 包括后续持续的运维。因此,DevOps 会持续的监控软件运行情况和进行持续的开发。
Devops是持续开发、持续测试、持续部署、持续运维、持续开发,一个循环。敏捷是持续开发、持续测试、持续部署,单向 活动。
(2)优先级–敏捷优先考虑及时性,而DevOps优先考虑及时性和质量。所以,Devops对业务好,敏捷不一定交出高质量业务。
(3)发布周期– DevOps提供较小的发布周期并提供即时反馈,因为有监控,而Agile仅提供较小的发布周期而没有立即反馈。
(4)反馈源–敏捷依赖于客户的反馈,而DevOps涉及到自身(监控工具)的反馈。
(5)工作范围–对于敏捷,工作范围仅是敏捷,而对于DevOps,这是敏捷和对自动化的需求。
问题2:为什么我们需要DevOps?
答 :如今,组织正在尝试通过一系列发布方式将小功能传递给客户,而不是发布大功能集。这样做有很多好处,包括更好的软件质量和快速的客户反馈。
所有这些好处导致更高的客户满意度,这是任何产品开发项目的最重要目标。为此,公司需要:
- 增加部署频率
- 缩短修复时间
- 新版本的故障率更低
- 万一新版本崩溃,请有更快的平均恢复时间
DevOps有助于满足所有这些要求,从而实现无缝的软件交付。像Amazon,Etsy和Google这样的成熟组织已采用DevOps方法,从而实现了以前未知的性能水平。
通过采用DevOps方法,组织可以在一天之内完成数以万计的部署。此外,这样做还可以提供一流的可靠性,安全性和稳定性。
问题3:DevOps有一个称为CI的东西。它是什么,目的是什么?
答 :CI是DevOps的一种开发实践,开发人员可以在一天内多次将代码集成到共享存储库中。
开发和测试的持续集成提高了软件的质量,并减少了交付所需的总时间。
如果检查代码的团队成员遇到编译失败,则开发人员将破坏构建。这样,其他开发人员如果不将编译错误引入自己的工作空间中,就无法与共享源代码存储库进行同步。
这破坏了协作和共享的开发过程。因此,一旦配置项构建中断,立即识别并纠正问题就很重要。
通常,配置项流程包括每次编译成功时都会运行的一组单元测试,集成测试和回归测试。如果上述任何测试失败,则CI构建被认为是不稳定的(这在开发正在进行中的敏捷冲刺中很常见)并且没有损坏。
问题4:您认为实施DevOps自动化的主要好处是什么?
答 :以下是实现DevOps自动化的主要好处:
- 自动化消除人为错误的可能性(核心收益)
- 随着任务变得更加可预测和可重复,当出现问题时,很容易识别和纠正。因此,它可以产生更可靠,更强大的系统。理解:所有动作尽快实现自动化,当任务变更时,自动化任务的失败可以及时暴露出来变更点,而且继承性强,不会过于依赖人的经验,从整个项目来看,这样的系统更可靠、更强大。
- 消除CI管道的瓶颈。这会导致部署频率增加和失败的部署数量减少。它们都是重要的DevOps KPI
问题5:您对版本控制系统(VCS)了解什么?定义其用途。
答 :版本控制系统或VCS是一种能够记录一段时间内对一个文件或一组文件所做的更改的系统。Git和Mercurial是两个最受欢迎的版本控制系统。VCS的重要用途是:
- 检查什么引起了问题的最后修改
- 比较随着时间的变化
- 确定谁介绍了新问题以及什么时候提出的
- 将一个或多个文件还原到某个较早的状态
- 将整个项目还原到以前的状态
问题6:持续集成的成功因素是什么?
(1)维护代码库,代码变更和合入可以跟踪。
(2)自动化构建:开发人员可以自己构建;代码上库之后得到快速构建,每个人都可以看到最新版本的结果;版本构建出来之后,可以持续转测。
问题7:为什么需要持续集成?
开发快速构建,及早并快速发现问题,因为开发人员需要每天多次(更频繁地)将代码集成到代码库中。
问题8:Git是流行的DevOps工具。告诉我们您将如何还原已经推送并公开的提交。
答 :有两种方法可以这样做:
- 通过创建新的提交来撤消已被推送并公开的提交所做的所有更改。执行以下命令:git revert xxx
- 通过修复或删除新提交中的错误文件,然后将其推送到远程存储库。对文件进行必要的更改后,使用以下命令将其提交到远程存储库。即重新修改,或者将原先的代码同步过来,重新提交。常用git reset命令。
问题9:用于评估DevOps成功的几个KPI是什么?
答 :关键绩效指标是关键绩效指标的一种合同形式。为了衡量DevOps流程的成功,可以使用几个KPI。一些最受欢迎的是:
- 应用性能
- 应用程序的使用和流量
- 自动测试通过率
- 可用性
- 改变音量
- 客户票
- 缺陷逃逸率
- 部署频率
- 部署时间
- 错误率
- 部署失败
- 交货时间
- 检测时间(MTTD)
- 平均恢复时间(MTTR)