衡量云性能:我们需要一把不同于以往的标尺

摘要

在将应用程序迁移至云端时,我们总需要放弃某些特定控制能力。在这种情况下,大家就需要准备新的标尺,用于监控与变更相关的种种策略。

正如开尔文勋爵所言:“衡量的目的在于了解。”不过这项简单的格言实现起来却难度极高。其真实含义分为以下两点。

1468554312-7422-503.png-wh-651x-s-1897314487

第一层含义非常明确:我们无法在不加以衡量的情况下,对事物加以认知。举例来说,如果大家希望快速了解应用程序的运作情况,那么必须选取几项关键并加以追踪。“良好的性能”意味着功能可在短时间内完成,而糟糕的性能则代表着功能要耗时极久才能实现。

另一项重要指标在于,应用本身是否拥有“理想的性能”。例如,性能是否在不同负载条件下保持稳定,或者在应用的不同组件之间保持稳定?

而第二层含义则相对隐晦,但却同样重要:通过定义衡量标准,我们实际上也是在定义自身的知识界线。在应用环境当中,这可能并不是什么大问题; 但云环境则提出了完全不同的挑战。由于我们无法对环境加以全面控制,因此不能衡量一切将变得非常可怕。

当应用被迁移至云端

有鉴于此,当将服务迁移至云端时,大家必须切实利用衡量手段掌握用户的使用体验。如果做不到这一点,或者同时只能关注同一项指标,那么我们将很难做出正确的判断。

例如,在传统Web应用环境当中,我们往往会将与页面加载或者渲染速度指标视为其它组件的性能参照。例如,缓慢的页面加载速度可能意味着数据库后端存在故障或者承受的强度过大。

不过这种思考方式明显有着自己的局限:其假定应用之间的连接并不存在问题。在内部运作的基础设施当中,我们可以以此为前提进行排查——这种作法非常合理。但在云环境中,问题显然没那么单纯

云改变了一切

在云环境内,这种假设不再成立。我们的云服务供应商会随时变更当前环境,且整个重新配置过程完全超出大家的控制范围。服务本身就是我们付费所应得的范畴,再无其它!而如果想像内部基础设施那么租赁完整的云资源,那么成本则会超出承受能力。

事实上,我们之所以将负载交由云环境打理,是因为其能够提供传统数据中心所无法企及的容量上限。这意味着底层基础设施——包括服务运行所在的网络、硬件乃至环境——始终作为变量存在。

这当然不是坏事,但问题在于衡量众多独立变量会带来巨大挑战。幸运的是,云环境本身提供了一种能够切实完成管理任务的办法:

获取数据:大多数云服务提供单个指标或者查询机制,即使您所选择的供应商不提供相关方案,也可求助于其它厂商。每秒总线信息、存储操作、计算资源使用量等等都能够成为把握底层服务动态的线索。

处理数据:

一部分云服务会聚合数据并以易于使用的方式集中提供。大家可以借此随时检查数据流量,这也应当成为任何形式的云系统的必要配套方案。

数据可视化:

大多数数据聚合服务都提供多种可视化工具。运维人员可随后借此讨论并向管理层解释当前运行状况,并确保一切处于“基准”范围内。只有把握住这种“正常”状态,异常问题才能被及时发现。

确保应用生成有价值数据:

应用日志通常分为两种类型:全面调试与停止发报。确保应用能够生成有价值且具备可操作性的指标。

不要仅依赖单一来源:

如果大家只使用当前云服务厂商提供的衡量指标,那么恐怕无法保证审计合格。正如良好的财务控制与审计是保障业务成功的关键,我们在技术层面需要采取同样的心态。事实上,大家不妨以怀疑的态度审视一切,并在必要时求助于第三方厂商。

当然,云服务供应商本身往往是最先发现问题的一方。遇到这种情况,我们应当与外部监控厂商交流问题,从而建立更可靠、更及时的衡量体系。

  • 版权声明: 本文源自 51CTO.COM, 于5个月前,由整理发表,共 1354字。
  • 原文链接:点此查看原文

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: