孙宇聪:评判云服务靠谱程度

云服务真的靠谱吗?

相信对这个问题每个人心里都有不同的答案。我今天想讲的是如何客观的去回答这个问题, 其中结合了 Coding 的一些实践和思考。

云服务 云服务哪家靠谱 云服务哪家安全

广义范围的“靠谱” 有几个比较重要的点。

第一个点就是 Availability (可用性),24x7随时可用。一个靠谱的云服务一定是可用性非常高的。

第二点是 Access Control,可控性一定要好,非云服务你可以上个锁,云服务如何能做到可控性很好,很难。

第三点是 灾难恢复,是软件就会有问题。怎么样积极的面对这个问题,这是任何一个云厂商都要诚实面对的问题。

可用性

首先第一点我们看来讲一下可用性,可用性只有一个评判标准,就是 SLA,Service Level Agreement,更多的时候是 SLO, 只是 Objective。 一个东西是不是高可用,那么就问他几个九,敢不敢拿出来说一下。

云服务 云服务哪家靠谱 云服务哪家安全

实实在在的看着这个图说话,3个9基本上是国内云服务的基础线。也就是说**云服务至少要做到3个9才称为基本上可用**,是合格性产品。如果是做不到这个,你的东西就只是玩具,快回去好好把技术内功修炼修炼再出来刷脸。从3个9迈向4个9,也就是99.99%的可用性,每年只有52.6分钟的时间是不可用的。

以前的谷歌搜索可用度大概是全球5个9到6个9之间,每一个小节点都是5个9不到6个9之间。想想吧,这其实是很可怕的一个概念。**因为这里包含了可能发生的一切事故**,不管什么不可抗力,都是扯淡。地震、洪水、台风、大楼震塌了,也是5分钟内恢复服务。

相比之下,大部分国内的IDC机房都是按照99%设计的,一年至少3天是不可用,这3天给你花在元旦一天,春节一天,国庆一天,省点时间给你机动(笑)。这里不可用就是不可用,求爷爷告奶奶也照样不能用。

所以说 SLO 直接反映一个云服务的靠谱程度:

从99%到3个9,是基本可以靠堆人和运气解决的;

从3个9到4个9,考验的是运维自动化的能力,灾备的能力;

从4个9往上基本考验的是服务基础架构、业务设计的能力。

我们也在3个9到4个9之间努力, 这个还是很有难度的。如果一个云服务厂商在注释里加了句“不可抗力排除在外”,这是非常不合适的。

那么如何提升可用性:

Design For Redundancy, 第一是一定要做到所谓的**“无状态微服务”**,去掉单点故障。 首先是“微服务”, 一个服务分解的越简单,出错的面就越小,失败模式就越固定。然后是“无状态”,这样才可以做到无限扩展。 这个很难的, 很多时候最后拆来拆去都发现有一个数据库在最后,这个数据库就做不到无状态,永远只能有一个数据库,一个数据库实例在那摆着,可用性永远上不去。

有了无状态的微服务这种架构,还要做到 N+2。很多时候很多厂商连N都不知道(因为从没有做过压力测试,性能分析),何谈N+2?

Design For Gradual Deployment, 第二就是要**支持灰度发布**。一个服务要前进,任何软件组件都要改,都会改。更新操作会直接提高你系统出问题的可能性。想要提高可用性,**必须将发布的代价降低**。只有能够做到说我上线一个新功能,只给某几个用户用,其他的用户不受这个影响。这样才能提高你整个系统作为一个整体的可用性,

Design for Clustering: 第三点是要**区分 Cluster management 和 App Managment 的概念, 把资源的调配和服务调配分开。**

云服务 云服务哪家靠谱 云服务哪家安全

Design for Automation ,最后一点是**自动化**。一个靠谱的云服务,从设计之初就把人的因素排除在运行之外。整个系统应该是全自动化运行的,不需要你人来干预。云服务初期买了二三台个服务器,服务器放在那,有人天天盯着它才正常运行,这还有可能,上了规模之后显然是不可能的。这是最关键的一点。任何一个云服务到现在内部都是非常复杂的,他就像这个漫画里边这样,每一个人操作它的时候,面前有无数的按钮,无数的可能性。除了问题之后,如果让一个人马上搞清楚弄明白立刻解决,这是不可能的,只能自动化。

而且其实更多的时候都是人的操作带来的问题,更新一个软件,更新一个服务器都不可避免的有人要参与。如果不做自动化,早晚会出问题。

云服务 云服务哪家靠谱 云服务哪家安全

任何的靠谱的云服务厂商至少要做到以下几点:

第一个SLA一定要达到4个9,你达不到这个4个9基本上相当于你这个服务就是一个玩具,根本没有办法依赖你。

第二个是一个数量级,甚至两个数量级以上的预研。

第三就是 Automation 自动化。这就是实践中的一个经验。