AIGC革命已来,如何在企业场景落地?如何选择模型、怎样应用RAG、需要哪些组织流程配套? 了解详情
写点什么

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

  • 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:382963

评论

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

Rust从0到1-基础概念-函数

rust 函数

嵌入式软件架构设计之分层设计

cdhqyj

架构 软件 嵌入式 分层

web前端面试题详细解析

yumibgt

面试

阿里P7大牛整理!对Android开发的现状和未来发展的思考,吊打面试官系列!

欢喜学安卓

android 程序员 面试 移动开发

visualvm工具远程对linux服务器上的JVM虚拟机进行监控与调优

朱季谦

JVM GC 调优

微信扫码登录技术实现的简单思考

朱季谦

redis

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合

朱季谦

ELK

HPE的通信技术集团将如何加速电信5G的普及和应用?

VoltDB

数据库 5G VoltDB 电信

爱奇艺大数据生态的实时化建设

爱奇艺技术产品团队

大数据 实时数仓 数据流

Activiti工作流自动生成28张数据库表的底层原理分析

朱季谦

Activity 工作流引擎

Kylin安装部署

五分钟学大数据

kylin 3月日更

智慧党建平台建设--开拓新时期党建系统

13530558032

android开发经典实战!我的移动开发春季历程,大厂直通车!

欢喜学安卓

android 程序员 面试 移动开发

区块链如何应用到食品?区块链食品安全溯源

13530558032

新思科技解析导致汽车无钥匙进入系统易受攻击的漏洞及缺陷

InfoQ_434670063458

从开源的历史与今天,聊聊为什么要期待HDC.Cloud 2021

脑极体

Knativa 基于流量的灰度发布和自动弹性实践

Serverless Devs

Serverless Kubernetes 运维 云原生 Knative

spark性能调优之JVN调优

大数据技术指南

spark 3月日更

vue项目中使用tinymce富文本编辑器实现图片上传/粘贴格式

yumibgt

tinymce

压抑了五个月的我终于可以放声呐喊了!阿里是真的难进,Java四面面经+面试题

Java架构追梦

Java 阿里巴巴 架构 面试 金三银四

模仿Activiti工作流自动建表机制,实现Springboot项目启动后自动创建多表关联的数据库与表的方案

朱季谦

建表

程序员自我提升不得不知道的一些宝藏网址,收藏起来吧

北游学Java

Java 后端 资源分享

区块链农产品溯源平台搭建,一物一码追溯系统

策略枚举:消除在项目里大批量使用if-else的正确姿势

朱季谦

枚举 策略模式

深入理解Spring Security授权机制原理

朱季谦

security

区块链数字版权保护--为数字版权保护赋能

13530558032

2021最新分享Java面试全套合集!

比伯

Java 编程 架构 面试 计算机

什么?都1202年了还不懂k8s和容器的关系?!这份k8s指南快拿走不谢!

观测云

云计算 k8s 云服务 知识星球

Instagram视频下载器: 4K Video Downloader

科技猫

软件 音视频 经验分享 资源分享 工具分享

基于NB-IoT的智慧路灯监控系统(NB-IoT专栏—实战篇5:手机应用开发)

不脱发的程序猿

物联网 28天写作 3月日更 NB-IoT智慧路灯 手机应用开发

近万字原创长文,以追忆2020年:《请回答,2020》

朱季谦

随笔杂谈

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