不会开发的运维不是好运维。这真不是一个噱头,这是我最近悟出的一个道理。在讲清楚这个道理之前,我们先了解下互联网行业的这个大环境下,以及软件的整个生命周期以及工作岗位职责的划分。
软件生命周期
软件的生命周期大体可以分为五个阶段,需求分析阶段,设计阶段,开发阶段,测试阶段,维护阶段。 而运维就重点关注的是维护阶段。而维护阶段的核心目标是就是保障系统的稳定运行。
工作岗位职责
前面说到软件生命周期,从而衍生出产品经理,开发工程师,测试工程师,运维工程师。这些人对应的工作内容自然也可以对应到软件生命周期的各个阶段。而要保证这个工作内容做的好,就是该岗位的职责。那运维工程师,工作核心职责就是花尽量少的资源,保障系统稳定性,从而衍生出来的各项工作内容就非常多了。
运维领域
核心工作职责咱们弄清楚了,咱们围绕这个职责展开工作。我们需要运维的对象资源有哪些?我们的需要做的具体有哪些事情呢? 维护的资源对象我们通常将按照整个系统的架构进行划分。
- 硬件运维,底层物理机的维护,现在该岗位逐渐被云厂商替代。
- 系统运维,操作系统的维护,系统趋于稳定的情况,变更的情况相对少,岗位相对也少。
- 中间件运维,业务应用依赖的各项基础中间件,如消息队列,缓存服务等。
- 数据库运维,核心数据的维护,运维的内裤,一定要保住。
- 网络运维,这块领域不太熟悉。
- 应用运维,保障业务的稳定运行,及时响应线上问题,以及管理应用变更等。
业界提炼出来的各个领域的工作方向大体如下:
- 稳定性体系化建设
- 容量规划
- 成本管理
- 变更管理
- 应急响应
运维为什么需要开发能力
运维的事情这么多,很多都是偏向于操作性质的工作。人力当然可以解决,而这种低效的方式终将会被计算机替代。而运维也要面临转型,要么你用开发工具的方式解放自己。要么你转型成运维专家,指导运维开发来做一些运维产品。孰好孰坏?我的观点是弄清楚自己的核心竞争力。无论你走哪个方向,有些事情还是要靠自己。
解放自己
运维对于线上的排查是其核心能力,而往往排查过程很繁琐。运维对线上的变更需要敬畏,而变更又随着业务的变化而不断发生。总是有各样的人询问线上运行情况,手动获取数据很痛苦。如何解决这些繁琐的事情,又能保证稳定性呢?还有很多让人觉得乏味且又不得不去做的事情。如果你有开发能力,你一定会开发一个工具,让计算机来代替你做这些事情。从而你将会有更多的精力去投入到价值更高,成长性更强的事务上去。
成就自己
自动化工具并不是银弹,我们终究还是会避免不了处理各种问题。但线上的疑难杂症你并不是能完全hold住。如果你有开发能力,你可能对于问题的视角会更开阔,对于问题的认知如庖丁解牛。正如面试中经常会问到的一个问题,一个http请求,从发送到返回具体经历了些什么。具备开发能力的人,你可能会回答得更细致。
赢得尊重
IT行业的鄙视链,并不是空穴来风。运维相对于研发来说技术深度相对较弱,如果你能在从代码层面面同等认知的交流,自然会得到别人的认可。另外在故障复盘会上的激烈讨论,如果你具备开发能力,你也能够分辨出故障复盘上的说辞是否恰当,以免锅就莫名甩到自己的头上(开个玩笑,复盘会议主要还是就事论事,解决问题,防止下次故障)。
IT行业的发展之迅速,不仅仅只是需要开发能力,更重要的是不断提升自己的能力,扩展自己的边界。通过开发能力,解放自己,多去思考,追逐用技术解决运维业务上的问题!