运维的前世今生未来
运维职业发展到今天,需要学会的技能越来越多,已不能仅仅以运行维护来概括。DevOps的出现是技术快速发展的必然产物,也是未来AI技术融入运维体系的基石。

从目前已知的运维概念可以将整个运维发展划分为4个阶段:
- Ops: Operations (Operator), 即大家熟知的系统运维。Ops的职责通常和Developer是分开的,Ops需要部署Developer开发的系统并维护线上运行,监控报警也由Ops处理。Ops通常使用脚本来简化日常繁琐的操作,当业务规模不大时,Ops一般身兼数职,涵盖机器,网络,配置,安全等等。简而言之,Developer只需要专注于开发业务系统,其他相关的环境问题都可以交由Ops。
- PE: Production Engineer,应用运维或者业务运维。当业务发展到一定规模时,会出现专门的DBA,配置管理员,网络工程师和安全工程师等等,这个时候的部分运维开始专注于业务,PE的概念最初来自于雅虎然后经由阿里巴巴发扬光大。PE需要关注业务的整个生命周期而不仅仅是业务的运行环境,这个时候的PE需要了解业务,保障业务的稳定性,梳理业务链路,分析性能瓶颈,进行容量规划,以及作为开发人员和DBA,网络工程师,配置管理员之间的协调者。同时PE需要和开发人员合作或者自主开发简单的运维工具,主持故障恢复及问题分析。
- DevOps: Development and Operations,突出重视开发人员和运维人员的沟通合作,通过自动化流程来建立流水线式的业务流程。DevOps的概念最早来自于欧洲,近几年由于微服务,docker等技术的成熟兴起于美国互联网公司如Google,facebook。DevOps不仅仅是运维的工作,不能简单理解为运维开发,它其实涵盖开发、测试和运维。DevOps既然是运维和开发的结合,就必然会出现两个方向的融合。从运维到DevOps,需要运维人员开发自动化运维系统实现自动部署,持续交付,自动测试,监控报警等等,将日常运维工作交由系统完成,解放生产力从而专注于将更多的运维经验落地成DevOps自动化系统;而从开发到DevOps,则需要开发人员会熟练使用自动化运维系统管理自己的应用的整个生命周期,实现高效交付,高可用。SRE: Site Reliable Engineer,可靠性工程师。SRE的概念是由Google提出来的,它是DevOps落地的产物。SRE不仅要日常运维和工程研发,还要负责应急响应和业务规划。通常SRE团队成员来自于运维团队和各业务线,他们需要熟悉所负责的整个业务架构和流程,当天值班成员可以自行处理紧急问题。
- AIOps: Algorithmic IT Operations 或者 Artificial Intelligence Operations, 智能运维。随着大数据和AI的兴起,AIOps也被提了出来。运维工作的核心归纳起来就三点:发现问题,分析问题和解决问题。当自动化运维系统落地之后,人的主要作用就是根据问题作出决策,因此AIOps就是基于人的经验到基于机器学习的转变,通过人工智能对大量运维数据的学习来作出准确的决策。AIOps可以根据监控数据预测故障发生并及时定位和恢复,也可以根据业务数据预估容量。
三大件
运维的所有工作都是围绕三大件展开的:成本,效率,可用性,找到三者的平衡点是运维的终极目标。
成本
顾名思义,公司要提高利润,除了增加收入就是缩减成本。运维最头疼的事之一就是一面要拼命压缩成本一面又要说服老板投入资源。在数据为王的时代拿出数据是最具说服力的,这时一个好的资源管理系统就很重要了,一边是减量一边是提高利用率。除了众所周知的硬软件资源,人力成本往往被忽视,有时候为了一点机器资源把一堆应用堆在一起造成的问题排查费时费力,消耗的人力成本比机器成本要高的多。
效率
在互联网时代要想战胜对手只有一个绝招那就是快。在业务的整个生命周期中,除了开发功能要快,不论是申请机器资源还是CI/CD、测试也要快。但是快就意味着不稳定,如果一个业务故障频发即使功能再领先也会被对手后来居上。快和稳本身就是矛盾的,又快又稳只能无限趋近。
可用性
谈到可用性,从以前的主备切换到现在流行的同城双活,异地多活,都是用的冗余的方案,至少要保证一个区坏了还有一个区能扛住,即使线上没准备,资源池里面也要准备。既要可用性又要降成本,异地多活的优势就是区越多冗余越少,总不能全世界都瘫痪了,那时也谈不上业务了。既然是冗余,那就意味着在正常情况下多了,所以阿里会做离在线混布提高冗余的利用率。另一方面,还要保障正常情况下的可用性,发布流程、回滚方案等等这些又和效率相冲突。
系统设计
按照依赖关系,我把常见系统分为三层,第一层是基础系统层,没他不行;第二层是业务系统层,都是为业务服务的;第三层是统筹系统层,除了更全面还要更智能。

后话
现在大部分公司都上云了,云确实很方便,但是也带来了管理问题,特别是使用多个公司的云的情况下,用法不一致就不说了(微软云就是另类)甚至同个公司的不同区功能还不一致(亚马逊国区和国际区)。所以该有的系统还是要有的,把云当成以前的机房就行了,如果有个标准能把所有的云都统一了就好了,感觉找到了发家致富的新道路呢。