一些问题我们都曾遇到过:长研发周期、复杂流程、部署失败、推倒、重做、半夜报警、“在我的主机上好好的,怎么到这儿就不行了”、紧急更新,等等,所有问题都夹杂着责骂声袭来。所有参与过生产软件应用程序的开发或维护的人,几乎都有过相似的经历。

我们相信一定有一种更好的方法。

开发运维所蕴含的概念其实非常简单:将有不同技能的人团结起来,扫除成功路上的所有拦路虎,一起完成一个共同的目标。敏捷方法广泛而成功地改善了业务人员与技术人员间的沟通,而开发运维理念的基础正是敏捷方法。开发运维将相同的理念应用到了传统上相互独立的开发、QA和运维团队上。

开发运维方法始于2009年,在2010年发展成熟。随着人们对它的了解和实践的增多,它背后的理念一定会产生重要的影响。

此外,最近几年迅猛发展的技术因素促使开发人员和系统管理员更紧密地协作,这也加速了开发运维的发展。正如Patrick Debois所说的:“虚拟化使运维人员能够快速创建新环境,云计算则完全解决了资源问题。开发运维的真正特点源于两个概念:配置管理和基础架构即代码。” 1

对于这种方法的发展壮大,我并不感到意外。多年来,我的工作就是改进应用的交付过程,实现项目技术知识与反馈的集中管理,所以,当第一次听说“开发运维”这一概念及其要解决的问题时,我马上就体会到了它的含义。这就像是一个“触电”时刻。

对于业务而言,减少或消除开发人员和运维人员之间的隔阂是非常重要的,因为他们不仅需要尽快地将新应用和特性交付市场,也需要在运维中保证它们有更符合现代互联网要求的稳定性和规模。

虽然概念简单,但是它给大多数组织带来了一种巨大的文化挑战,特别是那些大型或流程已根深蒂固的组织。而且,即使在通常情况下开发运维解决的问题还算比较清晰,我们仍然需要做很多工作,才能理解它对于组织的真正意义。和敏捷的情况一样,针对开发运维实践的“正确方式”仍然有些争议,不同的团队在努力实现自己的计划时仍然会产生分歧。但是,它的基本理念是无可争议的。

本书关注一些基础概念,读者可以用它们来确定团队内部、团队之间存在的问题,还会给出一些解决问题的最佳实践方法。本书遵循具体问题具体分析的原则,因此不会介绍某一种特定的方法,而是帮助读者寻找适用于自身特殊环境的观点和方法,并且了解在这个过程中可能遇到的挑战和得到的结果。

此外,本书还会介绍一些来自知名企业的专家经历,了解他们曾面对与战胜过的困难。

亲爱的读者,我真心希望你能够在自己的组织中运用本书所介绍的理念。

Brett Porter CTO,MaestroDev

1. Cutter IT Journal,第8期第24卷,2011年8月。

目录