云API,让应用程序“动”起来!

随着云应用的增长,越来越多的企业尝试同时使用多个供应商。弥补服务中断的需求,使用不同服务的需求,以及基于费用选择服务的能力,都强调了对数据和应用程序可移植性的需求。应用程序编程接口是和云服务交互的关键,但是跨供应商的API区别巨大——这让移植非常困难。

本文研究了云的可移植性可能遇到的挑战,并且探讨API在其中所起的作用。

云上应用可移植性的最大问题是什么?

在所有情况下,API都是用来访问数据和服务的。没有具体的规则来定义云计算API应该如何工作或者它们应该提供什么功能。但是,当多个供应商提供相互竞争的或者类似的服务,并且使用完全不同的API去访问这些服务时,问题就出现了。

对于软件开发人员来说,这就是个噩梦。他们可能不得不重写软件以便使用某个特定服务的API,这通常导致出现软件的多个版本。在一些情况下,开发人员能够设计软件,让其检测特定的服务并且使用相应的API,但是这会让应用程序的整体大小急速膨胀,并且导致测试很复杂。不管使用上述哪种方式,为不同的云计算API创建应用程序的代价都很高,且需要花很多时间。

市场上哪些公有云计算API呢?

在公有云领域有三种常见类型的API:基础架构、服务和应用程序。

基础架构或基础架构即服务(IaaS)API意图控制低级别的资源,比如虚拟机(VM)镜像、可扩展组群和负载均衡。开发人员和IT团队使用基础架构API来预配,管理并移除公有云资源。比如,开发人员可以使用Amazon Web Services (AWS) Elastic Compute Cloud API在EC2实例里创建、移除以及使用镜像。

服务或者平台即服务API支持访问定义良好的服务或者功能,比如数据库、管理和汇报工具、消息系统、门户以及存储实例。服务API通常和基础架构即服务API协同使用,来构造出复杂的工作环境。比如,开发人员可能会使用基础架构API来预配VM,然后使用服务API将存储实例附加到VM上。

跨云API

还有跨云的API,比如Apache jclouds,允许云开发人员创建出软件,访问来自主要云供应商以及所需的其他云供应商的资源。但是,这还在开发中,因为没有清晰的规定云供应商应该提供哪些通用服务。

应用程序或者软件即服务API通常是最高层级API,提供完整的应用程序作为本地IT环境的替代品或者扩展。比如,企业可能选择使用客户关系管理软件作为托管服务而不是在本地安装。和该软件交互的工具会使用设计的API来安全地交换数据以及查询。如,想要集成Microsoft office 365功能进自己软件的企业就可以使用Microsoft Graph API。

现在有哪些可用的云计算API?

现在有大量供开发人员可用的云计算API,来创建面向用户的软件。比如,AWS提供API来操作自己的EC2和Simple Storage Service (S3,简单存储服务)服务,以及API门户服务,允许用户创建自定义API来编排一些AWS服务。其他主流公有云供应商,如Google和Microsoft Azure,也提供API将云服务链接到外部软件。

还有一些其他API可以使用来做云项目。如,私有云可能会使用类似Apache CloudStack 4.9.0.1这样的平台来支持IaaS类型的云,还能够原生支持Amazon EC2和S3 API。

API标准化

要帮助用户在任意云平台上部署应用程序——无需变更软件,越来越多的人开始对公有云供应商API的标准化感兴趣。不幸的是,我们离这样的标准化还相当遥远,特别是在主流公有云供应商之间的竞争日益白热化的情况下。

其他云计算API承诺提供更加通用、跨平台的能力。比如,Simple Cloud API是由供应商联盟推进的,它允许开发人员创建可以和多个云供应商交互的代码。

API创建有哪些通用准则?

不管你是开发自己的云计算API,还是评估待选供应商的API,以下一些通用考量可能会有所帮助。

考虑API的效率。API的实现必须简单高效。不要尝试重新创造轮子,比如SOAP、REST、JSON等这些底层技术——使用那些已经实现了的庞大的标准库。另外,不要尝试在一个API里完成所有事情。开发人员倾向于使用有限数量的语言,因此为了迎合每种主流语言都创建一个API版本,这里的主流语言包括C++、Java、 Python、PHP、Ruby、Perl、Haskell、C#、JavaScript、Node.js、OCaml 和 Delphi。

确保良好的API文档。粗糙的文档会成为采用某个供应商API的阻碍,也会阻止别人使用你的API。文档必须最新、精准并且包含一些使用示例或者教程。通过同行评审或者API用户的精准反馈来验证文档。

API必须灵活。开发人员可能会尝试以各种方式使用云计算API,因此这些API必须灵活,特别是如何处理输入和输出上。比如,灵活的API可能支持多种格式,比如JSON、YAML以及可扩展标记语言,并且不区分大小写。

注意API发布的稳定性。API变更的速度和一致性会影响到使用。开发人员使用那些不经常变化的API会更加轻松。发布周期必须计划良好,测试全面并且有完整的文档,同时让开发人员有足够的时间体验beta版本。

注意API安全性。可靠的身份验证和安全对于现代服务以及访问这些服务的云计算API来说至关重要。在大多数情况下,这包括通过API向服务传递SHA-1或者其他加密令牌。在其他情况下,通过OAuth2和SSL保证安全性。API所有者必须实现几种类型的安全。

本文作者:崔婧雯

来源:51CTO

时间: 2024-11-08 18:56:32

云API,让应用程序“动”起来!的相关文章

阿里云API创新大赛百万大奖花落谁家?

历时120天.120个参赛战队.100+参赛作品.100+理工类高校.1000+开发者报名参与,共同完成了云计算领域在中国区域的首个API as a Service Solution大赛. 阿里云API创新大赛于2017.02月正式启动,以API 经济的商业模式为模型,邀请广大参赛者共同探索中国的 API 经济.  6月11日下午13:30分,API as a Service Solution在上海云栖大会现场开启了终极PK,10个参赛战队在不同纬度展示了API经济强势回归带来的新型商业模式. 

拥抱API经济:教你三步使用SDK玩转阿里云API

众所周知,阿里云提供了全方位.多层次的云计算产品体系.阿里巴巴技术委员会主席王坚博士说过,要让云计算像水电一样方便获得.为了开发者无缝衔接阿里云的众多服务,将它们集成到自己的应用系统,阿里云开放了API和用来访问API的工具SDK. 什么是阿里云SDK? 阿里云Java SDK让您不用复杂编程即可访问云服务器.CDN(内容分发网络).OSS(对象存储)等丰富又强大的云计算基础设施.它是面向开发者的编程库,能够直接应用在开发者的应用程序里,被应用逻辑调用.打个简单的比方,应用程序是家用电器,阿里云

如何评估并确保云API安全

云安全联盟(CSA)的最新推出报告<九宗罪:2013年云计算面临的主要威胁>,提出了一些新出现的风险,并对已经存在的风险进行了修改和重新排序.近日,负责该报告的工作组的三位联席主席之一就报告中涉及的云API安全问题提出了自己的看法,包括:不安全的接口和API到底代表什么?所涉及的风险有哪些?组织如何去评估并确保这些云API?定义不安全API所带来的风险 首先,对于那些对云API是什么以及云API如何使用不熟悉的人来说,云API本质上只是软件接口,云提供商利用云API,让用户管理云服务,典型的如

设计云API管理策略

云API管理是监督企业云布局的IT专家面对的最重要任务之一.一天结束时,云实际上只是API和服务的收集.基于基础设施的API执行放置数据到存储设备之类的功能,同时基于应用的API控制其他任务,比如为银行计算利率等.它们会顺着任务表单逐条执行. 基础资源库和API跟踪技术允许你把策略放在周围,然后控制访问云API.这些策略是小型过程式的程序,帮助你定义限制条件.比如,企业可以限制在一天的特定时间才能进行API访问,或者控制用户角色访问权限.云API管理工具是可扩展的,有一套它们自己的API供选择.

随心所欲的云API 谷歌甲骨文的云纠纷

关于API和公平使用的法律上的不确定性会给云计算市场带来冲击吗? 如今,当涉及到http://www.aliyun.com/zixun/aggregation/29194.html">知识产权问题,IT行业 都有些厌倦--甚至是在技术巨头对付公堂的时候.然而,谷歌与甲骨文之间的 版权案件让云计算改革着们担心起事件的影响. 目前的问题是关于甲骨文Java应用程序接口(API)的版权,该公司指责谷歌将其中37个挪用到安卓操作系统中.在周一,加利福尼亚的一个陪审团给出了结论,部分裁决谷歌侵犯了甲

云API和软件架构:云应用成功的关键

如今,当涉及云应用和集成时,开发团队往往会面对一个未知的领域.随着越来越多的服务能够在云计算平台上运行,云计算的相关开发也变得越来越重要.云计算咨询公司Orchestratus的创始人Shlomo Swidler表示,云计算是开发人员能够为客户提供更好的可靠性和附加值的必由之路.为了实现云计算中应用程序的成功开发,Swidler强调了如下几点:使用高效的云API,在合适的位置拥有一个以服务为导向的坚固组件架构,以及做出正确的部署与管理选择. 在过去,交付模式是现实可见的:公司可以把硬件邮寄给客户

云API之战 胜负难定

随着上周谷歌计算引擎的声明,云市场中IaaS世界里又多了一个弄潮儿,可是其他的提供商也提供了另一套API. API或者说应用程序接口,没什么新东西:他们为开发者提供了访问服务的提纲.这些服务包括云服务,像http://www.aliyun.com/zixun/aggregation/17326.html">存储数据.升级数据库.迁移数据.数据排列.服务器开通等. API在云计算世界中因为其如何使用而显得十分重要.根据云提供商特定的API类型,他们之间正在出现分界线.企业也开始注意到,这就造

云API的安全性及亟待解决的问题

云安全联盟(CSA)的最新报告<云计算面临的主要威胁>中,提出了一些新出现的风险,并对已经存在的风险进行了修改和重新排序.报告名为<九宗罪:2013年云计算面临的主要威胁>,该报告是根据云计算和安全社区的反馈,许多个人和组织权衡比较,在他们所面临的风险中,该关注哪些风险,这些都是最新报告值得更加关注的地方. 作为负责该报告的工作组的三位联席主席之一,针对名单上的第四种威胁,我提出了很多问题,比如"不安全的接口和API"到底代表什么? 所涉及的风险有哪些? 以及组

DB2 NoSQL JSON 功能(三) 使用 Java API 编写应用程序

管理 JSON 文档 - 使用事务和不使用事务 概述 简介 DB2 JSON 是一个可用于 DB2 Linux, Unix and Windows 10.5 的 Technology Preview,提供了以下特性: 一个命令行 shell 用于管理和查询 JSON 数据 一个 Java API 用于应用程序开发 一个有线监听器用于接受和响应通过网络发送的请求. 图 1. DB2 JSON 组件 本文将介绍如何使用 Java 接口管理和查询 DB2 JSON 文档存储中的 JSON 文档.还将讨