描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787121298127
编辑推荐
从本书中将会学到
√ 理解DevOps和持续交付的本质并看到DevOps如何支持敏捷流程
√ 了解系统如何相互匹配并组成一个更大的整体
√ 创建并熟悉让DevOps更有效率的工具
√ 用DevOps的思想设计一个适合持续部署的系统
√ 用诸如Git、Gerrit和GitLab等不同方式高效地存储和管理代码
√ 配置一个构建CRUD应用样例的任务
√ 通过Jenkins和Selenium使用自动化回归测试来测试代码
√ 使用诸如Puppet、Ansible、PalletOps、Chef和Vagrant等工具部署代码
√ 使用Nagios、Munin和Graphite监控代码健康
√ 探索Trac的工作方式—— 一个用于问题跟踪的工具
√ 理解DevOps和持续交付的本质并看到DevOps如何支持敏捷流程
√ 了解系统如何相互匹配并组成一个更大的整体
√ 创建并熟悉让DevOps更有效率的工具
√ 用DevOps的思想设计一个适合持续部署的系统
√ 用诸如Git、Gerrit和GitLab等不同方式高效地存储和管理代码
√ 配置一个构建CRUD应用样例的任务
√ 通过Jenkins和Selenium使用自动化回归测试来测试代码
√ 使用诸如Puppet、Ansible、PalletOps、Chef和Vagrant等工具部署代码
√ 使用Nagios、Munin和Graphite监控代码健康
√ 探索Trac的工作方式—— 一个用于问题跟踪的工具
内容简介
本书详细讲解了DevOps的相关知识,可以更好地促进IT团队与软件开发者之间的全方位合作,提高团队效率来确保软件正常的开发和运营。本书的主要内容有:对DevOps和持续交付的简单介绍,DevOps如何影响架构,如何创建企业Java应用程序,如何使用不同的代码库,如何使用一些简单的工具执行代码测试,如何成功配置你的测试,如何监测代码异常以及如何处理日志以及跟踪影响进程的事件。你将会学到:了解DevOps和持续交付的优点以及DevOps如何支持敏捷过程;了解如何将所有系统组装成一个大的整体;安装和熟悉所有你可以用来提高效率的DevOps工具;使用Devops设计一款适合持续部署系统的应用程序;使用不同的选项高效地储蓄和管理代码,例如Git、Gerrit和 Gitlab;配置job来创建CRUD应用样本;使用Jenkins Selenium回归测试测试代码;使用工具来配置你的代码,例如:Puppet、Ansible、Palletops、Chef和Vagrant;使用Nagios、Munin和 Graphite监控代码运行状态;探索Trac(一个跟踪事件的工具)的工作方式。
目 录
前言 ……………………………………………………………………………………………… XIII
1 DevOps 和持续交付简介 ………………………………………………………………… 1
DevOps 简介 …………………………………………………………………………………………………………… 1
多快才算快? …………………………………………………………………………………………………………. 3
敏捷之轮 ………………………………………………………………………………………………………………… 4
敏捷不只是形式 ……………………………………………………………………………………………………… 5
DevOps 和 ITIL(信息技术基础架构库) ………………………………………………………………… 7
总结 ……………………………………………………………………………………………………………………….. 8
2 洞察全局 ………………………………………………………………………………………. 9
DevOps 流程和持续交付——概览 ……………………………………………………………………………. 9
开发人员 ……………………………………………………………………………………………………………………………10
版本控制系统 ……………………………………………………………………………………………………………………..12
构建服务器 ………………………………………………………………………………………………………………………..13
工件库 ……………………………………………………………………………………………………………………………….13
包管理器 ……………………………………………………………………………………………………………………………13
测试环境 ……………………………………………………………………………………………………………………………14
预发布/生产 ……………………………………………………………………………………………………………………….15
发布管理 ………………………………………………………………………………………………………………. 15
Scrum、看板和交付流水线 ……………………………………………………………………………………. 16
圆满结束——一个完整的例子 ……………………………………………………………………………….. 17
识别瓶颈 ………………………………………………………………………………………………………………. 18
总结 ……………………………………………………………………………………………………………………… 18
DevOps 实践
3 DevOps 如何影响架构 ………………………………………………………………….. 19
介绍软件架构 ……………………………………………………………………………………………………….. 19
单块系统场景 ……………………………………………………………………………………………………….. 20
架构经验法则 ……………………………………………………………………………………………………….. 21
关注点分离 …………………………………………………………………………………………………………… 21
内聚原则 ………………………………………………………………………………………………………………. 21
耦合 ……………………………………………………………………………………………………………………… 22
回到单块系统场景 ………………………………………………………………………………………………… 22
一个真实例子 ……………………………………………………………………………………………………….. 22
三层系统 ……………………………………..
1 DevOps 和持续交付简介 ………………………………………………………………… 1
DevOps 简介 …………………………………………………………………………………………………………… 1
多快才算快? …………………………………………………………………………………………………………. 3
敏捷之轮 ………………………………………………………………………………………………………………… 4
敏捷不只是形式 ……………………………………………………………………………………………………… 5
DevOps 和 ITIL(信息技术基础架构库) ………………………………………………………………… 7
总结 ……………………………………………………………………………………………………………………….. 8
2 洞察全局 ………………………………………………………………………………………. 9
DevOps 流程和持续交付——概览 ……………………………………………………………………………. 9
开发人员 ……………………………………………………………………………………………………………………………10
版本控制系统 ……………………………………………………………………………………………………………………..12
构建服务器 ………………………………………………………………………………………………………………………..13
工件库 ……………………………………………………………………………………………………………………………….13
包管理器 ……………………………………………………………………………………………………………………………13
测试环境 ……………………………………………………………………………………………………………………………14
预发布/生产 ……………………………………………………………………………………………………………………….15
发布管理 ………………………………………………………………………………………………………………. 15
Scrum、看板和交付流水线 ……………………………………………………………………………………. 16
圆满结束——一个完整的例子 ……………………………………………………………………………….. 17
识别瓶颈 ………………………………………………………………………………………………………………. 18
总结 ……………………………………………………………………………………………………………………… 18
DevOps 实践
3 DevOps 如何影响架构 ………………………………………………………………….. 19
介绍软件架构 ……………………………………………………………………………………………………….. 19
单块系统场景 ……………………………………………………………………………………………………….. 20
架构经验法则 ……………………………………………………………………………………………………….. 21
关注点分离 …………………………………………………………………………………………………………… 21
内聚原则 ………………………………………………………………………………………………………………. 21
耦合 ……………………………………………………………………………………………………………………… 22
回到单块系统场景 ………………………………………………………………………………………………… 22
一个真实例子 ……………………………………………………………………………………………………….. 22
三层系统 ……………………………………..
前 言
前言
DevOps 领域在近年来变得流行而普遍。它是那么的流行,以至于很容易忘记在 2008年以前,当 Patrick Debois 组织起个 DevOps 之日大会时,几乎没人曾经听说过该词。由开发(developers)和运维(operations)组成的 DevOps 这个词,到底意味着什么?为什么它能造成如此巨大的狂热?本书的任务就是回答这个看起来很简单的问题。
简短的答案就是:DevOps 旨在将不同的社区,比如开发和运维社区,联合起来变成一个更有效率的整体。
这也反映在本书中。它探索了许多在 DevOps 工作中有用的工具,还有那些更加凝聚人们的工具,这些工具比起那些在人之间划清边界的工具来说更令人喜爱。我们用来进行软件开发的流程也是工具,所以将 DevOsp 相关的不同敏捷流派的各个方面包含进来也是很自然的事。
本书也希望做到像标题说的那样,注重实战。让我们在 DevOps 之路上开始旅程吧!
本书主要内容
第 1 章,DevOps 和持续交付简介,涉及了 DevOps 的背景,并介绍它是怎样融入到敏捷开发的广袤世界的。
第 2 章,洞察全局,它会帮助你了解 DevOps 使用的多个系统如何协同工作,组成一个大整体。
第 3 章,DevOps 如何影响架构,描述了软件架构的各个方面,以及当我们以 DevOps的视角工作时它对我们的意义。
第 4 章,一切皆代码,解释了如何实现一切皆代码。而且,你需要一个地方来存储代码,这个地方就是组织里的源代码管理系统。
第 5 章,构建代码,解释了为何需要系统来构建代码,介绍了这些系统。
第 6 章,测试代码,展示了如果需要及早发布或者经常性发布代码,我们就得对代码的质量有信心。因此我们需要自动化回归测试。
第 7 章,部署代码,展示了当完成了代码的构建和测试,你需要将其部署到服务器上,这样客户就能使用新部署的特性了。
第 8 章,监控代码,涵盖了代码如何通过选择的部署方案来安全地部署到服务器上。你需要监护着它以使其正常工作。
第 9 章,问题跟踪,介绍了处理组织内开发流程的系统,例如问题跟踪软件。在实现敏捷流程时,这样的系统是很重要的帮手。
第 10 章,物联网和 DevOps,描述了 DevOps 如何在物联网的新兴领域帮助我们。
本书的使用要求
本书包含了许多实用例子。为了融会贯通这些例子,你需要一台机器,好是基于GNU/Linux 的操作系统,例如 Fedora。
本书的读者
本书面向那些想要承担更大责任,并了解基础设施如何做到构建现代企业的开发者。本书也面向那些想要更好地支持开发者的运维人员。自动化测试的技术人员也是本书的目标受众。本书主要是包含了许多实例的技术文档,适合那些想要学习实现具体工作代码的人员。尽管如此,前两章的实践性并不强。它们交代了有助于了解其余章节的背景和概览。
DevOps 领域在近年来变得流行而普遍。它是那么的流行,以至于很容易忘记在 2008年以前,当 Patrick Debois 组织起个 DevOps 之日大会时,几乎没人曾经听说过该词。由开发(developers)和运维(operations)组成的 DevOps 这个词,到底意味着什么?为什么它能造成如此巨大的狂热?本书的任务就是回答这个看起来很简单的问题。
简短的答案就是:DevOps 旨在将不同的社区,比如开发和运维社区,联合起来变成一个更有效率的整体。
这也反映在本书中。它探索了许多在 DevOps 工作中有用的工具,还有那些更加凝聚人们的工具,这些工具比起那些在人之间划清边界的工具来说更令人喜爱。我们用来进行软件开发的流程也是工具,所以将 DevOsp 相关的不同敏捷流派的各个方面包含进来也是很自然的事。
本书也希望做到像标题说的那样,注重实战。让我们在 DevOps 之路上开始旅程吧!
本书主要内容
第 1 章,DevOps 和持续交付简介,涉及了 DevOps 的背景,并介绍它是怎样融入到敏捷开发的广袤世界的。
第 2 章,洞察全局,它会帮助你了解 DevOps 使用的多个系统如何协同工作,组成一个大整体。
第 3 章,DevOps 如何影响架构,描述了软件架构的各个方面,以及当我们以 DevOps的视角工作时它对我们的意义。
第 4 章,一切皆代码,解释了如何实现一切皆代码。而且,你需要一个地方来存储代码,这个地方就是组织里的源代码管理系统。
第 5 章,构建代码,解释了为何需要系统来构建代码,介绍了这些系统。
第 6 章,测试代码,展示了如果需要及早发布或者经常性发布代码,我们就得对代码的质量有信心。因此我们需要自动化回归测试。
第 7 章,部署代码,展示了当完成了代码的构建和测试,你需要将其部署到服务器上,这样客户就能使用新部署的特性了。
第 8 章,监控代码,涵盖了代码如何通过选择的部署方案来安全地部署到服务器上。你需要监护着它以使其正常工作。
第 9 章,问题跟踪,介绍了处理组织内开发流程的系统,例如问题跟踪软件。在实现敏捷流程时,这样的系统是很重要的帮手。
第 10 章,物联网和 DevOps,描述了 DevOps 如何在物联网的新兴领域帮助我们。
本书的使用要求
本书包含了许多实用例子。为了融会贯通这些例子,你需要一台机器,好是基于GNU/Linux 的操作系统,例如 Fedora。
本书的读者
本书面向那些想要承担更大责任,并了解基础设施如何做到构建现代企业的开发者。本书也面向那些想要更好地支持开发者的运维人员。自动化测试的技术人员也是本书的目标受众。本书主要是包含了许多实例的技术文档,适合那些想要学习实现具体工作代码的人员。尽管如此,前两章的实践性并不强。它们交代了有助于了解其余章节的背景和概览。
媒体评论
DevOps是一个实践的领域,关注于尽可能高效地交付商业价值。DevOps包含从测试环境直至产品环境的代码要经历的全部流程。它强调不同的角色之间共同协作,以及如何工作得更加紧密,就像这个词语的词根暗示的那样——开发和运维。
在快速地介绍了DevOps和持续交付之后,我们迅速前进到DevOps如何影响架构。你将会创建一个企业级Java应用样例,并将在接下来的章节里工作于其上。通过这种方式,我们探索不同的代码存储和构建服务器。你还将学习使用一些工具来测试代码并成功部署测试环境。接下来,你会学习如何监控代码异常并确保它的正常运行。后,你还会了解到如何处理日志并保持对问题的跟踪。
本书面向愿意承担更大责任,并了解现代企业运转的基础设施的开发人员和系统管理员。本书也很适合愿意更好地支持开发人员的运维人员。你无需事先了解任何的DevOps知识。
在快速地介绍了DevOps和持续交付之后,我们迅速前进到DevOps如何影响架构。你将会创建一个企业级Java应用样例,并将在接下来的章节里工作于其上。通过这种方式,我们探索不同的代码存储和构建服务器。你还将学习使用一些工具来测试代码并成功部署测试环境。接下来,你会学习如何监控代码异常并确保它的正常运行。后,你还会了解到如何处理日志并保持对问题的跟踪。
本书面向愿意承担更大责任,并了解现代企业运转的基础设施的开发人员和系统管理员。本书也很适合愿意更好地支持开发人员的运维人员。你无需事先了解任何的DevOps知识。
在线试读
译者序
什么是DevOps?我的前同事李光磊将其译为开发自运维,他还写了篇很有意思的博客来说明:。这个将开发和运维结合起来的词,代表了一种文化,那就是大家共同协作。狭义上的大家,指的是开发和运维,广义上,指的是所有软件生命周期里参与的角色。
“共同协作”是个富有正能量的词。感觉上,随便往哪儿一套都是正确的。那为什么要在DevOps 里着重强调呢?DevOps 到底解决了什么问题?归根结底,就是提高产品质量。爱思考的你,可能心里已经有千万个提高产品质量的方案从脑海里呼啸而过——代码审查、自动化测试、持续集成、代码质量管理工具、程序员鼓励师……对对对,这些方案都能在某种程度上解决一些层次的问题。但是,产品质量的根源在哪儿呢?在于人。如果开发者对自己要做的事情不负责,甚至压根儿不知道后果,怎么能指望这样的人能够生产出来高质量的代码呢?举个例子:作为开发者,我知道自己写的代码会由测试部门来进一步测试,在有进度压力的时候,我就会更倾向于去想:“那就先这么凑合着吧,反正有问题QA 们会说的”。如果我不知道部署和维护产品是怎么一回事,我就不会主动地在产品里写上日志的代码。对于运维人员来说,由于处于软件生命周期的下游,相信对类似的场景感触更甚。DevOps 能够做到的事,就是让人有这个意识:需要对产品的质量负责。DevOps 能够提供一个平台或机制,让我能够从中找到所需的资源。
“共同协作”也是个虚无缥缈的词。它应该如何落地呢?这就是本书想要给读者们带来的内容。在实践上,从架构开始,到代码的存储、构建、测试、部署、监控,直至流程的跟踪,本书推荐了许多可用的工具和练习,确实无愧于《DevOps 实践》之名。细读全书可以对其有一个全局的概览并充实自己的DevOps 工具箱;而在实际场景中再查阅本书,将其当作一本各种技术的快速参考手册也不失为明智之举。本书的许多实例通过Docker 启动,在紧随潮流技术的同时也简化了练习步骤,值得花些时间试试。在企业里,使用自动化和持续交付来提高代码部署频率、降低代码上线间隔。这样的指标是比较容易统计的,在让管理人员满意的同时,也能减少开发和运维的痛苦。只有让各角色都真切地感受到实惠,大家才会更加愿意从心底接受并积极参与到这一过程中。
“共同协作”是个看上去很美的词。为什么大家还不赶紧拥抱它?因为它的成本可能还挺高的。大型企业在管理上,通常权责分明,从而导致每个角色的成员都不愿意轻易踏足其他领域;流程烦琐,导致一个小小的改进也需要漫长的批复;安全性要求高,引发各种违规,进一步导致没有和其他人分享的意愿;员工操作权限管理精密,上不了网、下不了包、开不了虚拟机……这些问题,虽然不至于疾在骨髓,但起码也在肠胃了。而且,自动化测试、部署流水线等都需要比较高的成本。在看见收益和认清自己之前,可能大多数人也会像蔡桓公那样默认拒绝吧:“医之好治不病以为功”。成本的时候,可能就是开始写行产品代码的时候。话虽如此,任何时候都是实现DevOps 的时机,因为随企业的扩大和代码库的膨胀,成本一定是越来越高的。另外,完全地追求技术上的卓越而忽视成本也不是DevOps 的推荐做法。读者们在阅读时,也会看到DevOps 在一些状况下采取的权衡方案。
你希望在一个大家敞开心胸、相互拥抱的环境里共同协作以打造好的产品,还是守着自己的一亩三分地,与人争辩这是谁的责任,抱怨人们冷漠的同时拒绝其他人的“与你无关”的要求?从本书开始,应用自己获得的知识,并尝试改造这个世界吧!
什么是DevOps?我的前同事李光磊将其译为开发自运维,他还写了篇很有意思的博客来说明:。这个将开发和运维结合起来的词,代表了一种文化,那就是大家共同协作。狭义上的大家,指的是开发和运维,广义上,指的是所有软件生命周期里参与的角色。
“共同协作”是个富有正能量的词。感觉上,随便往哪儿一套都是正确的。那为什么要在DevOps 里着重强调呢?DevOps 到底解决了什么问题?归根结底,就是提高产品质量。爱思考的你,可能心里已经有千万个提高产品质量的方案从脑海里呼啸而过——代码审查、自动化测试、持续集成、代码质量管理工具、程序员鼓励师……对对对,这些方案都能在某种程度上解决一些层次的问题。但是,产品质量的根源在哪儿呢?在于人。如果开发者对自己要做的事情不负责,甚至压根儿不知道后果,怎么能指望这样的人能够生产出来高质量的代码呢?举个例子:作为开发者,我知道自己写的代码会由测试部门来进一步测试,在有进度压力的时候,我就会更倾向于去想:“那就先这么凑合着吧,反正有问题QA 们会说的”。如果我不知道部署和维护产品是怎么一回事,我就不会主动地在产品里写上日志的代码。对于运维人员来说,由于处于软件生命周期的下游,相信对类似的场景感触更甚。DevOps 能够做到的事,就是让人有这个意识:需要对产品的质量负责。DevOps 能够提供一个平台或机制,让我能够从中找到所需的资源。
“共同协作”也是个虚无缥缈的词。它应该如何落地呢?这就是本书想要给读者们带来的内容。在实践上,从架构开始,到代码的存储、构建、测试、部署、监控,直至流程的跟踪,本书推荐了许多可用的工具和练习,确实无愧于《DevOps 实践》之名。细读全书可以对其有一个全局的概览并充实自己的DevOps 工具箱;而在实际场景中再查阅本书,将其当作一本各种技术的快速参考手册也不失为明智之举。本书的许多实例通过Docker 启动,在紧随潮流技术的同时也简化了练习步骤,值得花些时间试试。在企业里,使用自动化和持续交付来提高代码部署频率、降低代码上线间隔。这样的指标是比较容易统计的,在让管理人员满意的同时,也能减少开发和运维的痛苦。只有让各角色都真切地感受到实惠,大家才会更加愿意从心底接受并积极参与到这一过程中。
“共同协作”是个看上去很美的词。为什么大家还不赶紧拥抱它?因为它的成本可能还挺高的。大型企业在管理上,通常权责分明,从而导致每个角色的成员都不愿意轻易踏足其他领域;流程烦琐,导致一个小小的改进也需要漫长的批复;安全性要求高,引发各种违规,进一步导致没有和其他人分享的意愿;员工操作权限管理精密,上不了网、下不了包、开不了虚拟机……这些问题,虽然不至于疾在骨髓,但起码也在肠胃了。而且,自动化测试、部署流水线等都需要比较高的成本。在看见收益和认清自己之前,可能大多数人也会像蔡桓公那样默认拒绝吧:“医之好治不病以为功”。成本的时候,可能就是开始写行产品代码的时候。话虽如此,任何时候都是实现DevOps 的时机,因为随企业的扩大和代码库的膨胀,成本一定是越来越高的。另外,完全地追求技术上的卓越而忽视成本也不是DevOps 的推荐做法。读者们在阅读时,也会看到DevOps 在一些状况下采取的权衡方案。
你希望在一个大家敞开心胸、相互拥抱的环境里共同协作以打造好的产品,还是守着自己的一亩三分地,与人争辩这是谁的责任,抱怨人们冷漠的同时拒绝其他人的“与你无关”的要求?从本书开始,应用自己获得的知识,并尝试改造这个世界吧!
评论
还没有评论。