云环境下软件测试与开源云平台服务的深度剖析
云测试的优势与挑战
云测试在软件工程领域是一个热门的研究话题。云测试具有诸多显著优势,具体如下:
-
业务连续性提升
:能够在系统早期识别出薄弱环节和风险,从而显著提高业务的连续性。
-
加速测试进程
:借助现成的解决方案来模拟新应用和进行负载测试,可大幅缩短beta测试的时长。同时,通过云基础设施的按需供应和释放,能节省数周甚至数月的基础设施采购和搭建时间。
-
降低成本
:在负载测试期间,根据实际使用的云基础设施成本进行付费,避免了测试基础设施资源的浪费,使成本达到最优。
然而,云测试仍面临不少问题和挑战。在可扩展的云环境中提供按需测试服务并确保服务质量需求,企业需要创新的测试技术和解决方案。因为云资源丰富,技术进步也在不断提升云的能力,应用在水平和垂直方向的扩展机会无限。但企业应用的使用不断增长,资源规划也在持续变化,测试这些资源并以理想的基础设施满足需求,是一项艰巨的任务。
不同企业应用各不相同,但在所需资源、使用模式和其他通用特征方面存在相似性。可以利用这些相似性对应用进行测试,使应用做好面对实际测试的准备,同时要考虑企业的成本限制。
为了让企业获得更多益处,可在“自定义框架”中添加一个名为“测试脚本迁移器”的核心组件。它能促进不同负载测试工具的测试脚本迁移到行业标准脚本,可作为支持一些知名负载测试工具的插件。企业使用测试脚本迁移器,可减少为不同负载测试工具开发插件的工作量。不过,还需要更多研究来评估其在成本节约、可行性和迁移质量方面的效果,并根据结果选择合适的方案。
云测试的现状与框架概述
目前,云测试领域有众多参与者,但云测试仍存在诸多问题和挑战。云测试涉及多个组件,当前有一些主要的参与者。一个提议的框架涵盖了云测试的概念、问题和挑战,其主要贡献在于对云测试框架的剖析,包括需求、优势以及与传统测试的比较。
云应用的可移植性挑战与开源解决方案
云计算最初旨在支持弹性和长期运行的Web应用,如今已与从基础设施到软件的各种服务相关联。在此背景下,基于云服务(即使只是基础设施类型)的应用可移植性成为了一大挑战。由于目前缺乏广泛接受的标准,几乎每个云供应商都有自己的API,为使用这些服务编写的代码无法在不同云之间移植,导致了供应商锁定问题。
为克服这一问题,近年来有多项研究和开发工作致力于新方法、工具和标准。其中一个成果是出现了一类特殊的开源平台即服务,应用开发者可根据特定需求对其进行修改。
开源平台即服务的分类与特点
开源平台即服务可分为平台服务(也称为托管服务或集成解决方案)和平台软件(也称为软件服务或基于部署的解决方案)两类。
-
平台服务
:是由运行互联网规模服务的组织提供的硬件和软件组合。如谷歌的App Engine、微软的Azure、Rackspace的Cloud Sites、亚马逊的Elastic Beanstalk、Salesforce的Force.com、Joyent的Smart Platform等。部分平台服务近期进行了调整,允许使用不同供应商的基础设施即服务进行部署,以提高应用的可移植性。
-
平台软件
:是由软件供应商和开源项目提供的可部署中间件,即云软件。平台托管组织可使用该软件在公共或私有云中提供服务。
开源在吸引应用开发者方面发挥着重要作用,开发者可自定义界面,但部署和托管仍在供应商站点进行。在应用支持方面,有以下几种不同的方法:
-
部署应用代码到特定虚拟机实例
:如Azure或Elastic Beanstalk。
-
根据平台规则开发应用代码,由平台处理部署问题
:如App Engine或Heroku。
-
创建应用元数据,由PaaS在运行时进行解释
:如Force.com或OrangeScape。
其中,第三种方法最具吸引力,它允许高度的抽象和生产力;第一种方法能为应用开发者提供更多控制和可编程性;第二种方法最为常见。
开源云软件的评估标准与现状
目前,没有完全以开源形式提供的PaaS,因此PaaS的开放程度是研究的重点。衡量PaaS开放程度可依据以下六个标准:
- 自由选择基础设施服务、操作系统和虚拟化技术。
- 自由选择语言和栈组件(如Web框架、应用服务器、数据库)。
- 自由定制平台或添加额外组件。
- 自由将数据、脚本和应用迁移到其他云。
- 自由选择通过支持第三方开源组件进行自我支持。
- 自由在迁移到其他平台时重用平台的工具和组件。
根据这些标准,一些宣称开源但在满足第一个标准方面程度较低的云服务,不能被视为开源云软件,例如仅在亚马逊服务上可用的dotCloud。
不同的研究对云服务进行了比较。有的比较了IaaS提供方(如XCP、Eucalyptus和OpenNebula)在架构、网络、虚拟机放置和主机间通信方面的差异;有的分析了多个开源云计算产品(如OpenNebula、Eucalyptus、UEC、Abiquo等),将近100个比较标准分为虚拟化、存储、管理、网络、安全和支持六类。还有研究关注开源平台对虚拟实例的监控、管理和控制功能,认为Eucalyptus、OpenNebula和Nimbus属于此类。
在线文档也对云服务进行了比较。例如TheCloudTutorial根据支持的语言和框架、开发状态、供应商、开发者数量、应用数量、故障次数、成熟度、计费模式、性能指标、物理基础设施地理位置和用户社区等对PaaS进行分类。除了本文讨论的开源PaaS,还有GigaSpaces的Cloudify、Apigee的Usergrid和WSO2的StratosLive等。
为了清晰展示PaaS系统的功能,以下是一个对比表格:
|产品|所有者|网站|仓库|状态|语言|数据支持|操作系统|消息传递|测试云|接口|
| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
|AppScale|加州大学|appscale.cs.ucsb.edu|appscale.googlecode.com/svn/|1.5/Jul 2011|Python, Java, Go|HBase, Redis, Hypertable, MySQL Cluster, Cassandra, Voldemort, MongoDB, MemcacheDB|Ubuntu, CentOS|Channel|Amazon EC2, Eucalyptus|CLI, Web|
|Cloud Foundry|VMware|www.cloudfoundry.com|github.com/cloudfoundry|0.x, Beta|Java, Ruby, Node.js, Groovy|MongoDB, SQLFire, PostgreSQL, Redis|VMware image|RabbitMQ|VMware|CLI|
|ConPaaS|Contrail Consortia|www.conpaas.eu|www.conpaas.eu/download/|0.1/Sep 2011|PHP|Scalaris, MySQL, XtreemFS|XtreemOS image|Own design|Own test bed|Web|
|mOSAIC|mOSAIC Consortia|www.mosaic-cloud.eu|bitbucket.org/mosaic|0.5/Aug 12, Alfa|Java, Node.js, Erlang, Python|Riak, MemcacheDB, Redis, MySQL, CouchDB, Amazon S3, HDFS|Linux|RabbitMQ|Amazon EC2, Eucalyptus, Flexiscale, Arctur, OpenNebula, Rackspace|CLI, Web, REST|
|OpenShift|Red Hat|openshift.com|github.com/openshift|Production|Java, Python, Perl, PHP, Ruby|MySQL, MongoDB, Amazon RDS|Red Hat|Own design|RightScale, Rackspace, SmartCloud, Amazon EC2|CLI, REST|
|WaveMaker|VMware|www.wavemaker.com|dev.wavemaker.com/wiki/bin/|6.4.4/Dec 2011|Java|Amazon S3, Rackspace|VMware image|Own design|Amazon EC2, Rackspace, OpSource, Eucalyptus|Studio|
通过这个表格,我们可以更直观地了解不同开源平台软件的特点和差异,为企业和开发者在选择合适的PaaS时提供参考。例如,如果企业需要支持多种语言开发应用,那么AppScale或mOSAIC可能是较好的选择;如果更注重数据存储的多样性,mOSAIC的数据支持范围更广。同时,不同的操作系统和消息传递方式也会影响应用的部署和运行,开发者需要根据自身需求进行综合考虑。
云环境下软件测试与开源云平台服务的深度剖析
不同使用阶段的PaaS特性分析
为了更详细地了解不同PaaS解决方案的特性,我们可以从开发、部署和执行这三个主要使用阶段进行分析。每个阶段都有不同的需求,涉及不同的特性。以下是一个聚焦于典型特性的表格,展示了Cloud Foundry、mOSAIC和OpenShift在不同阶段的特点:
|使用阶段|Cloud Foundry|mOSAIC|OpenShift|
| ---- | ---- | ---- | ---- |
|开发阶段|支持标准库、线程访问和网络连接等功能,为开发者提供较为全面的开发环境,方便使用多种语言和框架进行开发。|具备良好的网络连通性,支持多种语言开发,在开发阶段能为开发者提供灵活的选择,有助于快速实现应用的原型开发。|支持多种常见的开发语言,提供了丰富的开发工具和插件,方便开发者进行代码编写、调试等操作。|
|部署阶段|拥有自动化的部署流程,能够快速将应用部署到云环境中,提高部署效率。|支持多种云环境的部署,具有较好的可移植性,能够根据不同的需求选择合适的云基础设施进行部署。|提供了简单易用的部署界面,支持一键部署,同时也支持自定义部署脚本,满足不同的部署需求。|
|执行阶段|具备负载均衡和自动扩展功能,能够根据应用的负载情况自动调整资源分配,保证应用的稳定运行。|具有应用监控和多租户功能,能够实时监控应用的运行状态,同时支持多个租户共享资源,提高资源利用率。|支持多租户模式,具备一定的应用监控和性能优化功能,能够保障应用在多用户环境下的稳定运行。|
从这个表格可以看出,不同的PaaS在各个使用阶段的特性各有优劣。企业和开发者在选择PaaS时,需要根据自身应用的特点和需求,综合考虑这些特性。例如,如果应用对部署效率要求较高,Cloud Foundry的自动化部署流程可能更适合;如果应用需要在多个云环境中部署,mOSAIC的可移植性优势就会凸显出来。
云软件比较标准的分类与应用
为了帮助读者对不同的PaaS解决方案进行清晰和全面的比较,我们将相关的比较标准进行了分类。这些标准综合了文献中的不同提议,适用于PaaS的特定情况,不仅包含了之前研究中提到的标准,还揭示了开源云软件的一些特殊特性。以下是具体的分类表格:
|类别|标准内容|
| ---- | ---- |
|虚拟化|包括支持的虚拟化技术、虚拟机的创建和管理方式等,影响着应用在云环境中的运行效率和资源利用情况。|
|存储|涉及支持的存储类型(如块存储、对象存储等)、存储容量和性能等方面,对于需要大量数据存储的应用至关重要。|
|管理|涵盖资源管理、用户管理、权限管理等功能,良好的管理功能能够提高云平台的运维效率和安全性。|
|网络|包括网络连接方式、网络带宽、网络安全等方面,直接影响应用的网络性能和数据传输的安全性。|
|安全|涉及数据加密、访问控制、漏洞管理等安全措施,保障应用和数据在云环境中的安全性。|
|支持|包括技术支持、文档支持、社区支持等,对于开发者在使用过程中遇到问题时能否及时解决至关重要。|
以mOSAIC为例,我们可以看看它是如何满足这些标准的:
|类别|mOSAIC满足情况|
| ---- | ---- |
|虚拟化|支持常见的虚拟化技术,能够灵活创建和管理虚拟机,为应用提供高效的运行环境。|
|存储|支持多种存储类型,如Riak、MemcacheDB、Redis等,满足不同应用的数据存储需求。|
|管理|具备完善的资源管理和用户管理功能,能够对云平台的资源进行合理分配和监控。|
|网络|提供稳定的网络连接,具备较好的网络带宽和网络安全措施,保障应用的网络性能。|
|安全|采用了数据加密和访问控制等安全技术,保障应用和数据的安全性。|
|支持|有专业的技术支持团队,提供详细的文档和活跃的社区支持,方便开发者解决问题和交流经验。|
通过这样的分析,我们可以更清楚地了解mOSAIC在各个方面的表现,也能为评估其他PaaS解决方案提供参考。
mOSAIC云软件的详细介绍
mOSAIC是一个旨在克服应用可移植性问题的开源PaaS,它是由欧盟委员会在FP7 - ICT计划框架下部分资助的项目(详情可访问www.mosaic - cloud.eu )。该项目致力于设计和开发一个用于在多个云环境中开发应用的API和PaaS。
构建mOSAIC的主要原因在于当前云环境中应用可移植性的难题。现有的云平台存在供应商锁定问题,不同云供应商的API不兼容,导致应用难以在不同云之间迁移。mOSAIC通过提供统一的API和PaaS,为开发者提供了一个跨云开发的解决方案。
mOSAIC的架构设计具有以下特点:
-
统一的API
:提供了一套统一的API,开发者可以使用这套API编写应用代码,而无需关心底层云基础设施的差异。这大大提高了应用的可移植性,开发者可以将应用轻松部署到不同的云环境中。
-
多云支持
:支持多种云环境,如Amazon EC2、Eucalyptus、Flexiscale等。开发者可以根据自己的需求选择合适的云基础设施,充分利用不同云的优势。
-
可扩展性
:mOSAIC的架构具有良好的可扩展性,能够随着业务的发展和需求的变化,方便地添加新的功能和支持新的云环境。
在实际应用中,mOSAIC的工作流程如下:
1.
开发阶段
:开发者使用mOSAIC提供的API和开发工具进行应用开发。可以选择自己熟悉的语言和框架,如Java、Node.js、Erlang、Python等。
2.
部署阶段
:开发者将开发好的应用部署到mOSAIC平台上。mOSAIC会根据开发者选择的云环境,自动将应用部署到相应的云基础设施中。
3.
运行阶段
:mOSAIC会对应用进行监控和管理,根据应用的负载情况自动调整资源分配,保证应用的稳定运行。同时,mOSAIC还提供了多租户功能,支持多个开发者共享资源,提高资源利用率。
mOSAIC为解决云环境中应用的可移植性问题提供了一个有效的解决方案。它的出现为开发者提供了更多的选择,有助于推动云计算的发展和应用的普及。
总结与展望
云测试和开源云平台服务在当今云计算领域具有重要的地位。云测试虽然面临着一些挑战,但它的优势明显,能够提高业务连续性、加速测试进程和降低成本。通过不断创新测试技术和解决方案,企业能够更好地应对云测试中的问题。
开源云平台服务为解决应用可移植性问题提供了新的思路和方法。不同类型的PaaS各有特点,企业和开发者在选择时需要根据自身需求进行综合考虑。mOSAIC作为一个新兴的开源PaaS,在克服应用可移植性方面具有很大的潜力,它的出现为云计算的发展注入了新的活力。
未来,随着云计算技术的不断发展,云测试和开源云平台服务将不断完善。我们可以期待更多创新的测试技术和更高效的云平台服务出现,为企业和开发者提供更好的支持。同时,标准化的进程也将加快,减少供应商锁定问题,提高应用的可移植性和互操作性,推动云计算行业的健康发展。
超级会员免费看
1087

被折叠的 条评论
为什么被折叠?



