最近笔者有机会在不同的活动上就最新开源软件和云原生技术的API策略发表演讲,都获得了积极反馈。这个话题的独特之处在于,它不是从通常的API策略讨论点来讨论的,而是从讨论最新技术以及开源软件和云原生应用程序的增长如何塑造API策略的角度来讨论的。
笔者将从讨论创新开始。所有最新的软件创新要么是开源软件,要么是基于开源软件。增强现实、虚拟现实、自动驾驶汽车、人工智能、机器学习(ML)、深度学习(DL)、区块链等,都是使用开源软件构建的技术,这些开源软件使用并与数百万API集成。
当今的软件开发涉及API的创建和使用。一切都与API有关,在一些组织中,甚至还有API蔓延,这是指在没有控制或标准化的情况下广泛创建API。
技术栈和云原生应用程序
在现代软件开发中,有栈的概念。开发人员和组织有很多选择,他们可以选择多种技术组合来创建自己的栈,然后培训或雇佣所谓的全栈开发人员来处理这些栈。栈的一个例子在很大程度上包括开源软件,如Linux、编程语言、数据库、流媒体技术、运行时和DevOps工具,所有这些都使用API并与之集成。
从技术栈来看,云原生应用程序,指的是基于容器的应用程序。如今,所有技术都有许多云原生选项;云原生云计算基础环境是可用的云原生生态系统的一个样本。
当组织从几个容器中的应用程序转移到几十个甚至数百个容器中的应用程序时,他们需要帮助管理和编排所有基础设施。这就是Kubernetes发挥作用的地方。Kubernetes已经成为我们这个时代最受欢迎的开源项目之一,它已经成为云原生应用程序的实际基础设施,并促使成了Kubernetes operator的一个新的、不断增长的生态系统;大多数流行的软件现在都有自己的operator,可以更容易地在Kubernetes环境中创建、配置和管理,当然,operator也可以与Kubernetes API集成。许多可用的数据技术现在都有Kubernetes operator,以促进和自动化与Kubernetes API集成的有状态应用程序的使用。
什么是API管理层?
云原生环境也有其栈、云基础设施、操作系统、容器编排、容器operator、应用程序代码和API。所有这些都支持一个软件解决方案,该解决方案将数据集成并公开给移动设备、web应用程序或其他服务,包括物联网设备。无论技术组合如何,都应该使用API管理平台功能来保护一切。API管理平台是云原生应用程序之上的一层,当数据和API暴露在组织的网络之外时,必须对其进行保护。
而且,说到技术架构,API管理平台具有灵活的部署选项非常重要。策略和设计应始终包括可移植性、在不同架构(例如PaaS、内部部署、混合云、公共云或多云架构)上移动和部署的能力。
面向云原生技术需要考虑的3种API策略
要为最新的技术设计API策略,有多个选项可以概括为三个主要方面。
首先,是一种现代化战略,从将单体应用程序分解为服务,走向云原生,当然,还要与大型机中的关键任务应用程序集成。对于这种策略,需要构建和维护安全的API。
设计API策略的第二个领域是所谓的无头架构,即首先向API添加特性和功能,然后可选地向用户界面提供该功能的概念。采用微服务或完全基于API设计的粒度架构,以促进集成和自动化。
第三个API战略领域是关注新技术,从创建API生态系统以吸引贡献和使用公共API的客户和合作伙伴,到选择技术栈并将其与新技术(如AI、无服务器计算和边缘计算)集成。最重要的是,每个API策略都必须包括API管理和安全思维。
API管理平台应包括API设计、测试和安全的完整生命周期功能。其他功能,如分析、商业智能和API门户,允许组织利用DevOps和全生命周期管理来开发、测试、发布和使用API。
关于当今最新技术以及如何将这些技术的知识和使用作为API策略的一部分的几个例子包括:第一个是DevOps集成。DevOps自动化有多种商业和开源选项。关键部件包括持续集成和持续交付工具;另一个非常相关的领域是数据和人工智能技术,这是一个不断增长的领域,人工智能开发生命周期的每个阶段都有数千个选项,从数据收集和组织到数据分析,以及ML和DL模型的创建和培训。人工智能开发生命周期的最后一步应该包括自动部署和维护这些ML和DL模型。所有这些步骤都应该与通过API的不同技术的完全集成相结合,并与API管理平台的重要层进行外部集成,包括数据源。
开源和API管理层
总之,从开源栈、DevOps工具到人工智能的所有这些新技术,共同的保护和管理层是API管理层。应该有一个由API管理驱动的安全第一的API策略,重要的是要记住,在当今时代,API无处不在,现代技术栈将通过API与数据技术(数据库和存储)、DevOps和领先的人工智能集成。不要忘记在设计和管理API时考虑安全性。无论选择哪种现代化的API策略,作为无头架构,还是基于新技术,API策略都必须与你的技术选择和未来愿景齐头并进。