今天先探讨下运维主要做什么,至于需要的具体技能、需要会的(MySQL? Apache? python?)首先还是要重申一下,我们这里的运维不是指工厂设备维护,也不是办公IT支持,我们这里讨论的运维工作只限于大型业务系统的运维,比如阿里、美团、京东做运维的攻城狮们,需要过硬的技术、敏捷的头脑、还有,还有就是强悍的体魄。
一、什么是运维
运维顾名思义就是运行维护,运维工程师就是要做好生产系统的稳定运行维护工作。是不是很好理解?但是光这一句稳定运行,需要运维工程师们具备各方面的能力,以至于一人无法完成全部维护工作,从而形成了各类运维工程师的分工协作,比如应用运维、系统运维、网络运维等。最近很火的devpos概念,可能有人已经有所了解了,现在说的devpos工程师就是开发与运维的结合,提出运维需要开发技能。个人认为有些扯淡,运维本来就要会些开发技能的,但是运维和开发还是有本质区别的,其思考方式就不一样,开发人员考虑的是系统实现功能马上投产,运维工程师关心的是系统好不好用,是不是具备高性能,高可用?怎样去保证每天长治久安的安全稳定运行?所以个人以为运维就是运维,运维本身也需要开发技能,但是从总体上说还是运维工程师,我们会的比开发工程师还要多,开发只是我们工作的很小一部分。
二、运维工程师主要做哪些工作
既然工作目标是保证系统的安全稳定运行,那么我们的工作就是围绕着这个目标转。我们需要:
2.1、构建系统监控体系
没有监控就等于是瞎子,系统出了问题都不知道,要是哪天支付宝不能支付了,支付宝的运维工程师肯定是第一时间知道的,总不见得等用户投诉,媒体报导了自己才知道吧?关于监控体系我之前已经说过了。
2.2、应急处理
系统出故障了怎么办?着急的看着束手无策肯定不行,这时一个优秀的运维工程师的价值就体现出来了,一个有经验的运维工程师能第一时间确定故障原因,并迅速恢复业务,保证对外影响时间最小。当然,这里故障是多方面的,有应用故障,数据库故障,甚至是网络线路故障。
2.3、 技术问题分析
出了问题就需要分析,这里需要具备一些必备能力,比如网络抓包分析、tcpdump抓包及分析、代理的机制等。
2.4、业务问题处理
就是在业务层面进行统计分析,比如统计系统的每日交易量,成功率,错误码的分布情况,这对这些错误码分析原因,找出集中在哪个环节,集中在哪家商户,找到他,然后冲过去帮商户解决问题。
2.5、版本测试
开发发布版本后运维工程师需要进行相应的性能和高可用测试,不具备高可用的系统建议还是不要上线了,否则后果不堪设想。
2.6、版本上线
这个就需要体能储备了,在晚间业务量小的时候悄悄的进行,要让用户无感知,熬个夜完成系统的升级改造,第二天给广大用户一个惊喜,有没有发现有时候一夜之间支付宝,京东啥的换了个页面,出了啥新功能啥的?
2.7、系统演练
养兵千日用兵一时,平时不努力,故障时吃苦头。所以平时自己要安排些实际故障的演练,验证下系统的强制性,再考验下一线工程师的应变能力。
2.8、工具开发
运维没有工具怎么行?包括监控工具、交易成功率统计分析工具、变更自动化工具等等。
2.9、业务分析
这个你需要具备一项新技能:“统计分析”。各种统计分析工具,数学建模是必须要掌握的内容。