Google的系统工程师(SA)如何工作

标签: Linux Google operation 运维 | 发表时间:2010-09-13 00:32 | 作者:Tim freefish
出处:http://timyang.net/

本文根据系统管理领域知名博客 Thomas A. LimoncelliWhat is system administration like at Google 整理而成,添加了部分笔者观点。

Google的系统工程师(System Administrator)如何工作

由于Google的服务已经集群化,系统工程师并不大量接触硬件比如做安装服务器等事情。另外大部分工作也已经自动化了,比如架设LDAP, 负载均衡等。对照而言,国内目前大部分互联网公司SA仍然要做大量重复的底层工作,比如拿一个业务的数据库过大需要拆分为例,从系统管理员的角度,需要做以下事情

  1. 同技术人员沟通目前业务特点,制定拆分方案并评估程序风险
  2. 搭建测试环境,技术人员测试程序兼容性
  3. 制定实施方案,保证业务的不停机平稳过渡
  4. 深夜上线
  5. 观察1-2天运行情况

我们需要思考上面工作是否是系统管理员以及技术人员有价值的工作。像Cassandra这样解决了分布式存储自动化扩展的问题是业内一种发展方向,尽管Cassandra的稳定性还需要改进)。

Google的系统工程师怎么做?
他们会通常1周值班,响应各种问题,比如完成上述场景中的扩容业务。然后有大约5周左右脱离一线工作来自由思考将这1周内碰到的工作进行自动化改进,将那些会反复碰到的问题通过脚本及监控程序完成,或者进一步反馈给技术人员改进应用程序来实现自动化。1:5只是个大约比例,时段可以灵活安排。比如也可以按天来安排,1天值班/7天改进。当改进完成之后,下次遇到相同的场景,自动化程序会完成大部分工作。如果在其他公司,SA通常忙碌在一线机械重复上述工作,但是在Google, 给系统工程师预留了相当多的时间让大家思考改进。

这就是Google的System Administrator自称SRE(Site Reliability Engineers)的原因。SRE会不断在优化所负责的系统,一些人关注运维层面,另外一些可能关注自动化工具。所有的SA都需要具备一定程序或脚本开发能力。

因此,当遇到Google的数据规模,自动化不是是否需要,而是如何更好实现的问题。

在Google其他一些令人兴奋的工作还包括

  • 与开发技术人员是协同的关系。
  • 只需关心技术,在技术领域也有职业生涯上升通道,不必转向技术管理岗位或其他。
  • 同事都非常聪明,通常会觉得自己是最逊的那一个。
  • 很多挑战,保守的估计领先行业2-10年,在这里工作就象给了你一个魔法水晶球,通过你的工作可以预见这个行业的未来。

受Google方式的启发,以下想到的一些可以研究的自动化方向

1. 程序部署

C/C++/Java/PHP/Python/Ruby/C# 等语言如何不停机自动发布
自动发布如何简洁的解决模块依赖性,比如1天需要同时更新10个有相互依赖的模块,并且不能停止服务
Web容器虚拟化,同一Web容器上可以部署多个业务,业务之间互相隔离,互不影响。
将新开发的服务程序运维自动化。一般的服务程序从数量上来说,10是一个分水岭,10台以下的服务通过人工重复操作方式来管理也问题不大,但是10台以上就需要自动化管理的方法。很多优秀的开源程序(比如Tokyo Cabinet, Redis等)在单机上表现优秀,但是大规模部署不能。大公司中很多技术人员经常提到很多开源软件不适合他们就有这方面原因。

2. 资源部署

MySQL
分布式文件存储
Cache,拿cache自动化管理举例
端口资源管理,不同业务使用不同端口,同一应用内不同的数据使用不同的端口,相关原因可以参看以前cache相关博文。
容量管理,不同的数据需要不同的容量
动态扩容,应用业务规模增长,比如从10G扩容到100G
Proxy功能,比如虚拟化端口映射,程序访问的是固定虚拟端口,这样不需要重启服务也可以随时扩充,应用也不需要一致性hash, proxy帮你做了。

3. 系统部署

OS
反向代理与负载均衡
本地分区容量,批量管理
程序发布与停止,比如一个程序一个点击部署到100台服务器
虚拟化,比物理服务器更容易部署,资源利用率更高,部署更可控

大部分国内互联网公司基础技术还是比较原始的,这跟行业过分强调“好产品是运营出来的”也有关系,基础研发通常不受重视,长此以往,只能在门槛低的领域打拼,与Google的技术差异就不止10年了。
paper tape
(图:大型机GEORGE的纸带编程年代)

Similar Posts:

相关 [google 系统 工程师] 推荐:

Google的系统工程师(SA)如何工作

- freefish - Tim[后端技术]
本文根据系统管理领域知名博客 Thomas A. Limoncelli 的 What is system administration like at Google 整理而成,添加了部分笔者观点. Google的系统工程师(System Administrator)如何工作. 由于Google的服务已经集群化,系统工程师并不大量接触硬件比如做安装服务器等事情.

Google工程师:Google不懂平台,Google+就是证明

- kxxoling - 36氪
一位Google工程师在G+上发布了一篇5000字的文章,本来是用于内部分享,但是他错误地选择了公开发布给外部的2000多粉丝. 这位工程师Steve Yegge先是写了他的前雇主亚马逊和CEO Jeff Bezos,然后他开始谈论Google. “Google最后一件没做好的事情就是平台,我们不懂平台,我们没有做好平台.

Wave工程师:Google+不会代替Facebook 会分杯羹

- Leonhard - cnBeta全文版
据国外媒体报道,谷歌Wave前工程师,同时也参与过谷歌圈子开发的Dhanji R. Prasanna昨日撰文称,Google+不会代替Facebook,但会成为除Facebook的另一种选择. 他认为,Facebook的信息分组功 能不完善,而Google+的中心功能圈子在这一点上就做得很好,圈子的理念来源于Google用户体验前任主管用户体验主管保罗・亚当斯(Paul Adams),亚当斯曾经为此做过一个名为《现实生活社交网站(Real Life Social Network)》的幻灯片.

谷歌的工程师利用Google Map追求女友

- 小熊TONY - cnBeta.COM
感谢Cnpda智能手机论坛的投递. 一个名叫阿里吉尔德的谷歌工程师建议他的女朋友今天务必要使用Nexus One里的谷歌地图,因为他为女朋友的Nexus One建立了一个谷歌地图的自定义应用程序,可以利用谷歌地图,计划她的路线,她会在不同地点使用这个自定义的程序,并且找到早就为她安排好的玫瑰花.

Google 资深工程师辞职,称公司不再创新

- - 最新更新 – Solidot
Google 资深工程师 Steve Yegge 在公司服务了将近 13 年后 辞职,他在 Google+ 和博客上发表文章谈论了 离开 Google 的原因,称公司不再创新,几乎完全失去了创新能力. 他例举了四个原因:首先是保守,过度集中在已拥有的东西上,害怕冒险和真正的创新,墨守成规和规避风险是常态而不是例外;其次是深陷政治,对于如此大的一个机构来说是不可避免的,唯一的替代是专制,但专制也有其缺点;第三是傲慢,谦虚的人组成的公司仍然会是傲慢的,傲慢的是集体而不是个人;第四可能是最糟糕的,Google 不再以客户为中心,而是完全盯住竞争对手,关心客户只是一个口号.

谷奥: 前 Google Wave 工程师说 Google 的软件架构也忒过时了

- 张宪伟 - 谷奥聚合——谷奥主站+谷安 aggregator
Google Wave前工程师 Dhanji R. Prasanna(上图是他的Twitter头像) 昨天发了一篇博文,解释了自己为何要离开Google,其中谈到了Google的文化,但最有趣的部分其实是他说“Google一直自夸的具备延展性的软件架构已经过时了”. 尽管他承认Google的硬件架构依然是完美的艺术品,但其上为搜索引擎和爬虫设计的软件架构至少落后了10年.

Google 工程师强大到用 Android 和 Google Maps 给他女朋友求婚

- skymare - 谷安——谷奥Android专题站
没有最稀奇只有更稀奇的事(不但是稀奇而且很威武),今天我们了解到了一件有意思的事情,Google 的工程师 Ari Gilder 给他女朋友求婚使用了 Google Maps 和一个自制应用,他将准备好的 Nexus One 交给他女朋友,通过为他女朋友策划的路线,她在不同的地方通过定制应用收到了玫瑰和照片.

Google工程师创建网站TechCompanyPay告诉你顶级科技公司给工程师们开多少薪水

- zhangyang - 36氪
来看看TechCompanyPay上面的数据. 最慷慨的5家公司开给工程师的平均薪水分别是:Twitter 12万美元,苹果 11万3千美元,LinkedIn 11万2千美元,Facebook 11万美元,Google 10万4千美元. 开发该网站的Google 客户解决方案工程师Gareth Jones表示这些数据“非常准确”.

想成为Google工程师?先回答这15个面试问题

- - 搜索引擎技术博客
挑战: 这是一个相当开放性的问题,设计初衷是看看工程师是否会定义参数. 是:那么你得摆手起家开发出一套基本运算来. 否则的话:那就简单了,只需将数字套进去即可,因为大部分语言均支持数学运算. 挑战: 这类问题是Google面试问题的一个共同趋势:找出解决问题的有效办法. 合并两条链表是一般会在链表之间发生“冲突”(因为它们各自有特定的次序,而你的合并会把次序搞乱).

一个系统软件工程师开发iPhone App的一些感想

- hanyu - 弯曲评论
过去5个月,从头到尾,做了一个基于iPhone的SNS 系统,Client端是iPhone XCode的Object-C,Backend是LAMP(Linux+Apache+MySQL+PHP). 现在基本上可以说:可以在自己的技能里加一项了--ios app研发工程师. --基于SmallTalk演变而来的Object C貌似很容易,但有些缺陷.