浅谈自动化运维

关于这篇文章,源自于很久之前学习产品时的一个认知。

大家都知道"自动化运维"其实是一个很广泛的概念,其概念的不确定性在于"自动化",有争议的地方在于"自动化"到什么程度,才能称之为"自动化运维"。

运维工程师:

运维工程师(Operations)在国内又称为运维开发工程师(Devops),在国外称为 SRE(Site Reliability Engineering)。负责维护并确保整个服务的高可用性,同时不断优化系统架构、提升部署效率、优化资源利用率提高整体的ROI.

运维工程师面对的最大挑战是大规模集群的管理问题,如何管理好几十万台服务器上的服务,同时保障服务的高可用性,是运维工程师面临的最大挑战。

在一些规模较大的公司(比如:Google、FaceBook、百度、阿里、腾讯等),运维工程师和系统管理员是有一定的区别:

系统管理员:主要负责机房网络、服务器等硬件基础设施的运行和维护。

运维工程师:主要负责管理并维护在运行在海量服务器上的软件服务。

以上说明源自于百度百科词条,从该词条所描述的运维工程师的主要工作为:  在成千上万甚至几十万台的服务器集群中,保障服务器的高可用性。

自动化:

自动化(Automation)是指机器设备、系统或过程(生产、管理过程)在没有人或较少人的直接参与下,按照人的要求,经过自动检测、信息处理、分析判断、操纵控制,实现预期的目标的过程。自动化技术广泛用于工业、农业、军事、科学研究、交通运输、商业、医疗、服务和家庭等方面。采用自动化技术不仅可以把人从繁重的体力劳动、部分脑力劳动以及恶劣、危险的工作环境中解放出来,而且能扩展人的器官功能,极大地提高劳动生产率,增强人类认识世界和改造世界的能力。因此,自动化是工业、农业、国防和科学技术现代化的重要条件和显著标志。

以上说明源自于百度百科词条,从该词条所描述的自动化的概念为: 自动化是指在没有人或者较少人的直接参与下,完成一系列的工作要求。

那么,将运维与自动化结合起来看的结果是什么? 自动化运维: 即将运维工程师的工作在不需要或者只需要少量工程师的干预下,能够完成工作要求,保障服务器的高可用性。

怎样进行自动化运维?

关于运维的状态(即演变过程):

一、人工化操作:

当互联网刚刚兴起的时候,企业的规模并不大。一个很明显状态是: 浏览互联网的网民少、企业的规模不大、服务器数量稀少(1~20)、可用于(浏览/交互)的(网站/BBS)数量稀少,从而导致了企业中通常是一人身担多职,可能同时担任(软件工程师/运维工程师/网络管理员)等职位。由于用户群体的稀少,服务器数量的低量,大部分工作都通过人工来完成,也不会有太大的工作量耗费大量的人力来完成。

二、操作脚本化:

当互联网渐渐兴起,用户群体增大,企业所需要服务的用户群体也会随之变多。此时由于服务器数量的增多(50~200),负责服务器维护的工作量便大量上升。由于工作量的成倍增长,这时候担任维护服务器的管理员会发现大量的工作占用了非常多的时间,甚至于会让工作时间之外的私人时间也被占用,每天需要处理大量重复性的问题。此时已经严重影响到了私人生活,于是为了将自身从无止境的重复性劳动中解脱出来,开始为一些重复性的工作制定一个标准的处理方案,然后将这种标准的处理方案分解成一步一步执行的步骤,然后使用技术手段(shell/python/php/perl/)将这些步骤一步一步的实现,然后集合到一起成为可用于处理重复性工作的脚本。通过脚本可以便捷的处理之前需要花费大量时间来处理的重复性工作。这里实现了 "脚本自动化",即某些问题不需要人工或者只需要少量人工干预即可完成。

三、脚本工具化:

此时,互联网的发展开始走入正轨、用户群体开始膨胀。此时,企业需要服务的用户群体也会进一步增大。相对的,服务器数量又会增多(200~500),此时采用脚本来解决问题已经陷入了瓶颈,每天可能会有大量的服务器出现这样那样的问题。工程师开始疲于奔命,在一台又一台机器上运行脚本,修复系统业务环境。这时候放佛又回到以前,每天需要大量的时间来处理大量重复问题(ex: disk full),这些问题往往都有一个共同点: 出现次数相对频繁,并且处理方法大同小异。这时候,将这些出现的问题也分门别类归结成大同小异的处理脚本。当出现对应问题时,登陆到对应的服务器上执行处理对应的处理脚本即可解决问题,但是由于服务器数量的日益增多,同时出现问题的服务器的数量也会直线上升。此时如果继续重复以前的做法,手动 登陆到每一台服务器上去执行脚本,也会产生很大的工作量。此时,如果能在一台服务器上控制所有的服务器,然后通过该服务器对相同症状的服务器群批量执行修复脚本,就能节约出大量的时间。这时候就出现各种能够批量操作服务器的工具,如expect、sshpass、puppet、cchef、saltstack等,借助这些工具来批量执行脚本来完成工作。此时,通过批量管理工具实现了只需要少量人工干预就能完成工作,即将脚本集成到工具中,实现脚本工具化,从而达到工具自动化。

四、工具平台化:

什么是平台?

平台将平时复杂的事情简单化,手动的工作自动化,无序的工作规范化,提高运维的质量和运维的效率,以此来提高整个企业的IT服务水平、服务质量,拥有极强的可维护性、可扩展性、可伸缩性等优秀特点。

使用平台能做什么?

平台可以集成大量的工具、可以应对大部分的业务场景、可以让没有技术能力/专业知识的人员进行专业操作等。

为什么要将工具平台化?

平台拥有可视化操作,将工具集成到平台中,可以在可视化的平台中通过说明来完成一系列需要专业知识支撑的复杂操作,可以通过描述让没有专业知识/专业知识不够的人员进行标准的专业化操作、可以解放大量的人工操作、可以降低学习成本、可以提高运维效率、可以提升系统安全性/稳定性等。

五、平台产品化

什么是产品?

产品是指能够提供给市场,被人们使用和消费,并能满足人们某种需求的任何东西,包括有形的物品、无形的服务、组织、观念或它们的组合。产品一般可以分为五个层次,即核产品、基本产品、期望产品、附件产品、潜在产品。核心产品是指整体产品提供给购买者的直接利益和效用;基本产品即使核心产品的宏观化;期望产品是指顾客在购买产品时,一般会期望得到的一组特性或条件;附件产品是指超过顾客期望的产品;潜在产品指产品或开发物在未来可能产生的改进和变革。

为什么要将平台产品化?

产品是“一组将输入转化为输出的相互关联或相互作用的活动”的结果,平台是作为技术的衍生,为了满足相对应的业务场景而创造出来。

平台的核心需求是将"复杂的事情简单化,手动的工作自动化,无序的工作规范化."

产品的核心要素是"给购买者带来基本利益和效用",即 "满足使用者的购买期望,丰富使用者的期望价值"

为什么要将平台产品化?:

平台是一种解决方案,我们需要给这种解决方案附加上一系列的价值,或使用一系列的思想来修饰解决方法,使大部分人接受这种解决方案、认同我们的方法思想,从而完成平台的自我价值的提升,即平台产品化。

为什么要将平台产品化?

古人云: 达则兼济天下,穷则独善其身。

产品是一种自我期望,产品期望可用于提升自我价值、可用于输出企业文化、可用于提升企业价值。

产品是一种经济期望,可用于换取利益、可用于创造价值、可用于增加附加价值

六、产品生态化

时间: 2025-01-04 01:21:19

浅谈自动化运维的相关文章

新书《Linux集群和自动化运维》目录

推荐序一 在全球"互联网+"的大背景下,互联网创业企业的数量如雨后春笋般大量产生并得到了快速发展!对"互联网+"最有力的支撑就是Linux运维架构师.云计算和大数据工程师,以及自动化开发工程师等! 但是,随着计算机技术的发展,企业对Linux运维人员的能力要求越来越高,这就使得很多想入门运维的新手不知所措,望而却步,甚至努力了很久却仍然徘徊在运维岗位的边缘:而有些已经工作了的运维人员也往往是疲于奔命,没有时间和精力去学习企业所需的新知识和新技能,从而使得个人的职业发

Python自动化运维课程学习--Day2

本文为参加老男孩Python自动化运维课程第二天学习内容的总结. 大致内容如下: 1.python模块初识 2.python程序运行流程 3.python数据类型(只讲了numbers, bool, strings, bytes, list, tuple, dict, set) 4.python数据运算 0.关于本文中所有运行Python代码的环境: --操作系统:Ubuntu 16.10 (Linux 4.8.0) --Python版本:3.5.2 --Python IDE: PyCharm

51CTO 神马叫自动化运维

51CTO 神马叫自动化运维 http://www.cnblogs.com/lyhabc/diary/2014/12/18/4171160.html http://3060674.blog.51cto.com/3050674/1590803 好久没写文章了,最近要来刷下存在感,近两年,运维自动化被炒的火的不行,行业趋势不可挡,现在企业招运维工程师都要求会一门开发语言.我们公司也不例外,由于刚上市,一下子有钱了,开始招兵买马瞎折腾,因此最近我也面试了不下十来个求职者,本成想可以很容易招到几个不错的

关于自动化运维的实践×××

谈起自动化运维,现在已经成为运维工作最热门的词语,关于运维自动化本人早在2012年就已经接触了BMC的ITSM系统,将ITIL运维管理体系和自动化运维工具的有效的结合大幅度的提高了运维工作效率.下图为HP提的统一运维自动化理念和运维手册,从目前企业基础架构层来看,运维人员无关乎关心的如下几个方面的自动化. 要了解运维自动化在企业当中应用场景和是否真正能够解决运维团队工作的问题.那我们则需要站到企业运维人员的角度去考虑问题.那么我首先要知道一个企业或者运维团队在规划运维的时候所需要考虑的问题及面临

从零到一 | 如何搭建数据库自动化运维体系

需求背景: 随着业务的增长.对运维效率和质量的要求不断提高,对自动化运维体系的需求也不断增强. 目前笔者服务的很多中大型企业客户,运维其实还停留在“刀耕火种”的原始状态. 这里所说的“刀”和“火”就是运维人员的远程客户端,例如 xshell 和Windows 远程桌面. 这种工作模式有很多局限性, 比如服务器.数据库.中间件等的安装.初始化,应用软件部署.服务发布和监控都是通过手动方式来完成的. 这就需要运维人员登录到服务器上,一台一台去管理和维护. 如果有个几十上百台,累就累死人了. 笔者曾运

自动化运维工具介绍

运维目标有三个阶段,第一是追求稳定性,第二是追求标准化,第三是追求自动化.对于第三阶段来说,什么是运维自动化呢?简单地讲,运维自动化就是将日常重复性工作按照事先设定好的规则,在一定时间范围内自动化运行,而不需要人工参与.接下来简单介绍运维自动化工具,要了解运维平时用到的自动化工具,就需要了解运维人员的日常工作有哪些. 一.运维的日常工作 运维的日常工作可以总结为以下四个部分,分别是: (1) 系统安装 (2) 应用程序配置(Configuration) (3) 命令执行与控制(Command a

Python自动化运维课程学习--Day3

本文为参加老男孩Python自动化运维课程第三天学习内容的总结. 大致内容如下: 1.文件操作 2.字符编码转码相关操作 3.函数 0.关于本文中所有运行Python代码的环境: --操作系统:Ubuntu 16.10 (Linux 4.8.0) --Python版本:3.5.2 python2.7.12 --Python IDE: PyCharm 2016.3.2 一.文件操作: 1.文件操作流程:以只读.写(覆盖写).追加写.读写.追加读写.二进制读写等模式打开文件 ==> 得到文件句柄,并

linux 自动化运维之Cobbler

一.Cobbler 简介 1.Cobbler 概述 Cobbler由python语言开发,是对PXE和Kickstart以及DHCP的封装.融合很多特性,提供了CLI和Web的管理形式.更加方便的实行网络安装.同时,Cobbler也提供了API接口,使用其它语言也很容易做扩展.它不紧可以安装物理机,同时也支持kvm.xen虚拟化.Guest OS的安装.更多的是它还能结合Puppet等集中化管理软件,实现自动化的管理. 2.新旧对比 以前自动化安装系统得先设置一个网络环境,可是设置网络环境涉及到

自动化运维工具之ansible

ansible ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能. ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架. 主要包括: (1).连接插件connection plugins:负责和被监控端实现通信: (2).host inventory:指定