写点什么

书评:DevOps for Developers

2014 年 2 月 11 日

《DevOps for Developers》是去年出版的,从书名可以看出作者希望能够帮助开发工程师理解 DevOps 运动,以及作为开发工程师 DevOps 意味着什么。DevOps 已经推动到目前为止系统管理员厌倦通过“翻墙”来获取软件,并且不得不花费很长的时间,以图确保软件能够在已经稳定、可靠的生产环境中运行。但另一方面,在业务的压力下,为了不断发布新功能而不得不重复各种手工操作的状况也让一些开发人员感到不快,除非业务方能够理解IT 人员在支持业务需要方面是平等的合作伙伴,就像“凤凰项目”描述的那样。(The Phoenix Project:一本关于IT,DevOps 的书籍)

因此,这本书期望填补DevOps 在这一方面的空缺。当然,作者在书中很早就澄清了他很宽泛的使用了“开发人员”这个词,包括程序员、质量保障人员和那些认可“基础设施即代码”的系统管理员。接下来,作者在书中从ALM(资产负债管理(Asset-Liability Management/Asset and Liability Management,简称ALM)的视角相对全面的介绍了DevOps。事实上,这本书也涵盖了通过对一些样例解析涵扩了从敏捷开发到持续发布,包括一些稍微偏离主题的内容,比如规范示例。这些概念都很好地联系在一起,但是对于一本小书来讲,内容的宽泛必然会影响其深度,降低其吸引力,尤其是对那些已经熟悉敏捷和DevOps 概念的人。

这本书以很有趣的方式让我们将DevOps 聚焦在三个视角: 度量观、流程观、技术观,来对比在DevOps 社区里面流行甚广的 CAMS 观点。特别是因为流程观可以降低和削弱文化、自动化、度量、分享的方法,然而,它将很容易的成为影响组织进程的一种严重阻力。

标准和度量视角涵盖了在整个开发过程中需要质量保证团队和测试团队的必要性,这也是开发和运维所有团队都需要靠近并面对的目标。作为重要的观点,这一部分可以更深入探讨一些 DevOps 的具体的环节,比如持续度量(监控)程序的性能和稳定性,在开发的迭代中集成运维团队的反馈以及在开发团队和运维团队中共享监控的任务和访问。

过程(流程)视角阐述了开发团队和运维团队深入合作的必要性以及在发布流程和基础设施管理代码环节上两者需要共同承担责任的必要性。作者在其中的一章里面推荐“使用看板作为DevOps 的流程推动方式”。在另一章中作者讨论了DevOps 的概念缺陷和道德风险,作为一本入门的书来讲,这多少有些偏离主题。特别是在针对不同背景和目标的人能保持经常合作、共享知识的同时还能够完成他们的核心工作职责上,缺乏一些极具可操作性的建议。

最后,对技术视角的阐述占了本书最大的比例,分为这样几个部分:一章关于持续发布(作者的定义是“自动化发布”),一章关于基础设施即代码(包括多个代码样例,多张 Puppet Vagrant 的插图)和一章通过样例来阐释的规范。这一部分的实践方法是很受欢迎的,但是实例化需求这一章最好是丢掉,取而代之以对持续发布做更加全面深入的解释

总的来讲,这本书作为DevOps 的入门书籍来讲,为敏捷开发的同学提供了不错的信息和参考。但是,书中各处各种具体观点的讨论深浅不一,在理论和实践之间缺乏必要的平衡性,所以,它并不适合那些寻找DevOps 现场指导书籍的人。最后,给出版商的一个负面的建议是最好在出版前能够多几个回合的校对。

关于作者:

Michael Hüttermann是一名开发工程师、交付工程师、敏捷以及 DevOps 专家,帮助项目以提升软件交付过程。他曾是甲骨文的 Java 冠军,获得 SCJA,SCJP,SCJD,SCWCD 认证,是 JCP 和敏捷联盟的一员,是 java.net JUGS 社区的领导人和 Cologne Java 用户组创始人。他参加了在芝加哥举行“敏捷 2009”主题会议,并在这个顶级的会议上发表了题目为《敏捷工具》的主题演讲。他写了三本书:“Agile Java-Entwicklung in der Praxis”(德语,O’Reilly 出版,2007 年),“Fragile Agile”(Hanser,2010 年出版)和“Agile ALM”(Manning,2011 年出版)

查看英文原文: Book Review: DevOps for Developers


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014 年 2 月 11 日 08:412444

评论

发布
暂无评论
发现更多内容

一文讲清楚 MySQL 事务隔离级别和实现原理,开发人员必备知识点

古时的风筝

MySQL 数据库 事务隔离级别 mysql事务 数据库事务

Flink初体验

数据社

大数据 flink 流计算

WebSphere Application Server运维实践 --从入门到监控

hafe

Java WAS perfservlet visualVM JMX

一个创业者的途中思考

非著名程序员

创业 读书笔记 程序员 重新理解创业 思考

归去来兮:递归

曲镇

算法

写一个开源的 macOS 程序可以赚多少钱?

子骅 luin

node.js redis GitHub 开源 赚钱

翻译: Effective Go (1)

申屠鹏会

go golang 翻译

寻找伴侣最重要的是什么?

二爷

Spring cloud 之熔断机制

Damon

Java spring Kubernetes rqi

业务系统开发程序员常用linux知识

Objectivezt

Linux

【Vue3.0 Beta】尝鲜

学习委员

CSS Java html5 Vue 前端

【gRPC】Python调用Java的gRPC服务

遇见

Java Python gRPC

为什么你的创业公司应该运行在Kubernetes上

声问

云原生 k8s

用声音在一起,听荔枝CTO丁宁聊UGC声音互动平台的技术世界

ONES 王颖奇

内容 企业架构 互联网

uni-app黑魔法:小程序自定义组件运行到H5平台

崔红保

小程序 uni-app

FormattableString 取代特定区域字符串

喵叔

C# .net 编码习惯

电子书:《Linux Perf Master》

RiboseYim

Linux 性能优化

业务代码必须要做的事情

Objectivezt

近两年影响我的两个重要原则

Selina

芋道 Spring Cloud Alibaba 介绍

【芋道源码】

阿里巴巴 分布式 微服务 Spring Cloud Spring Boot

此为开卷

范学雷

毕竟,一生很短,少有圆满

泰稳@极客邦科技

创业 身心健康 个人成长

人们喜欢彼此制造困难让大家难过

Fenng

面试被问finally 和 return,到底谁先执行?

Damon

Java

OKR实践中的痛点(1):老板的KR我的O,怎么办?

大叔杨

OKR Scrum 敏捷

越是困难,越是要做有分析判断能力的人

泰稳@极客邦科技

创业 团队管理 个人成长

【数据结构】双向链表插入操作的时间复杂度分析

遇见

数据结构 算法 时间复杂度

Linux 性能诊断:负载评估入门

RiboseYim

Linux 性能优化

对话 CTO〡和 PingCAP CTO 黄东旭聊开源数据库新蓝海

ONES 王颖奇

数据库 分布式 开发者

2020了,各家小程序发展的怎么样?

崔红保

小程序 uni-app

分享多年积累的 macOS 效率工具

张晓辉

macos

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

书评:DevOps for Developers-InfoQ