1.什么是云计算
云计算是云计算(Grid Computing )、分布式计算(Distributed Computing)、并行计算(Parallel Computing)、效用计算(Utility Computing)、网络存储(Network Storage Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机技术和网络技术发展融合的产物。它旨在通过网络把多个成本相对较低的计算实体整合成一个具有强大计算能力的完美系统。并借助SaaS、PaaS、IaaS等先进的商业模式把这强大的计算能力分布到终端用户手中。从狭义上说,云计算是指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需的资源。从广义上说。云计算是指服务的交付和使用模式。指通过网络以按需、易扩展的方式获得所需的服务。总的来说。云计算具有下面特点:
资源池:服务提供商的资源被池化,并通过多租户模式为客户提供各种服务。并依据客户的需求动态提供物理或虚拟化的资源。这些资源是位置独立的,由于用户并不确切的知道服务提供商的资源在那里。可是客户能够指定较高层次的位置,比如国家、州或数据中心。这些资源包含存储、处理能力、内存、网络带宽和虚拟机。
按需自助服务:客户能够按需、自己主动地获取计算能力,比如server计算时间和网络存储,而不须要和服务提供商进行人为交互。
高速弹性:服务能够高速、弹性的获得,某种情况下是自己主动化的,规模能够高速扩大或缩小。对于客户来说。供应能力似乎是无限的,能够随意购买,随时购买。
广泛的网络接入:计算能力可通过网络。并通过标准机制进行訪问,使得各种瘦(或胖)client(比如移动电话、便携式电脑或PDA)平台均能够使用。
按使用量计费的服务:云系统对服务(存储、处理能力、带宽、活动用户帐户)进行适当的抽象,并提供服务计量能力,以自己主动控制和优化资源使用情况。资源的使用能够检測、控制、统计。为客户和服务商提供透明的服务使用量。
2.云计算典型系统
1)Google云计算平台
Google公司有一套专属的云计算平台。这个平台先是为Google最重要的搜索应用提供服务,如今已经扩展到其它应用程序。Google云计算基础平台主要包含3个部分:Google File System 文件系统、Map/Reduce编程模式、大规模分布式数据库BigTable。
Google File System 文件系统
为了满足Google迅速增长的数据处理需求。Google设计并实现了Google文件系统(GFS。Google File System),它是开发的基于Linux的专有分布式文件系统。GFS专门为Google的核心数据即页面搜索的存储进行了优化。
MapReduce分布式编程环境
为了让内部非分布式系统方向背景的员工可以有机会将应用程序建立在大规模的集群基础之上,Google还设计并实现了一套大规模数据处理的编程规范Map/Reduce系统。这样,非分布式专业的程序编写人员也可以为大规模的集群编写应用程序而不用去顾虑集群的可靠性、可扩展性等问题。
分布式大规模数据库管理系统BigTable
因为在Google的数据中心存储PB级以上的非关系型数据时候,比方网页和地理数据等,为了更好地存储和利用这些数据,Google构建了弱一致性要求的大规模数据库系统BigTable。BigTable不是一个关系型的数据库,它也不支持关联(join)等高级SQL操作,取而代之的是多级映射的数据结构,并是一种面向大规模处理、容错性强的自我管理系统,拥有TB级的内存和PB级的存储能力,使用结构化的文件来存储数据。并每秒能够处理数百万的读写操作。
2)亚马逊弹性云EC2
亚马逊(Amazon)将他们的云计算平台称为弹性计算云(elastic compute cloud,简称EC2),是最早提供远程云计算平台服务的公司。Amazon将自己的弹性计算云建立在公司内部的大规模集群计算的平台上。而用户能够通过弹性计算云的网络界面去操作在云计算平台上执行的各个实例(instance)。用户使用实例的付费方式由用户的使用状况决定,即用户仅仅需为自己所使用的计算平台实例付费,执行结束后计费也随之结束。这里所说的实例即是由用户控制的完整的虚拟机执行实例。通过这样的方式,用户不必自己去建立云计算平台,节省了设备与维护费用。
3) 微软Azure 平台
Windows Azure Platform 是一个执行在微软数据中心的云计算平台。它包含一个云计算操作系统和一个为开发人员提供的服务集合。开发人员创建的应用既能够直接在该平台中执行,也能够使用该云计算平台提供的服务。相比較而言。Windows Azure platform延续了微软传统软件平台的特点,能够为客户提供熟悉的开发体验。用户已有的很多应用程序都能够相对平滑地迁移到该平台上执行。
另外Windows
Azure Platform还能够依照云计算的方式按需扩展,在商业开发时能够节省开发部署的时间和费用。
Windows Azure platform包含Windows Azure、SQL Azure和Windows Azure platform AppFabric。Windows Azure可看成一个云计算服务的操作系统;SQL Azure是云中的数据库。AppFabric是一个基于Web的开发服务,它能够把现有应用和服务与云平台的连接和互操作变得更为简单。
AppFabric让开发者能够把精力放在他们的应用逻辑上而不是在部署和管理云服务的基础架构上。
4) IBM“蓝云”计算平台
IBM的“蓝云”计算平台是一套软、硬件平台,将Internet上使用的技术扩展到企业平台上。使得数据中心使用类似于互联网的计算环境。“蓝云”大量使用了IBM先进的大规模计算技术,结合了IBM自身的软、硬件系统以及服务技术,支持开放标准与开放源码软件。“蓝云”基于IBM Almaden研究中心的云基础架构,採用了Xen和PowerVM虚拟化软件,Linux操作系统映像以及Hadoop软件(Google
File System以及MapReduce的开源实现)。“蓝云”计算平台由一个数据中心、IBM Tivoli部署管理软件(Tivoli provisioning manage)、IBM Tivoli监控软件(IBM Tivoli monitoring)、IBM WebSphere应用server、IBM DB2数据库以及一些开源信息处理软件和开源虚拟化软件共同组成。“蓝云”的硬件平台环境与一般的x86server集群类似。使用刀片的方式添加了计算密度。
3.云计算系统故障事件
云计算的核心思想。是将大量用网络连接的计算资源统一管理和调度。构成一个计算资源池向用户按需服务。它为用户提供了一个高性能计算环境,高可伸缩的弹性的可计算平台,准确、安全、可靠而稳定的计算资源和存储资源。然而。近年来国际主流的云计算系统和应用均暴露出不同程度的可靠性和安全性问题。比如:
1)Google应用引擎平台宕机
2009年7月3日,Google App Engine遭遇“数据仓库操作延迟添加、错误率上升等故障。” 这次故障持续了约6小时更糟糕的是。在Google更新Google Groups上的消息时,App Engine Status网页却因这次故障而全然无法訪问。据悉,这次Google App Engine故障不仅造成用户的经济损失,甚至影响到了Mac版Chrome浏览器的开发。2010年02月25日。Google支持第三方网络应用的App
Engine平台再次发生宕机故障,全部存放的第三方应用陷入瘫痪,殃及绝大部分网络应用。
整个平台瘫痪时间超过两小时。
2)Google Gmail和日历服务中断
2010年2月23日,Google Gmail出现问题,持续时间长达两个半小时,这次故障导致全球数以百万计的用户在几小时内无法訪问账户。经济损失无法估量,因为此次server故障。Google将针对企业的Google Apps高级版订户的付费时间延长十五天。2010年10月12日到2010年10月19日,Google的日历服务中断了8天。这起事故让0.2%的Google日历用户中断了多天的訪问。
3)Google Voice服务宕机
2010年11月23日,Google Voice网络电话服务再发生宕机事故,部分Google Voice用户无法拨出或接听电话。这次宕机事故仅仅是最近Google Voice多个问题中的一个。2010年11月2日和5日都发生了类似的宕机事故。
4)亚马逊S3服务故障
Amazon的云存储平台Simple Storage Service(S3)在2008年7月出现了服务故障。故障持续了8个小时之久,依赖S3进行文件存储的在线公司因此蒙受了损失。S3在2月份的时候也出现过一次类似的故障,当时该故障持续了两个小时。
5)亚马逊EC2云计算服务遭到僵尸网络攻击
2010年4月,亚马逊基于云计算的EC2(弹性计算云)服务在一个星期内接连发生了两起故障,一起是僵尸网络引起的内部服务故障,还有一起是在弗吉尼亚州的一个数据中心发生的电源故障。
云计算代表IT 领域向集约化、规模化与专业化道路发展的趋势。是一种面向Internet的IT资源交付和试用模式,但它在整合IT资源、提高资源利用率的同一时候,其性能、安全可靠性问题备受关注。这些问题都非常大程度上制约了云计算产业的发展。成为实现大规模云计算的障碍。因此,专业性的云计算系统測试是解决眼下云计算故障问题的一个重要手段之中的一个。但云计算系统的复杂性和对于用户的不透明性也决定了第三方測试的难度。那么怎样来对云计算系统进行測试呢?将在下节谈谈我对云计算測试的看法。
4.云计算系统測试
云计算系统中大量融入了面向服务的体系结构。用户能够通过该体系结构来实施、部署、运行和管理自己所提交的作业,能够说云服务是构成云计算系统的基本功能单元。云服务測试也成为云计算系统測试的基础部分。同一时候,云计算的目的是提供实现高性能计算、可靠、稳定而安全的计算环境。云计算的性能測试和安全可靠性測试也是云计算软件測试的重要内容。
1)云计算系统功能和标准符合性測试
云计算系统软件的发展与应用与其对应的技术标准或规范是分不开的,衡量一种云系统能否够符合用户需求,从非常大意义上讲就是在衡量它们所提供的服务的正确性以及是否符合技术标准或规范。然而,眼下云计算相关标准不是非常统一,各有说法百家争鸣。但就云计算特征和主要功能来说,各家还是比較统一的。如分为三个层次:SaaS、PaaS和IaaS,要实现资源池及其调度管理、任务的分解、调度和运行、按需自助服务、服务计费、工作流管理、虚拟化平台以及门户应用等一些主要功能。
假设就SaaS来说,能够測试的是Web服务測试,一个非常重要的方面就是測试其是否符合规范,包含UDDI,XML,SOAP,WSDL等,仅仅有符合这些规范,才干向用户提供正确的Web服务,因此Web服务測试所使用的方法和技术能够被云服务測试所借鉴和引用。云计算服务測试的目标是确保云服务为给定的请求传递期望的应答.然而对于大多数云计算服务,准确预測client将会发送什么类型的请求、列举全部可能的请求是不可行的,由于请求输入的范围空间可能非常大。
因此。验证云计算服务能否够处理范围广泛的请求类型和參数非常重要。
2)云计算系统性能測试
云计算性能測试的目标是验证在各种负载情况下云计算服务的性能。进行性能測试的最佳方式是使得多个測试客户执行完整的云服务測试,包含请求提交和应答验证。性能測试不仅通过指定的并发请求数目来监视server的响应速率,还要測试各类负载是否导致云服务功能性故障。因此,要求云服务性能測试工具可以设置或者定制性能測试场景(主要是指定负载等级、负载分布等)来执行云性能測试套件。依据高性能计算系统常见的应用场景,云计算系统性能測试可设置的场景主要包含bell曲线、缓冲区測试、线性添加和稳定负载。这样,通过使用不同的測试场景来使用不同的測试用例,同一时候还应支持跨越远端的云server分布虚拟用户,从而模拟极限測试与压力測试。
3)云计算系统安全可靠性測试
云计算系统安全可靠性測试採用主要是以系统评估为主。測试为辅的方法。因此。也须要对现有的云计算系统进行提炼,总结出普遍适用的云计算模型,进而能通过云计算模型得到云计算的安全可靠性模型。在这个模型下对云计算系统的安全可靠性进行评估。云计算系统的安全可靠性模型主要是由一些评价指标构成。这些指标要能完整地描写叙述系统可靠性要求的各个方面,指标之间应降低交叉,防止相互包括。要具有相对独立性。
模型的结构也决定了指标之间的组合关系,这些关系与云计算系统的应用类型有关。
測试人员通过測试或评估收集这些指标值,这些指标值通过模型提供的结构组合在一起,它与其它測试的结果终于构成了对云计算系统的安全完整得评价。