运维前线:一线运维专家的运维方法、技巧与实践1.5 运维自动化的方法论

简介:

1.5 运维自动化的方法论


1.?全局驱动

无论是全部自动化管理平台的规划,还是某个平台的规划,都希望大家能够找到一个全局的立足点。比如说我们当时成立持续部署服务平台的时候,大家把全局的目标对齐于提高产品交付的速度和质量,开发、测试、运维很快就达成共识了。目前这个平台建设完成之后,运维已经从发布变更流程中彻底退出了,真正实现了让运维变成审核者。

2.?分而治之

从上面的几个维度中可以看到有很多系统,如果每个系统都要建设的话,那么周期和难度都将很大。所以需要分而治之,特别是线上架构组件的管理系统,更需要随着组件的交付一并交付运维管理能力,比如面向组件的自动化管理能力、运维的监控能力、运维的数据分析能力等。之前我也表达过类似的观点,所有只交付组件,不交付管理能力的研发都是耍流氓。因为从运维的角度来说,这样低价值的交付产品越多,越会导致运维不堪重负。而如果让运维从头去构建这个管理,则他们需要花费很多的时间去了解,从而导致系统建设周期拉长。举个例子,比如说某个分布式cache服务,做得不好的,是通过读取日志然后对其进行监控;做得好的,是给你开启一个管理端口,让你从端口中读取状态信息。这就大大降低了系统的复杂度(不用进行日志采集和处理组件了)。

分而治之,其实就是让不同的团队做不同的事情,不要将所有事情全部压给运维;其次不同的时期建设不同的系统,不要在同一时刻做很多系统,从而避免战线过长。当然如果有很多运维研发人员的话,就另当别论了。

3.?自底向上

自底向上,其实是让大家找到一个更清晰更具体的系统建设目标来展开工作。从系统分解上,来让大家规避被一个庞大而模糊的目标带入歧途。如果一上来,我们就说要做一个全自动的运维管理系统,那样很容易就会让运维研发团队迷失方向。所以这里可以先设定全局和最终目标(全自动化),然后从底层逐步构建地基,做框架,最后再盖一个完整的房子,详见图1-1。

4.?边界清晰

边界有两个维度,一个是管理边界;一个是职能边界。

首先是管理边界,其是从Owner的角度出发的,谁产生服务,谁就是Owner,管理统一都是运维。比如研发提供了一个统一的分布式消息队列服务,那么Owner就是研发,他应该对可运维性负第一责任,不要让运维去承担这个服务的WebAdmin管理系统建设任务。

其次是职能边界,深层次的理解是组件的功能范围。对运维架构师的考验也就在这儿,比如说让LVS去承担业务异常的容灾和容错切换是不合适的;让DNS跨过LVS层,负责后端服务异常的自动容错处理也是不合适的。如果不把职能界定清楚,将会导致系统做很多无用功,这会增加系统建设的复杂度。

5.?插件化

插件化的思维无处不在,在面对纷繁复杂的管理对象时,我们进行抽象,提供管理模式,然后将具体的实现交给用户,这点在我们日常所见的运维系统中经常可以看到,比如说Nagios就是一种插件化的采集思路。对于配置管理来说,Puppet采用的也是这个思路。对于最上层的调度管理系统,可以让运维自己去编写执行器,特别是和业务紧密相关的,但最终运维整个控制权还是要交给平台。我的经验是,在应用服务层和架构服务层,不要引入插件化的管理方案,过多的插件化部署,会让生产环境的管理最终混乱不堪,甚至失控。所以提供类SSH界面的运维发布和部署平台,是没有任何运维价值的。

相关文章
|
16天前
|
敏捷开发 人工智能 Devops
探索自动化测试的高效策略与实践###
当今软件开发生命周期中,自动化测试已成为提升效率、保障质量的关键工具。本文深入剖析了自动化测试的核心价值,探讨了一系列高效策略,包括选择合适的自动化框架、设计可维护的测试脚本、集成持续集成/持续部署(CI/CD)流程,以及有效管理和维护测试用例库。通过具体案例分析,揭示了这些策略在实际应用中的成效,为软件测试人员提供了宝贵的经验分享和实践指导。 ###
|
16天前
|
机器学习/深度学习 人工智能 jenkins
软件测试中的自动化与持续集成实践
在快速迭代的软件开发过程中,自动化测试和持续集成(CI)是确保代码质量和加速产品上市的关键。本文探讨了自动化测试的重要性、常见的自动化测试工具以及如何将自动化测试整合到持续集成流程中,以提高软件测试的效率和可靠性。通过案例分析,展示了自动化测试和持续集成在实际项目中的应用效果,并提供了实施建议。
|
16天前
|
Java 测试技术 持续交付
探索自动化测试在软件开发中的关键作用与实践
在现代软件开发流程中,自动化测试已成为提升产品质量、加速交付速度的不可或缺的一环。本文深入探讨了自动化测试的重要性,分析了其在不同阶段的应用价值,并结合实际案例阐述了如何有效实施自动化测试策略,以期为读者提供一套可操作的实践指南。
|
6天前
|
敏捷开发 前端开发 Java
软件测试中的自动化测试框架选择与实践
在当今软件开发生命周期中,自动化测试已成为提升软件质量和开发效率的关键手段。本文旨在探讨自动化测试框架的选择标准及其在实际项目中的应用实践。通过对主流自动化测试框架的分析比较,结合具体案例,本文将阐述如何根据项目需求和团队特点选择合适的自动化测试工具,并分享实施过程中的经验教训。
16 1
|
14天前
|
Devops jenkins 测试技术
DevOps实践:自动化部署与持续集成的融合之旅
【10月更文挑战第41天】在软件开发的世界中,快速迭代和高效交付是企业竞争力的关键。本文将带你走进DevOps的核心实践——自动化部署与持续集成,揭示如何通过它们提升开发流程的效率与质量。我们将从DevOps的基本理念出发,逐步深入到具体的技术实现,最终展示一个实际的代码示例,让理论与实践相结合,为你的开发旅程提供清晰的指引。
27 4
|
16天前
|
Web App开发 敏捷开发 测试技术
探索自动化测试的奥秘:从理论到实践
【10月更文挑战第39天】在软件质量保障的战场上,自动化测试是提升效率和准确性的利器。本文将深入浅出地介绍自动化测试的基本概念、必要性以及如何实施自动化测试。我们将通过一个实际案例,展示如何利用流行的自动化测试工具Selenium进行网页测试,并分享一些实用的技巧和最佳实践。无论你是新手还是有经验的测试工程师,这篇文章都将为你提供宝贵的知识,帮助你在自动化测试的道路上更进一步。
|
16天前
|
敏捷开发 Java 测试技术
探索自动化测试:从理论到实践
【10月更文挑战第39天】在软件开发的海洋中,自动化测试是一艘能够带领团队高效航行的船只。本文将作为你的航海图,指引你理解自动化测试的核心概念,并分享一段实际的代码旅程,让你领略自动化测试的魅力和力量。准备好了吗?让我们启航!
|
17天前
|
运维 监控
构建高效运维体系:从理论到实践
在当今快速发展的信息化时代,高效的运维体系是保障企业信息系统稳定运行的关键。本文旨在探讨如何构建一个高效、可靠的运维体系,通过分析当前运维面临的挑战,提出相应的解决策略,并结合实际案例,展示这些策略的实施效果。文章首先介绍了高效运维的重要性,接着分析了运维过程中常见的问题,然后详细阐述了构建高效运维体系的策略和步骤,最后通过一个实际案例来验证这些策略的有效性。
|
17天前
|
机器学习/深度学习 数据采集 人工智能
智能运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的兴起背景、核心组件及其在现代IT运维中的应用。通过对比传统运维模式,阐述了AIOps如何利用机器学习、大数据分析等技术,实现故障预测、根因分析、自动化修复等功能,从而提升系统稳定性和运维效率。文章还深入分析了实施AIOps面临的挑战与解决方案,并展望了其未来发展趋势。 ####
|
2月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
59 4