如今,几乎每家公司都至少在使用一些云服务,而且它们不仅仅使用打包的SaaS应用程序、PaaS服务和IaaS虚拟机。网站和自定义应用程序是使用应用程序编程接口(API)构建的,用于从映射和消息传递到分析、欺诈检测和语音识别等各个方面。
软件即服务(SaaS)产品通常提供api,允许您通过第三方应用程序和服务使用它们,甚至构建您自己的应用程序和服务。例如,Salesforce超过50%的流量和收入来自其api,而不是直接来自其基于web的服务。eBay和Expedia分别占60%和90%。如果您使用Twilio发送客户支持的文本消息或万事达欺诈检测服务,您正在依赖这些api为您自己的关键业务流程。您如何度量和监视它们,以确定您是否获得了可接受的服务水平?
仅仅因为您使用的是云服务,就不能假定它会执行得很好。宕机是罕见的,如果一个地区的服务宕机,你可以使用地理冗余来确保你的云应用故障转移到另一个地区。但是,尽管托管系统供应商的sla涵盖了正常运行时间,但它们很少提到延迟。如果延迟太长,您的API调用就会超时,这会给用户和客户带来糟糕的体验。
微软的必应技术顾问克雷格•米勒(Craig Miller)表示,当微软开始将其必应搜索引擎转移到持续部署,并首次开始衡量一些外部依赖性时,遇到了这样的问题。他说:“我们发现,我们使用的服务,我们没有意识到可靠性不超过3个9。”。
您可能甚至不知道整个公司有多少api和SaaS应用程序在使用,现在许多业务单位都在购买自己的云服务,所以您可能想开始使用一些工具来告诉您网络中有哪些活动。这类产品包括微软(Microsoft)的Azure云应用发现(Azure Cloud App Discovery)或Imperva的Skyfence。如果您拥有从前任那里继承的服务或在合并中获得的服务,那么这一点尤其重要——您需要了解您所采用的服务。
[相关:api有很多,但是挑战仍然存在]
但是一旦你知道了,你需要做的不仅仅是关注你所依赖的服务和api的状态警报;而且你不能假设sla会覆盖所有可能的问题。
API网关-可以是云服务,如Amazon API网关、Apigee API网关、Tibco的Mashery API管理器和Micorosoft的Azure API管理系统,也可以是本地API管理器,如Akana、Layer7和3scale提供的管理器-允许您控制对API的访问,并按策略管理资源、限制客户端速率和查看使用情况分析。有些,比如Azure API管理,可以作为代理来控制外部API的内部使用。但大多数情况下,它们是关于打包并提供您自己的api和Web服务,帮助您扩展、监视和分发它们。在理解您可能正在使用的外部api和微服务时,这对您没有多大帮助,通常不需要测量。如果您使用内部和公共api的混合,那么您还需要考虑显式地监视这些api。
延迟和位置
根据API分析服务APImetrics首席执行官大卫O'Neill的说法,问题是,“谁告诉你API引起的问题?你的开发和运营团队,还是你的客户?你知道你的基础设施在端到端地为你的客户做什么吗?你可能不知道,如果你知道了,你会吓坏的。”
奥尼尔认为,使用api比许多人理解的要复杂得多。他表示:“人们需要考虑到一些非常奇怪的事情,而整个行业才刚刚意识到这一点。”“我们创造了一个网络应用和服务的新世界,在这个世界里,公司不知道他们花钱买了什么,他们是否在工作,他们实际上在做什么。”人们(依赖于sla),但他们的sla没有正确的度量标准。sla讨论正常运行时间;他们不谈论延迟或响应。”
您不能仅仅查看自己的日志或运行自己的测试来查看API的响应能力,因为问题可能并不明显——它们只告诉您从网络访问API时将看到的性能。您甚至不能使用一个云位置进行测试。例如,“如果您从弗吉尼亚州的Azure地区调用Foursquare API,它要么失败,要么需要20分钟才能返回任何响应,”O 'Neill说。“可那只是从维吉尼亚州的艾泽尔寄来的;来自加州Azure的这款应用运行良好。”
简单的日志和测量不会告诉你所有的事情,你当然不能依赖平均的延迟读数。如果你看到的平均延迟是,比如说,250毫秒,你必须检查它是否包含一些异常快速的响应,屏蔽那些需要5或10秒的响应。记住要考虑API调用的规模:如果只进行1000次调用,99.6%的成功率意味着只有4次失败,而且这种级别的性能不太可能导致问题。但如果你打100万个电话,那就是4000次失败。当您开始使用来自不同服务的多个api时,还必须考虑它们之间的延迟。
如果你有国际客户,情况会变得更糟。“如果你要衡量你的服务器的性能,你将如何为日本的客户衡量呢?”你不可能把所有东西都塞进维吉尼亚州的AWS,然后运营一项全球服务,但很多公司就是这么做的,”奥尼尔警告称。“你必须从头到尾地看它。如果你有日本客户,你在东海岸的AWS数据中心,将会有延迟,因为它只是光的速度,他们路由查询的速度有多快。2020欧洲杯预赛如果在公共API调用之后有三个API调用,并且每个调用都需要跨大西洋跳转,那么可能会增加很多延迟。你不会在你的服务器上看到这些,你的客户也不会体验到你所做的。”