如何在 DevOps 中进行 API 全生命周期管理?

news2024/11/20 9:14:30

 随着 DevOps 理念在中国企业当中的普及和发展,中国企业 DevOps 落地成熟度不断提升,根据中国信通院的数据已有近 6 成企业向全生命周期管理迈进。

而在研发全生命周期管理之中,API 管理的地位愈发显得重要。随着 API 数量的大幅增长,也带来了新的 API 管理需求。

如何在 DevOps 工作流中进行 API 全生命周期管理,对项目研发来说具有重大意义。

Part 1

DevOps 中 API 管理困境

在实际的 DevOps 工作流中,API 管理面临着以下 6 大方面的困境:规范、协作、自动化质量、迭代、自动化。

困境一:规范落地执行难

因为团队中的 API 文档质量参差不齐,导致规范很难落地执行。原因在于公司有很多的研发项目和团队,不同的团队有不同的API管理习惯,尤其是常用的 Swagger 方式的管理,很难进行统一的平台化管理。

针对这个困境,可以通过统一的 API 管理平台规范文档的模板,引导编写流程和习惯,也可以通过自动化文档管理工具来简化流程,提高管理效率。

困境二:岗位协作难、信息沟通效率低

在 DevOps 工具链中,每一个工具都会有不同的通知消息,导致重要信息淹没在繁杂的通知中。其次是工作流程环节多、流程长,各岗位角色处理工作节奏不一,导致任务链上下游沟通效率低。

针对这个困境,可以缩短流程环节,多启用自动化流程。同时制定精细化通知规则,根据优先级提供差异化通知样式。最后,再通过每日推送复盘消息,梳理当日工作项和消息通知,防止遗漏。

困境三:自动化测试体系搭建门槛高

传统的自动化接口测试脚本需要用 Python 来编写,门槛高,成本高。又因纯手工编写,开发变动后还须对照文档二次调整接口的所有脚本。另外,自动化测试前期投入时间多,准备工作繁杂。

针对这个困境,可以使用界面化的自动化测试工具,降低脚本编写门槛。还可以通过一站式 API 全生命周期管理平台,免去大量前期工作,提高自动化测试效率。

困境四:API 生产质量和在线异常的发现、跟踪、解决流程过长

当下,在后端的接口自测、前段的 MOCK 测试、冒烟测试、集成测试、异常监控这 5 个环节中都会使用到不同的工具,于是产生了跨工具之间对接复杂、数据隔离,导致 API 生产质量薄弱,以及大量重复工作。

可以通过一体化的 API 管理工具来打通不同环节的工作流,提高研发质量和效能。

困境五:接口文档无法跟踪迭代版本,回溯排查难度大

传统的接口管理工具如 Swagger 没有接口修改记录,缺少版本管理,无法通过日志定位问题,无法进行回滚和历史对比。另外团队也缺少接口迭代计划,导致开发量和影响面分析都难以评估。

接口文档作为研发项目的重要资产,应该对其变更进行盘点,包括提供接口文档的历史记录。可以通过一站式 API 全生命周期管理工具,提供项目级的接口版本管理和接口迭代计划,输出更加优质的接口文档,推进 DevOps 工作流的效率提升。

困境六:DevOps 工作流使用工具多

DevOps 作为宏观层面的研发管理思路,目前并没有大而全的工具,因此带来企业内部工具越积越多,数据流通阻滞,另外,传统接口管理工具功能也很单一。

针对这个问题,可以使用一体化的 API 全生命周期管理工具来实现与接口相关的所有问题,减少对接的工具数量。

Part 2

DevOps 中 API 管理需要什么

基于前文对 DevOps 中 API 管理存在的问题,可以梳理出企业 R&D 需要以下六个方面:

  • 规范化:一个可配置规范、可自动根据规范生成 API 文档的 API 规范工具

  • 高协作:一个接口相关状态自动流转、精准通知信息的 API 协作工具

  • 自动化:一个低门槛、智能录入数据的 API 自动化测试工具

  • 高质量:一个一站式接口全流程质量管理的 API 测试工具

  • 迭代快:一个提供从项目级迭代计划,版本管控,到接口级历史记录的 API 管理工具

  • 工具链:一个接口全生命周期且多种对外集成方式的 DevOps 工具

对于满足这些条件的工具,我们定义为 API 全生命周期智能协作平台。在这个一体化平台上,可以从 API 的开发态到发布态到运营态,对 API 进行全生命周期管理

Part 3

API 全生命周期如何接入 DevOps

根据经典的 DevOps 流程图,我们从计划、开发、构建、测试、部署、发布、运维跟监控环节,探讨 API 管理工具对接。

3.1 计划:制定 API 文档规范,搭建层次清晰的 API 仓库

  • 根据公司组织架构和系统服务的分布,组成一个层次清晰的接口仓库。

  • 统一规范制定,把不同团队的规范统一制定成公司的规范。

  • 整理公共材料,把历史文档快捷地导入到 API 仓库里,以及把一些可复用的材料例如经常用的数据结构,API 文档的模板、常用字段描述,都可以存储到 API 仓库,以便于在开发阶段创建新的 API 文档。

3.2 开发:基于代码仓库搭建自动化流程,解决前后端调试和沟通问题

基于代码仓库或 Swagger 或本地研发工具,快速自动生成 API 文档并快速调试,调试没问题后再自动生成 MOCK API和批量接口用例,可以在线分享给前端和测试,文档支持在线评论。最终还可以基于这个 API 文档生成业务代码,协助开发。

3.3 构建:自动打接口版本及自动冒烟测试,支持回滚和减轻测试工程师压力

构建阶段可以基于 CI 触发器自动构建接口版本,方便后续版本回滚,还可基于接口版本做批量测试,以及做版本差异化的对比。

这两个步骤可以让测试对任务进行评估,更好地去减轻测试的压力。目前接口上自动化能测出来的问题,可预先通过 API 测试出来。

3.4 测试:推进自动化测试,降低用例编写成本

在测试阶段我们推荐自动化测试,一体化 API 全生命周期管理工具可以去快速同步前面开发阶段生成的测试用例,然后对这些测试用例进行流程编排,组成自动化测试用例。

也可以基于 API 网关的监控日志做流量回放,自动生成自动化测试用例,识别增量接口并跑模糊测试。可以组成场景案例,做回归测试。模糊测试跟回测试的测试结果发送测试报告,给到对应的测试人员。

3.5 部署:快速测试核心流程,排除环境差异问题

部署之后可以通过 CD 触发器对环境进行预测,试跑核心的测试场景,生成对应的测试报告。可以通过多环境的测试结果进行对比,排查环境差异的问题,也可以在部署好之后进行压力测试。

注:目前 Eolink Apikit 压力测试功能将在年中上线,敬请期待!

3.6 发布:确保对外访问畅通和安全

在发布阶段,主要对接 API 网关,让系统可以正常对外访问,开放接口能力。

3.7 运维:保障服务持续稳定和安全

在运维阶段依然是使用 API 网关,做流量控制、负载均衡或服务治理。在接口开放上可以去做 Open API 调用管控,在线试用跟鉴权。在接口交易上可以去做接口托管、转发跟计算计费以及订单管理。

3.8 监控:实时观察接口运行情况,及时异常告警

可以设置标准的接口监控指标,做更加灵活的监控配置,并对告警进行规则配置预设,当满足这些告警的预设条件时就会发送消息通知,包括手机短信、主流的 IM 工具,以及 Webhook。

在消息通知方面,我们认为不仅仅需要 DevOps 主流程的对接,而是要保证整个 DevOps 信息流的有效和及时传递,因此需要对 API 文档的变更、测试报告、监控告警,进行智能分发。例如进行分级推送、智能归纳、高风险标记等。

【重磅】DevOps 工作流对接 API 全生命周期管理全流程图

Part 4

不同规模团队如何落地实施

4.1 大规模团队:全 DevOps 周期的接口自动化

对于大规模团队来说,推荐基于 DevOps 全周期的接口自动化方案,需部署 Eolink Apikit 私有云版本。在这个方案中,可以把 Swagger 的 URL 自动同步到 Eolink Apikit,自动生成文档,进一步基于文档生成业务代码,然后发送到代码仓库,再去触发 CI 流水线,给文档打版本,做模糊测试,并把报告发送给对应的人员。

接下来在 CD 环节部署好服务之后,可以对环境进行预测试,并根据需求做压力测试,并把测试报告发送给对应的相关人员。除了 CICD,还可以集成 Eolink 的网关产品,对 API 进行运维管理。

4.2 小规模团队:高性价比的接口自动化

对于小规模团队来说,性价比更高的 SaaS 企业版,可以使用插件生成 API 文档上传 Eolink Apikit,并进行测试,自动生成测试用例。

目前该高性价比解决方案,已覆盖从设计、开发到构建、发布、部署的环节,对运维、监控、压力测试等环节尚且缺失,对于核心的 API 全自动化的管理流程已完全足够。

Part 5

总结

本文提出使用一体化的 API 管理平台在 DevOps 工作流中对 API 进行全生命周期管理,解决过去多个工具之间数据隔离、流程阻滞的问题。

API 全生命周期管理平台 Eolink Apikit 是结合 API 设计、文档管理、自动化测试、监控、研发管理和团队协作的一站式 API 研发协作平台,是 API 研发管理最佳实践产品,可以帮助个人开发者到跨国企业用户,快速、规范地对 API 进行全生命周期管理,提高研发效能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/418727.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

针对电商物流网络包裹应急调运与结构优化问题的解题【思路数据代码详解】

文章目录C 题 电商物流网络包裹应急调运与结构优化问题解题思路数据进行预处理将数据转换为 stationary 数据底部C 题 电商物流网络包裹应急调运与结构优化问题 (赛题出来以后第一时间在CSDN分享,文章底部) 最新进度在文章最下方卡片,加入获取思路数据代…

【Spring Cloud Alibaba】4.创建服务消费者

文章目录简介开始搭建创建项目修改POM文件添加启动类添加配置项添加Controller添加配置文件启动项目测试访问Nacos访问接口查看端点检查简介 接下来我们创建一个服务消费者,本操作先要完成之前的步骤,详情请参照【Spring Cloud Alibaba】Spring Cloud A…

深度学习代码,对coco数据集evaluate时,spice评估总是报错,解决如下:

在跑evaluate.py时,发现bleu,METEOR,ROUGE_L都能成功,就是spice评估总是报错,我的报错内容如下: 就找了好久,也问了chatgpt啥的,尝试很很多,最终发现是java版本太高了&am…

数字化转型导师坚鹏:金融机构数据治理政策解读及问题解决之道

金融机构数据治理政策解读及问题解决之道课程背景: 很多金融机构存在以下问题: 不知道如何准确理解银保监会数据治理相关政策及要求? 不清楚如何有效解决监管数据治理常见问题及提升之道? 不清楚如何有效落实银保监会数据治理相…

算法模板(2):数据结构(3) 复杂数据结构1

复杂数据结构(1) 1. Splay 基本概念 什么是 Splay Splay 是一种二叉查找树,它通过不断将某个节点旋转到根节点,使得整棵树仍然满足二叉查找树的性质,并且保持平衡而不至于退化为链. 旋转操作 为了使 Splay 保持平…

虚拟主持人是什么?有哪些应用场景?

虚拟主持人是一种通动作捕捉技术或人工智能等技术,来驱动虚拟形象模拟真实主持人的动作、声音和表情,为各种场合提供主持服务的数字化角色。虚拟主持人的外貌、服装、发型、口音等都可以根据客户的需求和喜好进行定制,甚至可以创建出具有明星…

冶炼金属(十四届蓝桥杯B组)(超级详细)

目录 1、冶炼金属 解法一:(二分算法) 解法二:(数学公式推导) 2、永远不要试图用拖延来期待事情发生改变!!! 1、冶炼金属 小蓝有一个神奇的炉子用于将普通金属 O冶炼成为一种特殊金属 X。 这…

OceanBase 4.1 发版 | 一个面向开发者的里程碑版本

欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/ 2022 年 8 月,OceanBase发布了 4.0 版本(小鱼),作为业内首个单机分布式一体化架构,兼顾了分布式架构的扩展性和集中式架构的性能优势&…

Iptables安全防火墙企业实战

1. IPtables入门简介 Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入和流出服务器的数据包进行很精细的控制。Iptables主要工作…

用通俗易懂的话来解释什么是Socket

前言 我在去年就学习过Java中Socket的使用,但对于Socket的理解一直都是迷迷糊糊的。看了网上很多关于Socket的介绍,看完还是不太理解到底什么是Socket,还是很迷。直到最近在学习计算机网络,我才对Socket有了一个更深地理解。之前…

sqoop数据导出、脚本使用

目录 准备表与数据 数据导出 脚本调用 准备表与数据 mysql表 CREATE TABLE user (id int(20),name varchar(20) )ENGINEINNODB DEFAULT CHARSETutf8; hive表 create table users( id bigint, name string ) row format delimited fields terminated by "\t";…

消息中间件RabbitMQ---Docker安装RabbitMQ、以及RabbitMQ的基本使用【二】

1、安装 1.1 拉取镜像 docker pull rabbitmq:management1.2 查看镜像 docker images1.3 创建容器 docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 rabbitmq:management1.4 浏览器访问 登录进去后的效…

【C++】16.红黑树

1.红黑树 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或B lack。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路 径会比其他路径长出俩倍,因而…

UNIAPP实战项目笔记60 前端使用token来验证是否已经登录

UNIAPP实战项目笔记60 前端使用token来验证是否已经登录 获取数据库中用户是否有token值,并存入 store.user.token中,有值代表已经登录 detail页面 通过验证token拦截未登录用户bin跳转到登录页面 实际案例图片 后端接口文件 index.js var express require(express); var rou…

Python-入门基础篇(1)

这里使用的编译器是pycharm 打开pycharm 新建项目 选择一个文件路径(文件名字不要带中文) 新建一个.py 文件 这里就要编写代码啦 Python入门最基础的一些函数 print() 该函数可以输出内容到控制台。在括号中输入要输出的内容,用逗号隔开…

RocketMQ延迟消息源码分析

写作目的 第一个原因:最近玩哔哩哔哩遇到一个RocketMQ的Contributor,一开始不知道他是Contributor,后来问到延迟消息的时候这块还不是很了解,他告诉我学习要系统,你既然了解事务消息那我理解应该也了解延迟消息&#…

BGP路由实验

要求1 使用 Preval 策略 [r4]ip ip-prefix PV permit 192.168.10.0 24 [r4]route-policy PV permit node 10 [r4-route-policy]if-match ip-prefix PV [r4-route-policy]apply preferred-value 100 [r4]route-policy PV permit node 20 [r4-bgp]peer 24.0.0.2 route-policy…

redis网络模型

用户空间和内核空间IO五种IO模型阻塞IO非阻塞IOIO多路复用selectpollepollweb服务流程信号驱动IO异步IOIO模型比较redis网络模型redis为什么是单线程redis单线程网络模型流程用户空间和内核空间 为安全,将用户应用和系统应用分隔开,产生用户空间和内核空…

thanos prometheus 的高可用、长期存储二进制部署

1.简介 http://thanos.io/ thanos 是具有长期存储功能的开源、高可用性 Prometheus的集群组件。 全局查询视图 跨多个 Prometheus 服务器和集群查询指标 无限保留 使用对象存储扩展系统,不限时间保留指标。 Prometheus兼容 兼容 Prometheus api,用于…

我在windows10下,使用msys64 mingw64终端

系列文章目录 文章目录系列文章目录前言一、MSYS2是什么?前言 msys2官网 MSYS2 (Minimal SYStem 2) 是一个MSYS的独立改写版本,主要用于 shell 命令行开发环境。 同时它也是一个在Cygwin (POSIX 兼容性层&#xff09…