在宣传云计算的时候,我们往往会强调:永远在线,永不丢失,永远可用。但所有做云计算的都心理明白,现实离这个差了远了。例如上周国内某大型云服务厂商的香港机房中断服务 12 小时,算是大灾难了。云服务中断的原因很多,包括:线路不通,底层云硬件设施故障,合作伙伴服务故障,新功能更新失败,磁盘满了,CPU 100%,DDoS 攻击等等。其中有些是可以通过努力解决的,有些是通过努力都很难解决的(例如国内复杂的网络环境)。既然这么多问题,还要用云服务吗?答案是:Yes!
使用云服务的优势大家都知道,比如成本低,迅速获得能力等等。但是很多人会质疑云服务的稳定性,安全性,隐私性。这些问题回答了一百遍,我来总结一下。
稳定性
不论你是自己购买硬件,还是基于 IaaS 部署自己的服务器。普通公司维护这样的系统所获得稳定性一定远低于使用云服务。因为云服务所面临的不确定性你一个都跑不掉,例如磁盘坏了,网络断了,DDoS 攻击了。但是由于云服务厂商的体量大,投入的专业运维团队,硬件资源的冗余等等基本都会远远超过普通公司所能投入的资源,所以稳定性自然更高。云服务厂商的服务基本上 24 小时有人用,所以任何中断都会被爆出来。经过一定时间积累的厂商的稳定性还是值得信赖的。重要的是,我们要从一个客观的角度去看待稳定性这件事。曾经有用户对我说,Coding 的服务真好,真稳定,从来没出过问题。呵呵呵呵,我心里默念那是因为挂的时候你没碰到。有另外一个用户在我们的反馈区说我们的服务很烂,快要倒闭了。那是因为他连续两次踩到了我们有问题的时候。稳定性是一个长期指标,在绝大多数情况下,使用云服务的稳定性是高于自己搭建服务的。
安全性
首先要说明的是,没有 100% 的安全。如果你认为东西放在云上就 100% 安全了,我劝你还是在本地搞个备份。不论是黑客攻击,还是公司员工误操作(这种事情真的有的,近期国内某旅游网站的服务中断充分说明了这一点)都有可能导致数据丢失。现在大家都知道重要的话要说三遍,那么请记住了,重要的数据请放在三个不同的地方,最好是异地的。因为机房或者你家里着火全烧没了也是有可能的。由于 Coding 上托管的是代码,也是很多程序员最宝贵的资产。所以我经常被问到的就是安全性问题。我一直举的例子是,假如你有 1000 万合法的现金,请问你是存银行还是放家里?云计算厂商雇了一大帮人每天都在琢磨安全性这个事儿,投入了很多硬件资源,包括实时备份,异地备份等等,所以不论是误操作(当年在美国搬砖,我有一次在喝多了以后操作服务器,“rm -rf .” 手一抖,输成了 “rm -rf /”,这两个字符在键盘上离的那么近不科学……),还是硬件故障,不可抗力等等因素,你自己部署服务器所获得安全性都不太可能比云服务厂商的高,起码云服务厂商不会让一个喝多了的员工去操作服务器 :)
隐私性
讲到这一点,我突然想起了曾经轰动一时的陈老师的照片门,不过那跟云无关,跟修电脑有关。
最开始云主机还不流行的时候,很多人都觉得云主机不靠谱,东西放在上面没有安全感,万一被人拿去了怎么办?通过几年的培育,现在基本都认可了云主机的模式,很少有人拿云主机的隐私性说事儿了。但是 SaaS 服务就不一样了,很多用户还是会担心 SaaS 厂商的员工会不会偷看他的东西,甚至泄露,特别是代码。确实,不论是 IaaS 厂商,还是 SaaS 厂商,如果有意想看你的东西,都是可以看的。但是,基本上没有厂商会有动机去看用户的数据。我们看的是统计数据。例如,我们会看到每个用户创建了多少个代码仓库,这个仓库每天有多少推送。但是我们没有任何理由和动机去看每次推送的内容。这跟我们的业务无关啊~ 而且我们真的做了会承担巨大的信用风险,非常不划算。而且有权限看到这些数据的员工都是签订了保密协议的,对于个人来讲,这么做的风险也很大。云服务的隐私问题就如去酒店开房,虽然酒店有你的房卡,甚至可以安装摄像头,但除非有特殊利益关系,没有酒店会这么做。所以对于绝大部分用户来讲,这是一个真实存在,但却不需要担心的问题。
#p#
Cloudize Your Team
现在我们讲云端化,Cloudize 是我自己发明的词语,用英文让人感觉是一个动态的转化过程。事实也是这样,云端化已经不是前几年大家吹牛逼的状态,而是非常接地气了。你仔细看看周围,已经发生了很大的变化,请问现在还有人去买硬件服务器嘛?云服务给大家带来的好处是非常明显的。我们在上线之初就确定了全盘云化的战略,我们没有自己的服务器,没有自己的存储,没有自己的分发网络(CDN),能用第三方的就不自建。虽然有些领域可选的合作伙伴真的很少,而且都是刚刚开始做,但我们也去尝试了,当然我们也是做了 Plan B 的。这让我们极大的缩短了研发的时间,减少了资源投入的成本。同时,我认为这是一种态度,虽然整个行业的服务稳定性都偏低,但是如果我们自己都不用的话,其他行业的人怎么会用呢?
我们上线一年时间,大大小小踩了几个合作伙伴的坑,但是大家的服务态度都很好,很快就修复了。我觉得这就够了,如果现在对服务过于苛刻会让一切停止不前。最近一次 Coding 挂的时候,我看到一个用户发反馈说他一早被公司电话叫醒说系统出问题了,他上来一看发现是我们的服务挂了牵连到了他们公司的业务。有时候,用户对于云计算的期待是很高的,很多用户的观念就是我用云服务了,安全了。我们不太可能去改变这样的观念(希望本文能有所帮助),我们只有努力把服务做到最好。我们在选择云服务的时候也要尽量选择有 SLA (服务可用协议)保障的服务,给厂商一点压力:)
大部分云服务厂商都是初创公司,虽然大家都拿了钱,但是资源还是极其有限的。时间短,很多东西是需要时间打磨的,不是堆人就能堆出来的。我们最近踩了一个 JDK 8 的坑,某两个启动参数在同时启用的时候,会有可能导致 JVM 卡死。在找到这个坑的时候,我心里想,如果我们也像大公司那样有专门的团队测试操作系统,测试 JDK 就好了,但这在短期内是不可能的。这就是陪伴行业一起成长的代价。
最后想说一点可能被大家忽略的云服务的优势。使用云服务会对应用的开发和运行方式产生潜移默化的影响。你会不自觉的使用更多开源的技术(大部分的云都是基于开源技术搭建,最近大热的容器技术也是开源的),应用的开发会更加的标准化(例如应用模块的拆分,存储的独立化等等),有利于数据的流动和应用迁移,不会在某个平台上锁死。
想写这篇文章很久了,一直找各种借口拖着。前一阵子我们集体去泰国团建,在旅游期间 Coding 的服务各种不稳定,导致我们必须背着本本去泳池,去沙滩……让我深刻的意识到我们真的有必要重新认识一下云计算。我写这篇文章不是给 Coding 开脱,也不是给这个行业找遮羞布,而是希望这个行业能在一个更健康的环境中发展成熟。
行业是厂商的,但效益是社会的。请给云计算一点宽容。