质疑多了不同的团队自己就要抡开膀子自己干,造成了一些不必要的PK,这些PK渐渐的让这些相关团队认识到硬件是不可靠的,而不是天真的认为“一切硬件故障可以被甄别,并可以快速隔离”。重复造了轮子,明白了一个道理。
可我并没有在<SRE>一书中找到SRE是否经历这样的阶段,因为一书中提到和硬件相关内容甚少,不过在相关资料<The DataCenter As a Computer>中,能找到类似的经历。
文章的作者之一,Jimmy Clidaras,他从04年开始从事Google Datacenter Engineering的工作,是第一个Senior Director of Google’s Platforms Infrastructure Engineering Team。
文章提到了非常有趣观点 --- 为了提到维修的效率,以下两项工作非常关键:
"每天打扫一次"数据中心里需要维修的硬件。(而非时刻都在)
需要一份精确的硬件损坏和分析报告,报告来自 Google System Health
最后,他同样提到应对的观点:(N+?理论,该论点也反复在SRE一书中提到)
TOLERATING FAULTS, NOT HIDING THEM.
Google System Health
我可以得出这样的结论,Google的基础设施团队,他们做了大量的工作(包括科研性的工作),这一切SRE团队并非参与者,而是“维护者”,甚至是“享用者”。(理想情况下,他们不需要再关心硬件故障或者之类,但我相信现实情况下,他们对硬件故障也耳熟能详了。)
幸运的是(还是不幸?:)),硬件故障等问题经验至今仍然是A云SRE值得“分享”的一大类目。
** A SRE 1:0 G SRE ** 1.2 硬件选型Google的信条是:
很有意思,G SRE并没有觉得自己曾经的工作被替代(更别提被“别人”拯救)我想唯一的可能是G SRE有极大的参与感和主导权。
A SRE在地球的另一端,仍用着“最初的自动化脚本”执行着去完成那些操作。宣称不久将“替代”A SRE这些脚本的DevOps团队,从1.0演进到2.0再到现在3.0,多年来风风雨雨,你来我往,既没有兑现当年的承诺,也没有留下“战友”般的友谊。干活累的时候,相互喷一嘴解解乏。
** A SRE 2:1 G SRE ** 1.3.2 BorgMon** A SRE 2:2 G SRE ** 1.3.3 Jupiter&BwEGoogle Jupiter和BwE(带宽控制器),实现了一个巨大的可供管理的虚拟网络,在一个数据中心里,几百台自研的交换机以Clos方式连接为一体,拥有几W个虚拟端口,提供1.3Pb/s交叉带宽。
网络也并不由A SRE直接维护,但A SRE在数据中心网络问题的排查中往往会起到决定性的作用,而相比较G SRE的BwE,A SRE更有办法能够找那个“坏小子”应用,人肉充当带宽控制器的角色,当然前提是时间允许的情况下。
** A SRE 2:3 G SRE ** 1.3.4 存储系统
D Service
A云的存储系统和G司类似,除了D服务。A云并没有D服务,底层磁盘是直接由分布式文件系统盘古直接管理,在盘古之上也衍生出很多数据库服务,如MaxCompute、OTS、OSS等。
或许没有D服务,盘古仅能按照集群来管理不同类型的磁盘,还无法做到数据中心级别。
** A SRE 2.5:4 G SRE ** 1.3.5 分布式锁服务和存储类似,相比较可以提供多个数据中心服务的Chubby,A云的分布式锁服务仅能按照集群级别管理。
** A SRE 3:5 G SRE ** 1.3.6 GSLB** A SRE 3:6 G SRE ** 1.3.7 结束我相信G SRE的成功之一源于G基础软件服务成功,正如蒸汽火车和磁悬浮列车最高时速的差距并不在于“司机”的操作技巧。
二、能力:SRE研发的产品
本节只能依据书中明确提到由SRE团队研发产品来横向的比较。书中提到大部分Google内部幕后的软件工程实践都是来自SRE部门,而此类现象在A云并不多见,相反,在A云多数源于SRE部门的idea,而往往实践落到了研发部门,我们称之为“收编”。 2.1 Auxon容量规划是两个SRE都要直面的问题,而且两者都意识到了传统容量规划的方法带来的巨大开销和不确定性。
G SRE和技术项目经理研发了Auxon,一款基于“意图”的容量规划工具。A SRE虽然表现上已经告别了表格的方式,但容量规划的系统是财务主导,由研发团队支撑,和SRE并没有太大的关系。而A SRE更多的专注在研发如何“高效”的提供让人信服的业务数据和趋势分析的平台。
从书上可以了解到,G司拥有不止一套容量规划的模型和工具,用于满足数据样本和规划模型之间的差异化,G SRE也意识到Auxon也无法满足所有项目。但书中没有提到的是大型分布式系统的容量规划,这背后不是简单一个或几个技术指标的分析与运算,容量规划背后那些KPI的目标,不同部门相互交织,视角和理解数据的方式完全不同,A SRE要面临的挑战或许要大的多。
** A SRE 0:1 G SRE ** 2.2 Layer-3 Load Balancer对于这款产品,书中提及的篇幅不多,我翻阅了一下参考资料<Maglev: A Fast and Reliable Software Network Load Balancer>,文章的作者大多数来是Google的资深软件研发工程师。
G SRE源自对网站的可靠性维护,自然的对负载均衡器有非常深的理解,从19、20章的描述可以感受到LB是那种根植于SRE技能条里必备技能。根据我个人的以往工作经历,曾经几乎一整年的工作就是和商业负载均衡器打交道,反而到了A云接触的少了。
** A SRE 0:2 G SRE ** 2.3 Sisyphus
Tesla
通用的自动化发布框架,和G SRE类似的,A SRE团队已经实现了支持自动化发布的复杂部署、升级流程,这个平台叫Tesla。同时,它也具备负责记录每个步骤执行过程和异常通知,提供Python扩展包,唯一让我觉得遗憾的是,Sisyphus和构建工具打通,做到代码构建到上线快速发布。我相信任何的线上发布除了系统之间互通之外,也需要研发团队、发布团队和SRE团队之间的互通。而Tesla目前虽然还未和构建平台有任何的交互,但在团队直接的协同通知上,已经研发出了一套面向工程师的“发布申请流程”。
Tesla平台已经在内部运行了几年,是由A SRE主导研发的智能运维平台,除了自动化发布框架,它还整合了其他很多SRE主导研发的产品。
** A SRE 1:3 G SRE ** 2.4 其他Google Cron&Google WorkFlow,书中有专门的章节提及,但并未直言这两个产品是由SRE团队研发,我想列出来的原因是本是大型分布式系统应该依赖的基础软件,G SRE可以明白的阐述其软件设计思路和实现,而A云,早在几年前也有类似的产品服务整个数据中心,但由于组织架构的调整,这些服务慢慢的变成“无人区”,更别提有业务应用敢使用,作为A SRE的一员,未免令人唏嘘不已。
** A SRE 1:4 G SRE **
A SRE周围充满了人情和感性,业务产品那个不是从水深火热之中爬出来,而我们又如何能够袖手旁观呢?
G SRE PRR模型是非常值得借鉴的一种接管服务的方式,G SRE的这套方法论更坚定了A SRE的未来改进的方向。
** A SRE 1:2 G SRE ** 3.2 团队构成G SREA SRE
/传统Ops
Tech LeadTech Lead
SRMTech Lead
PM/TPM/
/PD
/数据分析/运营SRE团队构成多样化,有些成员喜欢责任职责被明确的定义(仅作研发效率相关的工作),据此可以迅速安全的做出范围内的决策,另一些成员在一个更为动态的环境中工作,随时切换责任。
A SRE相比G SRE是一个更为动态的团队,团队内部比较来说,只有数据分析/运营的职责(技能)的SRE技能切换不太频繁。
A SRE技术负责人承担了不仅负责团队技术方向,还有绩效管理和横向团队协作等(其他一切其他人不能处理的事情),所剩的工作时间很少能够review团队成员的代码,更多方通过在团队中推进共识的建立来引领团队。
** A SRE 2:3 G SRE **
ITIL(R) is a registered trademark of AXELOS Limited, used under permission of AXELOS Limited. The Swirl logo is a trademark of AXELOS Limited, used under permission of AXELOS Limited. All rights reserved.