用于使用编译和部署服务进行软件构建和负载处理的系统、方法和计算机程序产品的制作方法

文档序号:8531859阅读:318来源:国知局
用于使用编译和部署服务进行软件构建和负载处理的系统、方法和计算机程序产品的制作方法
【技术领域】
[0001]本发明总体上涉及改善软件构建和负载处理,尤其涉及用于使用编译和部署服务进行软件构建和负载处理的系统、方法和计算机程序产品。
【背景技术】
[0002]通常,在构建软件应用之后,源代码、配置文件和其它加工材料被生成、编译并封装至负载模块中。一旦构建了这些负载模块,该负载模块就可以被运送至执行环境,它们在那里被加载并且可能链接至处理单元。
[0003]图1是图示出典型构建过程的流程图。可以使用生成器120提供或自动创建源文件110。例如使用通用的帧、类、原型、模板、方面或其它本体论模型,生成器120可以使用配置文件100自动生成源文件110。生成器120还可以包括一种或多种编程工具,诸如模板处理器或集成开发环境(IDE)。
[0004]源文件110可以由编译器130编译为目标文件140。编译器130可以是将以一种编程语言编写的源代码变换为另一种计算机语言的计算机程序或程序集合。例如,编译器130可以将源代码从高级编程语言转译为较低级别的语言,诸如汇编语言或机器代码。
[0005]在如图1所示的典型构建过程中,编译器130可以将源文件110转换为目标文件140。目标文件140例如可以包含能够重新定位的格式的机器代码。由于目标文件140可能无法直接执行,所以它们可以被输入到归档器150中。归档器150可以是链接器或链接编辑器,其取得编译器130所生成的一个或多个目标文件并且将它们组合为单个可执行程序或负载模块160。计算机应用可以包括若干模块160,并且所有模块都并非必然包含于单个目标文件140中。例如,目标文件140可以包含由归档器150所分解的符号,该归档器150将目标文件链接至统一的可执行程序或负载模块160。结果,负载模块160可以包括可执行和可链接格式(ELF)归档、JARCJava归档)或TAR(磁带归档)文件、Debian(DEB)或PRM封包,或者其它容器。
[0006]一旦针对软件应用构建了负载模块,该软件应用的类型可以确定该负载模块如何从构建地点发送以便被加载到处理单元上。目前,在将负载单元发送至处理单元时,经常假设新的负载单元并不对该处理单元上的已有软件形成干扰。此外,经常假设新的负载模块与处理单元上的诸如中间件和操作系统的基础软件架构相兼容。在一些情况下,新的负载模块可以在处理单元上的沙箱中进行测试。沙箱允许新的负载模块相对于实际处理单元环境进行测试而并没有对实际设备的操作形成干扰的风险。
[0007]图2是图示负载模块被加载到处理单元上的流程图。在典型的加载过程中,最差的情况是在负载模块160被加载到处理单元200上时并未执行检查。在其它情况下一诸如当使用如apt或yum的封装管理器时一在新的封装被加载到处理单元200上或者对现有封装进行更新时执行基本依赖性检查。违反一种或多种依赖性的封装可能不会被加载。
[0008]图1和图2所示的以上构建和加载过程在其中软件变化相对不频繁的静态环境中能够良好工作。例如,当前处理在桌面设置或小型服务器群中可能是够用的。然而,在现代环境中,以上构建和加载处理存在着问题。例如,在大型数据中心和云部署中,常规容器或封装系统并不够用。此外,由于数据中心和云环境中的状态频繁变化,所以需要频繁的负载模块部署。另外,特别是在云环境中,必须能够对功能软件进行封装并且将其部署在动态分配的虚拟机上。
[0009]复杂应用还经常在多个处理单元200上进行扩展。应用经常跨多个处理单元200,从而安装和更新必须跨多个处理单元200进行协调。例如,软件可能需要被加载到执行特定任务的处理单元200上,作为结果,不同软件在加载到处理单元上时必须一起工作。处理单元200和服务还可以在具有不同要求的用户之间进行共享。此外,新的软件可能对现有软件形成干扰,并且因此当在处理单元上执行时导致错误和故障时间。
[0010]因此,需要克服当前的软件构建和负载处理的缺陷。

【发明内容】

[0011]特定实施例针对用于使用编译和部署服务进行软件构建和负载处理的系统、方法和计算机程序产品。
[0012]在某些实施例中,软件被加载到被布置为提供编译和部署服务的服务器(或服务)上。例如,该服务提供了被配置为允许存储目标处理单元所采用的所有活动软件的数据库。活动软件可以处于源格式或者中间格式。例如,中间格式可以是针对目标环境的本地目标代码。
[0013]在一个特定实施例中,提供了一种用于使用编译和部署服务进行软件构建和负载处理的方法。该方法包括在该服务处接收新的软件。该方法进一步包括在该服务处将所接收到的新的软件与数据库中的数据进行比较,其中该数据包括活动软件。该方法进一步包括在该服务处基于该比较而将该新的软件和活动软件合并到一个或多个负载模块中。此夕卜,该方法进一步包括将该一个或多个负载模块部署到一个或多个目标处理单元。
[0014]在某些实施例中,该新的软件可以是被封装至容器中的源代码。在该实施例中,该比较步骤进一步包括在源级别上针对之前所定义的约束和活动软件对源代码进行检查。此夕卜,该合并步骤进一步包括在该服务处将该源代码和活动软件进行合并和编译。
[0015]在某些实施例中,该新的软件可以是被封装至容器中的经编译的源代码,该容器具有描述经编译的源代码的属性的新的清单。在该实施例中,该数据库中的数据包括与该活动软件相关联的一个或多个现有清单文件。该比较步骤进一步包括提取新的清单并且相对于预定义的约束和一个或多个现有清单对该新的清单进行检查。
[0016]在一些实施例中,该新的软件是中间格式的源代码。在该实施例中,该方法的比较步骤进一步包括相对于预定义的约束和活动软件对该中间格式的源代码进行检查。此外,该合并步骤进一步包括对该中间格式的源代码进行完全编译。在一些实施例中,该合并步骤进一步包括在语句和表达式的级别上将中间格式的源代码与活动软件进行合并。
[0017]在一些实施例中,该方法进一步包括在该服务处接收所接收到的新的软件的一个或多个代码特性,其中该数据库数据包括所存储的该活动软件的特性。该方法进一步包括在该服务处作为该数据比较的一部分将所接收到的新的软件的代码特性与所存储的活动软件的代码特性进行比较。
[0018]在其它实施例中,该目标处理单元包括一个或多个SGSN节点和负载平衡器,该新的软件包括SGSN软件和新的负载平衡器规则,并且该数据包括现有的负载平衡器规则。
[0019]在一些实施例中,该方法的比较步骤进一步包括使用一个或多个负载平衡器检查和编译器相对于现有负载平衡器规则对新的负载平衡器规则进行检查。该方法的合并步骤进一步包括将新的负载平衡器规则中与现有负载平衡器规则共有的部分进行合并,并且报告与现有负载平衡器规则冲突的新的负载平衡器规则。
[0020]在一些实施例中,该方法的比较步骤进一步包括在一个或多个SGSN检查器和编译器检查SGSN软件。
[0021]在一些实施例中,该目标处理单元通过处理器架构、操作系统和/或新的软件的预期使用中的一个或多个进行归类。
[0022]根据特定实施例,提供了一种用于使用编译和部署服务进行软件构建和负载处理的系统。该系统包括编译和部署服务,其包括服务器,耦合至该服务器的处理器,耦合至该处理器的存储器,和电子耦合至该服务器的数据库。该处理器被配置为接收新的软件。该处理器进一步被配置为将所接收到的新的软件与数据库中的数据进行比较,其中该数据包括活动软件。该处理器进一步被配置为基于该比较而将该新的软件和活动软件合并到一个或多个负载模块中。此外,该处理器进一步被配置为将该负载模块部署到目标处理单元。
[0023]在某些实施例中,新的软件是被封装至容器中的源代码,并且该处理器可以进一步被配置为在源级别上针对之前所定义的约束和活动软件对源代码进行检查。该处理器还可以进一步被配置为将该源代码和活动软件进行合并和编译。
[0024]在其他实施例中,该新的软件是被封装至容器中的经编译的源代码,该容器具有描述经编译的源代码的属性的新的清单。在该实施例中,该数据库中的数据可以包括与该活动软件相关联的一个或多个现有清单文件。此外,该处理器可以进一步被配置为提取新的清单并且相对于预定义的约束和一个或多个现有清单对该新的清单进行检查。
[0025]在一些实施例中,该新的软件是中间格式的源代码,并且该处理器可以进一步被配置为相对于预定义的约束和活动软件对该中间格式的源代码进行检查。该处理器还可以进一步被配置为对该中间格式的源代码进行完全编译。在一些实施例中,该处理器可以进一步被配置为在语句和表达式的级别上将中间格式的源代码与活动软件进行合并。
[0026]在一些实施例中,该系统进一步包括处理器,其进一步被配置为接收所接收到的新的软件的一个或多个代码特性,其中该数据库数据包括所存储的该活动软件的特性。该处理器可以进一步被配置为作为该数据比较的一部分
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1