从腾讯云故障聊聊SLA

这个夏天实在不平静,IT圈刚刚经历了产品经理和程序员的斗殴事件,又一起公有云与创业公司的纠纷吸引了大家的视线。对于这件事情,就不用我详细描述了。

不过里面的评论确实亮了,比如下面几个:

其实还有很多很多,包括我朋友圈上的一些朋友的评论也是一样的让人哭笑不得。我觉得很多人对云有太多的误解,所以花了点时间,做了一些功课,帮助大家认识一下什么才是云,以及大家特别关心的可用性,备份和赔偿的问题。


我们先来看一下 Wiki 上对 Cloud Computing (云计算)的定义:
https://en.wikipedia.org/wiki/Cloud_computing

这里最关键的云计算特性已经写的很清楚了,就是 “让计算资源和公共基础设施一样,按照使用者的规模提供随用量变化的弹性经济模式!”。弹性的经济模式说白了就是用多少,付多少。云计算最重的特性就在于将资产投资模式转变为租用投资模式,对于使用者来说,这一模式的转变可以让你优化成本结构,减少先期投资,实现与收入增长相匹配的成本模型。

这里提到了很重要的一点就是 “类似公共基础设施”,自来水和电力是典型的公共基础设施,但是使用水电的人并不需要自己建设自来水厂和发电厂,我们只需要使用租用的方式,支付我们所使用的那部分费用。这种特性让普通人也可以享用到干净的自来水和足够的电力。同样的,云计算就是让本来没有能力建设计算资源的人也可以租用到计算资源。这使得依赖计算资源进行创新不再是那些大企业才能做到的事情,一个独立人都可以很容易的获取到这个资源。

服务级别协议 Service Level Agreement (SLA)

所有的云计算提供商都会为其服务提供一份“服务级别协议” Service Level Agreement (SLA)。所谓服务级别协议,即云提供商和用户签订的一份约定双方权利和义务的合同,并使用MTBF(平均故障间隔时间) 和 MTTR(平均故障恢复时间) 两个量化数值标识了云供应商所提供的服务的质量以及当违反这个约定的时候所承担的责任。这份协议,是每一个已经拥有了云账号的用户(无论是否付费),都已经签署的。注意,是已经签署,因为在任何云供应商的注册流程中都包含了对这个协议的确认点,可能是一个checkbox,也可能是更复杂的方式。只要你完成了注册或者启用了某种服务,这份协议必然已经是签订状态,而且都是经过你主动确认的。

下图更加详细的说明了你所签署的这份协议到底代表着什么:


针对腾讯这次的事故,大家最应该关心的是腾讯和这个客户之间签订的这份SLA到底是如何规定的。无论大家讨论得怎样激烈,社会反响怎样大,如何借助网络维权来推动这件事情发展,我们都必须明白一点:如果双方已经签订了这份合同,那么就必须遵守这份合同,任何在签订以后推翻已经约定内容的争论都是无效的,法律一定站在协议的角度来解决问题。当然,如果协议内容违反了更大的法律或者合同本身有漏洞,那则另当别论,比如:商法,合同法,民法或者宪法。否则,无论这件事情如何发展,只要是诉诸法律都不会有不同的结果。

从这个角度来看,以下前沿数控所发的类似消息,除了推动更多人关注和同情这件事情以外,不可能产生任何不同的结果:

当然,大家心里一定在想,这种制式合同是一种单方协议,对处于弱者地位的前沿数控来说非常不公平 … … 这个理解没有问题。但是任何公司/个人在和其他主体签订合同的时候都有权利拒绝和提出自己对于合同的不同想法。那么既然前沿数控已经在使用腾讯的服务,而且已经正常付费,我们可以认定前沿数控已经认可了这份协议,虽然他们可能认为这个协议不合理,但也已经认可了。这个世界本来就是不公平的,任何公司都会用尽全力在竞争中占据有利位置,没有绝对的公平,只有绝对的实力。

那么,下一个问题是,到底这份协议约定了什么?大家其实都知道几个9的说法,这个说法其实就是用来约定服务等级的度量

举个例子:如果云提供商在SLA中说明一项服务的等级是99%,那么也就意味着在一个月之内,这项服务不可用的时间不能超过7.2个小时;如果是99.99%,那么一个月中的不可用时间不能超过4.32分钟。

针对以上指标,所有的SLA还必须给出所对应的赔偿额度和赔偿方式。针对这一点,我也做了一点点功课,把大家常用的几家云提供商的SLA都查出来做了一个简单的比较。为了能够让大多数人容易理解,我只比较了虚拟机这个服务。

这4家的SLA链接地址如下,以上数据全部来自这些地址

Azure 中国版

https://www.azure.cn/zh-cn/support/sla/virtual-machines/

AWS 中国版

https://amazonaws-china.com/cn/compute/sla/

阿里云

http://terms.aliyun.com/legal-agreement/terms/suit_bu1_ali_cloud/suit_bu1_ali_cloud201802011632_33742.html

腾讯云

https://cloud.tencent.com/document/product/301/1973

具体的服务水平情况大家可以自己看上面的表格,下面我只把几个关键的点说明一下

1. 所有的云提供商所提供的虚拟机服务均没有超过4个9的可用性承诺
2. 所有的SLA都是赔偿有上限,比如:Azure, AWS和阿里云都是不超过客户已经为此项服务所支付的费用;腾讯则是不超过此费用的100倍
3. 所有的SLA都可用性无底线,也就是说,即便这个服务完全不可用,那么最多也就赔付SLA中所约定的金额。

你也可以发现,越是成熟的云供应商,其赔偿策略越加严格。比如:Azure的赔偿比例是需要单独协商的,最终赔多少你无法预先知晓;AWS的则直接规定了最多只赔30%。相对而言,这次出事的腾讯的赔偿策略已经是非常“优惠”了(前沿数控真的应该感到庆幸)。

还有一点需要说明的,就是大家会在以上表格中看到单机/高可用的不同,在有些云供应商中为这两个方案提供了不同的可用性级别,比如:Azure的单机可用性级别是99.9%而高可用级别是99.95%。那么这是什么意思呢?

大家都清楚,如果你使用一台VM部署应用,那么如果这台机器挂了,服务就必然中断;而高可用方案就是采用多台VM组成高可用集的方式来减少/避免这种情况的发生。在所有的公有云提供商的服务里面都会提供类似的功能,同时公有云还会通过多数据中心的方式来提供更高的可用性级别来防止那些不可预知的情况,比如:电信运营商的问题,地震,水灾或者电缆被挖断这种很狗血的事情。

Azure中国版的可用性区域

阿里云的可用性区域

腾讯云的可用性区域


云供应商为什么要提供这么多数据中心供用户使用,一方面是因为用户在不同地域,距离近的速度有保障;另外一方面,也是为了能够提供异地多活部署的可能性。云供应商也都提供了相应的工具帮助用户来简化这种复杂环境部署的过程,让大家可以更容易的实现更高的可用性。但是,这里需要说明的是,即便有了云提供的这些工具,要部署这样的异地多活环境仍然需要比较专业的网络,操作系统和对云平台本身的专业知识,比如:你至少需要了解虚拟专网(VPC/vNet),高可用存储,负载均衡器这3个基础云服务的使用方式才能完成一个基本的异地多活的配置。进一步来说,即便在系统层面实现了异地多活,应用本身的改造也是必须的。

更为重要的一点,所有以上的高等级可用性选项均是需要用户主动选择,主动配置,并且为其支付额外费用的。

所以,云平台其实只是简化了大家使用数据中心的方式,让大家可以自助的完成很多运维操作,相应的专业知识仍然是必须的。而且对于传统数据中心的运维人员来说,上云意味着学习更多的知识和全新的技能。

可以说,很多云厂商在进行市场宣传的时候并没有100%客观的描述自己提供服务能力和复杂程度,当然用户也倾向于避重就轻,选择性屏蔽了很多的技术复杂度而更关注与那些好听的“市场词藻”。这些都造成了整个社会对云的误解,也是这次腾讯云事件中的一个核心冲突。( 本文转自:DevOps 徐磊)

请使用浏览器的分享功能分享到微信等