毕业半年,工作一年半了,作为一名运维工作者,常常有朋友问我什么是运维,每天干些什么。于是我总结了个人对运维的一些看法!
至少对于 BAT 这样的公司来说,因为海量和可用率的考验,运维必须是强大的,重要性不言而喻。而运维的强大在于,知识的广度无人可替。
1、网络工程师
熟悉各种网络协议,证书安全、tcp/udp等等,解决网络问题会用到。譬如在wget人家资源的时候,换换ua;查http头被纂改问题;tcp捂握手异常导致重复发包问题解决等都需要有协议知识的基础。
2、系统工程师
理解各种系统服务,在出问题的情况下要迅速解决问题,而不是等系统工程师来解决。像各种开源软件和服务框架,zookeeper、hadoop、apache、fms、nginx等等。像zookeeper这种源码没多少行,但是水却那么深,研究下来发现竟然无法无损扩容这么坑爹的事情运维不知道那也就是给自己找坑跳的了。还有像fms这种程序,每次要想在suse上调通跑起来都是一件费时费心力的事情。
3、安全工程师
运维的一项重要任务就是守护服务器,在服务器受攻击导致服务器不堪重负、协议被破解、数据被盗取、“脱裤”等等情况下,运维工程师一定是排障核心角色,大家都指望运维解决问题。当然,前期做好安全审计可以避免不少这样的问题。
4、存储工程师
要熟悉各大厂商的设备,各种备份和还原的办法,了解什么服务器机型适合什么程序。熟悉数据存储容灾、NRW模型、对数据的流水同步、数据无损迁移等等了如指掌。
5、测试工程师
在新版本上线之前,你至少要协同测试工程师做测试工作。而且运维是掌控上线的人,常常拥有最大的上线权限,对自己的上线变更没有一些测试手段,风险极高。
6、研发人员
运维工具都需要自已开发,熟悉开发语言,主要是shell和python,偶尔会用C。至少在大公司里面,不会写工具的运维工程师是假的运维工程师。不会写工具的运维工程师是很容易累垮的,因为他没有工具快速管理或者变更海量服务器。
7、英语,能应对技术文档就好,很多技术精华都是用英文写的,所以,技术人应该知道看不懂英文文档的后果。
8、沟通达人
运维的工作是为开发测试等部门提供技术支持,所以运维要知道开发和测试那些人都负责哪些方面,出了问题找谁协商,而且还要看的懂开发的人写的代码,会定位BUG,否则出了问题,只能运维自己扛下来,自己承担所有责任。
8、沟通达人
运维的工作是为开发测试等部门提供技术支持,所以运维要知道开发和测试那些人都负责哪些方面,出了问题找谁协商。而且还要学会看代码,定位BUG,查内存泄露,定位double free,跟踪core点等都是非常常见的问题,在这个过程中,常常会和开发同事交流。
数据迁移,扩容、灰度上线、binlog同步、主备容灾、模块部署、日志跟踪、资源规划、容灾建设、监控告警......干活基本功!运维几乎是技术要求最全面的岗位,几乎互联网所有技术岗位的基础都要有。还是那句话,运维的强大在于,知识的广度无人可替!