API版本化与迁移五大策略

业务需求在改变,这通常意味着API必须随之而改变。本文探讨当API必须改变时避免悲剧的五大关键策略。

API版本化和迁移是不得不解决的问题,特别是在应用程序接口和不断变化的业务优先级绑定越来越紧密的当下。但是,如果采取一些关键步骤,改动API就不会造成悲剧。

我们采访了Inversoft的CEO,Brian Ponterelli,他分享了五个他所使用的最重要的策略,能够减少API改动的风险。

1.文档化时间线

当API开发完成时,很可能已经计划的一些patch或者功能版本可能会破坏兼容性。要想避免你的API客户因此而愤怒,Ponterelli建议开发人员共享一份“事件日历”,记录下可能会影响到用户的任何变化。

“我们将这样的文档和发布摘要和文档放在一起,受到了用户的好评。”Ponterelli说。“有很多种方法,但是只要某个地方有“文档”,你就可以安心。”

2.拥抱语义版本控制

语义版本控制是业界针对patch版本的事实命名惯例,并且根据Ponterelli所说,使用它对于确保API版本控制不出乱子至关重要。这种正式的标准,已经被很多大公司采用 -- Oracle,Google -- 为版本号以及哪些兼容性会被破坏或者不受影响等,提供了清晰的说明书。

对于理解语义版本控制的API客户而言,Ponterelli说,很多客户确实理解,持续跟踪改动会很容易。对于不熟悉该领域的客户,也很容易找到介绍其如何工作的文档。

3.制定迁移策略以及向后兼容适配器

当新版本即将发布时,通常迫使开发人员打破某种兼容性。不幸的是,你的API使用者可能严重依赖于这些特定的兼容性,Ponterelli提醒到,当用户升级并且发现功能被破坏时,这可不太好。

Ponterelli建议解决这样问题的最佳办法是和使用你API的用户一起创建出清晰定义的迁移策略。这包括决定对于使用者的功能而言哪些兼容性必不可少,比如绝对不能失败的某个特定的功能或服务。如果无法确定完整的迁移策略,Ponterelli建议开发人员至少创建出向后兼容适配器,来帮助恢复必要的功能。

Ponterelli还建议开发人员和他们最大并且变化缓慢的客户一起开始API版本化之路,因为小型的,更为敏捷的公司通常更能接受API的变化。这给了你更多的时间来处理任何可能的问题,并且创建出需要的兼容性适配器。

4.抽象层次有所助益

除了创建可管理的兼容性,Ponterelli还建议开发人员添加反映API版本化频率的抽象层。他说Amazon创建的API,被抽象成经常变更的“细粒度”API和通常不变的“粗粒度”API。

通过这样抽象化API,你就可以帮助使用者清晰理解他们使用的API可能多久会发生变化,并且做好相应的计划。

5.考虑混合云方案

Ponterelli还指出当通过云预配API时,实现混合方案能够帮助用户抵御破坏。通过在本地保留一定数量的核心资源及其依赖,那么无论依赖的API如何变化,API用户都能够持续提供他们自己的版本。否则,他们可能会在API版本化发生的任意时间被强制要求升级,就不得不承担兼容性被破坏的风险。

本文转自d1net(转载)

时间: 2024-10-17 16:21:15

API版本化与迁移五大策略的相关文章

2014年充分利用云计算的五大策略

  许多技术在今年已经让人们感觉到了它们的存在.它们所拥有的美好前景让我们感到兴奋不已.如今云计算已经发展到了一个新的阶段,许多公司正在认真尝试并体会到它们所带来的好处.如果你正在考虑如何在2014年充分利用云计算,那么以下五大策略将会给你一些帮助. 1.以云为中心的业务模式.无论你是一家软件产品厂商.服务提供商还是企业,以云为中心的产品/服务或IT实践模式无疑比任何"渐进式"路线图更具优势.通过观察,我们发现以云为战略抓手的机构比那些从一个零碎项目跳转至另一个零碎项目的机构能够更好的

《SOA Web Service合约设计与版本化》目录—导读

版权声明 SOA Web Service合约设计与版本化 Authorized translation from the English language edition, entitled Web Service Contract Design and Versioning for SOA, 978-0136135173 by Thomas Erl, Anish Karmarkar, Priscilla Walmsley, Hugo Haas, Umit Yalcinalp, Canyang

《SOA Web Service合约设计与版本化》—第1章1.2节本书的目标

1.2 本书的目标SOA Web Service合约设计与版本化总体来说,本书中的章节是带着下列主要目标来撰写的: 在SOA的上下文中来论述Web服务合约相关的技术:突出介绍经过验证的合约相关技术,以及用于合约设计和版本化的模式:展示第一代Web服务技术(WSDL.SOAP.XML Schema)如何同诸如WS-Addressing(Web服务寻址)以及WS-Policy(Web服务策略)这样的WS-*技术一起工作:突出介绍各种不同Web服务技术的应用如何会受到SOA设计原则和模式的影响.本文仅

《SOA Web Service合约设计与版本化》—第1章1.6节补充阅读

1.6 补充阅读SOA Web Service合约设计与版本化下面是一些推荐的补充书目,可以进一步阐释本书中包含的关键主题. SOA Principles of Service Design(中译版<SOA服务设计原则>)关于面向服务设计范型的综合参考书,包含本书中引用到的所有原则的全面描述:SOA Design Patterns 该书提供了设计模式的详尽目录,其中许多模式都是和Web服务合约设计与版本化相关的.你可以从http://www.soapatterns.org检索到这些模式的简单描

《SOA Web Service合约设计与版本化》—第1章1.8节符号、图形和风格约定

1.8 符号.图形和风格约定SOA Web Service合约设计与版本化1.8.1 符号图例本书包含了一系列的图表,也就是书中所提到的"图".在所有这些图表中使用的主要符号在彩色插页中逐个进行了描述. 1.8.2 突出显示的代码书中有突出显示的代码.通常来说,突出显示的代码是同当前正在讨论的话题相关的. 1.8.3 要点总结本书的大多数主要章节之后都会提供一个列表形式的简明概要.有些内容较少或者非常易懂的章节则没有提供这样的专门总结. 本文仅用于学习和交流目的,不代表异步社区观点.非

《SOA Web Service合约设计与版本化》—第1章1.9节附加说明

1.9 附加说明SOA Web Service合约设计与版本化下面各小节介绍由Prentice Hall出版的"Thomas Erl面向服务计算系列"丛书所提供的补充信息和资源. 1.9.1 本丛书官方站点在http://www.soabooks.com上可以找到关于本丛书中所有书的最新信息以及各种不同的支持资源.请一定别忘了查看更新.勘误和资源(比如补充的张贴图). 1.9.2 Visio模板Prentice Hall提供了一个Visio模板,其中包含了本丛书中各书使用的彩色符号.

《SOA Web Service合约设计与版本化》—第1章1.3节读者对象

1.3 读者对象SOA Web Service合约设计与版本化本书可以被用作下列类型读者的教材或者参考书: 想要学习如何在SOA项目中使用Web服务技术的开发人员:想要学习如何为了支持SOA项目来设计Web服务合约的架构师:想要学习服务合约版本化的治理(governance)专家:想要更好地理解如何构建Web服务合约来支持面向服务的SOA实践人员:想要对现代Web服务合约与消息底层的概念和机制有更深入了解的IT专业人员.本文仅用于学习和交流目的,不代表异步社区观点.非商业转载请注明作译者.出处,

《SOA Web Service合约设计与版本化》—第1章1.4节本书不涉及的内容

1.4 本书不涉及的内容SOA Web Service合约设计与版本化本书要讲解的只是关于Web服务合约的内容.它探索了与Web服务合约的开发.设计和版本化,以及与相关消息设计主题有关的大范围的各种技术和技巧.然而,本书并不会深入到Web服务程序的开发或者实现.因此,许多用于"连线"(wire)上的主题并没有包含在其中,比如可靠消息传递.安全和事务等. 类似的,虽然本书的内容属于SOA这个大的环境之中,但是其中只有一章用来解释SOA的基本术语和概念.如果你是刚刚涉足SOA,那么请务必提

《SOA Web Service合约设计与版本化》—第1章1.5节必备知识阅读

1.5 必备知识阅读SOA Web Service合约设计与版本化本书假设你已经拥有了基本XML概念的基础知识.如果你还没有使用过XML,那么你可以通过阅读在网站发布的一些简明教程来弥补. 如果你是刚刚涉足SOA,那么你可以通过学习下列网站的内容来对面向服务计算.面向服务以及相关的设计模式有一个初步的了解: 为了进一步确保你对在本书随后章节中使用到或者引用到的关键术语有清晰的理解,你还可以访问本丛书系列的在线主词汇表,你可以在那里查阅到在本书中可能没有完全描述的术语定义. 即使你是一个有经验的S