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

简介:

1.5 运维自动化的方法论


1.?全局驱动

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

2.?分而治之

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

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

3.?自底向上

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

4.?边界清晰

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

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

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

5.?插件化

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

相关文章
|
5天前
|
监控 Devops 持续交付
掌握 GitOps:实现 DevOps 自动化的现代方法
【10月更文挑战第19天】GitOps 是一种基于 Git 仓库管理应用配置和集群状态的现代化 DevOps 方法,通过自动化工具实现声明式配置和持续部署。本文介绍了 GitOps 的核心概念、优势、挑战及实施的最佳实践,帮助团队提高部署效率和系统可靠性。
|
2天前
|
监控 安全 jenkins
探索软件测试的奥秘:自动化测试框架的搭建与实践
【10月更文挑战第24天】在软件开发的海洋里,测试是确保航行安全的灯塔。本文将带领读者揭开软件测试的神秘面纱,深入探讨如何从零开始搭建一个自动化测试框架,并配以代码示例。我们将一起航行在自动化测试的浪潮之上,体验从理论到实践的转变,最终达到提高测试效率和质量的彼岸。
|
5天前
|
运维 应用服务中间件 持续交付
自动化运维的利器:Ansible入门与实践
【10月更文挑战第21天】在现代IT基础设施的管理中,自动化运维已成为提升效率、降低错误率的关键。Ansible,作为一种简单而强大的自动化工具,正被广泛应用于配置管理、应用部署和任务自动化等领域。本文将引导你了解Ansible的基本概念,通过实际案例展示如何利用Ansible简化日常运维工作,并探讨其在现代IT运维中的应用价值。无论你是新手还是有经验的系统管理员,这篇文章都将为你开启Ansible的高效之旅提供指导。
|
6天前
|
SQL Java 数据库
Spring Boot与Flyway:数据库版本控制的自动化实践
【10月更文挑战第19天】 在软件开发中,数据库的版本控制是一个至关重要的环节,它确保了数据库结构的一致性和项目的顺利迭代。Spring Boot结合Flyway提供了一种自动化的数据库版本控制解决方案,极大地简化了数据库迁移管理。本文将详细介绍如何使用Spring Boot和Flyway实现数据库版本的自动化控制。
9 2
|
8天前
|
Kubernetes 持续交付 Docker
探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
【10月更文挑战第18天】探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
37 2
|
11天前
|
运维 自然语言处理 开发者
作为一名运维人员,使用通义灵码个人版处理日常工作中的代码相关任务,极大地提升了我的工作效率。以下是我使用通义灵码的具体实践场景、效果和心得,以及相应的截图。
作为一名运维人员,我使用通义灵码处理日常工作中的代码任务,效率提升了30%。通义灵码帮助我快速理解复杂代码、生成准确的代码注释,并能从自然语言生成代码示例,大幅减少了代码编写和理解的时间。
37 3
|
4天前
|
运维 安全 Devops
DevOps实践:持续集成与持续部署(CI/CD)的自动化之路
【10月更文挑战第22天】在软件交付的快速迭代中,DevOps文化和实践成为企业加速产品上市、保证质量和提升客户满意度的关键。本文将通过一个实际案例,深入探讨如何利用持续集成(Continuous Integration, CI)和持续部署(Continuous Deployment, CD)实现软件开发流程的高效自动化,包括工具选择、流程设计以及问题解决策略。我们将一起探索代码从编写到部署的全自动化旅程,揭示其对企业运维效率和产品质量所带来的深远影响。
|
8天前
|
运维 监控 jenkins
运维自动化实践:利用Jenkins实现高效CI/CD流程
【10月更文挑战第18天】运维自动化实践:利用Jenkins实现高效CI/CD流程
|
19天前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
42 4
|
15天前
|
存储 运维 监控
高效运维:从基础架构到自动化管理的全面指南
【10月更文挑战第11天】 本文将深入探讨如何通过优化基础架构和引入自动化管理来提升企业IT运维效率。我们将从服务器的选择与配置、存储解决方案的评估,到网络的设计与监控,逐一解析每个环节的关键技术点。同时,重点讨论自动化工具在现代运维中的应用,包括配置管理、持续集成与部署(CI/CD)、自动化测试及故障排除等方面。通过实际案例分析,展示这些技术如何协同工作,实现高效的运维管理。无论是IT初学者还是经验丰富的专业人员,都能从中获得有价值的见解和实操经验。
37 1