CN111857762A - 微服务更新系统 - Google Patents
微服务更新系统 Download PDFInfo
- Publication number
- CN111857762A CN111857762A CN201910361495.3A CN201910361495A CN111857762A CN 111857762 A CN111857762 A CN 111857762A CN 201910361495 A CN201910361495 A CN 201910361495A CN 111857762 A CN111857762 A CN 111857762A
- Authority
- CN
- China
- Prior art keywords
- microservices
- subset
- microservice
- service
- code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明提出了一种微服务更新系统,其包括构建调度器系统,所述构建调度器系统接收微服务修改请求,识别包括在提供服务的多个微服务中的第一微服务。所述构建调度器系统随后为每一个第一微服务触发相应微服务管道。持续集成系统经由为每一个第一微服务触发的所述相应管道接收关于所述每一个第一微服务的相应微服务修改代码,并且更新相应服务代码的第一部分。所述持续集成系统随后测试已更新服务代码,以便测试:所述第一微服务,其通过所述已更新服务代码的第一部分提供;以及,第二微服务,其包括在提供所述服务的所述多个微服务中,该第二微服务通过未作为所述更新的一部分而被更新的所述已更新服务代码中的至少一个第二部分提供,并且其依赖于至少一个所述第一微服务。
Description
背景技术
本公开内容主要涉及信息处理系统,并更具体是涉及更新启用由信息处理系统所提供的服务的微服务。
随着信息的价值和使用不断提高,个人和企业都在寻求其他处理和存储信息的方式。用户的一个可能选项是信息处理系统。信息处理系统通常为商业、个人或其他目的处理、编译、存储和/或传达信息或数据,从而允许用户利用信息的价值。由于在不同用户或应用之间的技术和信息处理需求和要求不同,信息处理系统也可能有所差别,这与以下项相关:要处理何种信息;如何处理信息;有多少信息要处理、存储或传递;以及,可以多么快速且有效地处理、存储或传递信息。对信息处理系统进行变化,这允许信息处理系统可以是通用的或是用于特定用户或特定用途,比如金融交易处理、机票预订、企业数据存储或或全球通信。此外,信息处理系统可以包括各种硬件和软件组件,这些硬件和软件组件可被配置为处理、存储和传递信息,并且可以包括一个或多个计算机系统、数据存储系统和联网系统。
信息处理系统,例如一个或多个联网的服务器设备(有时称为“云服务器”),有时用于向客户系统提供服务。传统上,此类服务通过由联网的服务器设备运行的“单片(monolithic)”应用所提供,则本领域技术人员将会认识到此类单片应用是单层(single-tiered)软件应用,在其中,软件应用的组件(例如,用户界面、数据访问代码等等)被组合/集成到单个平台的单个程序中,其为自容式的并且独立于其他计算应用。因此,单片应用操作以执行提供期望功能所必需的每一个步骤/操作,并且被设计为非模块化的。然而,单片应用正在由微服务所取代,本领域技术人员将会认识到所述微服务是由软件开发技术所提供的,其将通过联网的服务器设备所提供的服务构造为一个经由轻量协议操作的、松散连接的、细粒度的微服务的集合体,其提供模块化,使得服务更容易理解、开发和测试,同时还提供了针对架构侵蚀的弹性。此外,使用微服务使得自主团队能够独立开发和扩展其相应的微服务,同时允许出现任何个体微服务的架构,这是通过持续的重构和/或更新,实现提供服务的微服务的持续集成、交付和部署。
然而,对通过以上讨论的微服务所提供的服务的传统更新存在许多问题,这是因为传统服务更新技术是被设计用于以上所讨论的单片应用的,并因此在触发更新/构建时要提供关于服务的代码库中所有代码的更新。虽然此种服务更新技术对于单片应用而言是非常重要的,但其会为以上所讨论的面向微服务的架构带来大量低效率的问题,在所述架构中微服务可作为离散的代码模块被提供。例如,当开发人员对其微服务进行代码改变时,该代码改变通常将仅仅会影响提供服务的微服务的一个子集(例如单个微服务,以及在某些情况下与该微服务相关的一个或多个微服务)。然而,在提交代码改变时所触发的更新/构建会导致关于所述服务的整个代码库的重构,并由此重构由该代码库所提供的所有微服务,其中包括许多未被修改的微服务和与所修改的微服务无关的微服务。因此,响应于对其微服务中的一个或多个的修改而做出的传统服务更新是低效率的,其中相对较长的构建时间与单个微服务的修改相关,其消耗可能阻碍或限制执行并行的构建操作的能力的、相对大量的资源。
因此,需要提出一种得到改善的微服务更新系统。
发明内容
根据一个实施方式,信息处理系统(IHS)包括:处理系统;以及,存储系统,其耦连至处理系统并且包括在由处理系统执行时会导致处理系统提供持续集成引擎的指令,所述持续集成引擎被配置为:为被配置成提供服务的多个微服务中所包括的微服务第一子集中的每一个微服务接收用于所述微服务第一子集中的每一个微服务的相应微服务修改代码,并且针对所述微服务第一子集已请求了修改;使用用于微服务第一子集中的每一个微服务的相应微服务修改代码来更新服务代码中的至少一个第一部分,其提供用于服务的微服务第一子集,其中所述更新提供已更新服务代码;以及,测试已服务代码,以便测试:微服务第一子集,其通过已更新服务代码中的至少一个第一部分所提供;以及,微服务第二子集,其由被配置为提供服务的多个微服务所包括,其通过未作为更新的一部分而被更新的已更新服务代码的至少一个第二部分来提供,并且依赖于微服务第一子集中的至少一个微服务。
附图简述
图1是示出了信息处理系统(IHS)的一个实施方式的示意图。
图2是示出了微服务更新系统的一个实施方式的示意图。
图3是示出了在图2的微服务更新系统中所提供的构建调度器系统的一个实施方式的示意图。
图4是示出了在图2的微服务更新系统中所提供的持续集成系统的一个实施方式的示意图。
图5A是示出了用于更新微服务的方法的一部分的实施方式的流程图。
图5B是示出了用于更新微服务的方法的一部分的实施方式的流程图。
图6是示出了在图2的微服务更新系统中所提供的开发人员系统上显示的代码库屏幕的实施方式的示意图。
图7是示出了在图2的微服务更新系统中所提供的开发人员系统上显示的微服务更新结果屏幕的实施方式的示意图。
图8是示出了在图2的微服务更新系统中所提供的开发人员系统上显示的微服务更新结果屏幕的实施方式的示意图。
具体实施方式
出于本公开的目的,信息处理系统可包括任何工具或工具集合,其可操作以计算、算数、确定、分类、处理、发送、接收、检索、发起、切换、存储、显示、通信、表明、检测、记录、再现、处理或利用用于商业、科学、控制或其他目的任何形式的信息、情报或数据。例如,信息处理系统可以是个人电脑(例如,台式机或笔记本电脑)、平板电脑、移动设备(例如,个人数字助理(PDA)或智能电话)、服务器(例如,刀片服务器或机架服务器)、网络存储设备或者任何其他合适的设备,并且可在尺寸、形状、性能、功能或价格上有所变化。信息处理系统可包括随机存取存储器(RAM)、一个或多个处理资源(比如中央处理单元(CPU)或硬件或软件的控制逻辑)、ROM和/或其他类型的非易失性存储器。信息处理系统的附加组件可包括一个或多个硬盘驱动器、一个或多个用于与外部设备通信的网络端口以及各种输入和输出(I/O)设备,比如键盘、鼠标、触摸屏和/或视频显示器。信息处理系统还可包括一个或多个总线,其可操作以便在各种硬件组件之间传输通信。
在一个实施方式中,IHS 100(图1)包括处理器102,其连接到总线104。总线104用作在IHS 100的处理器102与其他组件之间的连接。输入设备106耦连至处理器102以便向处理器102提供输入。输入设备的示例可包括键盘、触摸屏、定点设备(比如鼠标、轨迹球和触控板)和/或本领域中已知的各种其他输入设备。程序和数据被存储在大容量存储设备108上,其耦连至处理器102。大容量存储设备的示例可包括硬盘、光盘、磁光盘、固态存储设备和/或本领域中已知的各种大容量存储设备。IHS 100还包括显示装置110,其通过视频控制器112耦连至处理器102。系统存储器114耦连至处理器102从而为处理器提供快速存储设备,从而有利于通过处理器102执行计算机程序。系统存储器的示例可包括随机存取存储器(RAM)设备(比如动态RAM(DRAM)、同步DRAM(SDRAM)),固态存储设备,和/或本领域中已知的各种其他存储设备。在一个实施方式中,底盘116容纳IHS 100的一些组件和全部组件。应当理解的是,能够在上述组件与处理器102之间部署其他的总线和中间电路,从而有利于在所述组件和处理器102之间的互连。
现在参考图2,其示出了微服务更新系统200的一个实施方式。在所述实施方式中,微服务更新系统200包括一个或多个开发人员系统202。在一个实施方式中,任一或全部开发人员系统202可通过以上根据图1讨论的IHS 100来提供,和/或可包括IHS 100中的一些组件或多部组件。在特定的示例中,任一或全部开发人员系统202可通过台式计算设备、膝上型计算设备/笔记本计算设备、平板计算设备和/或其他用户设备来提供,拥有本公开内容的本领域技术人员将认识到所述开发人员系统202被配置为允许开发人员提供软件代码,所述软件代码用于提供微服务和微服务修改/更新,如下面所讨论的。在所示实施方式中,每一个开发人员系统202包括显示设备202a,而拥有本公开内容的本领域技术人员将认识到开发人员系统202包括各种其他计算组件以便提供下面讨论的功能。
微服务更新系统200还包括源代码管理系统204,其耦连至开发人员系统202(例如,经由局域网(LAN)、互联网等提供的一个或多个网络)。在一个实施方式中,源代码管理系统204可通过以上根据图1讨论的IHS 100来提供,和/或可包括IHS 100中的一些组件或全部组件。在特定的示例中,源代码管理系统204可通过一个或多个服务器设备和/或(拥有本公开内容的本领域技术人员能够认识到的)其他设备提供,其提供了以下讨论的针对服务/源代码(也称为“服务代码”)的功能。然而,虽然被示出和讨论为要通过服务器设备提供,拥有本公开内容的本领域技术人员将会认识到源代码管理系统204可通过落在本公开内容的范围内的各种设备提供。
微服务更新系统200还包括构建调度器系统206,其耦连至源代码管理系统204(例如,经由局域网(LAN)、互联网等提供的一个或多个网络)。在一个实施方式中,构建调度器系统206可通过以上根据图1讨论的IHS 100来提供,和/或可包括IHS 100中的一些组件或全部组件。在特定的示例中,构建调度器系统206可通过一个或多个服务器设备和/或(拥有本公开内容的本领域技术人员能够认识到的)其他设备提供,其提供了以下讨论的构建调度器系统的功能。然而,虽然被示出和讨论为要通过服务器设备提供,拥有本公开内容的本领域技术人员将会认识到构建调度器系统206可通过落在本公开内容的范围内的各种设备提供。
微服务更新系统200还包括持续集成系统208,其耦连至构建调度器系统206(例如,经由局域网(LAN)、互联网等提供的一个或多个网络)。在一个实施方式中,持续集成系统208可通过以上根据图1讨论的IHS 100来提供,和/或可包括IHS 100中的一些组件或全部组件。在特定的示例中,持续集成系统208可通过一个或多个服务器设备和/或(拥有本公开内容的本领域技术人员能够认识到的)其他设备提供,其提供了以下讨论的持续集成系统的功能。然而,虽然被示出和讨论为要通过服务器设备提供,拥有本公开内容的本领域技术人员将会认识到持续集成系统208可通过落在本公开内容的范围内的各种设备提供。
微服务更新系统200还包括服务配置系统210,其耦连至持续集成系统208(例如,经由局域网(LAN)、互联网等提供的一个或多个网络)。在一个实施方式中,服务配置系统210可通过以上根据图1讨论的IHS 100来提供,和/或可包括IHS 100中的一些组件或全部组件。在特定的示例中,服务配置系统210可通过一个或多个服务器设备(例如,网络配置“云”服务器设备),和/或(拥有本公开内容的本领域技术人员能够认识到的)其他设备提供,其提供了以下讨论的基于云的服务配置的功能。在所示实施方式中,服务配置系统210包括多个微服务210a、210b、直至210c,其如上所讨论的可通过经由轻量协议操作的、松散连接的、细粒度的代码模块的集合体提供,其提供模块化,使得通过微服务210a-c所提供的服务更容易理解、开发和测试,同时还提供了针对架构侵蚀的弹性。因此,自主的开发人员团队可利用开发人员系统202来独立地开发和扩展相应的微服务210a-c,而同时允许通过持续的重构和/或更新出现任何个体微服务的架构,实现提供相关服务的微服务的持续集成、交付和部署。然而,拥有本公开内容的本领域技术人员能够认识到的是,服务配置系统210将包括各种其他计算组件以便提供如下所讨论的功能。
微服务更新系统200还包括一个或多个客户系统212,其耦连至服务配置系统210(例如,经由局域网(LAN)、互联网等提供的一个或多个网络)。在一个实施方式中,客户系统212可通过以上根据图1讨论的IHS 100来提供,和/或可包括IHS 100中的一些组件或全部组件。在特定的示例中,客户系统212可通过一个或多个服务器设备,和/或(拥有本公开内容的本领域技术人员能够认识到的)其他设备提供,其提供了如以下讨论的对服务配置系统所提供的服务的消费。然而,虽然被示出和讨论为服务器设备,拥有本公开内容的本领域技术人员将会认识到客户系统212可通过落在本公开内容的范围内的各种设备提供。虽然已经对特定的微服务更新系统200进行了说明和描述,拥有本公开内容的本领域技术人员将会认识到本公开内容的微服务更新系统200可包括各种组件和组件配置,而同时仍保持在本公开内容的范围内。
现在参考图3,其中示出了构建调度器系统300的一个实施方式,其可提供以上根据图2讨论的构建调度器系统206。因此,构建调度器系统300可通过以上根据图1讨论的IHS100来提供和/或可包括IHS 100中的一些组件或全部组件,并且在特定的示例中可通过一个或多个服务器设备提供。此外,虽然被示出和讨论为通过一个或多个服务器设备来提供,拥有本公开内容的本领域技术人员将会认识到以下所讨论的构建调度器系统300的功能可通过其他设备来提供,所述其他设备被配置为按照类似于以下所描述的方式来操作。在所示实施方式中,构建调度器系统300包括底盘302,其容纳构建调度器系统300的组件,以下仅说明了这些组件中的一些。例如,底盘302可容纳处理系统(未示出,但其可包括以上根据图1讨论的处理器102)以及存储系统(未示出,但其可包括以上根据图1讨论的存储器114),该存储系统耦连至处理系统并且包括在由处理系统执行时会导致处理系统提供构建调度器引擎304的指令,所述构建调度器引擎被配置为实现以下讨论的构建调度器引擎和/或构建调度器系统的功能。
底盘302还可容纳存储系统(未示出,但其可包括以上根据图1所讨论的存储设备108),其耦连至构建调度器引擎304(例如,经由在存储系统与处理系统之间的耦连)并且包括构建调度器数据库306,其被配置为存储通过以下讨论的构建调度器引擎304所利用的任何信息。底盘302还可容纳通信系统308,其耦连至构建调度器引擎304(例如,经由在通信系统308与处理系统之间的耦连)并且可通过网络接口控制器(NIC)、无线通信系统(例如,蓝牙、近场通信(NFC)组件、WiFi组件等等)和/或(拥有本公开内容的本领域技术人员将会意识到的)任何其他通信组件来提供。虽然示出了特定的构建调度器系统300,拥有本公开内容的本领域技术人员将会认识到的是,构建调度器系统(或者根据本公开内容的教导按照类似于下文中关于构建调度器系统300所描述的类似的方式进行操作的其他设备)可包括各种组件和/或组件配置,其用于提供常规功能和以下所讨论的功能,而同时仍保持在本公开内容的范围内。
现在参考图4,其示出了持续集成系统400的一个实施方式,其可提供以上根据图2所讨论的持续集成系统208。因此,持续集成系统400可通过以上根据图1讨论的IHS 100来提供和/或可包括IHS 100中的一些组件或全部组件,并且在特定的示例中可通过一个或多个服务器设备来提供。此外,虽然被示出和讨论为通过一个或多个服务器设备提供,拥有本公开内容的本领域技术人员将会认识到的是,以下所讨论的持续集成系统400的功能可通过被配置为按照如下所讨论的类似的方式操作的其他设备来提供。在所示实施方式中,持续集成系统400包括底盘402,其容纳持续集成系统400的组件,以下仅示出了所述组件中的一些。例如,底盘402可容纳处理系统(未示出,但其可包括以上根据图1所讨论的处理器102)和存储系统(未示出,但其可包括以上根据图1所讨论的存储器114),该存储系统耦连至处理系统并且包括在由处理系统执行时会导致处理系统提供持续集成引擎404的指令,所述持续集成引擎被配置为实现以下讨论的持续集成引擎和/或持续集成系统的功能。
底盘402还可容纳存储系统(未示出,但其可包括以上根据图1所讨论的存储设备108),其耦连至持续集成引擎404(例如,经由在存储系统与处理系统之间的耦连)并且包括持续集成数据库406,其被配置为存储通过以下讨论的持续集成引擎404所利用的任何信息。底盘402还可容纳通信系统408,其耦连至持续集成引擎404(例如,经由在通信系统408与处理系统之间的耦连)并且可通过网络接口控制器(NIC)、无线通信系统(例如,蓝牙、近场通信(NFC)组件、WiFi组件等等)和/或(拥有本公开内容的本领域技术人员将会意识到的)任何其他通信组件来提供。虽然示出了特定的持续集成系统400,拥有本公开内容的本领域技术人员将会认识到的是,持续集成系统(或者根据本公开内容的教导按照类似于下文中关于持续集成系统400所描述的类似的方式进行操作的其他设备)可包括各种组件和/或组件配置,其用于提供常规功能和以下所讨论的功能,而同时仍保持在本公开内容的范围内。
现在参考图5,其示出一种用于更新微服务的方法的实施方式。如以下所讨论的,本公开内容的系统和方法提供了对通过服务代码提供并且启用服务的微服务更加高效的更新,这是通过针对提供了要修改(例如,使用微服务修改代码来修改)的微服务的服务代码的一些部分的更新来限制要在服务代码上实现的更新,并随后仅测试已经被修改的微服务以及依赖于所述已经被修改的微服务的微服务。例如,开发人员可利用开发人员系统将微服务修改代码提供至源代码管理系统,以及推送请求或合并请求导致源代码管理系统将微服务修改请求发送至构建调度器系统。响应于接收到微服务修改请求,构建调度器系统可(从提供服务的多个微服务中)识别出微服务第一子集,针对该微服务第一子集已经请求了修改(即经由微服务修改请求和/或微服务修改代码),并且可为微服务第一子集中的每一个微服务触发相应微服务管道。
持续集成系统将经由所述微服务第一子集中的每一个微服务的相应微服务管道来接受用于所述微服务第一子集中的每一个微服务的微服务修改代码,并且将进行操作以便使用相应微服务修改代码来更新提供微服务第一子集的服务代码的至少一个第一部分。持续集成系统将随后测试由已更新的服务代码的第一部分所提供的微服务第一子集,以及依赖于微服务第一子集的微服务第二子集(来自提供所述服务的多个微服务)。持续集成系统将随后提供测试的结果,以便通过其开发人员系统向开发人员进行显示,并且如果测试通过的话,可在服务配置系统上自动部署已更新的服务代码从而使得服务可通过其用户设备被提供给用户。因此,提供了响应于其微服务中的一个或多个微服务的修改的、对服务更加高效的更新,其中对于单个微服务的修改需要相对较短的构建时间,其消耗相对较少量的资源,这能够增强通过微服务制造链执行并行的构建操作的能力。
方法500在方框502处开始,在方框502,开发人员系统将微服务修改代码提供至源代码管理系统。在一个实施方式中,在方框502处,开发人员可利用开发人员系统202从而提供微服务修改代码,所述微服务修改代码被配置为修改多个微服务210a-210c中的任何一个,其使得服务配置系统210能够提供服务。参考图6,包括显示设备602的开发人员系统600(其可以为图2所示的包括显示设备202a的开发人员系统202中的任一个)被示出,其显示了代码库屏幕604的一个实施方式,所述代码库屏幕显示启用通过服务配置系统210提供的服务的服务代码的层级。在图6中所示的特定的示例中,代码库屏幕604示出了“出了“特定的示服务如何包括五个微服务:
“DATA-STORAGE-MONGO”微服务、“MFT-FORWARDER”微服务、“PY-DATA-HANDLER”微服务、“PY-DATA-SERVICE”微服务以及“UI”微服务。例如,“RAILAI”服务可由包括五个子文件夹的文件夹所提供,所述五个子文件夹是以上所讨论的五个微服务的根目录。然而,虽然在下面出于举例说明的目的示出并描述了特定的服务和微服务,拥有本公开内容的本领域技术人员将认识到的是,服务、其相关服务代码以及提供所述服务的微服务可按照各种方式进行组织,其仍将落入本公开内容的范围内。
因此,在方框502处并且参考以上所讨论的服务和微服务的示例,开发人员可利用其开发人员子系统202从而将针对“MFT-FORWARDER”微服务和“PY-DATA-HANDLER”微服务的微服务修改代码提供至源代码管理系统204。此外,随着微服务修改代码,在方框502处,开发人员可使用开发人员系统202来提供请求,从而将微服务修改代码并入到提供服务的服务代码中。继续上面所讨论的服务和微服务的示例,在方框502处,开发人员可使用开发人员系统202来提供“推送”请求、“合并”请求和/或本领域中已知的其他请求,以便请求将针对“MFT-FORWARDER”微服务和“PY-DATA-HANDLER”微服务的微服务修改代码并入“RAILAI”服务。
方法500随后进行至方框504,其中源代码管理系统将微服务修改请求提供至构建调度器系统。在一个实施方式中,在方框504处,源代码管理系统204可生成微服务修改请求,并且将该微服务修改请求提供至构建调度器系统206。例如,源代码管理系统204可使用“webhook”进行配置,所述“webhook”响应于接收到以上讨论的推送请求或合并请求来触发,并且该webhook可将超文本传输协议(HTTP)请求的发送提供至构建调度器系统206,其在方框504处提供微服务修改请求。例如,提供微服务修改请求的HTTP请求可包括和/或识别关于微服务的信息(例如,通过构建请求有效负荷),针对所述微服务,微服务修改代码已在方框502处被提供在源代码管理系统204中。然而,虽然已经描述了特定的微服务修改请求,拥有本公开内容的本领域技术人员将会认识到的是,修改微服务的请求可按各种方式提供至构建调度器系统206,这将落入本公开内容的范围内。
方法500随后进行至方框506,其中构建调度器系统从提供服务的多个微服务识别出微服务第一子集,并且为其请求修改。在一个实施方式中,在方框506处,构建调度器系统300中的构建调度器引擎304可通过其通信系统308接收微服务修改请求(例如,以上所讨论的HTTP请求),并且作为响应可分析该HTTP请求以从以上讨论的提供服务的多个微服务210a-c中确定出微服务第一子集,针对该微服务第一子集要请求修改。例如,在方框506,构建调度器引擎304可分析构建请求有效负荷(其由提供微服务修改请求的HTTP请求包括或识别),并且可确定微服务第一子集,针对该微服务第一子集要基于所述分析来请求修改。在一些实施方式中,构建调度器引擎304在方框506处的操作可能有所不同,这依赖是否响应于来自方框502处的开发人员的推送请求提供的微服务修改请求,或是响应于来自方框502处的开发人员的合并请求提供的微服务修改请求。
例如,如果微服务修改请求(例如,HTTP请求)包括指示其与合并请求(例如,上面讨论的“webhook”是合并请求webhook)相关联的请求标头,构建调度器引擎304可以操作以从构建请求有效负荷中提取包括由开发人员提供的微服务修改代码的一个或多个源分支,目标分支与所述源分支被请求与以下项目相结合:源代码库的git安全外壳(SSH)统一资源定位器(URL);项目标识号(例如,在Gitlab中);最近的提交;提交合并请求的开发人员的电子邮件地址;和/或,各种其他信息,这些信息对于拥有本公开内容的本领域技术人员是显而易见的。然而,虽然上面详述了响应于合并请求而检索的信息的示例,拥有本公开内容的本领域技术人员将识别可通过构建调度器引擎304响应于推送请求检索的信息,并因此该信息的检索也将落于本公开内容的范围内。
继续上面的示例,其中,微服务修改请求(例如,HTTP请求)与合并请求相关联,在方框506,构建调度器系统300中的构建调度器引擎304可操作以生成子线程并且处理微服务修改请求,这是通过例如克隆源代码库并且(使用例如“git减法”操作与“仅名称”标志集(例如,““集(例如,““如,““))计算在源分支与目标分支之间的差。正如拥有本公开内容的本领域技术人员所理解的,git减法操作与仅名称标志按以上所描述的方法的使用将会返回已经修改的文件的路径的列表。继续以上所提供的特定的示例,其中开发人员请求修改“MFT-FORWARDER”微服务和“PY-DATA-HANDLER”微服务,则使用“git减法”操作与“仅名字”标志可返回两个文件的路径的列表:
MFT-FORWARDER/setup.py
PY-DATA-HANDLER/setup.py
然而,虽然已描述了微服务第一子集的识别而针对所述微服务第一子集请求了修改的特定示例,拥有本公开内容的本领域技术人员将会认识到的是,经过修改的微服务可使用其他技术来识别,这将落入本公开内容的范围内。
方法500随后进行至方框508,其中构建调度器系统针对微服务第一子集中的每一个微服务触发相应微服务管道。在一个实施方式中,在方框508,构建调度器系统300中的构建调度器引擎304可操作,以便针对如上所讨论的被识别的微服务第一子集中的每一个微服务触发相应微服务管道。例如,在方框508处并且继续以上所讨论的特定的示例,构建调度器引擎304可处理两个文件的路径(例如,以上所讨论的文件的路径“MFT-FORWARDER/setup.py”和“PY-DATA-HANDLER/setup.py”)的列表,从而仅检索针对“MFT-FORWARDER”和“PY-DATA-HANDLER”的根路径文件夹,并且可随后迭代到微服务的列表上,以便针对每一个微服务为持续集成系统208触发相关的管道。这与常规的系统形成对比,所述常规的系统不提供在微服务的基础上生成管道的能力(例如,可以置于相应的微服务文件夹的根目录),取而代之的是仅允许生成要应用于整个服务/源代码的单个管道文件。
例如,持续集成系统208/400可包括自动服务器引擎,其为持续集成引擎404的一部分并且被配置为软件开发过程的自动部分以便提供持续集成和/或有利于持续交付的技术方面。在以下讨论的特定的示例中,自动服务器引擎通过JENKINS开源软件提供,尽管拥有本公开内容的本领域技术人员将会认识到各种服务器自动子系统将落入本公开内容的范围内。在这些示例中,每一个微服务的相应管道可经由JENKINS应用编程接口(API)来触发,这是通过提供JENKINS中的管道名称和带有管道参数的有效负荷。此外,为了配置管道调用,构建调度器系统300中的构建调度器引擎304可利用将微服务名称映射到其相应的参数的字典,其示例的代码在以下提供:
拥有本公开内容的本领域技术人员将会认识到上述字典的关键是微服务根文件夹名称,并且值为参数,包括JENKINS中的管道名称(其可在URL中配置),以及传递给管道以填充其变量的有效负荷,其中变量包括:要检出的分支名称,用于设置工作目录的应用名称,用于配置Python自定义导入的Python路径,用于通知管道进程的开发人员的用户电子邮件,以及根据管道结果(例如,正在进行、运行、失败、中止等等)更新提交(例如,在Gitlab中)的项目ID和提交ID。在该特定的示例中,可将参数传递至管道,这是因为管道对于所有微服务是唯一的。此外,拥有本公开内容的本领域技术人员将认识到的是,以上微服务的示例全部以Python编程语言来进行编码,并因此可能全部都要按照一标准的代码组织,从而使得其可以按照相同的步骤来构建,仅仅配置(由有效负荷来提供)有所差异。然而,拥有本公开内容的本领域技术人员也将认识到如何对以不同编程语言编码的微服务稍加改动即可使用,这些改动也落入本公开内容的范围。
方法500随后进行至方框510,其中持续集成系统经由用于微服务第一子集中的每一个微服务的相应微服务管道接收相应的微服务修改代码,并随后进行至方框512,其中持续集成系统更新服务代码的至少一个第一部分,其为微服务第一子集提供相应微服务修改代码。在一个实施方式中,在方框510处,持续集成系统208/400中的持续集成引擎404可接收相应的微服务修改代码(例如,在方框502处由开发人员提供),这是经由在方框508处所触发的针对微服务第一子集中的每一个微服务的相应微服务管道。此外,在方框512的实施方式中,持续集成系统208/400中的持续集成引擎404使用经由微服务管道接收的微服务修改代码,以更新提供微服务第一子集的服务代码的至少一个第一部分。
这样,继续上面提供的特定的示例,在方框510和512处,持续集成系统208/400中的持续集成引擎404可以操作以便使用在方框502处由开发人员所提供的微服务修改代码来更新提供“MFT-FORWARDER”微服务和“PY-DATA-HANDLER”微服务的服务代码的第一部分。拥有本公开内容的本领域技术人员将会认识到的是,使用微服务修改代码更新服务代码可由代码版本控制系统处理,在此不再详述。因此,提供服务的其他微服务(例如,图6中所示的“DATA-STORAGE-MONGO”微服务、“PY-DATA-SERVICE”微服务和“UI”微服务)不被处理来更新服务代码的任何部分,因为它们没有通过上面讨论的合并请求进行修改。拥有本公开内容的本领域技术人员将会认识到的是,以这种方式提供服务的微服务的修改将导致更快的构建时间,因为处理更少的代码来实现修改,同时还消耗更少的资源来执行构建。因此,对于任何特定的构建/软件修改环境,由于更高效地利用在该构建/软件环境中的资源,可以使用本公开内容的技术并行地执行更多构建。
方法500随后进行至方框514,其中持续集成系统测试由已更新服务代码的至少一个第一部分所提供的微服务第一子集。在一个实施方式中,在方框514,持续集成系统208/400中的持续集成引擎404可操作以便测试微服务第一子集,该微服务第一子集通过在方框512处更新的服务代码中的至少一个第一部分来提供。继续以上提供的示例,持续集成引擎404可测试“MFT-FORWARDER”微服务和“PY-DATA-HANDLER”微服务,其通过服务代码的第一部分提供并且在方框512使用微服务修改代码进行了更新。正如拥有本公开内容的本领域技术人员将要理解的,测试在方框512修改的服务代码的部分可包括本领域已知的各种其他测试操作,在下文中将更详细地讨论。
方法500随后进行到方框516,其中持续集成系统测试依赖于微服务第一子集的微服务第二子集。在一个实施方式中,在方框516,持续集成系统208/400中的持续集成引擎404可以操作以测试依赖于被修改的微服务第一子集的微服务第二子集,以及可以由在框512处未更新的服务代码的至少第二部分提供。继续以上提供的示例,持续集成引擎404可测试由在方框512处未更新的服务代码的第二部分所提供的“PY-DATA-SERVICE”微服务。正如拥有本公开内容的本领域技术人员所理解的,对在服务代码的依赖于在方框512处更新的微服务的部分的测试可以包括:测试任何消耗了由被修改的第一微服务所生成的输出的第二微服务,并执行本领域已知的各种测试操作,下面将进一步详细讨论。因此,在一些示例中,可以在方框514处测试在被修改的微服务的下游的任何微服务。此外,虽然被示出和讨论为要独立地实现,在方框514和516处的至少一些测试可并行地执行,而同时仍保持在本公开内容的范围内。
例如,在方框512和514处执行的测试操作可以包括使用“模拟和打桩(mock andstubbing)”技术执行单元测试,该技术用于替换依赖性(例如,在数据库中)。正如拥有本公开内容的本领域技术人员所理解的,单元测试可以快速运行并且不需要部署正在测试的代码。随后,可以执行集成测试,其中将正在测试的微服务与其依赖的微服务一起部署到Pivotal Cloud Foundary(PCF),并且将Representational State Transfer(REST)请求发送到微服务REST应用编程接口(APIs)以便可以验证相应的回复(例如,通过验证http状态,包含消息和结果的有效载荷,和/或本领域已知的其他回复信息)。测试操作还可以包括在上面讨论的APIs保留一些信息的情况下检查数据库中的记录,通过验证这些依赖的微服务也根据其预期逻辑的操作(例如,通过处理和保存数据库中的记录)来确保微服务交换的消息被成功处理和/或发送/接收。
继续上面讨论的特定的示例,其中“MFT-FORWARDER”微服务和“PY-DATA-HANDLER”微服务被修改并包括依赖于它们中的至少一个的“PY-DATA-SERVICE”微服务,这些微服务可能会在“PY-DATA-SERVICE”微服务取决于“PY-DATA-HANDLER”微服务的链中提供,所述“PY-DATA-SERVICE”微服务还取决于“MFT-FORWARDER”微服务。当构建调度器系统206/300接收微服务修改请求并且取回针对“MFT-FORWARDER”微服务和“PY-DATA-HANDLER”微服务中的每一个的微服务修改代码,构建调度器系统206/300可触发两个并行的构建:针对“MFT-FORWARDER”微服务的第一构建将部署“MFT-FORWARDER”微服务、“PY-DATA-HANDLER”微服务以及“PY-DATA-SERVICE”微服务,并且运行上面讨论的测试。构建将使用包括针对“MFT-FORWARDER”微服务和“PY-DATA-HANDLER”微服务的微服务修改代码的代码分支,并且测试操作将执行针对“MFT-FORWARDER”微服务的微服务修改代码以及针对“PY-DATA-HANDLER”微服务的微服务修改代码,同时还验证与“PY-DATA-SERVICE”微服务集成的微服务修改代码(即使没有修改“PY-DATA-SERVICE”微服务)。此外,构建调度器系统206/300将为“PY-DATA-HANDLER”微服务触发第二构建,其将部署“PY-DATA-HANDLER”微服务和“PY-DATA-SERVICE”微服务并运行上面讨论的测试。
方法500随后进行至判定方框518,其中持续集成系统确定是否所有提供服务的微服务都已经通过了测试。在一个实施方式中,在判定方框518处,持续集成系统208/400中的持续集成引擎404可以操作以确定在方框514和516处测试的每一个微服务是否已通过测试(例如,通过确定微服务是否正在执行期望的功能,例如生成上面讨论的预期输出)。如果在判定方框518,持续集成系统确定提供服务的所有微服务已经通过测试,则方法500进行至方框520,其中持续集成系统提供测试结果以在开发人员子系统上显示。在一个实施方式中,在方框520处并且响应于确定在方框514和516处测试的所有微服务已经通过测试,持续集成系统208/400中的持续集成引擎404可以生成测试结果并提供这些测试结果以在开发人员系统202上显示。例如,正如拥有本公开内容的本领域技术人员会理解的并参考以上提供的示例,当微服务管道完成时,持续集成系统208/400中的持续集成引擎404可以更新提交由合并请求提供的构建请求,其允许开发人员使用他们各自的开发人员系统202来验证哪个微服务(即上面讨论的微服务第一子集)作为代码更改的一部分被重建,以及运行每一个微服务管道的结果。
例如,参考图7,开发人员系统600被示出为提供微服务更新结果屏幕700,其在所示实施方式中提供更新上面所讨论的“MFT-FORWARDER”微服务和“PY-DATA-HANDLER”微服务的测试结果。正如在微服务更新结果屏幕700中可以看到的,开发人员可以检查与其合并请求的最新提交相关联的两个构建,其在所示实施方式中指明“MFT-FORWARDER”微服务和“PY-DATA-HANDLER”微服务已更新并已通过其测试。
方法500随后可进行至可选方框522,其中持续集成系统在服务配置系统上自动部署已更新服务代码。在一个实施方式中,在可选方框522处,持续集成系统208/400中的持续集成引擎404可以操作以便在服务处理系统210上自动部署已更新服务代码,使得该服务处理系统210可以将其相关联的服务(例如,通过微服务210a-c,其中至少一些已被更新)提供至客户系统212。在另一示例中,已更新服务代码的部署可以响应于开发人员在微服务更新结果屏幕700上选择“ACCEPT MERGE REQUEST(接受合并请求)”按钮。
参考图8,开发人员系统600被示出为提供微服务更新结果屏幕800,其在所示实施方式中提供更新上面所讨论的“MFT-FORWARDER”微服务和“PY-DATA-HANDLER”微服务的测试结果。正如拥有本公开内容的本领域技术人员所理解的,当源分支合并到主分支时,可以再次通知开发人员使得他们可以验证在主分支上触发的构建的结果。因此,继续上面讨论的特定的示例,在开发人员将已更新服务代码与主分支合并之后,可以验证合并提交构建更新(例如,在Gitlab中)以确认“MFT-FORWARDER”微服务和“PY-DATA-HANDLER”微服务已经成功更新并部署到阶段和生产环境中。正如可在微服务更新结果屏幕700中看到的,开发人员可以检查阶段和生产环境的更新,“MFT-FORWARDER”微服务和“PY-DATA-HANDLER”微服务更新,其指示每一个微服务已经更新并通过了其测试。
如果在判定方框518处,持续集成系统确定提供服务的微服务中的至少一个尚未通过测试,则方法500进行至方框524,其中持续集成系统提供用于显示在开发人员子系统上的测试结果。在一个实施方式中,在方框524,并且响应于确定至少一个微服务未通过在方框514和/或516处的测试,持续集成系统208/400中的持续集成引擎404可以在开发人员系统202/600上生成并提供微服务更新结果屏幕,这些屏幕与图7和图8中所示的类似,但其表明了哪个微服务未通过其测试。因此,当开发人员尝试更新/修改他们的微服务不成功时或者服务代码的操作以及服务配置系统210向客户系统提供服务出现问题时,则通知开发者212。
在特定的实现方式中,本公开内容的系统和方法可能要求创建新的微服务的开发人员向在构建调度器系统206中的地图添加条目,其允许配置管道(例如,通过上面讨论的JENKINS)和管道参数,以及创建一个新管道(其可以通过克隆现有管道在JENKINS中执行)。此外,在向被授权修改提供服务的微服务的开发人员团队中添加开发人员或从中删除开发人员时,构建调度器系统206中的用户/开发人员配置文件可能需要更新,以便添加/删除他们的相关电子邮件地址、用户标识符和安全令牌(例如,在JENKINS中),这些信息可用于验证构建触发HTTP请求以及用于记录与构建相关的信息(例如,在JENKINS中)。此外,拥有本公开内容的本领域技术人员将认识到的是,当通过Python应用程序提供构建调度器系统206时,其可以如何使用PIP来部署,并且可以在LINUX可systemd”中注册以便允许LINUX在运行时管理应用程序。
因此,系统和方法已被描述为提供了由实现服务的服务代码所提供的被修改的微服务的选择性构建,从而提供更高效的微服务更新,这是通过限制在服务代码上执行的更新,从而更新提供被修改的微服务的服务代码部分(例如,使用微服务修改代码修改),并随后仅测试已修改的微服务和依赖于已修改微服务的微服务。例如,响应于接收到微服务修改请求,构建调度器系统可(从提供服务的多个微服务)识别出已经请求了修改的微服务第一子集,并且可以触发针对微服务第一子集中的每一个微服务的相应服务管道。持续集成系统随后通过其相应微服务管道接收针对微服务第一子集中的每一个微服务的微服务修改代码,并将操作以更新与提供微服务第一子集的服务代码的至少一个第一部分相应的微服务修改代码。持续集成系统随后将测试由已更新服务代码的第一部分所提供的微服务第一子集,以及测试依赖于微服务第一子集的微服务第二子集(来自提供服务的多个微服务)。持续集成系统随后提供测试结果以便通过其开发人员系统向开发人员显示,如果测试通过则可以在服务配置系统上自动部署已更新服务代码,从而使得可以通过其客户设备向客户提供服务。因此,提供了响应于修改其一个或多个其微服务的更高效的服务更新,其中,对于单个微服务的修改需要相对较短的构建时间,这消耗相对较少量的资源,由此能够增强执行并行的构建操作的能力。
尽管已经显示和描述了说明性实施方式,但是在前述公开中预期了广泛的修改、改变和替换,并且在一些情况下,可以采用实施例的一些特征而无需相应地使用其他特征。因此适当的是,所附权利要求以与本文公开的实施方式的范围一致的方式被宽泛地解读。
Claims (20)
1.一种微服务更新系统,其包括:
构建调度器系统,其被配置为:
接收微服务修改请求;
识别微服务第一子集,所述微服务第一子集包括在被配置成提供服务的多个微服务中,并且在所述微服务修改请求中已请求了针对所述微服务第一子集的修改;以及
针对所述微服务第一子集中的每一个微服务触发相应的微服务管道;以及
持续集成系统,其耦连至所述构建调度器系统并且被配置为:
经由针对所述微服务第一子集中的每一个微服务触发的相应微服务管道,接收用于所述微服务第一子集中的每一个微服务的相应微服务修改代码;
使用用于所述微服务第一子集中的每一个微服务的所述相应微服务修改代码更新服务代码中的至少一个第一部分,其提供用于所述服务的所述微服务第一子集,其中所述更新提供了已更新服务代码;以及
测试所述被更新的服务代码,以便测试:
所述微服务第一子集,其通过所述已更新服务代码中的至少一个第一部分提供;以及
微服务第二子集,其包括在被配置成提供所述服务的所述多个微服务中,所述微服务第二子集通过未作为所述更新的一部分而被更新的所述已更新服务代码中的至少一个第二部分提供,并且其依赖于所述微服务第一子集中的至少一个微服务。
2.如权利要求1所述的系统,其中所述持续集成系统被配置为:
响应于对所述已更新服务代码的测试,确定所述微服务第一子集和所述微服务第二子集中的每一个已经通过了所述测试;以及,
为了在开发人员系统上显示,提供所述微服务第一子集和所述微服务第二子集中的每一个已通过了所述测试的指示。
3.如权利要求1所述的系统,其中所述持续集成系统被配置为:
响应于确定所述微服务第一子集和所述微服务第二子集中的每一个已通过了所述测试,向服务配置系统自动部署所述已更新服务代码。
4.如权利要求1所述的系统,其中所述持续集成系统被配置为:
响应于所述已更新服务代码的所述测试,确定所述微服务第一子集和微服务第二子集中的至少一个尚未通过所述测试;以及
为了在开发人员系统上显示,提供所述微服务第一子集和微服务第二子集中的至少一个尚未通过所述测试的指示。
5.如权利要求1所述的系统,其中由于所述微服务第二子集在所述测试期间利用由所述微服务的至少一个子集生成的至少一个输出,所述微服务第二子集依赖于所述微服务的至少一个子集。
6.如权利要求1所述的系统,其中所述微服务第一子集包括至少两个微服务,并且其中所述更新提供用于所述服务的所述微服务第一子集的服务代码中的至少一个第一部分,其包括:并行地更新包括在所述微服务第一子集中的所述至少两个微服务。
7.一种信息处理系统(IHS),其包括:
处理系统;以及
存储系统,其耦连至所述处理系统并且包括在由所述处理系统执行时会导致所述处理系统提供持续集成引擎的指令,所述持续集成引擎被配置为:
为微服务第一子集中的每一个微服务接收用于所述微服务第一子集中的每一个微服务的相应微服务修改代码,所述微服务第一子集包括在被配置成提供服务的多个所述微服务中并且已经为所述微服务第一子集请求了修改;
使用用于所述微服务第一子集中的每一个微服务的所述相应微服务修改代码来更新提供了用于所述服务的所述微服务第一子集的服务代码中的至少一个第一部分,其中所述更新提供已更新服务代码;以及
测试所述已更新服务代码,以便测试:
所述微服务第一子集,其由所述已更新服务代码的至少一个第一部分所提供;以及
微服务第二子集,其包括在被配置成提供所述服务的所述多个微服务中,所述微服务第二子集通过未作为所述更新的一部分而被更新的所述已更新服务代码中的至少一个第二部分提供,并且依赖于所述微服务第一子集中的至少一个微服务。
8.如权利要求7所述的IHS,其中所述持续集成引擎被配置为:
响应于所述被更新的服务代码的所述测试,确定所述微服务第一子集和所述微服务第二子集中的每一个已通过了所述测试;以及
为了在开发人员系统上显示,提供所述微服务第一子集和所述微服务第二子集中的每一个都已通过了所述测试的指示。
9.如权利要求8所述的IHS,其中所述持续集成引擎被配置为:
响应于确定所述微服务第一子集和所述微服务第二子集中的每一个已通过了所述测试,向服务配置系统自动部署所述已更新服务代码。
10.如权利要求7所述的IHS,其中所述持续集成引擎被配置为:
响应于所述已更新服务代码的所述测试,确定所述微服务第一子集和所述微服务第二子集中的至少一个尚未通过所述测试;以及
为了在开发人员系统上显示,提供所述微服务第一子集和所述微服务第二子集中的至少一个尚未通过所述测试的指示。
11.如权利要求7所述的IHS,其中由于所述微服务第二子集在所述测试期间利用由所述微服务的至少一个子集生成的至少一个输出,所述微服务第二子集依赖于所述微服务的至少一个子集。
12.如权利要求7所述的IHS,其中所述微服务第一子集包括至少两个微服务,并且其中所述更新提供用于所述服务的所述微服务第一子集的服务代码中的至少一个第一部分,其包括:并行地更新包括在所述微服务第一子集中的所述至少两个微服务。
13.如权利要求7所述的IHS,其中所述存储系统包括在由所述处理系统执行时会导致所述处理系统提供构建调度器引擎的指令,所述构建调度器引擎被配置为:
接收微服务修改请求;
识别包括在被配置成提供用于所述服务的所述多个微服务中的所述微服务第一子集,并且在所述微服务修改请求中已经为所述微服务第一子集请求了修改;以及
为所述微服务第一子集中的每一个微服务触发相应微服务管道,导致所述持续集成引擎接收针对所述微服务第一子集中的每一个微服务的所述相应微服务修改代码。
14.一种用于更新微服务的方法,包括:
通过持续集成系统为微服务第一子集中的每一个微服务接收用于所述微服务第一子集中的每一个子集的相应微服务修改代码,所述微服务第一子集包括在被配置成提供服务的多个微服务中并且已经为所述微服务第一子集请求了修改;
通过所述持续集成系统使用所述相应微服务修改代码更新所述微服务第一子集中的每一个微服务,服务代码中的至少一个第一部分提供了用于所述服务的所述微服务第一子集,其中所述更新提供已更新服务代码;以及
通过所述持续集成系统测试所述已更新服务代码,以便测试:
所述微服务第一子集,其通过由所述已更新服务代码中的至少一个第一部分提供;以及
微服务第二子集,其包括在被配置成提供所述服务的所述多个微服务中,所述微服务第二子集通过未作为所述更新的一部分而被更新的所述已更新服务代码中的至少一个第二部分提供,并且依赖于所述微服务第一子集中的至少一个微服务。
15.如权利要求14所述的方法,还包括:
通过所述持续集成系统,响应于对所述已更新的服务代码的所述测试,确定所述微服务第一子集和所述微服务第二子集中的每一个已经通过了所述测试;以及,
为了在开发人员系统上显示,通过所述持续集成系统,提供所述微服务第一子集和所述微服务第二子集中的每一个已通过了所述测试的指示。
16.如权利要求14所述的方法,还包括:
通过所述持续集成系统,响应于确定所述微服务第一子集和微服务第二子集中的每一个已通过了所述测试,向服务配置系统自动部署所述已更新服务代码。
17.如权利要求14所述的方法,还包括:
通过所述持续集成系统,响应于所述已更新服务代码的所述测试,确定所述微服务第一子集和所述微服务第二子集中的至少一个尚未通过所述测试;以及
为了在开发人员系统上显示,通过所述持续集成系统,提供所述微服务第一子集和所述微服务第二子集中的至少一个尚未通过所述测试的指示。
18.如权利要求14所述的方法,其中基于所述微服务第二子集在所述测试期间利用由所述微服务的至少一个子集生成的至少一个输出,所述微服务第二子集依赖于所述微服务的至少一个子集。
19.如权利要求14所述的方法,其中所述微服务第一子集包括至少两个微服务,并且其中所述更新提供用于所述服务的所述微服务第一子集的服务代码中的至少一个第一部分,其包括:并行地更新包括在所述微服务第一子集中的所述至少两个微服务。
20.如权利要求14所述的方法,还包括:
通过构建调度器系统接收微服务修改请求;
通过所述构建调度器系统,识别包括在被配置成提供所述服务的所述多个微服务中的所述微服务第一子集,并且在所述微服务修改请求中已经为所述微服务第一子集请求了修改;以及
通过所述构建调度器系统,为所述微服务第一子集中的每一个微服务触发相应微服务管道,导致所述持续集成引擎接收针对所述微服务第一子集中的每一个微服务的所述相应微服务修改代码。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910361495.3A CN111857762A (zh) | 2019-04-30 | 2019-04-30 | 微服务更新系统 |
US16/503,146 US11093232B2 (en) | 2019-04-30 | 2019-07-03 | Microservice update system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910361495.3A CN111857762A (zh) | 2019-04-30 | 2019-04-30 | 微服务更新系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111857762A true CN111857762A (zh) | 2020-10-30 |
Family
ID=72965646
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910361495.3A Pending CN111857762A (zh) | 2019-04-30 | 2019-04-30 | 微服务更新系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11093232B2 (zh) |
CN (1) | CN111857762A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022241947A1 (zh) * | 2021-05-21 | 2022-11-24 | 腾讯云计算(北京)有限责任公司 | 一种对应用程序的数据处理方法、装置、设备及存储介质 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210075887A1 (en) * | 2019-09-09 | 2021-03-11 | Red Hat, Inc. | Artificial intelligence-powered diagram-to-deployment converter |
US11321226B2 (en) * | 2019-12-11 | 2022-05-03 | Salesforce.Com, Inc. | Joint validation across code repositories |
US20210182054A1 (en) * | 2019-12-16 | 2021-06-17 | Intuit Inc. | Preventing unexpected behavior in software systems due to third party artifacts |
US11176027B1 (en) | 2020-04-22 | 2021-11-16 | International Business Machines Corporation | Generation of microservices from a monolithic application based on runtime traces |
CN113722204A (zh) * | 2020-05-26 | 2021-11-30 | 华为技术有限公司 | 一种应用调试方法、系统、设备及介质 |
KR102305845B1 (ko) * | 2020-12-21 | 2021-09-29 | 쿠팡 주식회사 | 코드의 검증을 위한 전자 장치 및 그 방법 |
US11580008B2 (en) * | 2021-02-19 | 2023-02-14 | OpenGov, Inc. | Method and system for synchronous development and testing of live, multi-tenant microservices based SaaS systems |
CN113485759A (zh) * | 2021-06-28 | 2021-10-08 | 上海华兴数字科技有限公司 | 微服务配置信息管理系统、方法、电子设备及存储介质 |
US20230059134A1 (en) * | 2021-08-18 | 2023-02-23 | Red Hat, Inc. | Systems and methods for in-place application upgrades |
US11601393B1 (en) * | 2021-10-04 | 2023-03-07 | Cisco Technology, Inc. | Microservice visibility and control |
CN114172904B (zh) * | 2021-12-02 | 2024-02-13 | 上海众源网络有限公司 | 一种Jenkins信息处理方法、装置、电子设备及存储介质 |
US11558254B1 (en) * | 2022-06-23 | 2023-01-17 | Kong Inc. | Configuration hash comparison |
US11675638B1 (en) * | 2022-09-26 | 2023-06-13 | Kong Inc. | Webhooks use for a microservice architecture application |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6782448B2 (en) | 2002-04-02 | 2004-08-24 | International Business Machines Corporation | Transparent code update in an automated data storage library |
US7421621B1 (en) * | 2003-09-19 | 2008-09-02 | Matador Technologies Corp. | Application integration testing |
US8572566B2 (en) | 2010-05-11 | 2013-10-29 | Smartshift Gmbh | Systems and methods for analyzing changes in application code from a previous instance of the application code |
US9842045B2 (en) * | 2016-02-19 | 2017-12-12 | International Business Machines Corporation | Failure recovery testing framework for microservice-based applications |
US10389602B2 (en) * | 2016-12-05 | 2019-08-20 | General Electric Company | Automated feature deployment for active analytics microservices |
US10341438B2 (en) * | 2017-03-17 | 2019-07-02 | Verizon Patent ad Licensing Inc. | Deploying and managing containers to provide a highly available distributed file system |
US10620854B1 (en) * | 2018-11-29 | 2020-04-14 | Amazon Technologies, Inc. | Validating data for deployment |
-
2019
- 2019-04-30 CN CN201910361495.3A patent/CN111857762A/zh active Pending
- 2019-07-03 US US16/503,146 patent/US11093232B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022241947A1 (zh) * | 2021-05-21 | 2022-11-24 | 腾讯云计算(北京)有限责任公司 | 一种对应用程序的数据处理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US11093232B2 (en) | 2021-08-17 |
US20200348921A1 (en) | 2020-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111857762A (zh) | 微服务更新系统 | |
CN112000348B (zh) | 服务灰度发布的控制方法、装置、计算机设备 | |
US11281457B2 (en) | Deployment of infrastructure in pipelines | |
CN114008605A (zh) | 大数据应用生命周期管理 | |
US9910654B1 (en) | Extensible software release management automation service | |
US20170161059A1 (en) | Management of multiple application programming interface versions for development environments | |
US10411961B2 (en) | Image management in cloud environments | |
TW200820075A (en) | Method and apparatus for on-demand composition and teardown of service infrastructure | |
CN110851167A (zh) | 容器环境更新方法、装置、设备及存储介质 | |
US20160048703A1 (en) | Securing integrity and consistency of a cloud storage service with efficient client operations | |
US9934016B1 (en) | Extensible software release management automation service | |
US11900074B2 (en) | Method and apparatus for implementing an end-to-end API design and development module integrating with firmwide tools and processes | |
US20200153889A1 (en) | Method for uploading and downloading file, and server for executing the same | |
CN111639309B (zh) | 一种数据处理方法、装置、节点设备及存储介质 | |
CN109901985B (zh) | 分布式测试装置及方法、存储介质和电子设备 | |
US20200371902A1 (en) | Systems and methods for software regression detection | |
JP2022542203A (ja) | ミニプログラムのバッチ処理方法、装置、電子機器及び可読記憶媒体 | |
US10120707B2 (en) | Deployment of development environments | |
CN113778442A (zh) | 一种系统菜单生成方法、装置、设备及存储介质 | |
US20230393825A1 (en) | Automated software deployment techniques | |
US20210157560A1 (en) | System and method for application release orchestration and deployment | |
US20180018191A1 (en) | Virtual Machine Seed Image Replication through Parallel Deployment | |
US10956512B2 (en) | Document link migration | |
CN112506590A (zh) | 接口调用方法、装置及电子设备 | |
US12039473B2 (en) | Software development project infrastructure builder tool |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |