什么是DevOps?

DevOps是一个常用的术语,不过似乎每个人被问到这个问题的都对它有不同的定义。下面是我自己的看法:

DevOps是一系列旨在减少从开发到部署之间所花费的时间的处理方法,通过减少前置准备的周期,开发团队可以更加快速地收集反馈并迭代其解决方案,根据真实的数据和客户反馈来产生并交付价值。

通过这个视角,DevOps就成为实现敏捷开发真正价值的关键组成部分。正如敏捷宣言指出:“我们最优先考虑的是通过在初期并持续传递有价值的软件来满足客户。我们欢迎不断变化的需求,甚至是在开发的后期。敏捷的开发流程就是利用变化为客户创造竞争优势。”

所以,减少花费在将功能发布出去的时间是关键。而在实践中,这意味着更少的时间花费在测试和部署中。为了做到这一点,DevOps的体系已经发展出了许多自动化和简化部署的工具:

  • 统一的开发、阶段和生产环境;

  • 所有生产的制品的管理和部署都以版本控制为基础;

  • 自动化的环境配置管理;

  • 用于测试和代码分析的自动化工具;

  • 主动监控;


当然还包括很多其他的东西。

过去十年间信息产业虚拟化和云技术所带来的许多转变,使计算资源真正地体现在代码和配置中,这也就意味着它们也可以通过版本控制来进行管理;这是一个绝对关键的好处。

有很多工具可以实现这类功能 比如 Ansible, Chef, Puppet,以及PasS供应商Acquia , 而且Acquia有很多这类基于服务模型的功能 。

那在一个数字开发周期中,这是什么样子?

devops1.png

这些中间步骤对于客户来说,并没有很大的价值,而且它们可以很容易地占用大量的时间和精力,削弱团队“完成任务”的能力。

通过减少测试,部署,支持和扩展所消耗的时间和精力,我们可以在代码编写完成后迅速获得关键数据和反馈。自动化哪些值得这么实施的任务大大缩短了反馈的循环流程。随着时间的推移,这种做法适合于更小和更频繁的,基于实现前一次发布收到的反馈的发布。

当一件事正在快速推进的时候,对其路线的微小调整都可以产生很大的影响。但是,如果事情正在缓慢地推进,那么无论你多大力度的推动,你都不会对它的轨迹产生很大的影响。

这意味着,这些中间步骤所涉及的机构有着巨大价值,他们的顺畅工作能提高速度和效率,节约人力及时间成本,以便处理更高级别的任务。为使整个机构持续运作,黄色框中涉及的单位需要做很多事。请忽略“稳定性、安全性、可拓展性、管理性、可操作性、持续性,以及诸如此类好听的词”,非功能性需求将导致技术债务,过多技术债务导致花费更多时间重做已经做过的工作,使时间不能用于真正创造价值的事物。不要因为急于给消费者呈现新特性而缩短过程;留出一些时间修改,往往比每天完成定量工作更重要(至少一样重要)。

展示数据

在IT界重要的是,提出一些有益的怀疑来处理任何华而不实的概念。你也不想跳上一辆车轮即将脱落的车。

根据Puppet实验室的研究,从Gene Kim的Phoenix项目的附录考虑这个表。

devops2.png

像亚马逊,谷歌和Facebook这种运营规模几乎超出莆头人理解范围的,但实现了令人难以置信的可靠性,并保持了稳定的新功能和更新。通过保持这种速度,结果就是他们可以非常敏捷的成为世界上最有价值的公司。如果没有DevOps封装的强大的流程,态度和自动化,这些都是不可能实现的,不可持续的。

Puppet Labs每年都会报告DevOps的状态。他们的2014年报告显示,拥有高绩效IT组织的公司的利润率,市场份额和生产率可能提升了一倍。你可以认为,具有功能性的IT部门的公司可能在所有领域都很实用 - 这就是重点。IT和Digital不是部门,而是战略能力。DevOps将许多高效团队的成功实践定义并规范到一个可访问和易懂的框架中。

所以简而言之 - DevOps是真实的,DevOps是好的。 在后续的博文中,我将介绍这些原则如何适用于Drupal语境。