本文要点
过去十年间,企业使用 API 得到了突飞猛进的增长。不管是基于 RESTful 还是其他方式,API 已成为企业数字化的网关。因此,在向企业的利益相关者提供更好的数字化体验方面,可良好管理和维护的 API 是至关重要的。
API 需要理解为与商业契约类似。和商业契约一样,API 的设计和实现对企业数字化业务战略的成败至关重要。
大多数数字化转型项目中,集成先行和 API 先行是广为使用的两种策略。两者中,API 先行的方法更为高效,也永远不会过时。
企业中的 API 可分为三类,边缘(edge)API、工具类(utility)API 和领域(domain)API。边缘 API 担当企业系统的网关,领域 API 向集成层开放企业内部系统。工具类 API 中包含集成逻辑,实现边际 API 和内部系统的相互黏合。
在 API 先行的方式下,执行计划可划分为七个步骤。首先确定项目的目标,然后去了解企业的生态。进而确定当前系统可能的集成点、所需的集成功能和用例。对于所确定的每个用例,从边缘 API 着手去设计 API,最终实现集成。
想象一下,我们从早晨起床到晚上入睡,每天会与多少种数字化服务产生交互?所有的数字化媒体,包括移动端应用、网站、社交媒体应用、银行日常应用和 ATM 等,都直接或间接地使用了 API。我们每天都要与 API 打交道。
据全球领先的 CDN 服务提供商Akamai统计,2019 年 83%的流量来自 API,而 HTML 的流量已经跌到了只有 17%。相比之下,在 Akamai 2014 年的流量统计中,来自 API 的只占 47%。
对于集成领域的专业人士来说,API 的存在是不容忽视的。我们必须拥抱 API,并使用 API 先行(API-first)的集成思维来开发我们的集成用例。本文将介绍如何使用一种七步执行计划,以 API 驱动的方式开展项目集成。
在详细介绍“API 先行集成”之前,先给出使用 API 的优点。
API 是应用编程接口(Application Programming Interface)的缩写。在 API 先行的集成策略中,我们需要将 API 视为与商业契约类似。一旦需要与其他各方开展重要的业务,我们需要首先签订契约,或是双方达成某种协议。契约确定之后,我们才能开展业务。在集成用例中同样如此,需要首先确定 API。基于此,设计 API 的目的,就是将一组预先定义的后端系统功能暴露给网站、移动应用和 IoT 设备等前端应用。
图 1:API 的作用
任何一家企业要在数字化中生存,设计良好 API 是重要的促进因素。下面列出 API 的一些应用场景:
上述所有优点,都依赖于 API 的具体设计与实现,以及集成的用例。
下面解释如何在集成项目中实现 API 先行。
当前企业所采用的 API 开发方式,无论使用 RESTful 或是其它技术,基本上可分为两种,分别称为集成先行和 API 先行。
集成先行方法基于传统的自底向上的方法,即首先在后端服务上构建集成逻辑,然后以受控 API 方式向用户开放集成服务(也称为组合服务)。
API 先行方法中,首先做 API 的设计,进而去实现 API 和集成逻辑。鉴于项目是从 API 设计着手的,所以称为 API 设计先行,简称为 API 先行。在本文中,我们将互换使用“API 设计先行”和“API 先行”这两个术语,它们指代的是同一方法。
为进一步解释上述两种方法,下面给出一个略微抽象的集成项目例子。
项目需求: 使用移动和Web应用,通过在线门户展示企业当前业务,为客户提供数字化体验。项目涉及后端和前端开发团队。
集成先行的方法对项目时间表和成本会产生一些不利的影响。团队之间的沟通也较少,并且一些设计缺陷只有到项目的后期阶段才会被发现。
图 2 集成先行方法
API 先行方法可大大降低项目的延迟和成本超支问题。这些问题主要源自于前端和后端团队之间的沟通不畅,从而导致 API 和后端系统变更。
设计 API 之后,为便于前端团队进行 API 调用和测试,需要留一定的时间去启动和运行后端系统。为了解决此问题,前端团队可以设置为调用 Mock 后端的 Dummy 服务,去模仿所设计的 API,并返回 Dummy 数据。详细做法,参见资料“API mock指南”。
需求在某些情况下可能是模棱两可的,开发团队也可能并不确定如何正确地做出 API 预先设计。此时,需要针对一个缩小的范围去设计并实施 API。进而使用多个 Sprint 做多次迭代的方式,直到实现所需的范围。这样可以在早期阶段就发现设计上的缺陷,最大程度地降低对项目时间表的影响。
图 3 API 先行方法
在软件工程中,façade 设计模式用于隐藏系统的复杂性,为用户提供更友好的接口。API façade 背后的理念同样如此,它向应用编程人员提供复杂后端系统的简化 API。前文所说的 API 先行方法,需设计的正是置于 API façade 之前的边缘 API。
下图展示了 API façade 是如何将企业系统中的各个部分黏合在一起。
图 4 企业部署概览
从图中看,我们针对组织和用户(包括移动端、Web 以及 API 的直接用户)具有不同的后端系统。需要组合使用边缘 API 和 API façade 连接双方实体。
对 API façade 做进一步分析,可以看到它是由工具 API 和领域 API 组成的。
图 5 API façade 的图示
如果后台的逻辑复杂,或是使用了特定的通信协议,那么需要设计工具 API,将后台开放给企业集成逻辑。后端服务的开放,并非必须通过工具 API 才能实现。对于Salesforce这样的 RESTful SaaS 应用,在没有复杂交互的情况下,可以直接连接到应用。否则,需要在后端服务的前面设计一个简化的工具 API。
一旦后端开放,无论是直接开放的,或是通过工具 API,就可以使用包含消息调解逻辑或业务逻辑的领域 API。消息调解包含了消息传输、路由、服务链等。
设计 API 先行集成解决方案的另一个方面,是掌握现有的数字资产情况。事实上,这是集成项目的初始任务之一。数字资产具有多种类型,不同的类型具有不同的集成方法。
应用孤岛(silo)主要是设计用于特定部门或单位的一些系统。它们从来没有考虑在全企业范围内应用并开放给对外部的世界。大多数此类系统是与特定部门的操作过程和实践紧密耦合的。在通过调解层开放此类型系统时,需要特别慎重。
SaaS 已经开发成可被组织使用的服务,无需额外付出过多工作。它们通常以 RESTful API 形式开放。
组织使用不同的格式存储静态数据(data-at-rest)。我们需要了解数据存储的基本机制、格式,以及需要通过集成层在实体间传输的敏感数据。
需要识别现有系统中所有的工作流。每个工作流会有不同的批准过程,或是不同的人工介入方式。
一些现有系统,例如原有的数据库管理系统、CRM 等,会使用专用的数据格式。
项目集成成功的关键,在于理解现有系统的功能和新的需求。例如,是使用现成的集成产品,还是针对功能做内部开发,关键决定因素是对所需功能的理解。
下面列出我们在大多数集成项目中看到的一些关键集成功能:
在对所确定功能集成做出设计时,如果缺乏适当的经验或知识,那么最好从集成供应商那里获得帮助。这些集成供应商通过全球多个业务领域的大量集成项目而获取了丰富的经验,能为整个集成项目提供帮助。包括从 API 的设计到实现,甚至是在系统启动并运行后对系统进行维护。
一旦为项目选定了最合适的集成供应商,需要查看集成商是否能提供所需的功能。例如,为降低 IT 架构的成本,可以通过混合集成解决方案逐步将现有 IT 架构迁移到云上。
上面介绍了在开展企业数字化转型项目中需要注意的几个方面。下面将给出一个遵循 API 先行策略的七步执行计划,用于确定秩序以避免实施中发生混乱,成功交付企业集成项目。
与利益相关者一起收集需求,形成项目的目标。基于此,确定项目实施的范围。
a. 识别所有的应用孤岛;
b. 理解数据情况。
一旦识别了项目目标,就可以整体上把握现有的系统,识别其中的应用孤岛、各后端系统、数据处理需求等。参见前文“识别数字资产”一节。
在确定项目的目标后,我们可能需要去实际接触企业中的部分现有系统,也可能需要考虑项目未来的扩展问题。综合所得到的信息,再去选择适合的集成商。因此,至关重要的是识别需进行交互的系统,系统需要开放的特定功能。
在理解了企业的数字资产和整体目标后,可以考虑所需的集成功能,参见前文“关键集成功能”一节。
边缘 API 是前端团队需要与之交互的。首先设计边缘 API,其中大多数用于访问特定的系统功能。避免将后端的复杂性泄漏给前端应用,使 API 设计对应用开发人员更简洁。
一旦设计好边缘 API,后端团队就可以匹配边缘 API 的需求,着手设计工具 API 和领域 AP。如果碰上一些未考虑到的问题,可以按需回滚,更新边缘 API。
一旦完成边缘、领域和工具 API 的设计,这时前端和后端团队可以开始实现系统。
通过将业务需求分解为多组更为细化的问题,该步骤可实现为多个 Sprint,而不是力图使用一组边际 API 去一次性地实现所有的业务需求。
本文介绍了在集成项目中的 API 先行方法,这种方式可降低项目成本,控制开发时间,增进团队间的合作,改进整体质量,并为未来的扩展提供空间。此外,本文通过将方法归纳为具体策略,给出了一种分七步走的执行计划。
据Gartner分析,在 2020 年集成工作将占数字化平台建设中 50%的时间和成本。因此,在数字化平台建设中遵循正确的开发最佳实践是至关重要的。
作者简介:
Asitha Nanayakkara 是一名软件工程师,具有计算机科学和工程学士学位。他目前任WSO2的技术负责人,为企业提供构建集成产品的专业知识。Asitha 在担任国际公司(包括一些财富 500 强公司)集成顾问方面具有丰富的经验,并乐于与他人分享。
原文链接:
领取专属 10元无门槛券
私享最新 技术干货