本发明通常涉及云计算系统,并且更加尤其涉及在云计算环境中提供工件的方法和系统。
背景技术:
随着云计算技术的出现,大量设备(也通常地称为“资产”)经由因特网连接到云计算系统。所述设备可以远程地远离云计算系统。例如,所述设备可以是(一个或多个)工业装置中的器材、传感器、致动器、机器人、机械装置。所述设备还可以是医疗保健设施中的医疗设备和器材。另外,所述设备可以是家用电器或办公电器。
云计算系统可以使得能够远程调试、配置、监视、控制和维护连接的设备。而且,云计算系统可以促进存储从所述设备定期收集的大量数据、分析所述大量数据,以及经由(例如,web应用的)图形用户界面向操作员、现场工程师或所述设备的所有者提供洞察力(例如,关键性能指标、异常值)和警报。所述洞察力和警报可以使得能够控制和维护所述设备,从而导致所述设备的高效和故障安全操作。云计算系统还可以基于所述洞察力和警报经由图形用户界面使得能够修改与所述设备相关联的参数并发布控制命令。
云计算系统可以包括多个服务器或处理器(也称为“云基础设施”),其在地理上分布或位于同一位置,经由网络彼此连接。专用平台(以下称为“云计算平台”)被安装在服务器/处理器上,用于提供上述功能作为服务(以下称为“云服务”)。云计算平台可以包括在云计算系统的一个或多个服务器或处理器上执行的多个软件程序,以使得能够将所请求的服务递送到设备及其用户(以下称为租户)。
在云计算系统中部署了一个或多个工件,以向租户提供不同的云服务。工件可以包括应用、仿真模型、工程配置、应用编程接口(api)等。例如,用于监视制造设施中的机器人的操作的应用可以被部署为工件。该应用可能能够分析一段时间内从机器人收集的数据。租户可以订阅云服务,该云服务使用该应用分析与机器人相关联的数据(租户负责该机器人),并经由租户设备上的web应用向租户显示分析结果(例如,异常值)。
当前,工件由开发者使用本机开发工具以脱机模式进行开发。然后,工件经由web浏览器上传到云计算系统。工件被部署在云计算平台中,并供应给一个或多个租户。但是,工件的开发阶段、部署阶段和供应阶段是彼此独立的。当前已知的云计算系统没有提供能够在其整个生命周期中管理工件的云计算平台。这使得在其生命周期期间管理工件成为一项既费时又繁琐的任务。在一些情况下,云计算系统提供了可用于操作和监视工业工厂中的资产的工件。每个工件都被设计用于在特定场景和特定分析需求中使用。当前的云计算平台没有提供可在不同场景中使用的工件,从而给云计算平台的用户带来不便。
鉴于以上情况,对一种用于提供与工件相关联的工件包的云计算系统存在需求。
因此,本发明的目的是提供一种能够提供与工件相关联的工件包的云计算系统。
每个工件在其生命周期期间都可能经历不同阶段,例如开发、测试、验证、部署、供应和实时执行。工件可以指的是云应用、边缘应用、代码片段、硬件配置、数字孪生模型、应用编程接口(api)、仿真模型、连接方案、固件、设备配置、安全应用等。在一些实施例中,工件可以使云计算系统的一个或多个租户能够访问由云计算系统提供的一个或多个云服务。例如,一个或多个云服务使一个或多个租户能够有效地调试、配置、监视、控制和维护通信连接到云计算系统的工业厂房。
根据本发明,云计算系统提供了用于开发、测试、验证、部署、发布、供应和监视与由云计算系统递送的云服务相关联的所述每个工件的云计算平台。因此,云计算系统使得能够在工件生命周期期间管理工件。这被称为“工件生命周期管理”。云计算平台上的工件生命周期管理使得能够实现在工件生命周期期间的不同阶段之间的交互,从而使在工件生命周期期间工件管理变得轻松且高效。
本发明的目的通过一种方法来实现,所述方法包括生成与要被部署在云计算系统上的工件相关联的可执行文件。该方法包括在工件储存库中创建与该工件相关联的目录条目。例如,工件的目录条目包括指示工件功能的工件描述以及工件的应用场景。另外,该方法包括在与工件相关联的可执行文件和与工件相关联的目录条目之间生成关联。该方法还包括在与工件相关联的模板和与工件相关联的目录条目之间生成关联。该方法包括生成工件包,该工件包包括与工件相关联的可执行文件和模板。此外,该方法包括使用目录条目在应用市场中发布与工件相关联的工件包。
在另一个优选实施例中,该方法包括将与工件相关联的工件包存储在工件储存库中。
在又另一个优选实施例中,该方法包括:接收用于访问存储在工件储存库中的工件的请求。用于访问工件的请求包括与工件相关联的一个或多个关键字。该方法包括使用与工件相关联的关键字来访问与工件相关联的目录条目。例如,确定与工件相关联的关键字是否与工件储存库中一个或多个目录条目的描述匹配。如果找到匹配,则从工件储存库访问与工件相关联的目录条目。此外,该方法包括使用目录条目从工件储存库获得与工件相关联的工件包。该方法包括经由应用市场提供对与工件相关联的工件包的访问。
在又另一个优选实施例中,该方法包括验证与要部署在云计算系统上的工件相关联的工件包。
在又另一个优选实施例中,该方法包括在云计算系统的生产环境中部署与工件相关联的工件包。
在另一优选实施例中,该方法包括将工件供应给云计算系统的一个或多个租户。
在又另一优选实施例中,该方法包括根据与工件相关联的模板中的一个或多个参数,执行在生产环境中部署的工件的至少一个实例。
在又另一优选实施例中,该方法包括记录与在生产环境中部署的工件的至少一个实例的执行相关联的信息。例如,与工件的至少一个实例的执行相关联的信息包括执行时间、响应时间、失败的任务和类似的工件。
在又另一优选实施例中,该方法包括修改与工件相关联的模板的一个或多个参数。
本发明的目的还通过一种设备来实现,该设备包括一个或多个处理单元,以及通信地耦合到一个或多个处理单元的至少一个可访问存储器。至少一个可访问存储器包括工件生命周期管理模块,该工件生命周期管理模块被配置为执行以上执行的任何方法步骤。例如,该设备可以包括云计算系统、雾计算设备或边缘计算设备。
本发明的目的还通过包括上述设备的云计算环境来实现。
本发明的目的通过一种计算机程序产品来实现,该计算机程序产品具有存储在其中的指令,该指令在由一个或多个处理单元执行时使该一个或多个处理单元执行上述任何方法步骤。
现在将参考本发明的附图解决本发明的上述和其他特征。所图示的实施例旨在说明而非限制本发明。
附图说明
在下文中,参考附图中所示的图示实施例进一步描述本发明,其中:
图1是根据本发明的实施例的能够在整个生命周期中管理工件的云计算系统的示意表示;
图2是图示了根据本发明的实施例的在工件生命周期管理模块的不同组件之间的高级交互的示意表示;
图3是图示了根据本发明的实施例的在云计算系统上的工件生命周期管理的示例性方法的过程流程图;
图4是根据本发明的实施例的能够开发要在生产环境中部署的工件的工件开发模块的框图;
图5是根据本发明的实施例的能够对要在生产环境中部署的工件验证的工件验证模块的框图;
图6是图示了根据本发明的实施例的对要在生产环境中部署的工件执行验证的示例性方法的过程流程图;
图7是根据本发明的实施例的能够在生产环境中认证和部署工件的工件部署模块的框图;
图8是图示了根据本发明的实施例的在生产环境中认证和部署工件的示例性方法的过程流程图;
图9图示了显示与开发者相关联的不同应用的图形用户界面;
图10图示了图形用户界面,示出了要在生产环境中部署的应用;
图11图示了示出了供应给租户的应用的状态的图形用户界面;
图12图示了示出与提供者相关联的不同应用的状态的图形用户界面;
图13图示了图形用户界面,示出了正被监视的应用的运行时间行为;
图14是根据本发明的实施例的云计算系统(诸如图1所示的云计算系统)的示意表示;
图15是根据本发明实施例的工件包生成模块(诸如图4中所示的)的框图;
图16是图示出根据本发明的实施例的在云计算环境中提供工件的示例性方法的过程流程图;
图17是图示出根据本发明实施例的提供对在应用市场中发布的工件的访问的示例性方法的过程流程图;以及
图18是图示出根据本发明的实施例的执行在云计算系统的生产环境t204中部署的工件的示例性方法的过程流程图。
具体实施方式
参照附图描述了各种实施例,其中,相同的参考标记用于涉及附图,其中,相同的参考标记始终用于指代相同的元件。在以下描述中,出于解释的目的,阐述了许多具体细节以便提供对一个或多个实施例的透彻理解。可以显而易见的是,可以在没有这些具体细节的情况下实践这样的实施例。
在整个说明书中,术语“云计算系统”和“云系统”的含义相同。而且,术语“云计算平台”和“云平台”的含义相同。
图1是根据本发明的实施例的云计算环境100的示意表示。特别地,图1描绘了能够提供用于管理包括资产108a-n的工业工厂106的云服务的云系统102。云计算系统102经由网络104(例如,因特网)连接到工业工厂106中的资产108a-n。资产108a-n可以包括服务器、机器人、交换机、自动化设备、电动机、阀门、泵、致动器、传感器和其他工业器材。尽管图1图示出连接到一个工业工厂的云计算系统,但是本领域的技术人员可以想到,云计算系统102可以经由网络104连接到位于不同位置的几个工业工厂。例如,云服务可以包括调试工业工厂106、仿真工业工厂106、监视和控制工业工厂106、维护工业工厂106、升级工业工厂106等等。云服务还可以包括管理工业工厂106中的资产、存储和分析经由iot网关(未示出)从资产108a-n接收的工厂数据、将分析后的数据可视化给与工业工厂106相关联的人员、下载软件/固件到资产中等。
为了访问云服务,需要将一个或多个工件部署在云计算平台上,然后由工业工厂106中的人员和资产对其进行访问以对云服务有利。因此,提供了云计算系统102,其能够在其整个生命周期中管理工件。示例性工件可能包括应用(用于监视工厂的应用)、仿真模型、工程配置、数字孪生模型、代码片段、api、安全性应用、固件、微服务等。
云计算系统102还经由网络104连接到用户设备130a-n。用户设备130a-n可以访问云计算系统102以管理和/或访问工件,以及访问云服务。
云计算系统102包括云接口110、云硬件和os112、云计算平台114以及工件储存库128。云接口110使得能够实现在云计算平台114与工业工厂106之间的通信。而且,云接口110使得能够实现在云计算平台114与用户设备130a-n之间的通信。
云硬件和os112可以包括一个或多个服务器,在该服务器上安装了操作系统并且包括一个或多个处理单元、用于存储数据的一个或多个储存设备以及提供云计算功能所需的其他外围设备。云计算平台114是一种平台,其经由api和算法在云硬件和os112上实现诸如数据储存、数据分析、数据可视化、数据通信之类的功能以及使用工件提供上述云服务。云计算平台114采用工件生命周期管理模块116,用于管理在整个工件生命周期内负责递送云服务的工件。云计算平台114还包括访问控制模块132和工件执行模块134。云计算平台可以包括建立在云硬件和os112之上的专用硬件和软件的组合。
工件生命周期管理模块116以机器可读指令的形式存储,并且可由云计算平台114执行。工件生命周期管理模块116包括工件开发模块118、工件验证模块120、工件部署模块122、工件供应模块124和工件监视模块126。工件开发模块118被配置用于生成开发工件的开发环境。使用有效证书经由用户设备130a-n的图形用户界面可访问开发环境。工件开发模块118被配置用于使用开发环境生成工件的工件包。如果工件是应用,则工件包可以包括二进制代码和清单文件。另外,工件开发模块118被配置用于经由开发环境使用一个或多个测试场景来测试工件包。工件开发模块118被配置为将工件存储在工件储存库128中,以用于验证和部署目的。工件开发模块118被配置为从工件验证模块120、工件部署模块122和用户设备130a-n接收关于工件的反馈。工件开发模块118被配置为处理反馈并且对工件进行必要的改变,使得工件可以被部署和使用而没有任何问题。
工件验证模块120被配置为自动地验证将在云计算平台114上部署的工件。工件部署模块122被配置为在云计算平台114的生产环境中部署经过验证的工件。生产环境是实时系统,其使租户可使用该工件。换句话说,当租户访问工件时,在生产环境中执行部署的工件。
工件供应模块124被配置为将部署的工件供应给云计算平台114的一个或多个租户。换句话说,工件供应模块124被配置为将工件分配给正请求的租户。当将工件供应给工件时,工件被显示在租户设备(例如,用户设备130a)的用户界面上。租户可以使用供应的工件访问云服务。可替换地,租户可以使用租户设备130a来访问工件本身。租户可以是已订阅了在云计算平台114上部署的工件的工业工厂106中资产的所有者。与租户相关联的租户用户可以是工业工厂106的租户管理员,其可以向子租户(例如,其他租户用户)分配权限以访问在云计算平台114上部署的工件。在工业工厂106中,子租户可以包括但不限于工厂运营商、现场工程师、调试代理、iot代理、iot网关、工业资产、远程设备,例如移动设备、平板电脑、笔记本电脑等。部署在云计算平台114上的工件可以使用云计算平台114提供的各种服务使租户能够调试工业工厂106、监视和控制工业工厂106中的资产108a-n及其操作、进行工业工厂106及其资产108a-n的维护、在工业工厂106中配置自动化系统、监视和控制在工业工厂106中的自动化系统。另外,工件可以使租户能够使用云服务配置资产108a-n,板上资产到云计算平台114上、经由iot网关将实时原始工厂数据(例如,由部署在工业工厂106中的传感器收集的操作数据)发送到云计算平台114、从云计算系统102检索聚合的工厂数据、分析工厂数据或特定条件、可视化分析后的工厂数据、访问资产的数字孪生模型、使用数字孪生模型来执行工厂环境的仿真、管理iot设备、使用由云计算平台114提供的云服务来下载不同版本的固件等。工件还可以通过调用适当的api,并基于api及其功能的执行在图形用户界面上向租户提供输出来负责处理来自子租户的请求。
访问控制模块132被配置为基于分配给授权的子租户的角色和权限向授权的子租户提供对工件的访问。因此,工件执行模块134被配置为通过基于来自子租户的(一个或多个)请求执行在生产环境中部署的工件来执行一个或多个操作,并将响应发送给子租户。例如,租户可以经由用户设备130a的web接口向数据可视化api请求与电动机相关联的聚合的时间序列数据(例如,一小时的电动机速度)。工件执行模块134可以执行数据可视化api的工件文件以获取与电动机相关联的聚合的时间序列数据,并在用户设备130a的web界面上提供聚合的时间序列数据的可视化。
工件监视模块126被配置为在运行时间期间(在云计算平台114上执行工件)监视部署在生产环境中的工件的性能。工件监视模块126被配置为实时确定部署在生产环境中的工件的异常行为。工件监视模块126被配置为经由用户设备130a-n向工件开发模块118、工件部署模块122和租户106提供反馈。例如,工件监视模块126生成指示该工件的异常行为的通知。工件监视模块126被配置为暂停部署在生产环境中的工件的执行。
工件生命周期管理模块116的不同模块在下面更详细地描述。
图2是图示了根据本发明的实施例的在工件生命周期管理模块116的不同组件之间的高级交互的示意表示。在示例性操作中,工件开发模块118基于经由集成开发环境提供的用户输入,生成工件(例如,软件应用)的工件包(具有api的二进制代码、清单文件和数据库文件)。工件开发模块118将唯一的标识符分配给工件。而且,工件开发模块118使用不同的测试场景执行工件的测试,并且如果工件通过测试,则将工件包存储在工件储存库128中。
工件验证模块120监视正被存储在工件储存库128中的新工件。因此,当存储了新工件时,工件验证模块120自动地识别存储在工件储存库128中的新工件。工件验证模块120使用工件标识符从多个类别中确定存储在工件储存库128中的工件的类别,并基于工件的类别确定要对工件执行的一个或多个验证检查。例如,如果工件是软件应用,则工件验证模块120在预检查期间执行二进制代码或工件包的病毒扫描、在静态筛选期间执行依赖性检查,并在动态筛选期间通过在沙箱环境202中执行工件来检查工件的行为。
工件验证模块120使用所确定的验证检查来执行工件的验证。工件验证模块120使用工件签名(例如,哈希密钥)对工件进行签名,并将与该工件相关联的工件签名存储在工件储存库128中。在一些实施例中,工件验证模块使用校验和或证书对工件进行签名。而且,工件验证模块120向工件开发模块118发送指示成功地执行工件验证的第一通知。
如果工件验证不成功,则工件验证模块120确定未成功进行工件验证的原因。工件验证模块120确定是否可以自动解决工件中的问题。在这种情况下,工件验证模块120使用机器学习模型对工件执行校正动作。如果对工件的验证不成功,则对机器学习模型进行预训练以解决工件中的问题。工件验证模块120对修改后的工件执行不成功的(一个或多个)验证检查。
如果问题不能解决,则工件验证模块120将第二通知发送给工件开发模块118,该第二通知指示对工件进行不成功验证的原因。开发者可以使用开发环境基于第二通知来修复工件中的问题,并将工件的更新版本存储在工件储存库128中。因此,工件验证模块120执行工件的新版本的验证。
基于第一通知,工件开发模块118将用于在生产环境204中部署的工件分配给提供者/部署者。工件部署模块122从工件储存库128下载与工件相关联的工件包。而且,工件部署模块122可以提供api和其他服务,例如在云计算平台114上部署工件所需的数据库服务。工件部署模块122基于工件签名对工件进行认证。如果工件被成功认证,则工件部署模块122使用工件包、api和数据库服务在云计算平台114的生产环境204中部署工件。由于工件被部署在生产环境204中,因此可以经由云计算平台114访问工件并将其用于执行相关功能,例如调试、配置、监视、控制和/或维护工业工厂106中的资产108a-n。
因此,工件部署模块122可以在生产环境204中测试工件的行为。如果工件的性能令人满意,则工件部署模块122将工件分配给已请求访问工件的一个或多个租户。因此,工件供应模块124将工件供应给所请求的租户。对工件的访问可以指通过经由用户设备130a-n访问在生产环境204中部署的工件来使用在云计算平台114上托管的一个或多个云服务。
工件监视模块126在运行时间期间监视工件的行为,并将工件的异常行为报告给工件的所有者、工件的提供者和工件的租户。在一个实施例中,在报告异常行为的情况下,工件部署模块122可以临时地暂停工件的执行。在另一个实施例中,在报告异常行为的情况下,工件部署模块122可以从生产环境204卸载工件。以这种方式,使用云计算平台114来开发、验证、部署、供应和监视工件。
图3是图示了根据本发明的实施例的在云计算系统上的工件生命周期管理的示例性方法的过程流程图300。在步骤302,在云计算平台114上提供开发环境。该开发环境可以包括向用户界面提供托管在云计算平台114上的必要工具和软件,以便开发环境使开发者能够开发和测试将被部署在云计算平台114上的工件。在一些实施例中,开发环境可以是协作开发环境,其使开发者能够从远程位置单独地或以协作方式开发工件。
例如,如果工件是软件应用,则开发环境提供用户界面以生成应用包(例如,与该软件应用有关的文件集)。可以基于开发者的简档信息来创建和显示开发环境。在一些实施例中,基于不同的开发者的简档信息来为其设置不同的开发环境。而且,可以基于要开发的工件的类别来提供开发环境。如果要开发的工件是云应用,则可以提供适合于生成应用的开发环境。但是,如果要开发的工件是工程配置,则生成用于为自动化系统生成工程配置的开发环境。开发环境托管在云计算系统102上。开发环境有时被称为“集成开发环境”。
在步骤304,使用集成开发环境来开发工件。在一个实施例中,使用人工智能(ai)算法来开发工件。在另一个实施例中,基于来自开发者的输入来开发工件。在步骤306,使用不同的测试场景在集成开发环境中测试工件。在步骤308,将工件存储在工件储存库128中。例如,包括二进制代码、清单文件、数据库文件和相关联的api的工件包被存储在工件储存库128中。工件还被分配了唯一标识符,使得可以不时地从人工储存库128中搜索和检索工件。而且,唯一标识符有助于在工件的生命周期期间对其进行跟踪。还为工件分配了一个版本号,该版本号将有助于基于版本管理工件。
在步骤310,对工件执行验证。例如,对工件执行一次或多次验证检查。如果验证检查成功,则使用工件签名(例如,哈希密钥)对工件进行签名。与工件相关联的工件签名被存储在工件储存库128中。在步骤312,确定对工件执行的验证是否成功。如果验证不成功,则将反馈提供给开发者,以指示验证检查已失败以及失败的原因。开发者可以修复工件中的问题,并将修改后的工件存储在工件储存库128中。当在工件储存库128中自动确定修改后的工件时,再次执行验证检查。如果验证不成功,则工件可能会基于校正动作自动地进行修改。基于机器学习技术(例如ai模型)等自动计算校正动作。然后,对修改后的工件执行验证检查。在一些实施例中,云计算平台114选择性地执行工件先前失败的验证检查。这将节省验证工件的时间和资源。
如果对工件的验证成功,则在步骤314,对工件进行认证并部署在生产环境(例如生产环境204)中。在一些实施例中,如果工件的验证成功,则开发者将工件分配给适当的提供者/部署者。因此,工件被显示在有关提供者/部署者的图形用户界面(例如,web界面)中。此后,提供者启动部署过程。可替换地,一旦对工件的验证成功,就可以将工件自动部署在云计算平台114的生产环境204中。
在步骤316,将工件供应给云计算平台114的一个或多个租户。在一些实施例中,工件供应模块124在生产环境204中的工件与租户的简档之间建立设置路由。这使授权的租户能够经由云计算平台114查看、访问和使用工件及其功能。在步骤318,实时监视部署在云计算平台114上的工件。例如,针对恶意行为、性能、可疑活动、高资源消耗等监视工件。在步骤320,确定工件的操作是否正常。如果确定工件的操作不正常,则在步骤322,基于问题的性质,临时地暂停或从生产环境204中不部署工件在云计算平台114上的执行。因此,将指示工件的异常行为的反馈通知提供给工件的开发者、云计算平台114的租户以及工件的提供者。另外,反馈通知可被发送给工件验证模块120,使得工件验证模块120在修改的工件的验证期间考虑反馈。开发者可以基于反馈通知修改工件。可以在生产环境204中重新验证和/或重新部署工件。然后,将修改后的工件供应给租户。如果在监视活动期间未发现异常行为,则继续不中断地执行工件。
图4是根据本发明的实施例的能够开发要在生产环境204中部署的工件的工件开发模块118的框图。工件开发模块118包括开发者环境生成模块402、开发者认证模块404、工件生成模块406、工件测试模块408、工件注册模块410、工件分配模块412、工件版本管理器414和反馈处理模块416。
开发环境生成模块402被配置为生成用于开发工件的集成开发环境。在一个实施例中,开发环境生成模块402基于发出请求的开发者的简档信息来生成集成开发环境。在另一个实施例中,开发环境生成模块402基于要开发的工件的类型来生成集成开发环境。工件可以是云应用、边缘应用、代码片段、自动化项目、数字孪生模型、api、连接性配置、基于事件的功能性、安全应用、仿真模型等。集成开发环境在属于一个或多个开发者的任何用户设备130a-n上提供基于图形和/或控制台的用户界面。图形用户界面还显示了开发工件所需的工具和小部件。
开发者认证模块404基于开发者输入的登录证书来认证开发者以访问集成开发环境。工件生成模块406被配置为基于从开发者接收的用户输入(拖放特征),生成工件包以部署在云计算平台114上。工件生成模块406被配置为生成工件的唯一标识符。工件测试模块408被配置为生成用于在测试环境中测试所生成的工件的测试用例。例如,测试用例基于工件的类型,包括来自资产的测试数据、时间序列数据等。工件测试模块408被配置为使用所生成的测试用例在测试环境中测试工件。在一些实施例中,测试环境可以是集成开发环境的一部分。
工件注册模块410被配置为将工件存储在工件储存库128中。工件注册模块410被配置为启用或禁用特定的工件版本以进行验证和部署。工件分配模块412被配置为在成功验证工件之后将工件分配给提供者/部署者以在生产环境204中部署。工件版本管理器414被配置为使用唯一标识符在工件的整个生命周期期间管理工件的不同版本。反馈处理模块416被配置为处理来自工件验证模块120、工件部署模块122和工件监视模块126的反馈。反馈处理模块416可以向工件生成模块406提供推荐,使得工件生成模块406可以在下一版本中对工件进行必要的药物治疗。
图5是根据本发明的实施例的能够验证要在生产环境204中部署的工件的工件验证模块120的框图。工件验证模块120包括工件检测模块502、工件验证器504、报告模块506和反馈模块508。
工件检测模块502被配置用于由工件开发模块118自动检测在工件储存库128中新工件的储存。例如,工件检测模块502可以监视储存库文件以确定存储在工件储存库128中的新工件。可替换地,当在工件储存库128中的新工件的上传完成时,工件检测模块502可以从工件储存库128接收触发。
工件验证器504被配置用于对工件执行多个验证检查,以在部署之前识别工件中的问题。在一个实施例中,可以对工件执行预检查(即,第一验证检查)、静态筛选(即,第二验证检查)和动态筛选(即,第三验证检查)。在实例性实现中,工件验证器504被配置为对工件的工件包执行预检查。对工件执行预检查,以便识别工件中的明显缺陷。例如,工件验证器504可以对工件包执行病毒和恶意代码扫描、检查工件的图标合规性、确定工件对标准的依从性、执行语法和语义检查等。
另外,工件验证器504被配置为执行工件的静态筛选。例如,工件验证器504执行依赖性检查、不安全的证书分析、指示符雕刻分析、应用资产雕刻和清除等。工件验证器504可以爬行以获得依赖性并且识别依赖性中的漏洞。工件验证器504可以爬行以获取硬编码的证书、私钥、用户名、密码等,并识别与工件相关联的不安全的证书。工件验证器504可以针对威胁情报数据库爬行以获取硬编码的url、ip地址、域/检查。工件验证器504可以爬行以查找嵌入式文件(例如,图像、样式表、脚本、文档),并针对防病毒引擎和威胁情报数据库检查。
而且,工件验证器504被配置为对工件执行动态筛选。在一个实施例中,工件验证器504被配置为通过在沙箱环境202中执行工件来在运行时间环境中测试工件的行为。在这一实施例中,工件验证器504被配置为当被部署在云计算平台114上时确定工件行为是否可接受。例如,工件验证器504可以检查开放式web应用安全项目(owasp)web应用的漏洞、数据泄露、不安全的数据储存、api一致性、健壮性、性能、用户界面/经验、部署问题等。
工件验证器504还被配置为如果工件通过所有验证检查通过生成工件签名对工件进行签名。例如,可以使用校验和或证书对工件进行签名。在一个实施例中,工件验证器504将安全哈希算法例如sha-256应用于工件文件并生成用于工件的唯一哈希密钥。下面给出了用于工件的示例性哈希密钥:
0xe3b0c44298fclcl49afbf4c8996fb92427ae41e4649b934ca495991b7852b855。工件验证器504将被签名的工件的工件签名(例如,唯一哈希密钥)存储在工件储存库128中。
报告模块506被配置用于生成指示工件已经通过验证过程的第一通知。反馈模块508被配置为确定哪些验证检查不成功。反馈模块508被配置用于确定造成不成功的验证检查的原因。而且,反馈模块508被配置用于通过执行使用机器学习技术(例如,经过训练的人工智能模型)计算出的校正动作来自动解决问题。此外,反馈模块508被配置用于生成第二通知,该第二通知指示工件未通过(一个或多个)验证检查以及这种失败的原因。反馈模块508被配置为将第二通知发送给工件开发模块118。
图6是图示了根据本发明的实施例的对要在生产环境204中部署的工件执行验证的示例性方法的过程流程图600。在步骤602,与工件储存库128中的工件相关联的事件被自动确定。例如,事件可以是由工件开发模块118将工件包存储在工件储存库128中的动作。在这种情况下,从工件储存库128中识别要在生产环境204中部署的工件。可替换地,事件可以是更新存储在工件储存库128中的工件包的动作。如果有多个工件等待验证,则将新确定的工件添加到队列中。如果同时上传多个工件,则基于确定的工件类别将工件添加到相应的队列中。例如,可以维持多个工件队列;每个队列包含特定类别的工件。
在步骤604,执行工件文件的预检查以确定工件中的明显缺陷。在步骤606,确定对工件执行的预检查是否成功。如果工件未通过预检查,则在步骤608,将指示该工件未通过验证检查之一的反馈发送给工件的所有者(例如,开发者)。可替换地,根据预定义的校正动作来修改工件,并且执行对所修改的工件的预检查。在一些实施例中,使用机器学习技术来确定预定义的校正动作。如果工件通过了预检查,则在步骤610,执行工件文件的静态筛选。例如,对工件的静态筛选包括依赖性检查、不安全的证书分析、指示符雕刻分析、应用资产雕刻和清除等。
在步骤612,确定对工件执行的静态筛选是否成功。如果该工件未能通过静态筛选,则在步骤608,将指示该工件未通过验证检查之一的反馈发送给该工件的所有者(例如,开发者)。可替换地,根据预定义的校正动作来修改工件,并且对所修改的工件执行静态筛选。在一些实施例中,使用机器学习技术来确定预定义的校正动作。如果工件通过静态筛选,则在步骤614,对工件文件执行动态筛选。在一个实施例中,对工件的动态筛选涉及在沙箱环境202中执行工件以在运行时间期间测试工件的行为。在该实施例中,在被部署在云计算平台114上时确定工件的行为是否在可接受的标准内。
在步骤616,确定对工件执行的动态筛选是否成功。如果该工件未能通过动态筛选,则在步骤608,将指示该工件未通过验证检查之一的反馈发送给该工件的所有者(例如,开发者)。可替换地,根据预定义的校正动作来修改工件,并且对所修改的工件执行静态筛选。在一些实施例中,使用机器学习技术来确定预定义的校正动作。
如果对工件的动态筛选成功,则在步骤618,使用工件文件生成工件的工件签名。例如,通过在工件文件上应用sha-256算法来生成哈希密钥。在步骤620,使用工件签名对工件进行签名。即,工件签名链接到与工件相关联的标识符。在步骤622,分配给工件的工件签名被存储在工件储存库128中。而且,指示工件被成功验证的通知被发送到工件开发者模块118。可以注意到,预检查、静态筛选和动态筛选工件可以并行被执行。这将节省验证工件所需的时间。可以注意到,除了预检查、静态筛选和动态筛选工件之外,还可以有更多的验证检查。而且,在预检查、静态筛选和动态筛选中的每一个中执行的验证检查的类型可以基于工件的种类和用于在云计算平台114上部署工件的验证需求而变化。
图7是根据本发明的实施例的能够在生产环境204中认证和部署工件的工件部署模块122的框图。工件部署模块122包括认证模块702、部署模块704和通知模块706。
认证模块702被配置为基于工件签名来认证请求部署在生产环境204中的工件。在一个实施例中,认证模块702通过在工件文件上应用安全散列算法(例如,sha-256)来重新生成唯一的散列密钥。认证模块702将重新生成的哈希密钥和与存储在工件储存库128中的工件相关联的哈希密钥进行比较。认证模块702确定两个哈希密钥是否匹配。如果两个哈希密钥匹配,则认证模块702触发事件以部署工件。
部署模块704被配置为基于认证模块702触发的事件在生产环境204中部署工件。部署模块704被配置为确定在云计算系统102的生产环境204中部署工件包所需的一个或多个组件。例如,组件可以包括在生产环境204中部署工件所需要的特定api和数据库服务。部署模块704被配置为提供在生产环境204中部署工件所需的推荐组件的列表。这使提供者能够选择和下载用于在生产环境204中部署工件的特定api和数据库服务。
通知模块706被配置为在认证失败的情况下通知工件的所有者/部署者。通知模块706还被配置为在工件被成功地部署在生产环境204中的情况下通知提供者/部署者。
图8是图示了根据本发明的实施例的在云计算平台114上的生产环境204中认证和部署工件的示例性方法的过程流程图800。在步骤802,接收用于在云平台114上部署工件的请求。在一个实施例中,在成功验证工件后工件可以自动地或由工件的所有者分配给特定的提供者/部署者,以在生产环境204中进行部署。发送对工件的分配作为在云计算平台114上部署工件的请求。可替换地,提供者/部署者可以使用工件标识符/名称在工件储存库128中搜索期望的工件。提供者/部署者可以向工件部署模块124发送请求以部署工件。
在步骤804,使用与要部署在云计算平台114上的工件相关联的工件文件来重新生成签名。例如,通过在工件文件上应用sha-256算法来重新生成哈希密钥。在步骤806,从工件储存库128中检索与工件相关联的工件签名。在步骤808,确定工件签名是否与重新生成的工件签名匹配。如果未找到匹配,则在步骤810,生成指示该工件不是真的通知。因此,拒绝用于在云计算平台114上部署工件的请求。
如果找到匹配,则在步骤812,从工件储存库128中检索与工件相关联的工件包和相关联的文件(例如,api、数据库文件等)。在步骤816,将工件部署在云平台114的生产环境204中。在步骤818,将工件供应给云平台114的一个或多个租户。例如,将工件分配给租户,以便租户可以使用在生产环境204中部署的工件。将工件分配给已订阅该工件的租户。此外,租户可以将工件分配给子租户,以便子租户可以访问工件。
图9图示了显示与开发者相关联的不同工件的图形用户界面900。在图9中,图形用户界面900显示与开发者相关联的仪表板902。开发者可以通过登录由云计算平台114提供的开发环境来访问仪表板902。仪表板902显示由开发者(例如,乔纳森·多伊(jonathandoe))创建的不同应用904a-h的网格布局。仪表板902显示应用904a-h的图标、应用904a-h的状态(验证失败、验证成功、未验证、部署、供应、开发、测试、注册、上载等)以及与应用904a-h相关联的版本号。仪表板902使开发者能够使用“创建新应用”链接906来创建新应用,或者使用“创建新版本”链接908来创建工件的新版本。仪表板902允许开发者使用搜索栏910从多个应用904a-h搜索特定的应用。
图10图示了图形用户界面1000,示出了要在生产环境204中部署的应用。在图10中,图形用户界面1000描绘了准备在生产环境204中部署的应用(即,机器人控制)的细节1002。一成功验证应用后,由开发者基于应用的分配,在提供者的图形用户界面1000中显示该应用的细节。图形用户界面1000显示在实时系统(即生产环境204)上部署应用所需的api1004。图形用户界面1000提供了部署按钮1006,其使提供者/部署者能够在生产环境204中触发应用的部署。而且,图形用户界面1000提供了下载按钮1008,其使提供者/部署者能够下载应用的应用包(二进制代码、api、清单文件)。
图11图示了示出了供应给租户的应用的状态的图形用户界面1100。在图11中,图形用户界面1100显示供应给租户1104的应用(例如,机器人控制)的细节。例如,图形用户界面1100将应用的名称显示为“robotcontrol(机器人控制)”,将该应用的版本显示作为“vl.l”,将该应用的唯一标识符显示为“290897”,以及将开发者标识符显示为“iddevabc”。而且,图形用户界面1100显示应用的健康状态1106。例如,应用“robotcontrol(机器人控制)”的健康状态1106显示为“正在运行”。图形用户界面1100显示应用的供应状态1108。例如,应用“robotcontrol(机器人控制)”的供应状态1106显示为“已发布”。另外,图形用户界面1100关于已订阅应用的租户列表1104中的每个租户1至9显示应用的状态1110。例如,图形用户界面1100关于租户1将应用“robotcontrol(机器人控制)”的状态1110显示为“活动”。类似地,图形用户界面1100关于租户3将应用“robotcontrol(机器人控制)”的状态1110显示为“请求激活”。即,租户3已经请求提供者激活应用“robotcontrol(机器人控制)”。
图12图示了图形用户界面1200,其示出了与提供者相关联的不同应用1202a-c的生命周期状态信息。在图12中,图形用户界面1200显示由提供者在生产环境204中部署的应用1202a-c的每个实例的实时生命周期状态1204。生命周期状态1204可以指示各个应用1202a-c是否为正在运行、部署、发布、崩溃、停止、分配等,其对应于供应阶段和生产阶段。例如,图形用户界面1200在供应阶段将应用1202a(即,robotcontrol(机器人控制))的生命周期状态1204显示为“被部署”,而在生产阶段(运行时间阶段)显示为“正运行”。
图13是图形用户界面1200,示出了正被监视的应用的运行时间行为。在图12中,图形用户界面1300显示由工件监视模块126实时监视的供应的应用(即,robotcontrol(机器人控制))的实时状态。实时状态指示应用的健康状态、流量数据、使用情况数据、趋势比较、订阅信息等。图形用户界面1200也可以显示应用的异常行为,如果在监视应用期间被检测到的话。
图14是根据本发明的实施例的云计算系统102(诸如图1所示的云计算系统)的示意表示。云计算系统102包括处理单元1402、存储器单元1404、储存单元1406、通信接口1408和云接口110。
处理单元1402可以是一个或多个处理器(例如,服务器)。处理单元1402能够执行存储在诸如存储器单元1404之类的计算机可读存储介质上的机器可读指令,以执行前述描述中描述的一个或多个功能,包括但不限于将云服务递送给授权的租户以及在其生命周期期间中管理工件。存储器单元1404包括以机器可读指令的形式存储并且可由处理单元1402执行的云计算平台114。可替换地,云计算平台114可以采取诸如具有嵌入式软件的处理器之类的硬件形式。云计算平台包括工件生命周期管理模块116、访问控制模块132和工件执行模块134,其以机器可读指令的形式存储,该指令可由处理单元1402执行。
储存单元1406可以是易失性或非易失性储存。在优选实施例中,储存单元1406包括用于存储工件包和工件签名的工件储存库128。工件储存库128被配置为存储与各个工件相关联的目录条目。工件储存库128还被配置为存储与工件的实例的执行相关联的记录的信息。储存单元1406还可以存储从工业工厂106接收的原始数据或聚合数据。通信接口1408用作云计算系统102的不同组件之间的互连装置。通信接口1108可以使得能够实现在处理单元1402、存储器单元1404和储存单元1106之间的通信。处理单元1402、存储器单元1404和储存单元1406可以位于相同位置或在远离工业工厂106的不同位置。
云接口110被配置为建立和维护与工业工厂106的通信链路。而且,云接口110被配置为维护在云计算系统102与用户设备130a-n之间的通信信道。
图15是根据本发明的实施例的工件生成模块406(诸如图4所示的)的框图。工件生成模块406包括可执行物生成模块1502、条目创建模块1504、关联模块1506、工件包生成模块1508和工件包管理模块1510。
可执行文件生成模块1502被配置为生成与要部署在云计算系统102上的工件相关联的可执行文件。例如,可执行文件是工件的二进制文件。条目创建模块1502被配置为在工件储存库128中创建与工件相关联的目录条目。关联模块1506被配置为生成可执行文件与工件的目录条目的关联。关联模块1506被配置为生成模板文件与工件的目录条目的关联。模板文件可以包括定义工件的输入和输出结构的参数。可以在用户执行工件的实例之前修改参数值。有利地,通过修改模板中的参数,可以将工件用于不同的场景。例如,不同的工厂或资产对分析数据有不同的要求。通过在执行工件之前改变与目录条目相关联的模板文件,本发明使得能够使用相同的工件来满足那些工厂和资产的不同分析要求。结果,不需要不同的工件来满足不同的分析要求,而是可以将单个工件用于不同的目的。
工件包生成模块1508被配置为生成工件包,该工件包包括与工件相关联的可执行文件和模板。工件包生成模块1508被配置为在工件储存库128中存储与工件相关联的工件包。工件包管理模块1510被配置为在应用市场上发布工件包。工件包管理模块1510被配置为提供对经由应用市场发布的工件包的访问。有利地,云计算系统102的用户可以经由云应用市场访问工件。工件包管理模块1510被配置为基于从用户设备130a-n接收的参数值来修改工件的模板的参数。工件包管理模块1510被配置为记录与工件的实例的执行相关联的信息。例如,该信息可以包括执行时间、响应时间、失败的任务和类似工件。
图16是图示了根据本发明的实施例的在云计算环境100中提供工件的示例性方法的过程流程图1600。在步骤1602,生成与要部署在云计算系统102上的工件(例如,算法)相关联的可执行文件。例如,当工件是分析算法时,可执行文件可以是可执行分析文件。在步骤1604,在工件储存库128中创建与工件相关联的目录条目。例如,工件的目录条目包括指示工件功能的工件的描述以及工件的应用场景。
在步骤1606,生成在与工件相关联的可执行文件和与工件相关联的目录条目之间的关联。可执行文件包括文件(例如,分析jar文件)、目录条目标识符、可执行文件的类型、可执行文件的描述。在步骤1608,生成在与工件相关联的模板和与工件相关联的目录条目之间的关联。模板包括文件(例如,分析模板文件)、目录条目标识符、文件的类型、文件的描述。模板文件可以描述一个或多个参数,其包括输入和输出结构。
在步骤1610,生成包括可执行文件和与工件相关联的模板的工件包。在步骤1612,与工件相关联的工件包被存储在工件储存库128中。在步骤1614,与工件相关联的工件包使用目录条目被发布在应用市场中。
图17是图示了根据本发明的实施例的提供对在应用市场中发布的工件的访问的示例性方法的过程流程图1700。在步骤1702,从用户设备130a接收用于访问存储在工件储存库128中的工件的请求。用于访问工件的请求包括与工件相关联的一个或多个关键字。在步骤1704,确定与工件相关联的关键字是否与工件储存库128中的一个或多个目录条目的描述相匹配。如果找到匹配,则在步骤1706,从工件储存库访问与工件相关联的目录条目。如果没有找到匹配,则在步骤1708,将通知发送到用户设备130a。在步骤1710,使用目录条目从工件储存库128获得与工件相关联的工件包。在步骤1712,经由应用市场将对与工件相关联的工件包的访问提供给用户设备130a。
图18是图示了根据本发明的实施例的执行部署在云计算系统102的生产环境t204中的工件的示例性方法的过程流程图1800。在步骤1802,执行在生产环境204中部署的工件的实例的请求。该请求包括与工件相关联的模板的一个或多个参数值。在步骤1804,修改与工件相关联的模板的参数值。在步骤1806,根据与工件相关联的修改后的模板中的参数值,将工件的实例部署在生产环境204中。在步骤1808,将工件的实例的执行输出提供给用户设备130a。
在步骤1810,将与在生产环境204中部署的工件实例的执行相关的信息记录在工件储存库128中。例如,与工件的至少一个实例的执行相关联的信息包括执行时间、响应时间、失败的任务和类似工件。执行时间可以包括与工件相关联的总执行时间。响应时间可以包括工件的平均响应时间。失败的任务可能包括在工件实例执行期间记录的异常。类似工件可以包括与正在执行的工件类似的工件。该信息可以帮助开发者改善工件。
在各种实施例中,云计算系统102提供了用于在其整个生命周期中管理不同类型的工件的平台。云计算系统102使得能够开发、测试,验证、部署、发布、供应和实时执行负责递送云服务(例如数据储存、数据分析、数据可视化)的工件。云服务旨在使得能够调试、配置、监视、控制和维护在包括工业工厂的设施中的资产。云计算系统102通过实时提供来自工件的验证、部署和运行时间执行的反馈,在其生命周期期间提供工件的闭环管理,从而减少了停机时间并有效地管理工件。云计算系统102通过在生产环境中部署之前自动验证和认证工件来提供工件的安全部署。而且,云计算系统102实时监视工件的性能,并报告在工件执行期间检测到的异常,从而防止工件的异常操作和危害。
本发明可以采取一种计算机程序产品的形式,该计算机程序产品包括可从计算机可用或计算机可读介质访问的程序模块,其存储供一个或多个计算机、处理器或指令执行系统使用或与其结合使用的程序代码。为了描述的目的,计算机可用或计算机可读介质可以是可以包含、存储、通信、传播或传输供指令执行系统、装置或设备使用或与其结合使用的程序的任何装置。介质可以是电子的、磁的、光学的、电磁的、红外的或半导体系统(或装置或设备)或传播介质本身,因为信号载体未包括在物理计算机可读介质的定义中,该物理计算机可读介质包括半导体或固态存储器、磁带、可移动计算机软盘、随机存取存储器(ram)、只读存储器(rom)、硬磁盘和光盘,例如光盘只读存储器(cd-rom),光盘读/写和dvd。如本领域技术人员已知的,用于实现该技术的每个方面的处理器和程序代码都可以是集中的或分布式的(或其组合)。