【独家专访】在这两天的O'ReillyVelocityChina2011大会上,来自OmniTI的TheoSchlossnagle带来了两位系统运维专家的话题这两个都应该引起注意:一个关于监控,另一个关于运营职业。看完两位的演讲,小编整理了一些大家可能感兴趣的话题,邀请了Theo做专访。现将采访内容整理如下。Theo的两场演讲视频和PPT将在未来几天在Velocity大会官网提供下载。想先了解的朋友可以去我的主页相册看一些Slides图片:数字是什么?OpsCareerGuestProfileTheoSchlossnagle是OmniTI的创始人兼负责人,为高流量网站和其他需要可靠、可扩展的架构工程的客户设计和实施解决方案。他是高度可扩展的MomentumMTA的架构师、FontdeckCDN的架构师,以及CirconusSaaS监控平台背后的导师。Theo参与了许多开源社区,包括OpenSolaris、Linux、Apache、PostgreSQL、perl等等。他是可扩展系统和分布式系统方面的作者,也是开源会议的高级讲师。以下是访谈全文::你在昨天的监控课程中谈到了很多关于统计的内容。你认为DBA和运维人员需要知道这些知识吗?Theo:我认为了解基本的统计数据是工程师的基本要求。因为我们每天都在关注系统的各种数据:是不是硬盘慢了?网络慢吗?我们把“太慢”这个概念量化成具体的数值来理解这个系统。如果我们天天看这些数字,而没有基本的统计知识,是不可能真正理解这些数字的。:目前像Nagios和Cacti这样的工具可以做到这一点吗?西奥:不是真的。Nagios所做的仅限于提供一些数字——目前大多数系统都这样做。它们被设计成每隔一段时间检查一次,比如每分钟做一些事情,然后返回一个数字。现实中,我们面对的很多行为,比如读写硬盘的行为,每秒钟往往会执行成百上千次,所以如果我们能够仔细研究每一次读写的实际行为,通过这种理解硬盘读写肯定远不止取平均每分钟那么简单。你想知道最大值是多少,最大值是多少,你想知道一个分布,读写速度的98%或99%是什么值等等。我认为这是我们需要的。Cacti相对好一些,目前提供了一些基本的统计功能,可以查看数据的标准差,但是其他相关的数据还是很有限。:所以你在OmniTI中使用的监控系统完全是你自己写的,难道不是其他监控系统修改的吗?Theo:是的,我们完全自己编写了整个监控系统。本系统开源,监控数据写入数据库。可以直接用它来做统计分析,也可以像很多专业的数据分析师一样,把数据提取出来放到R之类的专业统计工具里。用R做统计是比较高级的,但是很多时候我们可以很容易的做一些在手册的帮助下进行基本分析。例如,如果您将JavaScript监控代码放在您的网站上,它可以返回每个页面加载所花费的时间。假设它在那里运行一天,收集了1亿个用户点击,也就是1亿个PV。你想知道的是页面加载的速度。如果平均给定1亿次页面加载时间,那将毫无用处;你想知道的是分布,1秒访问了多少次,10秒访问了多少次等等。这样会收集到很多数据点,你需要一个视图来清楚地展示这些数据是什么represent,那么这时候就可以使用R语言了。当然还有其他工具可以做到这一点,但R是最简单和最有效的。:运维工程师的工作一直无非就是部署、监控、安全、备份、排错、调优。你认为这个行业在未来会发生变化吗?Theo:我认为工作不会有太大变化,只是有些工作变得更容易了。备份数据和部署新系统,我觉得这些方面的技术越来越好,也越来越容易做。我们每天工作8小时。以前,分发、打包、部署、备份,你可能要花6个小时,而现在你可能只需要1个小时。这样,你就有更多的时间去思考性能优化、资源规划等事情——以前你可能只有1小时在这些事情上,但实际上你一天8小时是值得的。:你觉得像运维工程师这样的技术人员应该多花点时间去了解业务吗?西奥:哦,当然。当然,他们不需要了解所有业务;但他们至少需要知道为什么他们管理的机器在运行?我亲眼所见:一个系统运行了好几年,才发现早就没人用了。那是数据仓库业务。最初你有一个数据库和一个数据仓库。后来又上线了一个新的数据仓库。所有用户都从旧数据仓库迁移到新数据仓库,但没有人通知系统管理员!所以老系统还在运行,磁盘阵列在运行,耗电,一堆之前设计的自动化脚本在运行。系统管理员没看过这个系统,以为还有人在用;没有一个商界人士考虑关闭旧系统。:系统管理员不觉得奇怪吗?比如发现一直没有用户请求。Theo:哦,这个系统很久以前就没有用户请求了,因为它是完全自动化的。数据仓库系统处理的任务可能是将每天的销售数据打包归档,发送到某人的邮箱。换了新系统后,可能不知道什么原因,老邮箱一直没人查,就一直跑。还有一种情况,比如带宽占用。您购买了一定量的带宽,但实际上您可能不需要使用那么多。许多公司并没有特别意识到成本的浪费。还有一个例子:我们有一个客户,他的首页一开始不需要缓存,因为页面是动态展示数据的。客户说页面要随时展示最新的数据,比如最热门的产品。由于客户坚持不使用缓存,我们最初在架构设计上不得不为这个主页安排了60台机器。每次软件工程师提出缓存页面,客户都摇头否决:“不行不行,我们必须展示最新数据,不能让首页展示旧数据。”***安SA看不下去了,问道:“显示***数据的商业原因是什么?1秒之前的数据不是不能接受吗?”客户反馈说:“这个,当然1秒就可以了。”所以最后,60台机器优化成了一台。所以我觉得很多时候,人们没有沟通清楚。我们真的不明白为什么这个应用程序运行。当客户抛出问题时,我们开始解决它,启动机器,当没有人抱怨时,我们认为它没问题——它确实有问题。我一直是这样理解运维领域的:运维(Operations)的本质是让业务跑起来,而不是让系统或者一堆电脑跑起来,所以作为运维,一定要懂业务,不懂业务,就不会懂怎么优化业务.现实中,整个需求的传递往往是一条长长的链条:业务需求传递给产品经理,产品经理传递给软件工程师,软件工程师传递给系统管理员。.而在这里,我们可能不知道真正的需求是什么。我觉得还是把最原始的需求拿出来一起讨论比较好。:你的意思是我们要尽量减少这些中间商的存在?让用户的需求直接传达给实际做工作的人?Theo:我认为这是一个平衡问题。在一个优秀的公司里,整个链条都存在。我们有产品经理,有的专注交互,有的专注界面,还有底层。我想说的是,从一开始,我们就需要让软件工程师、系统管理员和DBA参与到“定义问题”的过程中。只有当大家聚集在同一个房间里各抒己见时,才能更好地理解他们的观点。:你上午提到,运维的职业发展需要往“多面”的方向走。你觉得这个领域以后还会分为系统管理员、运维、DBA等职业吗?Theo:哦,职业细分方面肯定不会改变。很难成为所有方面的专家。所谓多面是这样的:在大型公司,尤其是非常注重性能优化的互联网公司,比如淘宝,为那么多的用户提供服务,遇到的问题都是棘手的。要解决这些问题,他们需要熟悉各个方面的人才。因为当一屋子的人都是某个狭窄领域的专家时,由于缺乏其他领域的能力,他们很难“跨界”处理问题。比如遇到数据库问题,如果对数据库下的操作系统有一定的了解,就可能很容易找到问题所在。:就像OmniTI的招聘,你期望什么样的工程师?Theo:这个问题真的很难……对我们来说,首先会要求对方有很好的分析能力,能够按照严格的科学方法发现问题,然后去解决。你知道,太多的人在理解问题之前急于解决问题。我采访过的很多人,他们都因此而没有得到这份工作。我会问他们这样的问题,“我们的网站速度很慢。你打算怎么办?”而且他们没有问足够多的问题,他们只是开始说“我要做这个”等等。他们甚至不明白问题是什么。相比之下,那些更善于挖掘问题的候选人——他们往往是相对智商较低的一群人——往往能够给出更好的答案。这是方法方面。第二是这个人必须愿意学习。这样的人真的很难找!:那么现在你也会通过社交网络等方式寻找这样的人吗?Theo:老实说,我们的招聘不是很成功。我们的员工很好,但是我们招聘的速度跟不上需求。在社交网络方面,我们主要关注代码社区,比如Github;传统的JobList方式也有使用,比如招聘网站。无论如何,使用任何方法。:***一个问题。随着云计算的发展,预计将出现越来越多的外包业务。在这样的情况下,您认为系统运维的就业环境会不会越来越受限?西奥:我真的不这么认为。现在很多云计算服务主要是给小企业使用的,他们的需求在50到100台机器左右。在内部系统方面,IT管理员肯定会减少,因为比如建立Exchange邮件服务或者配置你放在哪个公司的电话总机里都没有关系。外包在这方面更有优势;但是网站和网络应用不同,每个网站的业务也不同。有定制,有优化,有可能直接外包完成。如果你是做电子商务的,你能把网站的运营外包出去吗?我不这么认为,因为这样你就会失去你的差异化竞争力。所以我觉得未来会是这样的:像Exchange这样的同质化服务会倾向于外包;小型网站会使用相对通用的云服务,而不是聘请SA;而对于具有一定规模的网站,即使他们的业务托管在云平台上,他们仍然需要一些懂业务的SA——懂得不同思维方式的人,凌晨3点起床的人进行故障排除。他们可能会和软件工程师这个职位合并,但是不管这个职位叫什么,这些网站还是需要这样一群人。:好的,非常感谢您接受我们的采访!本次采访到此结束。【编辑推荐】资深运维工程师刘汉钊谈负载均衡软/硬件问答:如何快速提升系统管理员团队的效率?SA、神仙和机械人:运维的工作是怎样的?
