写点什么

私有云之殇:公有云这座大山(上)

  • 2015-06-16
  • 本文字数:3832 字

    阅读完需:约 13 分钟

编者按:本文系 InfoQ 中文站向 ZStack 项目创始人张鑫的约稿。2015 年 4 月正式对外开源的 ZStack 项目宣称要解决在 OpenStack 中得不到解决的问题,并明确将项目目标指向目前前景似乎越来越不明朗的私有云市场。作为 ZStack 项目的架构师、CloudStack 的前开发人员,张鑫对于私有云——或者说 on-premise 的企业 IT——到底遇到了什么问题、此类服务到底应该怎么做,是如何构想的?本文将分享他对这个话题的思考。


写在前面:由于企业私有云市场迟迟未打开,近两年来已有多家 IaaS 企业被廉价收购甚至倒闭,业界已经开始出现一种质疑私有云是伪命题的声音。在此,作者想借 ZStack 发布的机会,梳理一下私有云的过去和现状,并展望一下它的未来。

数据中心自动化的前世今生

从系统管理的角度来看,我们可以把企业 IT 市场分为三个阶段:前虚拟化纪元,虚拟化纪元,IaaS 纪元(基础设施即服务纪元)。

前虚拟化纪元是指虚拟化技术出现以前的阶段,可以追溯到计算机出现到 1998 年 VMWare 的创立。在这个阶段,人们管理机器的方式主要是人工部署架构(包括安装物理机,网络部署等),配合分布式软件管理。这个时期由于没有虚拟化技术,一台物理机只能运行一个操作系统,网络拓扑也必须事先设计然后硬连线,整体上效率低下,不灵活。由于一旦部署就难以改变,底层架构往往会制约上层业务;软件方面也没有统一标准,多是由系统管理员自己开发的脚本来实现部分自动化。

1998 年 VMWare 成立并发布首款操作系统虚拟化产品后,市场进入了企业级虚拟化纪元。由于虚拟化技术允许同一物理机上运行多个操作系统,并且操作系统之间可以用虚拟化软件提供的虚拟网络连接,其灵活性让 IT 架构的部署极大简化。系统管理员在安装物理机后,网络拓扑可以使用扁平的二级网络,即所有物理机在同一个二级网络广播域(broadcast domain),然后在虚拟网络级别实现隔离。这阶段虽然有虚拟化软件的帮助,系统管理员仍然需要在虚拟机级别手动部署网络或存储。比如需要手动为同一个虚拟网络内的虚拟机配置 DHCP/DNS 服务器,需要在不同的虚拟网络之间手动配置路由等。

从 Amazon 在 2006 年发布 EC2 公有云,市场开始真正进入 IaaS 纪元。跟虚拟化纪元不同的是,IaaS 软件借助虚拟化技术不仅提供池化资源,还将计算、存储、网络资源按服务的方式提供给用户,实现按需索取。同样是部署网络的例子,在 IaaS 纪元,管理员不再需要手动配置 DHCP/DNS 服务器、网络路由,而是向 IaaS 软件描述需求,由 IaaS 软件自动去配置部署。随着软件定义网络 (SDN)、软件定义存储 (SDS) 等技术的出现和应用,管理员甚至不再需要手动安装虚拟软件到物理服务器(借助 IPMI/PXE),不需要手动配置交换机,只需要把硬件安装在机架并连线,其余所有工作都交给软件处理。自此数据中心管理开始进入软件定义的全自动化时代。

私有云的需求是真实存在的

作为 CloudStack 的前开发人员(作者于 2010 年加入 Cloud.com,后被 Citrix 收购),作者曾多次作为 CloudStack 的代表参加了多家国际知名公司内部私有云项目的设计和策划,第一线地接触到客户的需求和痛点。在整个过程中,作者最深切的感受是:私有云市场的需求是真实存在的,但现有产品与客户需求的差距也是巨大的。除去加在私有云上的各种噱头,客户的核心需求是管理数据中心或企业 IT 架构中不断增加的硬件、实现自动化、减少底层架构的部署时间,从而加速企业在上层业务上的创新。用通俗的话说就是:

  1. 机器越来越多,人管不过来,得让软件去管;
  2. 老板急着上线业务,IT 部门不能拖后腿说光架设机器部署网络就要一个月。

这个刚需是非常巨大的。调研机构 TBR 在 2014 年发布的报告中估算当年私有云市场的总份额在 410 亿美元上下,并预测 2018 年私有云市场份额将达到 680 亿美元。

企业 IT 不适合简单复制公有云模式

IaaS 技术出现以来,其最广泛最成功的应用当属公有云。一大批公有云厂商的出现加速了行业的发展和创新,催生了大量相关产业,同时也在一定程度上帮助很多客户从底层架构的依赖中解脱出来,实现了业务创新。例如很多成功的 SaaS 公司就是完全运行在公有云之中。公有云的宣传口号是“让云计算像水和电一样”,这是非常高明的文案,让人潜意识中以为有了公有云为我们提供按需供应的计算资源,就不需要自己建立和维护 IT 架构或数据中心,毕竟没人会去自己建自来水厂和发电站。但实际上公有云远没有达到自来水管道和供电网络那般完善和稳定,在数据安全和成本方面也并不占优势。我认为公有云之所以成功,是因为它去除了基础设施里众多的差异性,抽象出能够满足大部分客户需要的模型,例如业界事实标准的 Amazon EC2 模型。

但这个模型并不适合所有场景。例如像 Facebook 这样的公司,交换机间就需要 40G 的独享带宽,存储上还需要专门公司提供的闪存(Flash);而保险公司可能又希望数据库跑在物理机上,并且物理机网络要能够跟前端虚拟机的网络形成 VPC。公有云是不能够在一个多租户的环境内去满足各个客户的差异性需求的。所以,公有云虽然是到目前为止 IaaS 领域发展最好也是最成功的例子,但要断言它必将统治世界还为时过早。如果哪天 Intel 和 AMD 的服务器芯片都被公有云厂商买走了,那么一个新时代必将开始;在此之前,我们仍然需要面对私有云市场的需求。

在过去几年跟不同客户打交道的过程中,作者深刻感觉到数据中心自动化以及企业 IT 架构云化的需求必须划分为两类。

一类是服务提供商的需求(service provider)。这类企业搭建私有云的目的是为了支撑上层业务的运行,例如电商公司的私有云、游戏公司的私有云。这类私有云对技术的要求跟公有云类似,因为他们的业务模式决定了基础架构需要有快速动态扩展的能力,存储需要是分布式以支撑数据的爆炸式增长等。这类公司通常有很强的 DevOps 能力,同时也面临着传统 IT 架构不能解决的问题,所以他们有能力部署不成熟的 IaaS 软件并追逐新技术。

另一类需求是传统企业,他们的 IT 架构主要停留在虚拟化纪元,多采用 VMWare 的产品。我们称这类需求为传统的企业虚拟化需求(enterprise virtualization)。云计算的三层结构中,面对终端用户的是 SaaS,而 IaaS、PaaS 都是为之服务的。三者关系存在一种上层应用决定下层架构,下层架构又反过来制约或促进上层应用的关系。传统企业的特点在于他们仍然运行着大量传统应用,这些应用很多都是上个世纪的产品,它们并非为云环境所设计,简单的把它们搬迁到公有云模式中会导致很多技术上的困难。

在公有云模式中有两个重要的特点:一个是资源池化,一个是应用程序需要能容忍基础架构的失败。

资源池化是公有云去差异化的一个重要设计,它主张租户共享资源池,资源获取的过程不可定制。但传统应用在很多场合是需要能够进行差异化定制的。例如对于 IO 密集的传统应用,用户可能期望虚拟机的根磁盘(装有操作系统的磁盘)放在 NFS 上,数据磁盘通过专门的存储网络放在高速的 IP SAN 上面。这就要求对创建虚拟机的过程可以定制,用户可以选择不同的磁盘分配策略和不同的网络。又比如 Citrix 的远程桌面 XenDesktop,它需要多租户即独享私有网络又共享扁平网络的拓扑,这就要求类似于 Amazon VPC + Classic EC2 的网络模型。当企业业务由众多传统应用构成时,这种差异性的定制需求会进一步加强。公有云提供商也认识到了这种需求,并在有限范围内修改以满足客户。例如 Amazon VPC 发布最初是不支持静态 IP(static IP) 的,后来在用户的强烈要求下才加入,但它的 Classic EC2 是不可能在多租户环境下支持这种功能的。去差异化是公有云的成功法宝,它无法也不会为了迎合传统程序而实现各种定制功能。

在公有云中运行良好的应用都是能够在应用层面容忍一定程度的基础架构失败(比如虚拟机崩溃,网络失联等)的。公有云厂商一直在反复向客户强调基础架构是会失效的,也提供多种手段帮助用户设计 failover 的应用,而这恰恰是传统应用的死穴,因为它们很多是单机应用,对下层架构的稳定性要求很高。所以大量传统企业因为稳定性而仍然依赖 IOE(IBM、Oracle、EMC)的架构。企业客户在选择 IaaS 产品时,往往要求 IaaS 能够在架构层面提供容错手段,比如虚拟机级别的高可靠、网络层面的高可靠和冗余。这种由传统应用带来的需求不是云友好(cloud-friendly)和云感知(cloud-aware)的,公有云模式是不会对他们做出过多考虑的。

这也是为什么对于服务提供商来说,私有云可以很容易照搬公有云模式,但在面对传统企业客户的需求时,简单复制公有云模式是不够的——因为我们面对的是一个强大的、不可更改的传统应用生态。

参考文章

  1. 《Why OpenStack is different from other open source projects》
  2. 《Keep OpenStack Weird》
  3. 《Why vendors can’t sell OpenStack to enterprises》

作者简介

张鑫,2006 年加入 Intel 上海开源技术中心(OTC),从事开源虚拟机项目 XEN 的开发,为社区共享了多个功能,例如 XEN 中 E100 网卡模拟器,XEN/IA64 虚拟 BIOS 对 Windows 的支持等。同时也共享了大量 bug 修复的补丁。2010 年赴硅谷加入 Cloud.com(后被 Citrix 收购),从事 CloudStack 的开发工作,其间多次作为 CloudStack 代表参与客户私有云项目的设计和部署。在从 Citrix 退出后,和搭档一起创立 ZStack。


感谢杨赛对本文的策划,魏星对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-06-16 07:383061

评论

发布
暂无评论
发现更多内容

DevOps的未来

俞凡

DevOps

因女性而繁荣,适老化科技的钱景与挑战

脑极体

架构实战营模块6作业

冬天的树

大型分布式 Web 系统的架构演进

xcbeyond

分布式 架构演进 6月日更

低代码开发简史

俞凡

架构

crypto/md5

康家沟偶像天团王大锤

模块6作业6

杨彬

#架构实战营

☕【JVM技术探索】各种类型对象占用内存情况分析(上)

洛神灬殇

JVM java对象分析 6月日更 内存分配

JAVA面向对象(七)--类的属性和方法详讲

加百利

Java 6月日更

六、拆分电商系统为微服务

菠萝吹雪—Code

架构实战营

自媒体从业者如何选择合适的公司

石头IT视角

JavaScript学习(六)

空城机

JavaScript 大前端 6月日更

拆分电商系统为微服务

9527

架构实战营

电商微服务架构设计

俞嘉彬

架构实战营

Google大规模监控系统--Monarch

俞凡

架构 分布式 大厂实践

架构实战训练营 - 模块六课后作业

Johnny

架构实战营

架构训练营模块6作业

Geek_649372

架构训练营

Kubernetes手记(17)- 调度策略

雪雷

6月日更

Golang生成随机字符串的八种方式与性能测试

张俭

Performance Go 语言

推荐算法工程师需要的知识储备(十三)

Databri_AI

算法 推荐系统 成长路线

[译] R8 优化:值假设

Antway

6月日更

《Software Engineering at Google》免费开放

俞凡

c++ 软件工程 Google 大厂实践

跨越式成长 - 高效的学习方法

Ryan Zheng

OnceAgain

一个向往理想的现实主义者

个人总结

Dajngo 网站开发 ---Task2(下)

IT蜗壳-Tango

6月日更

同被指责「电力浪费」,如今的区块链会是 1999 年的互联网吗?

CECBC

揭秘MySQL的主从同步实现方案

架构精进之路

MySQL 6月日更

我国区块链产业发展面临的问题

CECBC

Redis入门二:数据类型

打工人!

redis 6月日更

架构训练营模块六作业

Geek_e0c25c

架构训练营

网络攻防学习笔记 Day50

穿过生命散发芬芳

网络攻防 6月日更

私有云之殇:公有云这座大山(上)_语言 & 开发_张鑫_InfoQ精选文章