SRE在微服务中的角色


【编者的话】本文主要介绍了SRE与微服务的关系,以及SRE在微服务系统中应当如何扮演更好的角色,从而更好的改善系统的性能和提高运行效率,并且提升微服务系统的可靠性和可管理性。

你总是可以在技术领域找到热门的职位:它们一般是10年前不存在的。虽然站点可靠性工程师(SRE)在十年前确实存在,但他们大多在谷歌和其他一些硅谷的创新的公司中。然而,如今,从优步(Uber)到高盛(Goldman Sachs),SRE无处不在,每家公司都在保持自己网站的在线和稳定。

虽然SRE是业界的热点,但他们在微服务环境中的角色并不仅仅是天然的契合,就像花生酱和果冻一样。相反,当SRE和微服务在全球软件公司内部并行发展时,前者实际上使后者的演进更加困难。

这是因为SRE的生存和死亡都是由他们维护和优化的整个系统的全部堆栈视图所决定的。该角色将开发人员的技能与管理员的技能结合起来,可以产生一个能够在生产环境中调试应用程序的员工。

谷歌的工程师们在本质上创造了这个角色,该公司对他们如何管理每天处理高达1000亿个请求的系统提供了大量的见解。他们把可靠性归结为一个基本要素,每一点都像速度和创新一样令人向往。

“最初的情况是,认真对待可靠性和可管理性,这一点非常重要。与我交谈过的人花了很多时间思考特性和速度,但他们没有花时间考虑可靠性作为一个特性,“谷歌SRE总监Todd Underwood说。

Underwood补充说,在项目的每个层面都应该考虑可靠性和可用性。举个例子,他引用了Gmail失败的方式,回归到纯粹的HTML体验,而不是全部停止。“我会带着丑陋的HTML[版本],但我可以阅读我的电子邮件。可用性是一个特性,也是最重要的特性。如果你的系统不可用,那么就没有用户评估其他特征。组织需要选择优先考虑可靠性。”

Underwood规定,每个组织都是不同的,谷歌遇到的一些问题并不典型。但他确实提倡采取更全面的做法。

“对于分布式应用程序,我们运行的是某种Paxos一致性系统。我们有一整套的关于分布式的共识。这看起来像是一个计算机科学,有点书呆子气,但是如果你拥有进程并且想知道哪些进程在哪里运行,那么没有Paxos是不可能的,“Underwood说。

Paxos是分布式共识收集的算法,通常用于解决分布式系统中可能出现的不一致问题。

Underwood强调了SRE工作的另一个重要方面:可见性。当微服务不断变化,基于云的服务器、容器和数据库的生态系统中抛出数十亿的数据包时,找出哪里出了问题,这对于解决任何类型的问题都至关重要。这就是SRE工作的全栈方面的地方。

谷歌最近为这类工作引入了许多工具。

“过去几年里,整个市场一直在非常刻意地转向微服务。我们在Kubernetes和Istio看到这一点,并从数据中心转移到云端。在这一过程中存在一些挑战。如果你有100个容器,想在一个庞然大物上做堆栈跟踪,这样的事情变得非常困难。因此,你需要一个分布式的跟踪。”谷歌云平台产品经理Morgan McLean说。

“要了解整个应用程序的健康状况,并了解事务如何流经所有这些不同的微服务,你必须有一个能够帮助你导航的系统。你要从事务的角度来考虑问题,” AppDynamics的Matt Chotin说。

为了解决这个问题,谷歌最近发布了Stackdriver Trace,Stackdriver Debugger和Stackdriver Profiler。这些工具听起来像来自传统企业供应商的旧式测试和运维工具,这是有原因的:它们执行开发人员和运维人员习惯的更传统的故障排除任务,但重点关注微服务并在云中执行这些任务。

Stackdriver Profiler处于测试阶段,但允许在云内部运行的应用程序上直接监测CPU利用率,而Stackdriver Debugger提供了一种方法,可以将断点插入到基于云的基于微服务的应用程序中,Stackdriver Trace提供了全堆栈跟踪功能,McLean提到。

Stacktrace Profiler公司的McLean表示:“这对于提高和改善性能非常有用,并且可以降低成本。Snapchat试用了它,在收集数据的一天之内,他们意识到了一小段代码 - 我认为这是一个正则表达式 - 不应该在Profiler中显示出来,实际上是消耗了相当大量的CPU。这可能发生在任何公司身上。它发生在谷歌身上,Snapchat的演示仅仅是对这种剖析技术的强大功能的真正展示。”

“没有像这样的工具,改善性能通常是不可能的。追踪正在成为一种常见的行业实践。分析和生产调试在我们的产品中更独特。”McLean说。

新的思维方式

AppDynamics的技术传播高级主管Matt Chotin分享了对新风格工具的关注。他表示,一旦从单体应用转移到微服务,团队需要重新思考他们决定整个应用程序的健康状况的方式。

“你有很多的系统,微服务的乐趣在于你可以选择适合特定产品的技术堆栈。每个事物都有自己的监控方式,自己的度量标准等。为了理解整个应用程序的健康状况,并了解事务如何流经所有这些不同的微服务的,你必须有一个能够帮助你导航跟踪的系统。你需要的是在事务中考虑事情,”Chotin说。

Chotin说,工程师不应该考虑服务是否正常。“你的DevOps团队关心的是如何查看服务以了解整体可用性,但就否正确地为业务提供服务而言,你需要进行可贯穿整个生态系统的监控,包括从应用代码到基础架构代码。”

谷歌的Underwood表示,公司内部SRE的总体目标是限制其增长,同时实现谷歌的增长。这意味着,正如Underwood所说的那样:“对于我们来说,SRE在谷歌的基础上成长是非常重要的。我们希望继续提高效率。”

因此,他说,谷歌的SRE专注于他们的应用程序。“我们专注于深入了解我们所从事的具体服务。不论是从事Google文档工作的团队,还是负责广告投放的团队,每个团队都专注于这些服务的高层次细节。与此同时,我们有SRE团队可以为所有SRE团队建立通用基础架构。”

原文链接:The Role of Site Reliability Engineering in Microservices (翻译:刘志超)

0 个评论

要回复文章请先登录注册