我叫王大锤,当然不是。。。我叫饶琛琳,目前是新浪网系统架构师,专注于实时数据处理和监控领域。下个月,我要迎来自己亲手招的第一个应届生入职,所以,借51CTO的平台,给应届生们分享一下我毕业以来的一些小故事。
新浪网技术保障部系统架构师 饶琛琳
作者简介:新浪网技术保障部系统架构师。之前曾任职于人人网、世纪互联云快线。Perl 程序员,《网站运维技术与实践》作者。目前专注在 Elasticsearch 数据分析处理周边。
那是2008年,我20岁,从北京交通大学通信工程毕业,进入世纪互联CDN事业部工作。CDN是互联网中比较偏门又独特的一个行业。就在这一年,北京举办了奥运会。而这也是CDN行业在国内大发展的引子。多家原先只会卖机柜带宽的IDC厂商,在争夺奥运直播的单子中,转型成了CDN服务商。比如今年在创业板惊爆无数人眼球的网宿科技。
不过,等我开始工作时,奥运已经结束了,这种大事件并没有我什么功劳。但是奥运流量带来的海量服务器,却结结实实摆在刚开始工作的我面前。这是我的第一项运维工作任务:给几千台服务器改root密码。
那还是一个互联网运维的启蒙年代,软件编译和配置修改是最主要的工作内容。能用shell已经是一个优势。但是面临这个任务,用expect写的shell脚本基本上每10台就1次失败,复杂的日志记录又加大了retry难度。于是就这样赶鸭子上架,当晚开始看《Perl实例精解》学习一门“正规”的编程语言,第二天用Perl脚本完成了这个任务。
看起来这似乎是一个很happy的故事,但是转折来了:领导告诉我,这事其实不该这么干!Linux一切皆文件,修改出来一台的新shadow文件,传输到其他机器上就可以了。
当然,如果是现在这个DevOps技术大爆发的时代,还可以再转折一次,年初我翻译出版的《Puppet Cookbook》上有一个完整的如何通过Puppet自动管理用户和加密密码的配置示例。不过对于那时候的我,这是工作中学到的第一个知识:面对问题,多花点时间找更贴近本质的办法。
之后的工作“平淡无奇”,作为服务商,每天都有新客户接入,按照工单要求,写完squid配置,分发重启,在我花一个周末用shell做好自动分发配置的CGI页面后,这基本就不算个事儿了。不过却时不时碰到客户工单上,除了一个www域名,什么信息都没有,因为对方也没有专职运维,只知道CDN据说省钱又效果好,完全不懂需要干嘛。这时候,就要我们从客户的www主页开始,选几个可能重要的链接点下去,然后挨个网页通过httpwatch, firebug 查加载的元素,对照它们的Header内容,把可以做缓存的子域名、文件路径和后缀名等信息收集起来。甚至碰到过一个客户,主页完全由一堆iframe拼接,而iframe里加载的是一个只有跳转地址的HTML,跳转过去才是实际新闻,所有内容经过三层逻辑才展现出来……
当时只是觉得这种做法是对客户负责,对工作认真。等到我之后到了中华网,人人网,乃至现今在新浪网,作为一个网站运维,才发现之前这种习惯的好处:排障和调优中,都会优先从用户访问的角度入手。做一个网站运维,system admin也好,devops也好,都只是技能,site reliability才是目标。甚至为了让用户更爽,你应该拿出可信的数据来,去主动串联起业务开发部门共同进行网站优化。数据的来源,无非监控,测试。所以,这两项技能是sre的立身之本,去年我出版一本《网站运维技术与实践》,前一半的篇幅,都在讲各种监控,测试,数据处理技术。曾经有人问我说:刚毕业开始干运维,每天都在部署上线。看了你的书,但还是不知道从哪里做起?我回答:书的章节安排就是顺序。在没有完善的监控系统之前,你干啥都是错的,永远是背锅侠。
前面这些,也可以说是对运维岗位的一些感想,给马上要进入岗位的学弟们一点小启发。对于个人提升方面,有的是比我成功得多的例子,我在这里就引用一些现成的话,转告给诸位,不敢说是终南捷径,只能说是我个人践行多年有所收获的坦途:
1. 程序员的三种美德:
懒惰、急躁、傲慢。这段话出自Perl语言之父Larry Wall。其实说直白一点,就是:写代码,写好代码,写有好文档的好代码。任何一件可能干第二次的事情,都值得写代码,否则,你不会有时间干后面几条说的事情。
2. 好记性不如烂笔头
记笔记,或者进一步,写技术博客。推荐大家都尝试并坚持写技术博客。我从没见过哪个坚持住写技术博客的人没获得提升的。因为敢公开,本身就是一种压力和挑战。
3. 画思维导图
笔记或者博客是一个一个片段。要把自己的习惯和能力转成方法论,就需要一次次完整的逻辑推理。画思维导图就是一个辅助方式。我从世纪互联离职的那天,画下来的CDN技术脑图至今还在扩充,因为技术总是关联的。
4. 拥抱开源,从GitHub开始
GitHub是目前最大的开源代码协作平台,这里不是说要大家都去上面新建个repo然后开始造轮子,而是应该找几个自己手头在用的开源软件,去它们的GitHub repo上,多多反馈issue,提交pull request。Puppet作者原先是CFengine开发人员,Elasticsearch作者至今还是Lucene的committer。可以说:在你没有把一个流行的开源软件深入了解到能把优缺点都列明白的时候,不要轻易造轮子。甚至推而广之,不要轻易换轮子。
5. 多听多看
我毕业入行的时候,最流行一句话“运维是靠经验吃饭的,会越老越吃香的”,明显针对“程序员三十岁就完蛋”的观点。现在再看,十年前学的系统管理知识,都更新换代好几轮了。可能一份招聘要求,除开第一条“熟悉Linux”,后面各个名词都是近三四年才出现的。所以,在上一条对个别领域要研究的深的前提下,同样不要忘了,对行业内其他领域的知识,多听多看,很可能你的下一个工作内容,兴趣点,就在那里。