DevOps:软件架构师行动指南1.2 为什么是DevOps

简介:

1.2 为什么是DevOps


从很多方面来讲,DevOps是对缓慢发布的问题做出的响应。发布投放到市场的时间越长,从中获得的功能或质量提升的收益就越低。理想情况下,我们希望持续发布。常常用术语持续交付或持续部署来表示。我们在第5章和第6章讨论这两个术语的细微差别。在本书中,我们使用术语持续部署,或部署。我们开始时先描述一个正式发布过程,然后深入探讨缓慢发布的一些原因。

1.2.1 发布过程

向客户发布新系统或现存系统的新版本是软件开发周期中最敏感的步骤。不论系统或版本是对外发布、直接由客户使用还是严格限定于内部使用,都是这种情况。只要系统有多于一个人使用,发布新版本就可能招致不兼容或失败,接下来就是客户的不满。

因此,各个组织在定义发布计划的过程上投入了大量精力。下面的发布计划步骤改编自维基百科。传统上,大部分步骤都是手工完成的。

1)与客户/干系人一起定义发布及部署计划并达成一致意见。可以在团队或组织层面完成。发布或部署计划应该包括那些纳入新发布的功能,并确保运维人员(包括帮助台及支持人员)知晓日程安排,资源需求得到满足,并安排所需的各种附加培训。

2)确保每个发布包包含的一组相关资产与服务组件之间是相互兼容的。随着时间的推移,包括库、平台和依赖服务在内的各种东西都会发生变化。变化可能会引入不兼容。这个步骤是为了防止不兼容性在部署之后才显现出来。第5章讨论确保这些兼容性的方法。管理依赖关系是贯穿全书反复出现的一个主题。

3)确保在整个转换活动期间都能保持发布包及组件的完整性并在配置管理系统中准确记录。这个步骤包括两部分:首先,确保组件的旧版本不会无意间被纳入发布中;其次,确保保留此次部署的组件的记录。知道此次部署了哪些要素对于部署后追踪发现的错误是很重要的。我们将在第6章讨论部署的细节。

4)确保所有发布包和部署包都能追踪、安装、测试、验证,以及卸载或者在需要时能够回滚。部署的内容在很多情况下可能需要回滚(卸载新版本、重新部署旧版本),例如代码中存在错误、资源不足、许可证或证书过期。

这个清单中列举的活动可以以不同程度的自动化方式实现。如果所有这些活动都主要是通过人工配合完成,那么这些步骤很费力、耗时并且容易出错。任何自动化活动都反映了团队或组织层面对发布过程的一致性理解。因为工具一般都不止一次地使用,所以将对发布过程的一致性理解嵌入工具中会使得这种一致性在多个发布中都是持久维系的。

正确的发布是一件严肃的事情,如果你不想重视它,可以想想这几个媒体报道过的引起了重大财务损失的事件。

2012年8月1日,骑士资本集团(Knight Capital)升级失败,造成4.4亿美元的损失。

2013年8月20日,高盛集团(Goldman Sachs)升级失败,潜在地可能造成数百万美元的损失。

因为升级失败而导致宕机或故障的例子有很多,这只是其中的两个。在一个组织中,正确的部署升级是大型且重要的活动,并且这种活动应该快速完成,并将出错概率降到最低。有几个组织调查了部署的问题。我们报告其中的两个:

XebiaLabs是一个销售部署工具和持续集成工具的组织。在他们2013年做的一项调查中,有130多位被调查者做出了回应。这些被调查者有34%来自IT服务公司,健康、财务服务和电信公司的各占10%。7.5%的被调查者报告说他们的部署过程“不可信赖”,57.5%的人报告说他们的部署过程“需要改进”。49%的人报告说在部署过程中最大的挑战是“在不同环境和应用程序中不一致的地方太多”。32.5%的人报告说“错误太多”。29.2%的人报告说他们的部署依赖于定制的脚本,35.8%的人报告说他们的部署是部分脚本、部分手工的。

CA科技公司为客户提供IT管理解决方案。他们在2013年做了一项调查,有1300人做出了回应,这些人所在公司的收入超过1亿美元。在那些说是看到了采用DevOps带来的收益的人中,53%的人说他们已经看到软件和服务的部署频率增加,41%的人说他们预计部署频率会增加。42%的被调查者说他们看到部署应用程序的质量提升了,49%的人说他们预计质量会提升。

推广自动化部署是发起这两个调查的组织的利益所在,即使这样,他们也清楚地说明了不同市场的很多公司都在关注部署速度和质量。

1.2.2 配合不佳的原因

考虑在开发团队完成系统的所有编码和测试之后发生的事情。系统需要放入满足以下条件的生产环境中:

只有适当的人才能访问它。

系统与生产环境中交互的所有其他系统都兼容。

有足够的资源满足系统的运行。

用于运行的数据是最新的。

系统生成的数据可以由生产环境中的其他系统使用。

此外,帮助台支持人员需要就新系统的功能接受培训,运维人员需要就如何排除系统运行中出现的问题而接受培训。发布时机可能也很关键,因为发布时运维人员的关键人员不能缺席,时间上也不能和需要使用现有资源的新的促销活动重合。

这些都不是在不经意间发生的,每一项工作都需要开发人员和运维人员之间的配合。如果开发人员和运维人员不就这些项目中的一个或多个进行沟通,不难想象会出现什么情况。开发人员的一种常见的态度是“做完了开发,程序可以跑起来了”。我们在讨论采用DevOps的文化障碍时会探讨这种态度产生的原因。

组织中都有一套过程确保发布过程顺利,其中一个原因是协作配合并不总能以适当的方式进行。这种不满是推动DevOps发展的一个驱动力。

1.2.3 运维人员能力有限

运维人员要做很多工作,但是他们能够完成什么或者他们当中谁对什么系统比较熟悉,这方面是存在不足的。考虑一下像维基百科中详细描述的现代运维人员的职责。

分析系统日志,识别计算机系统潜在的问题。

在现有的数据中心环境中引入并集成新技术。

执行系统及软件的例行审计。

执行备份。

对操作系统进行更新、补丁升级和配置更改。

安装并配置新的硬件和软件。

增加、删除或更新用户账号信息;重置密码等。

回答技术问题并帮助用户。

确保安全。

用文档记录系统的配置信息。

解决所有报告的问题。

优化系统性能。

确保网络基础设施启动和运行。

配置、增加及删除文件系统。

学习卷管理工具的知识,如Veritas(即现在的Symantec)、Solaris ZFS、LVM等。

每一项工作都需要深入理解。难怪我们在问一个因特网公司的IT总裁他最大的问题是什么时,他回答说“找到并留住合格的人”。

DevOps运动采用一种不同的方法。它们的方法把以前由运维人员完成的很多任务都自动化了,并让开发人员承担部分剩余的工作,通过这种方法,可以减少对专业运维人员的需求。

相关文章
|
25天前
|
Kubernetes 持续交付 Docker
探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
【10月更文挑战第18天】探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
74 2
|
2月前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
197 3
|
4月前
|
缓存 Devops 微服务
微服务01好处,随着代码越多耦合度越多,升级维护困难,微服务技术栈,异步通信技术,缓存技术,DevOps技术,搜索技术,单体架构,分布式架构将业务功能进行拆分,部署时费劲,集连失败如何解决
微服务01好处,随着代码越多耦合度越多,升级维护困难,微服务技术栈,异步通信技术,缓存技术,DevOps技术,搜索技术,单体架构,分布式架构将业务功能进行拆分,部署时费劲,集连失败如何解决
|
6月前
|
监控 Devops API
构建高效微服务架构:API网关的作用与实践构建高效稳定的云基础设施:DevOps与容器化技术融合实践
【5月更文挑战第28天】 在当今的软件开发领域,微服务架构因其灵活性、可扩展性和容错能力而备受推崇。本文将深入探讨API网关在构建微服务系统中的关键角色,包括它如何促进系统的高可用性、安全性和性能监控。我们将剖析API网关的核心组件,并借助具体实例展示如何实现一个高效的API网关来服务于复杂的微服务环境。 【5月更文挑战第28天】 随着企业数字化转型的深入,传统的IT运维模式已难以满足快速迭代和持续交付的需求。本文聚焦于如何通过融合DevOps理念与容器化技术来构建一个高效、稳定且可扩展的云基础设施。我们将探讨持续集成/持续部署(CI/CD)流程的优化、基于微服务架构的容器化部署以及自动化监
|
6月前
|
运维 监控 Devops
构建高效稳定的云基础设施:DevOps与自动化运维的融合构建高效微服务架构的最佳实践
【5月更文挑战第28天】 在数字化转型的浪潮中,企业对于云基础设施的依赖日益增加。为了应对不断变化的市场需求和提供不间断的服务,传统的IT运维模式已不再适应现代业务的发展。本文将探讨如何通过结合DevOps理念和自动化工具,实现云基础设施的高效稳定运营。我们将分析自动化运维在提升效率、降低成本以及增强系统稳定性方面的关键作用,并展示实践案例以验证其效果。
|
运维 Kubernetes Devops
基于k8s的devOps自动化运维平台架构设计(中英文版本)
基于k8s的devOps自动化运维平台架构设计(中英文版本)
|
运维 Cloud Native 安全
带你读《云原生架构白皮书2022新版》——DevOps(上)
带你读《云原生架构白皮书2022新版》——DevOps(上)
521 9
|
存储 运维 Kubernetes
带你读《云原生架构白皮书2022新版》——DevOps(下)
带你读《云原生架构白皮书2022新版》——DevOps(下)
258 3
|
弹性计算 运维 Kubernetes
带你读《云原生架构白皮书2022新版》——运维提效 60%,视野数科 SAE+Jenkins 打造云原生 DevOps
带你读《云原生架构白皮书2022新版》——运维提效 60%,视野数科 SAE+Jenkins 打造云原生 DevOps
226 7
|
运维 架构师 Devops
开发者、架构师、技术管理者DevOps技能学习篇
云效为开发者、架构师、项目管理者、技术管理者提供了系列学习资料和视频课程,帮助企业落地scrum、devops和bizdevops。
499 1