逢宕机必谈起,多云是真火还是假热?
话题背景
近两年,因为云计算的快速发展以及各大云厂商的几起宕机事故,将多云这一概念推向高潮,几乎每次宕机过后的接连几场云计算相关活动都会出现“多云”相关探讨。当然,这不代表本地自建机房时期的安全性有多高,只是云一旦出现问题,很容易产生共振效应,进而造成大范围影响。
根据国外云计算的应用步伐来看,多云似乎已经被提上议程。前不久,分析公司 Kentik 曾发布一份云相关的调查报告,该报告调查了 310 位技术和业务主管。令人寻味的是,AWS 和 Azure 似乎是两个最激烈的云竞争对手,但企业更倾向于同时部署两大云服务,也就是所谓的多云配对。
调查显示多云部署正在快速发展,可能会逐渐超过混合云,并且最常见的云组合是 AWS 和 Azure,但也有客户选择 Google Cloud Platform。根据 Kentik 的调查,97%的受访者表示所在公司使用 AWS,35%的受访者表示也在积极使用 Azure,24% 的受访者同时使用 AWS 和 Google Cloud Platform。
但是,也有不少用户发出质疑:单云都没用好,如何 Hold 住多云?作为云平台的直接使用者到底应该如何选择?InfoQ 就此问题采访了数位业内专家、企业用户,并汇总了普通开发者的声音,我们来看看多云到底靠不靠谱。
多云探讨
在不少与宕机相关的文章中,都能看到与“多云”相关的评论,笔者随机截了几位相关评论,如下:
不难看出,大多数用户认为多云可以解决供应商锁定问题,并降低安全风险,因此推荐企业部署多云。对此,专家认为,避免厂商锁定是大多数企业的 IT 策略,其中一个重要考量是成本优化,大多数规模较大的企业都担心与云提供商建立单一供应关系,进而丧失议价能力,但多云是否会降低成本,需要看整体拥有成本的构成。当然,也有用户对多云提出质疑,认为如果上升到实践层面,不少企业恐怕无法应对成本、安全性、域名等相关政策带来的挑战。
在知乎上,也有不少与多云相关的探讨:
对此,业内专家在接受 InfoQ 采访时表示,作为云服务的采用者,企业首先需要仔细考虑清楚自己的战略,同时了解这些挑战最终可能带来的复杂性、成本和陷阱。在多云部署中,成本可能会成倍增加,这不仅仅是云订单的价格,还有运维成本。虽然一开始通过利用多个云计算提供商来实现成本效率似乎是合理的,但长远来看,缺乏工具和标准以及其他低效率培训和跟踪云平台使用的成本可能代价高昂。
目前,多云支持能力的供应商成熟度差异非常大。虽然一些供应商是早期采用者和开拓者,但彼此之间存在全方位差异,而这种差异使得采用过程非常复杂和低效。此外,从安全性和合规性角度来看,缺乏集成身份和访问管理也是一项重要挑战。
Kubernetes 将会促成多云?
早前,InfoQ 曾 对 Kubernetes 项目创始人兼 Heptio 首席执行官 Craig McLuckie 进行采访,其在采访中谈到:
Kubernetes 是一个非常健壮的真正的分布式系统。按照设计,它消除了系统中的单点故障。对于一个恰当配置的集群(配置了高可用及恰当的基础设施),你可以在数据中心里转转,拔掉节点,Kubernetes 会把工作负载调整到运行中的节点,把一切恢复到正常状态。许多用户在首次看到这个效果时都非常吃惊。我记得有人将其称为“猎枪证明系统(shotgun proof system)”。其稳定性令人吃惊。确实,Kubernetes 在云计算中处于一个恰好的位置,不是特别底层,不会让开发者受困于特定环境细节,而同时又可以获得足够的灵活性。关于这一点,其背后涉及更深层次的两个论题:一是为什么需要开放的云原生技术体系;二是如何在云端构建高可用 IT 架构保证业务的连续性。
某互联网云计算厂商的技术专家表示,Kubernetes 一方面帮助用户屏蔽底层特定运行环境细节,一方面提供了灵活的资源调度和应用编排能力,可以让容器化应用获得足够的灵活性并简化自动化运维,得到了社区的广泛支持。CNCF 推出 Kubernetes 一致性验证项目,各主流云厂商都通过了相关认证,保证了用户的容器化应用可以在不同云厂商之间平滑迁移。
根据过去与客户的实际交流来看,尤其是金融、零售、制造、医疗卫生等领域,CIO 们不希望被某一家厂商锁定,而是希望云提供商能够提供类似标准电力一样的计算能力,并尽可能价格优惠。云原生不断打磨标准,也必将使得企业用户会从在这个开放标准建立的过程中获益,获得基于云构建 IT 架构的最佳实践并可以选择合适迁云路径和云平台。
至于第二个问题,用户上云需要一个 E2E 高可靠架构,比如云基础设施、应用基础设施、应用部署和应用架构自身。当然,这也需要综合考虑成本和效率。跨可用区可以实现同城容灾,而且可用区间延迟小 (比如阿里云可用区之间延迟在几个毫秒以内),同时基础云产品基本全部做到了跨可用区容灾,用户使用这些能力提升架构可用性的成本很低。对于容灾能力要求更高的业务,业界比较通用的做法有两地三中心和异地多活等等,能做到地域级容灾能力。多云带来的收益是防止单个云产商多个地域同时出现问题,会更加复杂,这之间的网络互联性能、数据复制策略、管理成本都会非常高。
从 Kubernetes 的设计来说,其自身是一个健壮的分布式系统架构,如果集群采用了高可用配置,即使某个节点出现故障,原本运行在该节点的应用负载会被 Kubernetes 调整到其他运行良好的节点上。当然,这也并非高枕无忧。一个完整的高可用架构包括很多层面,从云基础设施 IaaS、应用基础设施(如容器集群)配置,到应用配置(如 K8s 应用的跨 AZ 部署约束),再到应用架构自身配置,都息息相关。针对实际情况,可以实现不同级别的高可用,比如多可用区级别,或者跨区域、跨多个云供应商级别等。
应用现状
虽然多云目前备受关注,但就实际使用情况而言,国内在该领域仍处于初期阶段,新架构模式和实践经验还在探索之中,多云所带来的复杂性、潜在安全风险等问题都尚未有成熟的解决方案。
相比较而言,跨国企业和大型企业会更倾向于选择多云战略,这是受到安全合规和业务拓展等核心需求驱动。中小企业受限于成本和运维压力,轻易不会选择多云。一些海外 500 强企业进入中国,一般都会选择多云战略,这可以拓展地域覆盖并就近服务客户,因为云厂商覆盖的地域不同,企业为了业务拓展需要可能会选择多个云供应商。
企业在云迁移过程中所处的阶段和自身技术成熟度不尽相同,其中一些已经具备先进的能力,而其他企业才刚刚迈出试探性的脚步,业务需求和技术选型路径也会有所不同。
一般而言,传统企业会考虑将核心业务和数据放在私有云上,而把互联网应用等新兴业务部署在公有云上。随着业务的持续发展和 IT 架构的现代化改造,会逐渐扩大公有云比重将更多核心业务迁云,这个时间,企业往往会开始考虑多个云供应商的问题。
对于互联网企业,一开始就是在公有云环境下生长起来的。随着企业技术能力的成熟,整个 IT 架构充分利用了云能力,具备了较好的弹性、健壮性和可移植性。如果一个云供应商无法满足其业务拓展的需求,自然也会选择多个云供应商。
专家认为,用户对多云的关注,很大程度是云计算被普遍接纳的自然结果。但是,当下多云依然存在很大挑战,还需要业界一同努力。
结语
就现状而言,企业部署多云战略尤其是中小企业尚存难处。因此,企业不要盲目选择多云,首要应该保证单云架构下业务的安全稳定。虽然云计算比本地数据中心可用性高,但不能寄希望于云计算的可用性达到百分百,毕竟近两年主流云计算厂商皆发生过多起宕机事故。在发生可用区级别故障时,如果用户合理设置了多可用区支持可以应对故障。
除了在架构上具备容灾能力,如何确保业务连续性也是一个重要话题。即便系统容灾能力建设完备,还需要确保能力符合预期,不能等真实故障来验证系统能力,容灾能力需要做好提前演练。在容灾能力之外,要真正做到业务高可用还有一系列工作,除了应对硬件设备灾难,还需要额外面对非常多其它挑战,比如流量冲击、引入不合理依赖、依赖环节不可用或者延迟高等,这些都是上云企业在互联网业务快速发展中需要考虑的问题。