一种云原生开发组件系统转让专利

申请号 : CN202010860748.4

文献号 : CN111736827B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 赵岳峰庄智勇

申请人 : 长沙慧码至一信息科技有限公司

摘要 :

本发明提供了一种云原生开发组件系统,包括:微服务架构系统,用于构建云原生技术中台的微服务架构;融合系统,用于将多个开发工具进行组合并融合至所述微服务架构系统中;开发平台,用于基于所述微服务架构系统和融合系统获得云原生开发组件,并对所述应用或云原生开发组件进行复用;支撑平台,用于对所述云原生开发组件进行部署;构件市场,用于发布所述云原生开发组件的信息,并根据用户请求对组件进行授权分发。本发明用于帮助用户快速开发或部署基于Kubernetes云环境的相关应用软件与组件,同时提供一种云原生环境下的应用及组件授权分发的构建市场。

权利要求 :

1.一种云原生开发组件系统,包括:

微服务架构系统,用于构建云原生技术中台的微服务架构;

融合系统,用于将多个开发工具进行组合并融合至所述微服务架构系统中;

开发平台,用于基于所述微服务架构系统和融合系统获得云原生开发组件,并对所述云原生开发组件进行复用;

支撑平台,用于对所述云原生开发组件进行部署;

构件市场,用于发布所述云原生开发组件的信息,并根据用户请求对组件进行授权分发;

其中,所述构件市场包括市场站点模块和授权分发模块;其中,所述市场站点模块用于实现以下操作中的一种或多种:展示组件列表、搜索组件、发送和接收消息、用户注册、卖家中心、买家中心、显示组件详情;

所述授权分发模块组件用于对所述云原生开发组件进行授权分发;以及所述授权分发模块包括:

授权分发标的子模块,用于定义授权分发的受控对象;

授权分发保护范围子模块,用于配置授权分发的保护范围;

交互子模块,用于实现部署在所述支撑平台的云原生开发组件与云原生技术中台进行信息交互;

加密子模块,用于根据用户的注册信息,为用户分配公钥与私钥,所述公钥用于加密文件,所述私钥用于对加密后的文件进行解密;

签名子模块,用于采用所述私钥对所述云原生开发组件的镜像文件进行加密以形成数字签名。

2.根据权利要求1所述的云原生开发组件系统,其特征在于,所述微服务架构系统包括第一构建模块、第二构建模块、消息中间件、关系型数据库、组件运行模块和编排模块,其中:所述第一构建模块利用构建工具和组件库构建前端系统;

所述第二构建模块基于微服务后端的框架和基础代码开发架构构建后端系统;

所述消息中间件用于对异步消息进行处理;

所述关系型数据库用于实现分布式数据存储;

所述组件运行模块用于将组件服务运行于Docker容器上;

所述编排模块对所述Docker容器进行编排。

3.根据权利要求1所述的云原生开发组件系统,其特征在于,所述融合系统包括第一自动化模块、第二自动化模块、第三自动化模块和融合模块;其中,所述第一自动化模块用于对云原生技术中台的编码工具进行自动化操作;

所述第二自动化模块用于对构建工具进行自动化操作,所述第三自动化模块用于对测试工具进行自动化操作;

所述多个开发工具包括Docker、Kubernetes,所述融合模块用于将所述多个开发工具进行融合,并把融合结果作为所述云原生技术中台的部署工具。

4.根据权利要求3所述的云原生开发组件系统,其特征在于,所述融合系统还包括监控模块,所述监控模块通过调用所述云原生技术中台的各个链路,对云原生技术中台的运行过程进行实时监控。

5.根据权利要求1所述的云原生开发组件系统,其特征在于,所述开发平台包括组件定义模块和创建组件服务模块;其中,所述组件定义模块用于定义组件;其中,各组件之间的关系为松耦合方式;

所述创建组件服务模块根据组件模板创建组件服务。

6.根据权利要求1所述的云原生开发组件系统,其特征在于,所述支撑平台包括:组件服务部署模块,用于将组件的某一个版本部署至指定环境的操作;

流水线部署模块,用于实现以下操作中的一种或多种:创建或修改流水线名称、触发方式选择以及停用/启用流水线;

运行环境指定模块,用于设定当前应用项目下可用的运行环境;

配置信息部署模块,用于管理部署组件时所需的配置信息;

发布模块,用于根据所接收的分发授权,按照预设条件将所述云原生开发组件发布至所述构件市场。

7.根据权利要求6所述的云原生开发组件系统,其特征在于,所述开发平台还包括报告模块,所述报告模块用于报告以下信息中的一种或多种:组件的代码提交信息、组件构建信息以及组件的部署信息。

8.根据权利要求7所述的云原生开发组件系统,其特征在于,所述报告模块包括第一、第二、第三和第四展示子模块;其中,所述第一展示子模块用于展示当前应用项目中的代码提交信息;

所述第二展示子模块用于展示所选时间段某个组件每一次构建的时长或次数;

所述第三展示子模块用于展示当前应用项目下某一环境中各个组件部署时长信息;

所述第四展示子模块用于查看当前应用项目的测试状况。

说明书 :

一种云原生开发组件系统

技术领域

[0001] 本发明涉及云计算技术领域,具体涉及一种云原生开发组件系统。

背景技术

[0002] 目前的云原生应用或组件的目标产物一般是通过“Docker”镜像的方式发行,这种镜像发行模式极大地降低了应用部署的复杂度,但同时也带来的另外一个问题:授权与安全问题。这种情况导致很多优秀的商业软件不愿意对外提供基于镜像方式的分发,因为在云时代的今天,对产品的“Docker”镜像的再分发几乎是无任何约束能力的,这就像Windows10系统之前的所发布的系统一样,使得软件市场出现盗版、木马、后门等恶意行为。
[0003] 另外一个问题是:在云原生的开发方式下,由于应用的依赖组件都要求以运行时的方式存在,这在很大程度上也增加了开发门槛,因此,开发人员或团队不得不面临开发运行时环境的制约。

发明内容

[0004] 本发明实施例提供一种云原生开发组件系统,以解决现有技术中的至少一个技术问题。
[0005] 第一方面,本发明实施例提供一种云原生开发组件系统,包括:
[0006] 微服务架构系统,用于构建云原生技术中台的微服务架构;
[0007] 融合系统,用于将多个开发工具进行组合并融合至所述微服务架构系统中;
[0008] 开发平台,用于基于所述微服务架构系统和融合系统获得云原生开发组件,并对所述云原生开发组件进行复用;
[0009] 支撑平台,用于对所述云原生开发组件进行部署;
[0010] 构件市场,用于发布所述云原生开发组件的信息,并根据用户请求对组件进行授权分发。
[0011] 进一步的,所述微服务架构系统包括第一构建模块、第二构建模块、消息中间件、关系型数据库、组件运行模块和编排模块,其中:
[0012] 所述第一构建模块利用构建工具和组件库构建前端系统;
[0013] 所述第二构建模块基于微服务后端的框架和基础代码开发架构构建后端系统;
[0014] 所述消息中间件用于对异步消息进行处理;
[0015] 所述关系型数据库用于实现分布式数据存储;
[0016] 所述组件运行模块用于将组件服务运行于Docker容器上;
[0017] 所述编排模块对所述Docker容器进行编排。
[0018] 进一步的,所述融合系统包括第一自动化模块、第二自动化模块、第三自动化模块和融合模块;其中,
[0019] 所述第一自动化模块用于对云原生技术中台的编码工具进行自动化操作;
[0020] 所述第二自动化模块用于对构建工具进行自动化操作,
[0021] 所述第三自动化模块用于对测试工具进行自动化操作;
[0022] 所述多个开发工具包括Docker、Kubernetes,所述融合模块用于将所述多个开发工具进行融合,并把融合结果作为所述云原生技术中台的部署工具。
[0023] 进一步的,所述融合系统还包括监控模块,所述监控模块通过调用所述云原生技术中台的各个链路,对云原生技术中台的运行过程进行实时监控。
[0024] 进一步的,所述开发平台包括组件定义模块和创建组件服务模块;其中,[0025] 所述组件定义模块用于定义组件,其中,各组件之间的关系为松耦合方式;
[0026] 所述创建组件服务模块根据组件模板创建组件服务。
[0027] 进一步的,所述支撑平台包括:
[0028] 组件服务部署模块,用于将组件的某一个版本部署至指定环境的操作;
[0029] 流水线部署模块,用于实现以下操作中的一种或多种:创建或修改流水线名称、触发方式选择以及停用/启用流水线;
[0030] 运行环境指定模块,用于设定当前应用项目下可用的运行环境;
[0031] 配置信息部署模块,用于管理部署组件时所需的配置信息;
[0032] 发布模块,用于根据所接收的分发授权,按照预设条件将所述云原生开发组件发布至所述构件市场。
[0033] 进一步的,所述开发平台还包括报告模块,所述报告模块用于报告以下信息中的一种或多种:组件的代码提交信息、组件构建信息以及组件的部署信息。
[0034] 进一步的,所述报告模块包括第一、第二、第三和第四展示子模块;其中,[0035] 所述第一展示子模块用于展示当前应用项目中的代码提交信息;
[0036] 所述第二展示子模块用于展示所选时间段某个组件每一次构建的时长或次数;
[0037] 所述第三展示子模块用于展示当前应用项目下某一环境中各个组件部署时长信息;
[0038] 所述第四展示子模块用于查看当前应用项目的测试状况。
[0039] 进一步的,所述构件市场包括市场站点模块和授权分发模块;其中,[0040] 所述市场站点模块用于实现以下操作中的一种或多种:展示组件列表、搜索组件、发送和接收消息、用户注册、卖家中心、买家中心、显示组件详情;
[0041] 所述授权分发模块组件用于对所述云原生开发组件进行授权分发。
[0042] 进一步的,所述授权分发模块包括:
[0043] 授权分发标的子模块,用于定义授权分发的受控对象;
[0044] 授权分发保护范围子模块,用于配置授权分发的保护范围;
[0045] 交互子模块,用于实现部署在所述支撑平台的云原生开发组件与云原生技术中台进行信息交互;
[0046] 加密子模块,用于根据用户的注册信息,为用户分配公钥与私钥,所述公钥用于加密文件,所述私钥用于对加密后的文件进行解密;
[0047] 签名子模块,用于采用所述私钥对所述云原生开发组件的镜像文件进行加密以形成数字签名。
[0048] 本发明面向云原生软件开发、调试及部署场景提供一种云原生开发组件系统(使用工具固化),用于帮助用户快速开发或部署基于Kubernetes云环境的相关应用软件与组件,同时提供一种云原生环境下的应用及组件授权分发的构建市场。

附图说明

[0049] 图1为本发明实施例提供的一种云原生开发组件系统的结构示意图;
[0050] 图2为本发明实施例提供的一种云原生开发组件系统的具体构建结构示意图;
[0051] 图3为本发明实施例提供的一种支撑平台部署组件的流程示意图;
[0052] 图4本发明实施例提供的一种构建市场的应用场景示意图。

具体实施方式

[0053] 下面结合附图所示的各实施方式对本发明进行详细说明,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。
[0054] 下面将对本实施例出现的一些专业术语或缩写进行简要说明。
[0055] Vue:一套用于构建用户界面的渐进式JavaScript框架,以实现组件化。。
[0056] Element:基于 Vue 2.0 的桌面端组件库。
[0057] Spring Cloud:是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
[0058] Spring Boot:一种开源的轻量级框架。
[0059] REST :它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。
[0060] ActiveMQ:一种开放源代码消息中间件。
[0061] Kafka:一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。
[0062] Postgres:一种特性非常齐全的自由软件的对象-关系型数据库管理系统。
[0063] Redis :即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
[0064] Key-Value数据库:使用键值(Key-Value)存储数据库,这是一种NoSQL(非关系型数据库)模型,其数据按照键值对的形式进行组织、索引和存储。
[0065] Docker:一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
[0066] Kubernetes :简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用。
[0067] Git :一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
[0068] Gitlab :是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
[0069] POM:( Project Object Model),项目对象模型 。
[0070] Nexus3:一个文件服务器,可以用来存储jar, docker, npm等软件包,也可以存储其他文件格式。
[0071] Maven :一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
[0072] Jenkins:是一个开源自动化服务器... 作为一个可扩展的自动化服务器,Jenkins 可以用作简单的 CI 服务器,或者变成任何项目的持续交付中心。
[0073] CI:config, 用于对文件进行配置管理。
[0074] Docker Registry:Docker的一个重要组件,它是所有仓库(包括共有和私有)以及工作流的中央Registry。
[0075] JUnit:JUnit是一个Java语言的单元测试框架。
[0076] Selenium :是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。
[0077] selenium IDE:一种录制功能,可以详细的记录下你对Firefox浏览器的操作,并可实现你在浏览器中的操作回放。记录的测试脚本可以导出C#,Java,Ruby或Python等编程语言。
[0078] Selenium Remote Control:Selenium的编写及运行功能。
[0079] Selenium Grid:Selenium套件的一部分,它专门用于并行运行多个测试用例在不同的浏览器、操作系统和机器上。
[0080] Istio:大型微服务系统管理工具 。
[0081] Grafana:是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。
[0082] Promethues:是一个开源的服务监控系统和时间序列数据库。
[0083] GitOps:是一种快速、安全的方法,可供开发或运维人员维护和更新运行在 Kubernetes 或其他声明式编排框架中的复杂应用。
[0084] Helm: 是 Kubernetes 的软件包管理工具。
[0085] Gitflow:定义了一个项目发布的分支模型,为管理具有预定发布周期的大型项目提供了一个健壮的框架。Gitlabflow:将git工作流与问题跟踪系统集成的分支模型。
[0086] Githubflow:是一个轻量级,基于分支的工作流,其支持团队和项目的定期部署。
[0087] mocha :是JavaScript的一种单元测试框架,既可以在浏览器环境下运行,也可以在Node.js环境下运行。
[0088] chai :是一个针对 Node.js 和浏览器的行为驱动测试和测试驱动测试的诊断库,可与任何 JavaScript 测试框架集成。
[0089] TestNG :API接口自动化的一种测试框架,是一个测试 Java 应用程序的新框架。
[0090] Assured :API接口自动化的另一种测试框架。
[0091] yaml格式:是一个可读性高,用来表达数据序列化的格式。
[0092] 本实施例利用云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。
[0093] 参见图1,图1是本发明实施例提供的一种云原生开发组件系统的结构示意图,该系统包括:
[0094] 微服务架构系统,用于构建云原生技术中台的微服务架构;
[0095] 融合系统,用于将多个开发工具进行组合并融合至所述云原生技术中台的微服务架构中,以实现所述开发运维工具的自动化操作;
[0096] 其中,所述开发运维工具链的自动化实现是整个云原生应用实现的核心,对应生命周期的每个阶段都可以选择开源工具框架。云原生技术中台融合了多个敏捷开发自动化的开源工具,在这些工具与框架上结合平台整合的经验提供自动化能力。自动化过程在不同阶段的工具使用不同的编程语言,需要不同的运行环境(OS、数据库、中间件服务器等)。
[0097] 本实施例选取了如下的工具集的组合来落地实施云原生应用开发/运维/部署等过程,并且通过云原生技术中台的融合能力,将不同的工具融合到云原生技术中台流程中,用户仅需简单的配置即可使用,即可开始敏捷迭代自动化过程;
[0098] 开发平台,用于基于所述微服务架构系统和融合系统并根据预先创建的组件获得云原生开发组件,并对所述云原生开发组件进行复用;所述云原生开发组件作为交互载体是面向开发者的使用工具,承载着开发者用户与云原生技术中台交互,开发平台由完整的web应用实现;
[0099] 支撑平台,用于对所述云原生开发组件进行部署;
[0100] 构件市场,用于发布所述云原生开发组件的信息,并根据用户请求对组件进行授权分发。
[0101] 结合图1和图2,其中,所述微服务架构系统包括第一构建模块、第二构建模块、消息中间件、关系型数据库、组件运行模块和编排模块,其中,
[0102] 所述第一构建模块利用构建工具和组件库构建前端系统;
[0103] 具体的,所述前端系统可利用Vue和Element进行构建,利用Vue封装的JAVASCRIPT库以快速构建云原生技术中台的前端的用户界面;其中,所述用户界面包括云原生技术中台的前端页面和组件市场的前端页面;利用Element提供的Vue组件库以提升前端开发效率。
[0104] 所述第二构建模块基于微服务后端的框架和基础代码开发架构构建后端系统,具体的,将Spring Cloud作为云原生技术中台的微服务后端的框架,将 Spring Boot作为基础代码开发架构,以构建云原生技术中台的后端平台,通过构建后端系统可以实现云原生技术中台的服务治理、服务注册与发现、负载均衡、数据监控以及REST API 发布方式等。
[0105] 所述消息中间件,用于对异步消息进行处理;优选的,可以将 ActiveMQ/Kafka作为消息中间件,以对异步消息进行处理。
[0106] 所述关系型数据库用于实现分布式数据存储;本实施例中可采用 Postgres 作为数据服务层的关系型数据库,以实现分布式数据存储;采用Redis 作为数据服务层的缓存库,以实现基于内存持久化的日志型、Key-Value 数据库。
[0107] 所述组件运行模块用于将组件服务运行于Docker容器上;本实施例中的各个组件服务均以容器的方式运行在 Docker 上,利用Docker实现组件服务容器化的方式,以实现开发者打包组件以及依赖包到云环境的容器运行的运行环境。
[0108] 所述编排模块对所述Docker容器进行编排,优选的,本实施例中的云原生技术中台利用 Kubernetes 对Docker容器进行编排和管理,并采用实现跨主机群集自动部署,扩展和操作应用程序容器,提供以容器为中心的基础架构。
[0109] 所述融合系统包括第一自动化模块、第二自动化模块、第三自动化模块、融合模块和监控模块;其中,
[0110] 所述第一自动化模块用于对云原生技术中台的编码工具进行自动化操作;
[0111] 具体的,本实施例中,采用Git 和 Gitlab 作为代码的管理和托管工具,同时使用 Maven 作为项目代码的组织和管理工具;其中,Git用以实现分布式版本控制,实现有效、高速的处理项目版本管理;GitLab用以完善Git 的仓库管理,并提供完整的web服务应用,扩展部分代码管理功能;Maven 用以实现对项目对象模型(POM)按照描述信息来管理项目的构建,报告和文档;优选的,同时采用Nexus3搭建本地私仓套件平台,以保障开发过程的协作与高效。
[0112] 所述第二自动化模块用于对构建工具进行自动化操作,所述构建工具包括持续集成工具和镜像存放库,将所述持续集成工具和镜像存放库进行融合,以实现自动化和版本的控制;
[0113] 具体的,对云原生平台的工具自动化,云原生技术中台在构建阶段,可以采用jenkins作为持续集成工具,通过配置文件管理CI 过程,提供持续集成与交付;
[0114] 所述第三自动化模块用于对测试工具进行自动化操作;
[0115] 具体的,本实施例中,云原生技术中可采用多个代码检查和测试工具;
[0116] 例如,JUnit 作为后端系统Java 代码的测试工具,采用Junit实现Java 语言的单元测试框架;
[0117] Selenium 作为前端系统的测试工具,采用Selenium可以实现一整套web应用程序测试系统,主要实现测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。
[0118] 所述多个开发工具包括Docker、Kubernetes,所述融合模块用于将所述多个开发工具进行融合,并把融合结果作为云原生技术中台的部署工具;
[0119] 具体的,本实施例中,将 Docker、Kubernetes进行融合并把融合结果作为云原生技术中台的部署工具,以实现该云原生平台的部署和运营自动化;其中,Docker为用于实现可移植的容器标准;Kubernetes用于提供以容器为中心的基础架构。
[0120] 所述监控模块通过调用所述云原生平台的各个链路,对云原生技术中台的运行过程进行实时监控;
[0121] 具体的,本实施例中,对云原生技术中台的监控包括了从开发到服务的运行的全生命周期的状态、反馈、监控等,以帮助开发和运营管理更好的提升效能;采用Istio实现分布式链路的调用监控,并聚合业务系统以调用延迟数据,从而对链路调用进行全面的监控跟踪;采用Grafana实现数据展现可视化,并实现混合多种风格支持多个数据源特点;采用Promethues实现报警机制和时序列数据库;通过上述对云原生技术中台的运行过程进行实时监控,实现了自动化地对云原生技术中台进行监控。
[0122] 在获得开发工具前,需要为开发平台的管理员分配操作权限,管理员的工作接入是开发平台运行不可缺少的一个环节,主要用于对开发平台进行运维,所述开发平台包括权限分配模块,所述权限分配模块包括以下子模块:
[0123] 平台概述子模块:用于总览开发平台中人数情况、事务执行情况、邮件发送情况、系统公告以及操作记录。
[0124] 角色管理子模块:角色是一组特定权限的集合,该角色管理子模块通过给成员分配角色来赋予成员权限。
[0125] 用户管理子模块:用于对开发平台中的全部用户进行系统的管理。
[0126] 事务管理子模块:用于实现分布式环境下高性能事务的一致性。
[0127] 邮箱与日志子模块:用于查看系统发送邮件的列表记录及状态。
[0128] 消息服务子模块:用于对云原生技术中台与用户之间必要交互的方式、内容进行管理,例如进行创建消息模板、发送设置。
[0129] 查看子模块:用于查看开发平台运行微服务下的实例以及实例详情。
[0130] 接口/统计子模块:通过调用特定的API以获取输出结果,并记录系统的响应;查看开发平台中api的调用情况。
[0131] 通用功能管理子模块:用于进行菜单管理、系统公告、外观自定义等。
[0132] 进一步的,在对管理员分配操作权限后,还需要对开发平台的应用项目进行定义;所述开发平台还包括应用项目模块,所述应用项目模块用于管理开发成员在项目中进行迭代规划、组件服务开发、组件服务部署、敏捷化测试等;其中,所述应用项目模块还包括以下子模块:
[0133] 应用项目创建子模块:用于创建应用项目的名称、编码、创建人和时间等。
[0134] 邀请子模块:该邀请子模块可以生成邀请二维码,并将该邀请二维码发送至其他注册开发者,开发者扫描所述二维码以确认加入此应用项目团队,共同开发本应用项目下的组件。
[0135] 环境管理子模块:环境是平台中部署资源的载体,即开发者用户可以在环境中部署组件服务或其他资源,一个环境对应为k8s集群中的一个名字空间(namespace)。平台实现环境创建和管理分组、环境,以及查看GitOps日志、管理部署配置、权限分配和资源安全设置。包括对环境的操作:环境分组管理-环境管理-部署配置管理。
[0136] 依赖管理子模块:用于指定开发平台所提供的运行时依赖组件,即开发平台内置的基础服务功能(网关、 单点登录、统一用户、统一权限、统一待办、组织机构、可视化流程、文件服务、安全审计等等)与组件市场提供的依赖组件。
[0137] 所述开发平台包括组件定义模块和创建组件服务模块,用于对组件和代码进行管理,涵盖开发过程中所有可在开发平台中进行的操作实现。
[0138] 所述组件定义模块,用于定义组件,各组件之间的关系为松耦合方式;本实施例所定义的组件是指满足特定需求的程序代码集合,一个应用可以包含多个组件,每一个组件都是一个独立的服务,实现某一类具体的功能独立部署。组件仅关注于完成一部分任务代表一个小的业务模块,各组件之间关系是松耦合的。
[0139] 所述创建组件服务模块:根据组件模板(前端、后端)创建组件服务。平台在GitLab中生成对应的代码仓库,作为整个开发过程的基础。关键信息键入,组件名称:组件的自定义名称,在项目下唯一;组件编码:组件的自定义编码,Gitlab 仓库的地址根据编码组合构成,保证编码是唯一且不可修改的。
[0140] 进一步的,所述开发平台还包括编辑模块,用于对组件进行基本操作与配置维护,创建者可通过修改、启停、删除组件等操作进行管理,基本操作包括:修改、删除、启用/停用(停用状态下的组件不支持修改与部署操作);配置维护包括Docker仓库与helm仓库地址修改。
[0141] 进一步的,所述开发平台还包括组件版本模块,根据组件版本规则生成组件版本,该组件版本用于支持多种分支管理模型,例如Gitflow、Gitlab-flow、Github-flow等分支管理模型。默认有master、hotfix、develop、feature、release等5种类型的分支,通过这些分支的不同组合,对应不同的管理需求。组件版本生成规则例如为:本地Commit代码的时间格式为年.月.日-时分秒 + 当前提交分支名,例如:2020.6.6-132312-release[0142] 进一步的,所述开发平台还包括代码仓库,平台中每个组件均会有一个对应的GitLab代码仓库,用于存储该组件服务下所有的代码及其提交历史;同时,每个代码仓库还支持开发人员通过Git持续不断地在此推拉代码来实现敏捷开发与持续交付。
[0143] 进一步的,所述开发平台还包括分支管理模块,创建分支,以将开发任务从主线上进行分离,以免影响主线。开发平台主要使用 GitLab 进行分支管理。目前开发平台中支持的分支类型为:master、hotfix、develop、feature、release;开发者用户还可以根据需求,创建自定义类型的分支。
[0144] 开发平台以github-flow分支管理策略为主,提供web页面操作git后台命令包括:创建、提交、合并、推送等。
[0145] 进一步的,所述开发平台还包括合并请求模块,该合并请求模块根据合并请求以及查看分支上提交的源代码将分支的代码合并至另一分支上,这是开发平台代码协作和版本控制的基础。开发平台整合GitLab进行相关操作后,请求相关数据,合并请求列表数据将更新。所述合并请求包括:合并请求的标题、合并请求的编码。合并请求列表数据根据编码可以倒序排序;标明了合并源分支到目标分支的方向(通过分支管理可以了解更多分支定义);包含创建该合并请求的作者以及创建时间;对比目标分支,源分支新增的提交数;合并请求状态更新的时间。
[0146] 进一步的,所述开发平台还包括持续集成模块,开发平台持续集成引擎工作原理是将小代码块推送到Git存储库中托管的组件程序代码库,并在每次推送时运行脚本管道,以便在将代码更改合并到主分支之前进行构建,测试和验证代码更改。持续集成相关的信息包括:集成的状态成功、失败、运行中等;最新一次提交的提交编码及提交信息,以及触发的分支;持续集成的阶段是在Jenkins里定义的。
[0147] 进一步的,所述开发平台还包括检测模块,用于对代码质量进行检测,本实施的开发平台采用SonarQube检测代码质量,以保障组件服务代码的健康,从而实现了代码可靠性、可维护、覆盖率、组件代码的重复度。
[0148] 进一步的所述开发平台还包括报告模块,所述报告模块用于报告以下信息中的一种或多种:组件的代码提交信息、组件构建信息以及组件的部署信息;具体的,[0149] 在所述开发平台的实际运营中包含了辅助项目进行管理的各种报表,例如敏捷开发报表可以通过各种直观的图表展示某个项目下关于的各种指标,实现各个组件的代码提交情况、组件构建情况以及组件的部署情况,具体的,例如代码提交图、构建次数图、构建时长图、部署次数图和部署时长图等;
[0150] 所述报告模块包括第一、第二、第三和第四展示子模块;其中,
[0151] 所述第一展示子模块用于从组件和成员两个维度展示出团队与个人在此项目中的代码提交信息;
[0152] 所述第二展示子模块,从组件的维度展示所选时间段某个组件每一次构建的时长/次数,这将帮助用户更为直观地了解组件构建的效率;
[0153] 所述第三展示子模块用于展示当前应用项目下某一环境中各个组件部署时长等部署相关的信息,这有助于用户了解应用项目中的各个组件的部署情况;
[0154] 所述第四展示子模块用于查看当前应用项目的测试状况,例如可以查看当前应用项目的测试追踪性报告;进一步的,还可以同时可以从版本、模块、标签、时间等多方面展示测试状况。
[0155] 进一步的,在获得开发工具后,还需要对开发工具进行测试,所述开发平台还包括测试模块,开发平台提供测试用例管理、测试循环、测试分析等,可以有效地提高软件测试的效率和质量,提高测试的灵活性和可视化水平,最终减少测试时间,让开发者用户将主要精力放到软件功能构建上。
[0156] 所述测试模块包括测试用例管理模块和自动化测试模块,所述测试用例管理模块用于建用例测试、分配给测试人员执行、记录测试结果以及提交关联Bug;其中,测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。测试用例功能能够帮助企业管理用例测试的过程,沉淀测试记录和结果,实现随时回溯和量化考核;
[0157] 所述自动化测试模块根据测试框架对运行测试代码进行相应的测试,所述测试框架为 mocha 与 chai API测试框架 或 TestNG 与Assured种API测试框架,所述自动化测试通过执行以下操作对运行测试代码进行测试:创建自动测试;关联测试用例;配置信息;执行测试;查看测试结果。
[0158] 更进一步的,在测试完成后,所述支撑平台对对所述云原生开发组件进行部署,部署功能包括对实例的启停、状态监控、版本控制以及容器管理,同时还包括对部署后产生的各种其他资源的管理,例如网络、域名、证书、配置映射以及密文。
[0159] 参见图2,开发者/团队用户在申请开发平台使用平台审批通过后,开发者可以获得完整的云原生开发部署调试工具环境,此环境包括基础服务组件产品:服务网关、单点登录、权限验证、动态配置等核心服务,可以快速的搭建应用和组件。开发平台的主要功能包括:应用/组件创建配置管理、开发团队成员管理、安全密匙管理等功能,通过该开发平台开发出的云原生开发组件可以发布到构建市场中。
[0160] 所述支撑平台具体可包括:
[0161] 组件服务部署模块,用于将组件的某一个版本部署至指定环境的操作;本实施例可以通过预置多个部署任务或卡点任务对组件进行自动化部署,以支持创建CD(Continuous Deployment,持续部署)流水线;或者也可以通过手动部署方式对组件的某一个版本进行部署(包括可视化与一键式的手动部署方式),一般的,手动部署方式的过程为:选择组件-选择版本-选择环境-实例名修改-选择/修改部署配置(yaml格式)。
[0162] 流水线部署模块,用于实现以下操作中的一种或多种:创建或修改流水线名称、触发方式选择以及停用/启用流水线。
[0163] 运行环境指定模块,用于设定当前应用项目下可用的运行环境(例如:k8s云环境)。
[0164] 配置信息部署模块,用于管理部署组件时所需的配置信息(包括流水线中的自动部署任务),组件创建成功后的部署配置将能在部署组件的过程中进行选择与使用。
[0165] 发布模块,在应用或者组件服务开发完成后,用于根据所接收的分发授权,按照预设条件将所述云原生开发组件发布至所述构件市场;具体的,发布模块将云原生开发组件发布至构件市场后,云原生技术中台根据依赖的基础服务给予该云原生开发组件分发授权,按照时间(一年、两年…)约定开发者承担运行时组件依赖的费用。
[0166] 本实施例的支撑平台提供全程操作前端界面可视化、分多步骤一键式管理部署,目前支持部署到Docker容器。该支撑平台的部署提供多种云环境的接入,支持主流技术模板或者自由组装,支持并行部署和流水线无缝集成,实现部署环境标准化和部署过程自动化。
[0167] 该支撑平台具有以下特点:
[0168] 预置目前市场主流技术等系统模板快速创建任务,提供多个原子步骤自由组合与编排任务的组装;
[0169] 单个部署应用/组件可以同时部署到不同的云环境,也可以部署在用户的私有云环境。每个单个部署步骤独立输出清晰日志,假如部署过程失败,能够精准定位原因并解决问题;
[0170] 支持用户自定义的模板;
[0171] 支持进行动态执行根据用户在平台设置的参数;支持无缝集成流水线部署,支持执行参数流水线。
[0172] 参见图3,图3为本发明实施例提供的一种支撑平台部署组件的流程示意图; 用户通过平台上传、或者编译构建任务,将镜像保存到容器镜像仓中;部署任务将镜像上传到云容器镜像集群中。
[0173] 该支撑平台可以起到整体的衔接、注册、管理流程,不涉及具体的云环境。
[0174] 在本实施例中,构件市场是指:上述开发环境用户可以通过云原生技术中台的开发环境自建应用或组件,然后发布到该构件市场,发布后可分为公开销售或向客户销售专用软件;开发用户也可以通过构件市场购买成熟应用或组件的开发授权以作为该开发用户的应用或组件的依赖组件。
[0175] 所述构件市场包括市场站点模块和授权分发模块;其中,
[0176] 所述市场站点模块用于实现以下操作中的一种或多种:展示组件列表、搜索组件、发送和接收消息、用户注册、卖家中心、买家中心、显示组件详情等;市场站点模块功能为典型的web服务应用,可以由现有技术中的java主流技术栈实现,本实施不再具体说明;
[0177] 所述授权分发模块组件用于对对所述云原生开发组件进行授权分发。
[0178] 进一步的,所述授权分发模块包括:
[0179] 授权分发标的子模块,用于定义授权分发的受控对象;本实施例中的受控对象为一组Kubernetes资源的文件集合,这一组文件集合可以是部署单一功能的组件,比如memcached pod;也可以是实现复杂业务功能的应用,比如完整的具有HTTP服务,数据库,缓存等的Web应用程序堆栈。
[0180] 授权分发保护范围子模块,用于配置授权分发的保护范围;其中,所述保护范围包括:开发平台的开发人员对授权分发标的依赖引用、组件市场购买开发者发布的应用或者组件、市场企业用户部署来自合作开发商发布的专用生产授权应用或组件;其它如:通过其它途径获取、破解等均不受授权分发机制保护。
[0181] 交互子模块,用于实现部署在所述支撑平台的云原生开发组件与云原生技术中台进行信息交互(即将部署在生产环境的云原生开发组件与云原生技术中台进行信息交互);由于部署在生产环境的应用与组件的Kubernetes资源的文件集合中包含了定期检查镜像,在运行过程中会定期(例如:每月或者每3月)与云原生技术中台进行信息交互,以此保障此应用或者组件是否还在授权期间。
[0182] 加密子模块,用于根据用户的注册信息,为用户分配公钥与私钥,所述公钥用于加密文件,所述私钥用于对加密后的文件进行解密;本实施例中,用户注册云原生技术中台后,平台根据注册信息分配给每一个用户平台公钥与私钥,用户妥善保存私钥。开发平台在信息发送前使用所述公钥加密文件,用户接收到加密后的文件采用所述私钥对加密文件进行解密。签名子模块,用于采用所述私钥对所述云原生开发组件的镜像文件进行加密以形成数字签名;具体的,为确保应用或者组件是否通过开发平台发送,所有的应用或者组件镜像文件生成摘要,该签名子模块采用私钥对所述摘要进行加密以形成数字签名,将该数字签名附加在镜像文件的集合当中中,用户通过所述公钥对所述数字签名进行解密,将解密后的文件与所述摘要确保源头为云原生技术中台。
[0183] 开发平台采用加密与签名主要保护以下两个场景从而保障所述组件市场的授权分发:
[0184] 1)保障市场买家获取的应用或者组件是来自云原生技术中台。
[0185] 2)保障运行中的应用或者组件在授权期间的检查过程中能够实现签名加密。
[0186] 上述构件市场是一个面向开发者与使用者提供云原生应用与组件服务能力的集市, 参见图4,图4本发明实施例提供的一种构建市场的应用场景示意图,开发者/团队通过申请、审核、沟通、入住市场并发布自己的基于云原生的构件与应用;使用者(购买方)通过构建市场获得需要的应用与构件。
[0187] 通过提供者的发布到购买使用者的获取使用形成构建市场完整的闭环,构件市场平台提供构件的安全保障与授权分发,提供者与购买者完成交易互相评价。
[0188] 同时云原生构件市场是一个管理平台,对发布到市场的云原生应用/构件进行基本的分类管理如:电子商务、金融理财、人工智能、生活服务、企业管理等。
[0189] 本发明通过提供一套完整的云原生开发部署调试一体化开发平台工具环境,实现开发用户可以通过工具环境自建应用或组件,然后发布到构件市场,发布分为公开销售或客户专用。开发用户可以通过构建市场购买成熟应用或组件的开发授权作为开发依赖。
[0190] 另外,针对生产环境部署用户提供的一套完整的云原生运行支撑平台,部署用户可以直接购买构件市场上的公开应用或组件的生产授权进行生产部署。
[0191] 部署用户也可以直接部署来自合作开发商发布的专用生产授权应用或组件,此时开发商承担应用或组件的依赖相关的授权费用。
[0192] 应用或组件发布时先经过市场的安全检测机制并进行特征签名,之后再进行开发商的授权加密;任何购买授权部署的运行环境都会根据其环境特征签发授权,平台运行部署组件时检查应用或组件的安全特征及授权是否合法。
[0193] 通过在开发平台或支撑平台中提供安全可靠的基础组件来约定云原生开发规范来降低云原生开发门槛,把云原生开发服务模式通过组件积木市场化(类似于苹果的AppStore)的运作机制从而达成多方共赢的目标。
[0194] 本发明具有以下优点:
[0195] 本发明面向云原生软件开发、调试及部署场景提供一种云原生开发组件系统(使用工具固化),用于帮助用户快速开发或部署基于Kubernetes云环境的相关应用软件与组件,同时提供一种云原生环境下的应用及组件授权分发的构建市场。
[0196] 本发明承接着云原生生态各个链条产品的落地。站在用户维度,注册为开发者提供围绕云原生产品的软件应用及服务,包括基础软件、服务、安全、企业应用、建站、解决方案、数据智能等等;市场还提供完备的服务监管,从售前、交易到售后保障企业用户利益,为企业用户提供安全、安心、丰富、有保障的云原生商品。
[0197] 本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0198] 在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0199] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0200] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0201] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。 而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0202] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。