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

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

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

1、DevOps 中 API 管理困境

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

困境一:规范落地执行难

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2、DevOps 中 API 管理需要什么

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

  • 规范化: 一个可配置规范、可自动根据规范生成 API 文档的 API 规范工具
  • 高协作: 一个接口相关状态自动流转、精准通知信息的 API 协作工具
  • 自动化: 一个低门槛、智能录入数据的 API 自动化测试工具
  • 高质量: 一个一站式接口全流程质量管理的 API 测试工具
  • 迭代快: 一个提供从项目级迭代计划,版本管控,到接口级历史记录的 API 管理工具
  • 工具链: 一个接口全生命周期且多种对外集成方式的 DevOps 工具

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

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 全生命周期管理全流程图

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

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

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

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

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

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

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

5、总结

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

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

如何在 DevOps 中进行 API 全生命周期管理?的更多相关文章

  1. [转载]DevOps建立全生命周期管理

    全生命周期管理(ALM)领域作为企业DevOps实践的总体支撑,应该说是DevOps领域中最为重要的实践领域,也是所有其他实践的基础设施.现在很多企业都非常重视CI/CD自动化工具的引入和推广,但是对 ...

  2. 微服务手册:API接口9个生命节点,构建全生命周期管理

    互联网应用架构:专注编程教学,架构,JAVA,Python,微服务,机器学习等领域,欢迎关注,一起学习. 对于API,在日常的工作中是接触最多的东西,特别是我们软件这一行,基本就是家常便饭了,在百度百 ...

  3. Akka(2):Actor生命周期管理 - 监控和监视

    在开始讨论Akka中对Actor的生命周期管理前,我们先探讨一下所谓的Actor编程模式.对比起我们习惯的行令式(imperative)编程模式,Actor编程模式更接近现实中的应用场景和功能测试模式 ...

  4. 浅析如何在Nancy中生成API文档

    前言 前后端分离,或许是现如今最为流行开发方式,包括UWP.Android和IOS这样的手机客户端都是需要调用后台的API来进行数据的交互. 但是这样对前端开发和APP开发就会面临这样一个问题:如何知 ...

  5. 详解服务器性能测试的全生命周期?——从测试、结果分析到优化策略(转载)

    服务器性能测试是一项非常重要而且必要的工作,本文是作者Micheal在对服务器进行性能测试的过程中不断摸索出来的一些实用策略,通过定位问题,分析原因以及解决问题,实现对服务器进行更有针对性的优化,提升 ...

  6. 从大厂DevOps工具链部署,看现代产品的生命周期管理

    目录 1. 认识DevOps 1.1. DevOps工具链 1.2. CI 持续集成(Continuous Integration) 1.3. CD(持续交付 & 持续部署) 1.4. Agi ...

  7. 三张图片详解Asp.Net 全生命周期

    用三张图片详解Asp.Net 全生命周期 下面我们使用三张图片解析ASP.net的整个生命周期,我总感觉使用图片更加的清楚的说明这种问题,所以使用的这样方式 说明: 1  第一张图片从全局说明从客户端 ...

  8. Spark Streaming源码解读之流数据不断接收和全生命周期彻底研究和思考

    本节的主要内容: 一.数据接受架构和设计模式 二.接受数据的源码解读 Spark Streaming不断持续的接收数据,具有Receiver的Spark 应用程序的考虑. Receiver和Drive ...

  9. 解读Spark Streaming RDD的全生命周期

    本节主要内容: 一.DStream与RDD关系的彻底的研究 二.StreamingRDD的生成彻底研究 Spark Streaming RDD思考三个关键的问题: RDD本身是基本对象,根据一定时间定 ...

  10. 【servlet】Servlet的API和生命周期]

    创建时间:6.15 一.Servlet的API(生命周期) (1)Servlet接口中的方法 1)init(ServletConfig config) 何时执行:servlet对象创建的时候执行 Se ...

随机推荐

  1. Linux让部署在服务器上的项目一直保持运行状态…&跑多个项目

    在idea通过package得到的.jar包或者.war包可通过 java -jar xxx.jar/xxx.war 命令直接在linux或者windows系统运行:   将打好包的项目放在linux ...

  2. DPDK在虚拟机上运行时,报错: Ethdev port_id=0 requested Rx offloads 0xe doesn't match Rx offloads capabilities 0x82a1d in rte_eth_dev_configure()

    这个错误是因为RX_OFFLOAD与TX_OFFLOAD可能不支持IPV4_CKSUM的检验 解决办法: 1,在配置中注释掉 DEV_RX_OFFLOAD_CHECKSUM 2,在代码中关闭 DEV_ ...

  3. RSA模数N因式分解

    模数N: 76190944763750744276324637081713604133996627079343036558766297773626553110133339218840357338899 ...

  4. .NET 6 的 docker 镜像可以有多小

    https://blog.csdn.net/sD7O95O/article/details/120135032 Docker Image Size - How to Keep It Small? ht ...

  5. Assert的使用和简单解释

    Assert 的简单使用 Document d = Jsoup.connect("http://www.baidu.com").get(); Assert.notNull(d, & ...

  6. 关于 ubuntu 22 desktop 安装 网易云音乐无法启动解决办法

    - 报错现象 /opt/netease/netease-cloud-music/netease-cloud-music: /opt/netease/netease-cloud-music/libs/l ...

  7. windows环境下本地项目(或gitlab上拉取项目)在Jenkins上自动打包部署 超超超详细!!!!!

    一.环境准备 1.下载jdk,官网:http://www.oracle.com/ 2.下载Jenkins,官网:https://www.jenkins.io/ 3.下载Tomcat,官网:http:/ ...

  8. tcpdump 对指定pod 进行抓包分析

    tcpdump kubectl get pod -n imas imas-chabot-759bc8c6cf-bvq7m -o json 获取到pod所在的容器信息,在对应的宿主机获取卡片信息. do ...

  9. FTP文件夹错误:【打开FTP服务器上的文件夹时发生错误。请检查是否有权限访问该文件夹】

    资源管理器访问FTP服务器报错,提示FTP文件夹错误:[打开FTP服务器上的文件夹时发生错误.请检查是否有权限访问该文件夹]. 详细信息: 200 Switching to ASCII mode. 2 ...

  10. TCP idle timeout 和TCP Keepalive 比较和分析

    TCP  idle timeout  和TCP Keepalive  是两个独立的功能. TCP  idle timeout  TCP  idle timeout  是系统TCP配置文件中的空闲超时设 ...