《DevOps实战:VMware管理员运维方法、工具及最佳实践》——1.2 采用系统思维

简介:

本节书摘来自华章计算机《DevOps实战:VMware管理员运维方法、工具及最佳实践》一书中的第1章,第1.2节,作者:小特雷弗 A. 罗伯茨(Trevor A. Roberts Jr.)乔希·阿特韦尔(Josh Atwell)埃格勒·西格勒(Egle Sigler)著,更多章节内容可以访问云栖社区“华章计算机”公众号查看

1.2 采用系统思维

系统思维意味着将涉及软件发行版本部署的所有团队当成一个紧密相连的单位,而不是日程安排相互冲突的多个分散团队。这些团队包括信息安全、运营、开发、质量保证(QA)、产品管理等。
在我们的讨论中所提到的系统指的是经历整个软件开发生命期(规划、开发、QA、部署和维护)的任何项目,不管这些项目是供内部还是外部消费的。
1.2.1 改变团队的互动方式
我们将焦点放在第一件应该做的事:成为开发团队的顾问。和负责定期规划会议的开发团队领导(在敏捷的术语中称为产品负责人和敏捷教练)对话,要求加入他们的一些回忆。主动倾听可能需要基础设施采购/部署的任何团队目标或者可交付成果。下面的几段强调来自开发团队的需求/规格示例,说明了在这种会议期间你所能提供的反馈/专业意见。
“我们需要用于客户源代码的长期数据存储。”
开发团队不一定直接说出他们需要一个新的磁盘阵列,甚至没有意识到需要采购存储设备。但是,对存储系统的认识会提示你,有必要和存储主题专家(SME)一起进行容量规划。
你还需要在开发人员讨论用户数据生命期管理时考虑不同的存储层次。
“我们需要在生产环境中运行独立于客户使用实例的Taao项目实例。”
这立即让你想起附加虚拟网络或者虚拟防火墙的需求,这能够使生产和客户数据流量与内部流量分隔开。你还需要咨询信息安全团队,了解提供客户数据分离保证的审计过程。
“在我们的最后一个发行周期中,代码在我的便携电脑上成功编译和运行,但是在部署到生产环境时崩溃。”
开发人员可能提出一个在之前的代码部署中遇到的问题,提交的代码在她的便携电脑上工作正常,但是在生产部署时发生故障。她的本地开发环境运行的是Ubuntu虚拟机(VM),和非军事区(DMZ)中的CentOS服务器上实施的安全补丁或者防火墙规则不匹配。所以,需要立即打补丁以满足最后限期(对于开发团队和运营团队都是一个漫长的夜晚)。你对Vagrant和Packer等环境构建工具和Puppet、Chef及Ansible等配置管理工具的认识,使你能够构建一个用于开发人员便携电脑且匹配生产服务器规格的标准测试环境。
由于开发团队领导了解了运营团队在发行周期早期为了缓解开发环境问题所做出的努力,你在协调与此努力相关的一些活动时就会更容易一些。首先,这意味着开发团队需要确保其成员不会将任务推给其他团队。(也就是说,“现在是周五下午5点了,我不知道代码能不能在生产环境中正常工作,但是无论如何,我都会把它提交到存储库!”)
某组织在最近的PuppetConf上发表讲话,分享其代码部署策略:当代码部署到生产环境时,编写代码的开发人员参与更改窗口期的轮班。这样,如果代码中出现任何复杂现象,他们可以立即协助运营团队查错和解决。坦率地说,这也使开发人员有动力编写更好的代码,避免在凌晨3点接到电话去修复缺陷。
在继续之前,对于可能阅读本书的经理,Jez Humble强烈建议:不要构建新的DevOps团队!雇用在DevOps方法学上有专业能力的开发人员、QA工程师、运营人员是个好主意,但是创建不同于组织其余团队的全新DevOps团队只会带来新的“竖井”,可能对你的目标造成反作用。相反,应该像前面提到的那样,继续更好地协调各个团队,使他们像一个团队那样思考和行动,而不是各自寻求自己的最大利益。
1.2.2 改变基础设施部署方法
数据中心的一些扰人而又常见的现象可能妨碍系统的进展:手工制作的“金映像”、雪花服务器和易碎箱。
服务器(不管是物理还是虚拟服务器)部署的常用方法是维护一组包含必要更新、补丁、设置等内容的操作系统配置,人工运用这些配置使系统立刻为部署做好准备。这些配置被称作“金映像”,传统上采用ISO形式,已经根据某个运行手册人工应用补丁。最近,金映像已经采用模板VM的形式保存。但是,老实说:金映像也可能生锈!
金映像本身没有什么问题。但是,构建它们的方式可能带来问题。如果人工构建,该过程可能是一个全职工作,必须跟踪模块更新、安全补丁等,然后重新配置ISO/模板VM供以后使用。必须有一种更有效的方法,也的确有!
使用第4~13章介绍的配置管理技术,可以自动构建映像。随着服务器配置更改并登记到Git(第3章中介绍)等存储库,Jenkins(参见第18章)等持续集成(CI)系统可以输出一个更新的金映像。CI系统可以使用Packer等工具生成用于Vagrant、虚拟化管理器和云提供商的模板VM。
Martin Fowler提出了“雪花服务器”的思路,雪花服务器是一台物理机器或者VM,最初是为了保持标准化的良好愿望。但是,不管是为了完成故障报告而进行快速修复、高管要求的特殊项目还是其他原因,这种服务器都变成高度定制的。这些特殊更改解决了短期问题,但是会造成长期的麻烦。当对这些服务器上的软件包升级时会发生什么?安全补丁甚至操作系统升级又会发生什么?
如何解决雪花服务器的问题?首先,我们通过登录到服务器命令行界面强制避免任何更改;不允许一次性执行前端和软件包更新工具或者更改配置文件。所有服务器更改都只能通过配置管理技术进行。
对于现有的雪花服务器,必须进行一些乏味而不必要的工作。首先,检查服务器配置,以便准确地知道需要修改的配置文件、需要安装的软件包和其他需要包含在配置管理脚本中的关键设置。多次迭代构建和测试服务器,每次都对配置管理脚本进行调整,直到测试环境与雪花服务器完全相同。将更改提交到源代码库,就可以拥有一个可在生产服务器无法恢复时使用的可重复构建过程。
易碎箱这一术语来源于Nassim Nicholas Taleb的《Antifragile》一书,描述了一台运行关键软件栈的物理或者虚拟服务器,每个人都害怕接触它,因为业务可能因此遭遇重大故障。通过许多支持电话/专业服务,这台服务器已经达到了一个稳定状态,糟糕的是,管理该服务器的SME离开了公司。
如果稳定性确实是个考虑因素,进行物理-虚拟转换或者虚拟-虚拟迁移到VMware vSphere平台是个好主意。这样,你可以利用分布式资源调度器(DRS)、存储DRS、高可用性(HA)等VMware基础设施可靠性机制。在服务器转换且拥有成功的业务持续性工作流(备份、快照)后,就可以考虑是否可以利用前面雪花服务器的弥补措施复制这一服务器。开发和QA工程师就可以很容易地构建一个测试环境而不接触易碎箱。
1.2.3 改变软件开发和部署方法
我们已经解决了基础设施部署的速度和质量问题,那么团队如何减少从开发、展示到生产阶段代码移动引起的缺陷?众所周知,在开发周期中越早发现缺陷,修复的代价就越低。这就是我们首先要有QA团队的原因。
但是,如果我们可以在代码移交给QA工程师之前就捕捉到缺陷,又会如何?这就是前面提到的持续集成系统的用途所在。我们后面会更详细地讨论CI,基本要点是,当你将源代码提交到存储库时,CI系统可以修改并设置为自动执行对提交代码的一系列单元测试。在过程结束时,可以构建一个软件包并自动分发给QA团队,实施他们的全面测试。
1.2.4 经常收集和响应有用的系统反馈并相应调整
系统思维的转变只有在有能力监控和分析系统性能时才能成功。业务的变化节奏似乎是指数级的,消费者对系统响应能力和正常运行时间有更高的预期,被动的问题解决方案不再成为选择;相反,你的团队必须在问题发生之前预测到它们,以维护系统稳定性。
日志分析可能是最重要的工具之一,尤其是在启用了二进制代码的调试选项时。如果你的环境由较多的服务器组成,就应该采用某种形式的自动化日志分析。这方面的选择很多,包括VMware vRealize Log Insight、Splunk甚至Logstash、Elasticsearch和Kibana等开源工具(第17章中介绍)。这些解决方案使系统管理员能够检查重复的事件与低下的性能关联。当团队更加熟悉这些工具,且更擅长识别问题时,系统的实用性就会提升。

相关文章
|
23天前
|
运维 Kubernetes 监控
构建高效自动化运维系统:基于容器技术的策略与实践
【4月更文挑战第19天】随着云计算和微服务架构的兴起,传统的运维模式正逐渐向自动化、智能化转型。本文将探讨如何利用容器技术构建一个高效、可靠的自动化运维系统,涵盖系统设计原则、关键技术选型以及实践经验分享。通过引入容器技术,我们可以实现应用的快速部署、弹性伸缩和故障自愈,从而提高运维效率,降低系统维护成本。
|
1月前
|
机器学习/深度学习 运维 监控
智能监控系统在运维中的应用与优势
传统的运维管理方式在面对日益复杂的IT系统时显得力不从心,智能监控系统的出现为运维工作带来了新的机遇。本文将探讨智能监控系统在运维中的应用与优势,介绍其工作原理以及如何有效地利用智能监控系统提升运维效率和质量。
60 2
|
2月前
|
人工智能 运维 Prometheus
现代化运维管理下的自动化工具应用与挑战
在当今信息技术快速发展的时代,现代化运维管理已成为企业保持竞争力的重要组成部分。本文将探讨自动化工具在运维管理中的应用以及面临的挑战,旨在帮助读者更好地理解和应对这一技术领域的发展趋势。
16 4
|
13天前
|
运维 监控 安全
构建高效自动化运维系统:策略与实践
【4月更文挑战第29天】 在信息技术日新月异的今天,高效的运维管理已成为企业保持竞争力的关键因素。本文将探讨如何构建一个能够适应快速变化需求的自动化运维系统。通过深入分析自动化工具的选择、配置管理的最佳实践以及持续集成和部署的策略,我们旨在为读者提供一个清晰的框架来优化他们的运维流程。文章的核心在于提出一种结合了最新技术和思维模式的综合解决方案,以实现运维工作的最优化。
|
6天前
|
运维 关系型数据库 MySQL
Ansible自动化运维工具主机清单配置
Ansible自动化运维工具主机清单配置
|
12天前
|
运维 Kubernetes 持续交付
构建高效自动化运维系统:基于容器技术的持续集成与持续部署实践
【4月更文挑战第30天】 在快速发展的云计算时代,传统的运维模式已无法满足敏捷开发和快速迭代的需求。本文将介绍如何利用容器技术搭建一套高效自动化运维系统,实现软件的持续集成(CI)与持续部署(CD)。文章首先探讨了现代运维面临的挑战,接着详细阐述了容器技术的核心组件和工作原理,最后通过实际案例展示了如何整合这些组件来构建一个可靠、可扩展的自动化运维平台。
|
12天前
|
运维 监控 安全
构建高效自动化运维系统:策略与实践
【4月更文挑战第30天】 在现代IT基础设施管理中,自动化运维不再是可选项而是必需品。随着复杂性的增加和变更的频繁性,自动化可以提高效率、减少错误并释放人员专注于更有价值的任务。本文将探讨构建一个高效的自动化运维系统的关键环节,包括工具选择、流程设计以及监控和优化策略。通过案例分析和最佳实践分享,读者可以获得实施自动化运维的实用指导和启发。
|
13天前
|
机器学习/深度学习 人工智能 运维
构建高效自动化运维系统的策略与实践
【4月更文挑战第29天】 在数字化转型的浪潮中,企业IT基础设施变得日益复杂多变。传统的手动运维方式已无法满足快速响应和高效率的需求。本文将探讨如何通过一系列策略和技术手段构建一个高效的自动化运维系统。首先,分析当前自动化运维的必要性及其带来的益处;接着,详细阐述自动化运维的核心组件、工具选择以及实施步骤;最后,通过案例分析展示自动化运维在实际环境中的应用效果,并讨论面临的挑战及未来发展趋势。
|
13天前
|
消息中间件 运维 监控
基于SaaS云部署、云计算的区域医院云HIS系统源码(运维管理+运营管理+综合监管)
医院云his系统采用主流成熟技术开发,B/S架构,软件结构简洁、代码规范易阅读,SaaS应用,全浏览器访问,前后端分离,多服务协同,服务可拆分,功能易扩展。多医院统一登录患者主索引建立、主数据管理,统一对外接口管理。
30 1
|
14天前
|
存储 运维 监控
构建高效可靠的自动化运维系统
【4月更文挑战第28天】 随着信息技术的快速发展,企业对于信息系统的管理和维护要求越来越高。传统的手工运维方式已经难以满足现代企业的需求,因此自动化运维成为了一种趋势。本文将介绍构建高效可靠自动化运维系统的方法和技术,包括自动化工具的选择、配置管理、监控告警等方面的内容。通过本文的阅读,读者可以了解到如何利用自动化技术提高运维效率,降低人为错误的发生,从而实现企业的高效稳定运行。