PaaS与云计算

2013-03-25 Robert Zhang 更多博文 » 博客 » GitHub »

paas 云计算

原文链接 http://huiming.io/2013/03/25/paas-and-cloud-computing.html
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


注:这是笔者在2013年初为一家机构做的PaaS介绍。尽管今天(2017)的PaaS市场已经起了很大的变化,但笔者当初对PaaS本身的说明并不过时,可供读者参考。

PaaS及其优势

PaaS即Platform as a Service,是云计算的一种形态。云计算本质上是一种网络服务,这种服务可归为三类:IaaS、PaaS和SaaS,其中的“aaS”都是“as a Service”,I、P、S分别是Infrastructure、Platform和Software。

举例来说,Google的邮件和搜索就是一种SaaS,用户可以通过Web页面直接访问它们,收发邮件或者搜索信息。而国内一些主机供应商,如万网,提供的所谓“云主机”,就是一种IaaS,用户得到的是一个Linux或Windows虚拟主机,通过ssh或者远程桌面来访问它,可以在上面安装软件、部署Web程序(比如网站)。

至于PaaS,它通常也是用来部署Web程序的,这一点与IaaS相似。但它不是一个虚拟主机,用户不可以在其上安装任意的软件,在这一点上与IaaS相比用户受到了更大的限制。但PaaS相对于IaaS的优势也在于此:用户不必费心去安装与配置运行Web程序所需的各种软件,只要专注于Web程序本身、通过API调用PaaS提供的各种服务即可;另外PaaS相对于IaaS有更好的“弹性”——自动按需扩展计算资源以及按实际使用量收费。

“安装与配置运行Web程序所需的各种软件”绝不是一件轻松、容易的事情!一般的虚拟主机提供商都会在虚拟主机里预装了PHP、MySQL以及Apache,即所谓的LAMP(Linux+Apache+MySQL+PHP)或WAMP(Windows+Apache+MySQL+PHP)。但这就够了么?——远远不够。

首先Linux系统管理对新手来说就是一件头疼、麻烦的事情!Linux下的一切与Windows都是如此不同:查找各种Linux指南/大全、搜索各种论坛/博客、四处发帖求助只为解决一个小小的Linux系统管理问题对新手来说简直是家常便饭。那么用户可以选择Windows么?答案是最好不要——开源软件世界对Windows非常不友好,不少软件在Windows上都有比Linux上多得多的问题和缺陷。而且一旦你踏上地雷,很难从用户社区得到有效的支持:老用户会告诉你,用Linux吧,这个软件在Linux上没问题!

系统管理事务繁多:IP配置、防火墙配置、用户管理、系统服务、日志管理……现在有一些供应商提供Web界面方便用户做一些简单的管理操作,但有很多操作仍必须依靠ssh进行,特别是安装软件或者排除故障。

其次,预装的Apache和MySQL本身也是需要配置的系统服务。在Apache里增加一个模块就有可能涉及到编译、安装一大堆相关软件。编译有可能出错,可一个PHP程序员怎么能去解决或者哪怕是看懂C程序的编译错误?除了去Google碰碰运气就只能上各种BBS求助了。不说编译,单单是在Apache里新增一个Virtual Host,那些配置命令也够新手看一阵子了。还有MySQL,有几个新手没有遇到过UTF-8这样的基本配置问题?

更痛苦的是:用户早晚会发现只有个数据库服务的Web程序是干不了什么大事的,除非他要的只是个WordPress博客这样的玩具!他还需要crontab、队列服务、图像处理服务……他会逐渐从Google那里了解到RabbitMQ、Erlang、ImageMagic……的存在——这些对新手来说意味着无穷的复杂性以及难以言说的痛苦!——也许用户需要的只不过是用PHP写一个小小的Web程序把文字转换成图片,但他不得不为此直面Linux惨无人道的暗黑世界!

至此,我还没提Ruby/Python/nodejs以及Rails/Sinatra/Django……呢!这些都是与PHP同样流行的Web开发语言/框架,把这些环境搭建起来,同样要花费不少力气。搭建、维护这些Web开发/运行环境不但对新手是一种巨大障碍,对有经验的开发人员来说同样是一项耗费心力的负担。

再说谈计算的“弹性”:如果有一天用户中了彩,10万pv在某一天突然来到,结果他的小网站不堪重负挂了。然后他会想到,要买更多的资源:带宽、硬盘、内存和CPU……如果他使用某种IaaS,增加计算资源不算一件太麻烦的事——至少不用把从前部署环境的工作重做一遍,交钱即可。问题是交多少钱买多少资源?也许第二天那10万pv就消失了呢?为了防止万一,他可能会多买一倍的计算资源。但这样做即可能仍不能满足需求,也可能浪费了过多的资源——资金对于中小企业和创业者来说是宝贵的,不容浪费。

PaaS来解决这一切:它提供运行Web程序所需的基础设施和常规服务,包括Web程序开发语言与框架、库、数据存储服务、缓存服务、队列服务、crontab……,用户只需通过API即可调用服务,无需或者仅需少量配置,极大简化了用户的工作;同时实现弹性计算:按Web程序的需要自动增加/减少CPU、内存、磁盘以及带宽等计算资源,并按计算资源的实际使用量收费,帮助用户节约成本、避免浪费。

总之,PaaS能够为中小企业和创业者在Web开发和运维上节约大量时间和成本,这是PaaS相对于IaaS和传统主机服务的一个巨大优势。

PaaS的市场

目前市场上的PaaS产品包括:

产品名称 初始发布日期 开源 所属公司
Google App Engine 2008/4 Google
Windows Azure 2010/2 Microsoft
OpenShift 2011/5 Red Hat
Cloud Foundry 2011 VMware
Sina App Engine 大致2010年底 新浪
Baidu App Engine 尚处于测试版 百度
Aliyun Cloud Engine 不早于2010 阿里巴巴
盛大云引擎 尚处于beta版 盛大

其中,国外一些大公司,如Google、Microsoft,在云计算方面起步较早,技术实力也比较强,现在已经在PaaS市场上占据了重要位置,Google更是其中的领导者。国外另一些大公司,如VMware和Red Hat,为了挑战Google在PaaS的领导地位,采用开源的策略来吸引用户(从另一方面说,开源PaaS产品面对的用户有些特殊:它们的用户是PaaS服务的供应商,而不是服务的消费者)。国内PaaS市场上起步较早也比较成熟的产品是新浪的SAE,其他厂商进入PaaS都比较晚,而且一些,如百度和盛大,产品仍处于测试状态。总体来说,国内的PaaS市场还处于起步阶段,市场潜力巨大。据Gartner的研究报告:PaaS市场规模将会从2011年的9亿美元上升到2016年的29亿美元,PaaS已经成为IT厂商的下一个大战场。

提供PaaS服务

PaaS供应商可以采用开源的OpenShift或Cloud Foundry对外提供PaaS服务。这样可以节约大量的研发成本。国内厂商,如阿里巴巴、盛大和新浪都部分地采用了Cloud Foundry构建自己的PaaS服务(各种App Engine)。下面就Cloud Foundry方案做一简单介绍。

Cloud Foundry部署在OpenStack或vSphere之上。后两者都是虚拟机管理软件,一个开源免费,一个是收费的商业产品。但无论部署在哪一个之上,Cloud Foundry都有着相同的功能与性能。

一般来说4台物理服务器,50个虚拟主机即可构建一个实验性的PaaS服务。所需的带宽依使用情况而定:如果50个虚拟机每一个都保证有1MB带宽,则一共需要50MB带宽;建议带宽不小于100MB,200MB为宜。

政策风险

在国内提供PaaS服务面临着一些潜在的政策风险,比如互联网内容审查和网站备案:如果有关部门要求PaaS供应商必须对其用户产生的互联网内容进行审查甚至过滤,这不但会损害用户对于PaaS的兴趣,在技术上是否可以稳妥地实现也有未知的风险;另外,由于有关部门的规定,用户不可以便捷地绑定域名到IP(需要网站备案等一系列手续),这会损害PaaS服务天生的敏捷性,也会损害PaaS对用户的吸引力。