关于云的那些事6. The use of computing resources (hardware
and software) that are delivered as a
service over a network.
7. 软件即服务
Saas Software as a service
Paas 平台即服务
Platform as a service
设施即服务
Iaas Infrastructure as a service
云其实是分层的
Editor's Notes Hi,今天跟大家聊一聊“云计算”的那些事。 在过去的一两年里,“云”这个词火起来了,什么云手机、云电视、云输入法、云杀毒软件、云搜索、云存储等等,大家都互相宣称着进入了“云”时代,摇身一变为“云企业”,那到底这个“云”是什么东西? 在云计算这个词出现之前,网格计算?并行计算?分布式计算?公共计算?数据挖掘?分布式存储?虚拟化?等一系列名词。难道说,“云计算” 也只是说是一个“流行语”? 那么首先第一个问题,什么是云计算? 早在60年代,麦肯锡首次就提出了,这是非常通俗的,并且很容易理解的一种说明。 在维基百科上,对云计算的定义是这样的。计算硬件或软件资源作为一种服务,能够通过互联网来供用户使用。 云计算普遍认为,提供了从硬件到软件,从底层到上层的服务。最下面一层是IAAS,基础设施即服务,提供了硬件资源,比如主机、CPU、内存、网络链接、带宽等,当然是通过互联网来提供的。平台即服务,这一层将软件的研发的平台作为一种服务提供给企业,通常包括像操作系统、编译语言的运行环境,数据库,web服务器等,用户在此平台上部署和运行自己的应用,但不能管理和控制底层的设施,只能控制自己所部署的应用。软件即服务,通过互联网来提供软件,用户无需购买软件,而是通过向服务提供商租用的方式,按需购买,来运营。 IAAS提供基础设施,PAAS提供构建环境,Saas消费服务。 在云计算发展的这些年里,在三个层面上涌现了许许多多的公司,可以说现在这个市场非常大。 SaaS是一种通过Internet提供软件的模式,厂商将应用软件统一部署在自己的服务器上,客户可以根据自己实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得厂商提供的服务。用户不用再购买软件,而改用向提供商租用基于Web的软件,来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件。对于许多小型企业来说,SaaS是采用先进技术的最好途径,它消除了企业购买、构建和维护基础设施和应用程序的需要。 Saas软件出来之前,面向企业的软件多需要安装和维护,准备一些机器,用序列号,动辄几十万,上百万的安装费用,需要专人的维护,自己搭建server等, Saas软件出来之后,不需要安装,软件运行在厂商处,本地只需要网络接入即可,按月或按次来收费,门槛低,耗费精力少,运转非常快,即买即用。无需安装,网络接入,按需付费,门槛低,立即使用,更稳定、更强大、更安全,无需专人来维护。 如何来赚钱?从前一套软件几十万,现在一套软件一年就几万块钱,需要一定的用户量才能得到原来的支撑。意味着软件要做的简单、好用、方便,不需要专门的人员,自主的完成软件的续费、套餐的选择,自助的。 Salesforce CRM软件,当时的口号就是“软件的终结”,以saas的服务的形式提供给用户,目前有几十万的公司在使用他们的产品。Yammer,微软推出的面向企业的社交软件。37signals,专门制作简单专一的小型软件,员工总数只有30个人,做了许多像项目管理、团队协作的软件,有几万家公司在使用他们的产品。 特殊国情吧网络监管国内的用户的习惯众多的模仿和抄袭者更多的使用人群 刚才提到了很多,浏览器将成为一个非常主要的入口,操作都需要在浏览器来完成,比如在线的IDE,在线的web系统,此时,你需要一个非常强大的浏览器,至少不是那么的烂。有人说,IE6是阻碍互联网发展的非常大的阻碍,所以,try 放弃吧。 PaaS(Platform-as-a- Service):平台即服务。PaaS实际上是指将软件研发的平台作为一种服务,以SaaS的模式提交给用户。因此,PaaS也是SaaS模式的一种应用。但是,PaaS的出现可以加快SaaS的发展,尤其是加快SaaS应用的开发速度。平台通常包括操作系统、编程语言的运行环境、数据库和 Web 服务器,用户在此平台上部署和运行自己的应用。用户不能管理和控制底层的基础设施,只能控制自己部署的应用。 需要学习非常多除了本业务以外的知识,如服务器、系统、负载均衡、性能问题、数据库等等。 关注于核心业务,快速开发部署,快速的扩展性能,动态的增加性能,比如调整数据库大小,调整instance的个数,CDN加速等等。不需要关注硬件级的cpu、内存等等。 云计算,其实也是一种社会化分工。 基础架构即服务模型,提供处理器、存储、网络等(虚拟)硬件资源给用户,用户可任意安装软件和开发环境,包括安装操作系统。 前期投入到,买服务器,周期长,并且系统无法快速的重建。网络也是问题,想要支持全国各地的访问,你说这机房放在哪里?怕停电不?怕被攻击不? 只需要设置需要的cpu,内存,自动为你创建机器,快速的备份,价格便宜,网络也可以自由的调整。甚至是按使用时间来计费的,比如一个小时多少钱等等。 亚马逊,目前世界上最好的Iaas服务提供商,可不是之前那个卖书的。 http://en.wikipedia.org/wiki/Cloud_computing 如果你想在自己寝室也搭建一个发电机,你同样可以,因为想在也有开源的软件来帮你组合这样一套系统,比如openstack。 云计算是比较稳定的,相比而言,google、amazon、阿里云、盛大云的要比我们自己搭建的一套系统更稳定,但就像电厂也会停电,水厂也会停水一样,他们的服务也可能会出现问题,去年,亚马逊有4分钟down机时间。当然,对于我们个人或中小型企业来讲,不算什么,但对于大型企业来讲,这将是一个必须警惕的风险。 这也就出现了另外一个概念,私有云,在企业的内部搭建仅供自己企业来使用的云系统,就好像是企业自己内建了一个电厂或水厂一样。如果你想在自己寝室也搭建一个发电机,你同样可以,因为想在也有开源的软件来帮你组合这样一套系统,比如openstack。 这也就出现了另外一个概念,私有云,在企业的内部搭建仅供自己企业来使用的云系统,就好像是企业自己内建了一个电厂或水厂一样。 这是一个美好的时代,加上蓬勃发展的移动互联网,作为程序员,你不觉得应该做点什么吗?感谢云计算提供的一切,现在想要做出一个几万人,几十万人,上百万人的应用不再是痴人说梦,再加上我们身边的许许多多的年轻人都在努力的改变的世界,国外创业人群多集中在23岁到30岁之间,我们已经进入这个年龄段了。 当你现在有了一个网站或者一个应用,首先代码你可以放在Github上,Saas服务。部署到哪里呢?如果你有比较丰富的linux经验,你可以选择Iaas的服务,比如亚马逊、linnode、阿里云、盛大云。当然,你也可以选择Paas服务,比如googleengin、heroku、phpfog,国内也可以放到sinasae、阿里云的ae。接着你可能需要对系统的性能进行监控,这时你可以使用SAAS的newrelic或者国内的监控宝。你可能需要存一些图片,那可以选择亚马逊的s3,dropbox,或者国内的快盘。你系统中也许会用到发送邮件的功能,可以使用mailgun或者国内的sohu mail。如果你开发的是一个基于微博、腾讯等的应用,你可以发布到他们自己的应用平台上。而上述所有提到的服务,都有免费版,对于一个刚刚开始的产品或小应用完完全全足够了。所以,应该做点什么了。 所以,就像艺术家会自己创作很多画一样,作为程序员也应该多多的写程序。交给我的同事,魏广程,介绍一下,在云时代下,如何开发一个现在非常火爆的微信应用。