1.4 云计算技术与服务
2000年前后,随着IT不再重要的概念的提出,以及金融危机的影响,企业对降低成本、提升效率的追求,都极大地推动了云计算由概念到市场化的转变,而各式各样的云服务也越来越多,但是除了专业人士外,甚至许多专业人士也有同样的困惑:什么是云计算,云计算提供服务又是怎么回事?
云计算最初的概念是:企业、个人将数据、计算能力都放在云端,即网络云里(一般网络是图示为一朵云),使用者只要连上网,就能获取自己的数据及计算结果,这样企业可以将自己的数据和服务放在云端,由专门的公司提供维护,企业自己无须维护IT服务,因此IT不再重要了。
在实际的云计算发展过程中,很多企业的IT通过将云计算方式部署在自己的机房,员工可从世界各地接入,数据与计算在企业网络云里,而且给了这种方式一个私有云的名称。在公网上提供的服务被称为公用云,还有混合云等。这些定义和范围虽然有所不同,但是其中最重要的和共同的特性就是服务。这种服务如同目前电信、电网或煤气、网络一样,按照使用付费,而不是按照购买产品所有权付费。
本书中所有的讲解都是以云计算的服务为中心。服务也是云计算的真正价值所在。
1.4.1 云计算的发展史
云计算这个词的来源比较模糊,似乎源自在实践中使用云的图形来表示的计算和通信系统中的网络图。到了互联网时代,开始使用云的形状来表示一个网络电话图,再后来用来作为一个抽象描绘来形容互联网在基础设施层的网络架构。
云计算的底层概念可以追溯到20世纪50年代。当时,大型机(mainframe)在学术界和企业使用,用户可以通过瘦客户端(Thin Client)/终端计算机(terminal)来接入。为了节省昂贵的大型机的费用,出现了新的技术,允许多个用户同时登录大型机并共用CPU,以消除大型机的空置时间。这种技术被业界称为分时(time-sharing)。
在20世纪90年代,曾主要提供专用的点到点(Point to Point,P2P)数据专线的电信公司,开始提供虚拟私有网络(VPN)的服务。这种服务的质量与P2P的服务相当,但价格却低得多。通过流量的调度和平衡,能够将整体网络带宽的使用更有效率。云的图形用来表示提供者职能和用户职能之间的分界点。在后来的云计算中,这个边界从网络基础设施延伸到服务器。
随着计算机越来越普及,科学家和技术人员探索了很多方式来使用分时的方法,以使大规模的计算能力能够让更多的用户使用。这些是通过基础设施、平台和应用程序对CPU的使用优先级和效率提高的算法改进的基础上进行的。
在20世纪60年代,约翰·麦卡锡(John McCarthy)认为,“计算总有一天会被组织成一个公用设施”(Computation may someday be organized as a public utility)。在道格拉斯·帕克希尔(Douglas Parkhill)1966年出版的《计算机应用的挑战》(The Challenge of the Computer Utility)一书中,深入探讨了几乎所有的现代云计算的特征(比如以在线式和无限供应式来提供的弹性构建服务),并与电力行业使用方式进行比较,同时也探讨了公共、私人、政府和社区的多种可能的形式。
云计算的根源可以追溯到20世纪50年代,当时的科学家Herb Grosch推测整个世界将使用非常简单的终端设备,而这些终端设备是由约15个大型数据中心进行控制的。由于这些强大的计算机很昂贵,很多企业和组织可以通过计算能力的分时使用来降低成本。一些组织,比如通用电气的GEISCO、IBM子公司Service Bureau Corporation(成立于1957年)、Tymshare(成立于1966年)、National CSS(成立于1967年,并在1979年被Dun & Bradstreet收购)、Dial Data(在1968年被Tymshare收购)、Bolt、Beranek和Newman (BBN),在当时都认为分时是一个新的商业发展机会。
随后的高容量网络、低成本计算和存储设备,以及广泛采用的硬件虚拟化、面向服务的技术架构(Service Oriented Architecture)、自适应的分布式计算系统(Autonomic Computing)和效用计算(Utility Computing)给云计算技术的发展带来了很大的推动作用。
企业软件服务化是SaaS发展的关键性一步。早期的SaaS服务包括2000年前后出现的在线CRM(salesforce)和网络会议应用(WebEx)。截至目前,SaaS已成为云计算的商务应用中最大的部分。
网络泡沫之后,亚马逊(amazon)在云计算的发展中扮演了重要角色。当时,亚马逊的数据中心,就像其他的大多数的数据中心一样,在任何时间其网络用量使用仅为其10%的容量,而这种设计只是为了偶尔出现的峰值留出空余。亚马逊后来发现新的云架构可以带来显著的内部效率的提高,这种效率的提高可以让小型和快速的“两个比萨团队”(two-pizza teams,意思是说这种团队足够小,买两个比萨就能吃饱),能够更快和更容易地增加新功能。在这个发现之后,亚马逊启动了一项新产品的开发。这个产品是为外部客户在效用计算的基础(Utility Computing Basis)上提供云计算服务。这就是2006年推出的亚马逊网络服务(Amazon Web Service,AWS)。
SaaS和IaaS服务,真正带动了云计算的商业化应用,也真正带来了云计算的飞速发展。
到2008年中期,Gartner公司预测,云计算可以用来改变IT服务提供者和IT服务使用者之间的关系,并指出,“组织正在从公司拥有硬件和软件资产的方式,转向按需使用服务的模式”(Per-use Service-based Models),并且预计这种转移将导致在某些领域的IT产品的显著增长和某些领域的显著减少。
整个云计算的发展历史如图1-4所示。
1.4.2 云计算的定义
维基百科(Wikipedia)关于云计算的定义:
云计算是用服务的形式来使用的计算资源(硬件和软件),这种使用是通过网络(通常是互联网)来实现交付的。这个名字来自使用云的符号作为一个抽象的概念,它是一个对复杂的计算基础设施系统做的抽象。云计算是通过在远端的数据中心(或云上)的用户的数据、软件和计算能力来为用户服务的。Cloud computing is the use of computing resources (hardware and software)that are delivered as a service over a network(typically the Internet).The name comes from the use of a cloud-shaped symbol as an abstraction for the complex infrastructure it contains in system diagrams.Cloud computing entrusts remote services with a user’s data,software and computation.
图1-4 云计算发展史
以服务的内容或形态来分,有多种类型的云计算:
· Infrastructure as a Service(IaaS):基础设施即服务。
· Platform as a Service(PaaS):平台即服务。
· Software as a Service(SaaS):软件即服务。
· Network as a Service(NaaS):网络即服务。
· STorage as a Service(STaaS):存储即服务。
· SECurity as a Service(SECaaS):安全即服务。
· Data as a Service(DaaS):数据即服务。
· Desktop as a Service(DaaS):桌面即服务。
· Database as a Service(DBaaS):数据库即服务。
· Test Environment as a Service(TEaaS):测试环境即服务。
· API as a Service(APIaaS):API即服务。
· Backend as a Service(BaaS):后端平台即服务。
· Integrated Development Environment as a Service(IDEaaS):集成的开发环境即服务。
· Integration Platform as a Service(IPaaS):集成平台即服务。
1.4.3 云计算的服务模式
云计算服务就是基于云计算技术的理念开发的服务。其中IaaS、PaaS和SaaS都是强调的服务,也正是这些服务带来的商业价值,使得云计算得到了全球性的发展。
1.软件即服务(SaaS)
SaaS发展的时间最长,也最成熟。目前大多数在网络上提供专门服务的都是SaaS业务,如客户关系管理(CRM)、通信与协作(Communication and Collaboration)、会计/票据(accounting/billing)、企业资源规划(ERP)、人力资源管理(HRM)以及在线培训等,这些业务是直接面对最终用户提供服务的。SOA构架等一系列构架演进,都是依托SaaS发展而来的。
在SaaS模式中,云提供商在云端安装和运营应用软件,云用户从云客户端访问该软件。云用户不需要管理应用程序运行所依赖的云基础设施和平台。云用户不需自己安装和运行应用程序,这样节省维护和支持的费用。云应用程序不同于其他应用程序之处在于其可伸缩性(scalability):可以通过克隆任务到多个虚拟机上运行,来满足不断变化的工作需求。负载均衡设施可以把计算任务分发到一组虚拟机上工作,这个过程是透明的,云用户只能看到一个单一的接入点。为了容纳大量的云用户,云应用可以是多用户的,即任何一台机器可以服务众多用户。
SaaS的定价模式通常是每个用户按照每月或每年的固定费用来付费。在任何时候用户都可以添加或删除,价格都是可以调整的。
SaaS的例子包括Salesforce、Google Apps、Microsoft Office 365、Zoom等。
2.平台即服务(PaaS)
PaaS是在SaaS的基础上发展而来的,如从Salesforce延伸出的Force.com。最初是CRM的SaaS,但随着业务发展,Salesforce将服务平台化,以利于其他应用服务软件的集成。
PaaS成熟是最近几年的事儿,PaaS技术上的构架探讨不如SaaS那么丰富。
在PaaS模式中,云服务供应商提供了一个计算平台(Computing Platform)。这个平台通常包括操作系统、软件编码语言的执行环境、数据库和Web服务器。应用程序开发人员可以在这样的云平台上开发和运行自己的应用软件,而不用去购买和管理复杂的底层硬件和基础软件。有一些PaaS提供商甚至提供底层的计算机和存储资源自动匹配的功能,这样云用户不必手动分配资源来满足应用的扩展需求。
PaaS的例子包括AWS Elastic、Cloud Foundry、Force.com、EngineYard、Mendix、Google App Engine、Microsoft Azure Compute、Kubernetes、Mesos等。
3.基础设施即服务(IaaS)
IaaS是最底层的云服务。IaaS供应商提供计算机(包括物理机或虚拟机)及其资源管理系统,如Xen或KVM虚拟机管理系统可以支持大量的虚拟机随时扩展和调配。IaaS云通常会提供额外的资源,如虚拟机镜像、存储、防火墙、负载均衡、IP地址、虚拟局域网(VLAN)和软件包。IaaS云供应商通常在自己的数据中心建立这些资源的资源池(Resource Pool)来提供服务。IaaS的用户可以通过互联网或运营商的虚拟专用网VPN来接入和使用这些服务。
IaaS的例子包括Amazon AWS、AliCloud、Windows Azure、Google Compute Engine、HP Cloud、Oracle IaaS、Rackspace Cloud等。
1.4.4 云计算的部署方式
1.公有云(Public Cloud)
公有云是由服务供应商将应用程序、存储和其他资源作为服务提供给一般的使用者。服务模式是免费或按需使用付费的模式。用户只能用通过互联网来使用这些服务,服务提供商不提供到用户的直接连接。
2.社区云(Community Cloud)
社区云是云服务商提供给某些公司或团体的服务,而不是面向所有互联网用户的。公司或团体有着共同关心的问题,如安全性、合规性等,因此称为社区。社区内用户共同使用一套云服务设施,这套设施可能是在内部建立的,也有可能是建立在外部的,其成本被社区内部的用户分摊,因此其成本效益比公共云低,但比私有云高。
3.混合云(Hybrid Cloud)
混合云是两个或两个以上的云(私有云、社区云或公有云)的组合。它所提供的服务本身是单一的,但是后面的服务设施被绑定在一起,这样可以达到对不同部署模式的取长补短。
利用“混合云”的架构,企业和个人都能够获得既结合本地即时可用性、又不依赖于互联网连接的服务容错度(Fault Tolerance)。同时,由于借助了外部的云服务,混合云上的应用服务也得到了较好的可扩展性(scalability)。
4.私有云(Private Cloud)
私有云是仅为单一的公司或团体使用而运营的云基础设施,这个基础设施可以由内部管理,也可由第三方托管。
私有云的使用者基本上是那些业务上有特殊要求的公司或组织,比如内部的IT应用,对网络配置有特殊要求的通信应用服务等。
一些已经具有内部大中型数据中心(IDC)的企业,也通过虚拟化等云计算技术手段,将自己数据中心的基础设施和应用服务云化(即私有云),以达到成本效益的提高。