CN103765379B - 基于云的构建服务 - Google Patents
基于云的构建服务 Download PDFInfo
- Publication number
- CN103765379B CN103765379B CN201280042013.4A CN201280042013A CN103765379B CN 103765379 B CN103765379 B CN 103765379B CN 201280042013 A CN201280042013 A CN 201280042013A CN 103765379 B CN103765379 B CN 103765379B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- file
- binary code
- source file
- source
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
构建软件产品,特别是大规模软件产品的二进制代码包,是高度计算密集型过程。因此,希望将工作负载分发到大量计算节点,以便在最优的时间段内完成构建过程。提供可被用于高度可用并可动态缩放的分布式构建过程的计算资源的一个环境是弹性计算云。在这样的环境中,按构建过程的资源需求规定,虚拟机可被实例化和被破坏。这具有的优点是,专门的硬件是不需要的,并且该硬件上的用到的额外容量在构建过程空闲时可被用于其它计算任务。在此呈现的是用于分发用于弹性计算环境或其它分布式环境中的高度可用且可缩放构建服务的系统、方法和计算机存储介质。
Description
介绍
构建软件产品特别是大规模软件产品的二进制代码包,是一个高度计算密集型过程;因此,希望将工作负载分发到大量计算节点,以便在合理的时间段内完成构建过程。然而,对这样的构建服务的需求可能是高度间歇性的,因此不希望专用的构建资源在低需求时段期间处于空闲。因此,在此提供用于利用云资源以便以高度可用的、可动态缩放的且高效的方式分发构建服务的方法和系统。
发明内容
本发明的各实施例涉及用于分发高度可用的、可动态缩放的且高效的构建服务的系统、方法和计算机存储介质。提供可被用于可缩放地分发的构建过程的计算资源的一个环境是弹性计算云。在这样的环境中,按构建过程的资源需求规定,虚拟机可被实例化和被破坏。此方法的一个优点是,专门的硬件是不需要的,并且该硬件上的额外容量在构建过程空闲时可被用于其它计算任务。然而,对于特定组件而言保持不被虚拟化可能是有利的。在特定应用中,例如,签名密钥紧紧地控制在专用服务器上而不被准许存储在共享硬件上。因此,在此揭示的体系结构提供了高效、可缩放、高度可用且安全的系统。
提供本发明内容是为了以简化的形式介绍将在以下详细描述中进一步描述的选择的概念。本发明内容不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
附图说明
下面将参考附图详细描述本发明的说明性实施例,在附图中:
图1描绘了适于实现本发明各实施例的示例性计算设备;
图2描绘了根据本发明的一个方面的流程图图示;
图3描绘了适于实现本发明的各实施例的环境;
图4描绘了适于由虚拟机执行的,根据本发明的另一方面的用于处理源文件以产生二进制代码包的方法的流程图图示;
图5描绘了适于由源储存库执行的,根据本发明的另一方面的用于按需求提供源文件的方法的流程图图示;
图6描绘了适于由签名服务器执行的,根据本发明的另一方面的用于生成二进制代码文件的数字签名的方法的流程图图示;
图7描绘了适于由构建服务控制器执行的,根据本发明的另一方面的控制构建服务的方法的流程图图示;以及
图8描绘了根据本发明的又一方面的用于操作虚拟机服务器以从源文件中产生二进制代码包的流程图图示。
具体实施方式
本发明的主题用细节来描述,以满足法定的要求。然而,该描述本身并非旨在限定各权利要求的范围。相反,发明人已设想所要求保护的主题还可结合其它当前或未来技术以其它方式来实施,以包括不同的步骤或类似于本文中所描述的步骤的步骤组合。此外,虽然术语“步骤”在这里可用于意味着所采用的方法的不同元素,然而该术语不应被解释为在这里揭示的各步骤之间隐含特定的次序,除非明确地描述了各个步骤的次序。此外,以下参考附图详细描述了本发明,各附图整体通过引用结合于此。
本发明的各实施例涉及高度可用的、可缩放、分布式服务的方法和体系结构。因此,在一个方面,本发明包括一种或多种其上包含计算机可执行指令的计算机存储介质,该指令在被执行时使得计算设备执行一种分发高度可用的、可缩放的构建服务的方法,该方法包括确定要构建的分支,标识用于构建该分支的至少一部分的虚拟机,并标识要为该分支而传输的多个源文件,其中该虚拟机处理多个源文件的至少一个源文件以生成对应二进制代码文件。该方法进一步包括,将多个源文件的该源文件传输到虚拟机,在该虚拟机上部署构建环境,并使得该虚拟机处理多个源文件的至少该源文件以生成二进制代码文件。该方法还包括,生成二进制代码文件的数字签名,将该数字签名传输到第二虚拟机,并使得至少该第二虚拟机从至少该二进制代码文件和该数字签名中生成二进制代码包。
在另一方面,本发明包括一个高度可用、可缩放、分布式构建服务系统,该系统包括多个虚拟机,每个虚拟机接收一个源文件,处理至少该源文件以生成二进制代码文件,接收对应于该二进制代码文件的数字签名,并从至少该二进制代码文件和该数字签名中生成二进制代码包。该构建系统还包括存储该源文件并将该源文件发送到构建服务控制器的第一源储存库。构建系统还包括签名服务器,它接收二进制代码文件的足以生成二进制代码文件的数字签名的表示,并生成对应于该二进制代码文件的表示的数字签名。该构建系统还包括构建服务控制器,其功能性地连接到多个虚拟机、第一源储存库和签名服务器,以及确定要构建的分支、标识要被传输的分支的多个源文件、从至少第一源储存库中检索所述多个源文件、将多个源文件的第一源文件发送到多个虚拟机的第一虚拟机、接收足以生成二进制代码文件的数字签名的二进制代码文件的表示并将该表示转发到签名服务器,并接收数字签名并将数字签名转发到多个虚拟机的第二虚拟机。
在又一个方面,本发明包括一种适于用于分布式计算环境中的计算机实现方法,该分布式计算环境利用处理器和存储器来实现高度可用的、可缩放的分布式构建服务,该方法包括,在单个物理机器处接收对应于要被生成的多个二进制代码文件的多个源文件,并在单个物理机器上实例化多个虚拟机,多个虚拟机的每个虚拟机用构建环境来配置。多个虚拟机是与要在单个物理机器上生成的二进制代码文件数量相等数量的虚拟机。该方法还包括向多个虚拟机的每个虚拟机发送对应于多个二进制代码文件的各单个二进制代码文件的那些源文件,使得多个虚拟机的每个虚拟机从这些源文件中生成各二进制代码文件,使得为多个所生成的二进制代码文件的至少一个二进制代码文件生成数字签名,并使得二进制代码包被生成。二进制代码包包括二进制代码文件和对应的数字签名。
在简要描述了本发明的各实施例的概览后,以下描述适于实现本发明的各实施例的示例性操作环境。
大体上参考附图,并且首先具体参考图1,示出了适用于实现本发明的各实施例的示例性操作环境,并将其概括指定为计算设备100。计算设备100只是合适的计算环境的一个示例,并且不旨在对本发明的使用范围或功能提出任何限制。也不应将包括设备100的计算环境解释为对所示出的任一模块/组件或其组合有任何依赖性或要求。
各实施例可以在计算机代码或机器可使用指令的一般上下文中描述,包括由计算机或诸如个人数据助理或其他手持式设备等其他机器执行的诸如程序模块等的计算机可执行指令。一般而言,包括例程、程序、对象、模块、数据结构等的程序模块指的是执行特定任务或实现特定抽象数据类型的代码。各实施例可以在各种系统配置中实施,这些系统配置包括手持式设备、消费电子产品、通用计算机、专用计算设备等等。各实施例也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实施。
继续参考图1,计算设备100包括直接或间接耦合以下设备的总线110:存储器112、一个或多个处理器114、一个或多个呈现模块116、输入/输出(I/O)端口118、I/O模块120、和说明性电源122。总线110表示可以是一条或多条总线(诸如地址总线、数据总线、或其组合)。尽管为了清楚起见图1的各框用线条示出,但是在实际上,各模块的描绘并不是那样清楚,并且比喻性地来说,线条更精确地将是灰色的和模糊的。例如,可以将诸如显示设备等的呈现模块认为是I/O模块。而且,处理器也具有存储器。本发明人认识到,这是本领域的特性,并且重申,图1的图示只是例示可结合一个或多个实施例来使用的示例性计算设备。诸如“工作站”、“服务器”、“膝上型计算机”、“手持式设备”等分类之间没有区别,因为它们全部都被认为是在图1的范围之内的并且被称为“计算机”或“计算设备”。
计算设备100通常包括各种计算机可读介质。作为示例,而非限制,计算机可读介质可以包括以下示例性非瞬态介质:随机存取存储器(RAM);只读存储器(ROM);电可擦可编程只读存储器(EEPROM);闪存或其他存储技术;CDROM、数字多功能盘(DVD)或其他光学或全息介质;磁带盒、磁带、磁盘存储或其他磁存储设备或可以用来编码所需要的信息并可以被计算设备100访问的任何其他介质。
存储器112包括易失性和/或非易失性存储器形式的计算机存储介质。存储器可以是可移动的,不可移动的,或两者的组合。示例性硬件设备包括固态存储器、硬盘驱动器、光盘驱动器等。计算设备100包括从诸如存储器112或I/O模块120等各种实体读取数据的一个或多个处理器。呈现模块116向用户或其他设备呈现数据指示。示例性呈现模块包括显示设备、扬声器、打印模块、振动模块等等。I/O端口118允许计算设备100在逻辑上耦合至包括I/O模块120的其他设备,其中某些设备可以是内置的。说明性模块包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、打印机、无线设备等等。
现在转到图2,呈现了根据本发明的一个方面的流程图,并且该流程图被概括地指代为附图标记200。在某些实施例中,该方法适合由构建系统控制器来执行。最初,在步骤202,确定要构建的一个或多个分支的列表。如本领域所理解的,“分支”是构建设置和源代码文件(或源代码文件的各部分)的预先定义的配置,以从公共代码储存库中创建特定版本的软件产品。例如,代码库可具有“开发”和“发布”分支。作为另一个示例,代码库对不同的操作系统或硬件平台可具有不同分支。在又一个示例中,代码库可具有针对不同特征集的分支,诸如“基本”、“家庭”、“专业”和“企业”版。通常,不同分支将共享源代码的大部分,而仅在特定方面不同。在一个实施例中,基于用户输入作出构建哪些分支的决定。在另一个实施例中,咨询配置文件以确定构建哪些分支。在又一个实施例中,当前构建环境被用于确定构建哪些分支。
接着,在步骤203,用于构建的虚拟机被标识。在一个实施例中,构建服务最初具有实例化在一个或多个虚拟机服务器上并保持空闲的虚拟机池;虚拟机首先从该池中选择,如果需要附加容量,按需实例化附加的虚拟机。在该实施例的变体中,预先实例化的虚拟机池的大小根据历史要求增加或减少。在另一个实施例中,虚拟机简单地按要求实例化。
在用于构建的虚拟机被标识后,在步骤204确定应被传输到工作者虚拟机以构建那些分支的文件列表。在一个实施例中,步骤204如子步骤204(a)-204(f)所示那样完成。在步骤204(a),用于构建全部所选分支的全部文件的列表被编译。在某些实施例中,此信息从构建配置文件中获得。接着,在步骤204(b),对如此标识的每个文件重复后续步骤204(c)–204(e)。在步骤204(c),将需要那个文件来构建分支的一个或多个虚拟机(VM)被标识。在步骤204(d),确定被如此标识的每个VM是否已经具有该文件的副本。VM可能已经从例如构建使用该文件的另一个分支或从构建当前分支的先前版本(如果该文件在当前分支中保持不变)而拥有该文件的副本。在某些实施例中,文件被优先加载到VM上,这些VM可能稍后使用它们来利用原本未被使用的传输带宽和/或存储空间。如果确定该VM还没有该文件,则在步骤204(e),将该文件添加到要被传输到那个VM的文件列表。否则,处理返回到步骤204(b)来考虑下一个文件。一旦每个文件已经被步骤204(c)–204(e)处理了,那么要被传输到每个VM的文件列表在步骤204(f)终结。
一旦要被传输的文件在步骤204被标识,则在步骤206,从一个或多个源储存库检索它们。如上面所描述的,在一些实施例中,某些文件可能已经因多个原因之一而存在于本地存储中,那么这些文件不需要被检索。接着,在步骤208,先前标识的文件被传输到合适的虚拟机。注意某些文件可能被多个虚拟机使用,且因此被传输到那些机器中的每一个。在一个实施例中,为了最小化文件传输的网络开销,根据虚拟机将需要的文件的共性程度来将虚拟机分组到虚拟机服务器上。在另一个实施例中,根据虚拟机将需要的文件和先前高速缓存在该虚拟机服务器上的文件之间的共性程度来将虚拟机分配到虚拟机服务器。
接着,在步骤209,构建环境被按需分发到虚拟机。在某些实施例中,构建环境则在源文件被传输到虚拟机之前被分发到虚拟机。构建环境的一个角色是驱动构建过程。在一些实施例中,构建环境包含响应于构建服务控制器、提供活动状态并执行命令的代理。在另一些实施例中,构建环境直接响应用户输入以执行活动。该构建环境还可包括工具和构建组件,诸如编译器、汇编器、链接器和其它工具,以及用于处理源文件以生成二进制代码文件的工作流。
在这一点上,虚拟机可通过处理源文件以生成二进制代码文件来开始构建过程。在本发明的一个实施例中,每个虚拟机负责生成与给定分支相关联的全部二进制代码文件。在另一个实施例中,每个虚拟机负责生成单个二进制代码(即,虚拟机的数量与二进制代码的数量相同)。在又一个实施例中,要生成的全部二进制代码文件集以这样的方式跨可用虚拟机进行分派,以便均衡每个虚拟机执行的处理。在又一个实施例中,对应于一个以上分支的不同分支的多个二进制代码文件被分派到单个虚拟机。也构想了在可用虚拟机之间分派要构建的二进制代码的其它方式。将二进制代码分派到虚拟机将分别通知在步骤204和208的文件的标识和传输。在步骤210,虚拟机处理合适的源文件以生成二进制代码文件。在一些实施例中,另一个组件,诸如图3的构建服务控制器302使得虚拟机开始该处理。在此,“处理”文件可包括预处理、编译、汇编和链接等等步骤,而“二进制代码文件”可包括本机可执行文件、中间表示文件、字节代码表示文件、对象文件和库文件等等。类似地,“使得”可涵盖各种技术,包括直接代码执行、进程间通信、客户机-服务器或对等消息收发、远程命令执行、web服务、或远程脚本调用。如本领域的技术人员可以清楚,也可预想用于使得虚拟机处理文件的其它技术。
按照用户输入、构建配置文件、或其它一般策略,某些所生成的二进制代码文件可被数字签名以便认证它们的源、未经篡改状态,或出于其它原因。所采用的数字签名算法可包括诸如RSA、DSA、椭圆曲线DSA、ElGamal或其它安全数字签名算法的算法。在许多环境中,出于安全目的,签名过程所需的数字键仅存储在少量位置,且因此不被分发到各虚拟机。因此,在一些实施例中,在二进制代码被生成之后,在步骤212,它们被传输到专门的签名服务器用于签名。接着,在步骤214,生成相应的数字签名。在一些实施例中,另一组件,诸如要结合图3讨论的构建服务控制器302,使其以各种方式的任何一种来发生,如上所述。在该实施例的一种变体中,代替传输二进制代码,合适的虚拟机生成足以生成签名的二进制代码的表示。例如,许多数字签名算法实际上签署文件的安全散列而不是整个文件;因为在此示例中生成该散列不需要签名密钥,虚拟机自身可生成该散列并仅将那个发送到签名服务器。该方案具有减少签名服务器的工作负荷以及与传送二进制代码文件相关联的网络负荷的双重优势:代替传送(可能很大的)二进制代码文件,仅发送(通常小于1kB的)散列。在此和贯穿本文“发送”包括直接发送和通过使某物被发送而间接发送两者。在步骤216,所生成的签名被传输回虚拟机。在一些实施例中,由数字签名的附加而修改了的二进制代码而不是分离的签名被传输回到虚拟机。术语“签名”在此,包括分离的签名和以此方式修改的二进制代码两者。一旦该二进制代码文件和签名已被收集,它们在步骤218被汇编成二进制代码包。在一些实施例中,另一组件,诸如图3的构建服务控制器302,使其以各种方式的任何一种来发生,如上所述。在一些实施例中,这些二进制代码包还包含不受构建过程影响的数据文件。在一些实施例中,二进制代码包的汇编在那些二进制代码文件和该包的数字签名已被收集后就立刻开始;在其它实施例中,直到构建和签名生成过程已经完全结束后,包生成过程才开始。一旦包已经被生成,它们被传输离开虚拟机。在一个实施例中,这通过在步骤220将它们发布到存储服务来完成。在另一个实施例中,一个或多个虚拟机用作储存库并直接服务于虚拟机。最后,在一些实施例中,在步骤222生成用户通知。这个用户通知可以采取各种形式,诸如电子邮件、即时消息、电话呼叫、应用中的弹出警告,或其它警告。
现在转到图3,呈现了适合于实现本发明的各实施例的环境,并且该环境被概括地指代为附图标记300。在一些实施例中,构建服务控制器302用作系统的中央控制器,并功能性地连接到其它组件。在一些实施例中,连接通过LAN、WAN或因特网连接。这些连接可以是直接或间接的。在其它实施例中,系统300的组件是概念性的且几个组件可被组合成单个物理服务器;在那些情况下,连接采用共享存储和/或进程间通信形式。在一些实施例中,构建服务控制器维持元数据以跟踪工作者VM到代码分支的映射。在一些实施例中,构建服务提供了前端以接收用户输入、显示作业状态并提供对构建度量的访问。在一些实施例中,构建控制器可负责调度用于将来执行的构建过程。这可采取推迟构建直到系统负载更低,或在预期的要求低的时段调度构建的形式。也构想了其它调度试探。在一些实施例中,构建控制器负责动态虚拟机调度。这可以采取增加或减少专用于构建过程的虚拟机数量的形式。这也可以采用将虚拟机从忙碌的虚拟机服务器迁移到另一个较不忙碌的虚拟机服务器的形式。这还可以采取在单个虚拟机内操纵虚拟机的调度以,例如,相比于向轻工作负荷的虚拟机而言向重工作负荷的虚拟机分派更多的资源的形式。还构想了其它形式的动态虚拟机调度。连接到构建服务控制器的是一个或多个源储存库,诸如源储存库304和源储存库306。每个这样的源储存库具有相关联的存储,分别是存储308和存储310。与源储存库相关联的存储可以是本地存储、网络附连存储、基于云的存储,或源储存库可访问的其它存储。在一些实施例中,可能仅仅存在单个源储存库;在其它实施例中,存在许多源储存库。
类似地连接到构建服务控制器302的是存储服务312,它使得二进制代码包(在某些实施例中,也可以其它文件)对用户可用。在一些实施例中,存储服务312是耐久的且高度可用的存储服务,诸如地理复制的基于云的存储服务。在一些实施例中,存储服务312以及诸如源储存库304的源储存库的功能被组合到单个物理服务器中。在其它实施例中,存储服务312和源储存库304是分开的物理服务器但是共享公共后端存储,诸如存储308。在一些实施例中,存储服务312存储被部署在所创建的虚拟机上的构建环境。在其它实施例中,构建环境被存储在诸如源储存库304的源储存库上。在又一些实施例中,构建环境被存储在构建服务控制器302上,它们从中被部署。还构想了任何存储方案的组合。同样连接到构建服务控制器302的是签名服务器314。签名服务器314执行为所生成的二进制代码文件生成数字签名的服务,如上面结合图2的步骤212、214和216所讨论的。签名服务器314存储用于生成数字签名的签名密钥316。
最后,构建服务控制器302被连接到一个或多个虚拟机服务器,诸如虚拟机服务器318和320。每个虚拟机服务器表示潜在地运行诸如虚拟机322和324的多个虚拟机的一个物理计算机。在一些实施例中,在任何给定时间,虚拟机的一些或全部可被专用于不与构建服务相关的其它任务。在一些实施例中,虚拟机服务器318和320是私有或公共计算云的一部分。在一些实施例中,虚拟机在需要时被实例化,而在它们变得不需要或不使用时被破坏或被垃圾收集。在一些实施例中,构建服务控制器302根据构建服务的需要来缩放所使用的工作者VM的数量。诸如虚拟机322的每个虚拟机被加载了用于产生二进制代码包的一些源和数据文件326的集合,如被加载到虚拟机上的构建环境所通知的。注意到由虚拟机324存储的文件328可能与虚拟机322所存储的文件326或与虚拟机存储在虚拟机服务器320上的文件完全重叠、部分重叠,或不重叠。图3描绘的构建系统的任何组件可利用一个或多个处理器和/或存储器来执行在此描述的功能。
现在转到图4,呈现了根据本发明的另一方面的流程图图示。图4描绘了适于由诸如虚拟机322的虚拟机执行的方法,并且该方法被概括地指代为附图标记400。最初,在步骤402,接收零个或更多个源文件。所接收到的文件,结合零个或多个已经本地存储的文件,足以产生一个或多个二进制代码文件。共同地,这些文件可对应于图3的文件326。接着,在步骤404,这些文件被处理以生成一个或多个二进制代码文件。在步骤406,所生成的二进制代码文件的表示被发送到签名服务器。在一些实施例中,这些表示被直接发送到签名服务器;在其它实施例中,它们被发送到将它们转发到签名服务器的构建服务控制器或其它中间主机。在一些实施例中,“表示”包括要被签名的整个二进制代码文件;在其它实施例中,表示包括足以用于签名生成的更少量的信息,诸如要被签名的二进制代码的抗冲突密码散列。在又一些实施例中,诸如私有或测试构建的情况,签名二进制代码的步骤可忽略。
接着,在步骤408,接收对应于要被签名的二进制代码文件的数字签名。同样,这些数字签名可直接从签名服务器接收或间接通过构建服务控制器或另一个中间主机来接收。在步骤410,这些数字签名,连同一个或多个对应的或未经签名的二进制代码文件被用来生成二进制代码包。最后,在步骤412,这些二进制代码包被传输到另一个主机。在一些实施例中,它们可被传输到诸如存储服务312的存储服务以便被发布。在其它实施例中,二进制代码包可被发送到构建服务控制器302。在又一个实施例中,它们被发送到发起该构建过程的用户的计算机。
图5描绘了根据本发明的各实施例适于由诸如源储存库304的源储存库执行的方法,并且该方法被概括地指代为附图标记500。最初,在步骤502,接收对一个或多个源文件的请求。在一个实施例中,从图3的构建服务控制器302接收该请求。在另一个实施例中,从诸如图3的虚拟机服务器318上运行的虚拟机322的虚拟机接收该请求。接着,在步骤504,所请求的文件被从存储检索并被传输。在一个实施例中,它们被传输到请求者;在另一个实施例中,它们被传输到诸如构建服务控制器302或虚拟机服务器318的另一个主机用以高速缓存并转发到请求者。
图6描绘了根据本发明的各实施例适于由诸如签名服务器314的签名服务器执行的方法,并且该方法被概括地指代为附图标记600。最初,在步骤602,接收一或多个二进制代码文件的表示。在一个实施例中,从诸如图3的虚拟机322的虚拟机直接接收请求。在另一实施例中,通过构建服务控制器或其它中间主机接收请求。如上面讨论的,在一些实施例中,表示是要被签名的整个二进制代码文件,而在其它实施例中,表示是足以用于签名生成的更少量的信息。在一些实施例中,签名服务器执行附加步骤,诸如病毒扫描、正确形式的验证,以及在生成签名前构建位置的确认。接着,在步骤604,对应于一个或多个表示的一个或多个数字签名被生成。这可以通过多个公知数字签名算法的任何一个,并采用图3的数字签名密钥316来完成。最后,在步骤606,所生成的一个或多个签名被发送回请求者。
图7描绘了根据本发明的各实施例适于由诸如图3的构建源控制器302的构建源控制器执行的方法,并且该方法被概括地指代为附图标记700。最初,在步骤702,确定要构建的一个或多个分支的列表。在一个实施例中,基于用户输入作出构建哪些分支的决定。在另一个实施例中,咨询配置文件以确定构建哪些分支。在又一个实施例中,当前构建环境被用于确定构建哪些分支。接着,在步骤704,应该被传输到工作者虚拟机以构建那些分支的文件列表被确定。在一个实施例中,这可以如步骤204(a)–204(f)中所描述的并伴随图2的讨论来完成。一旦文件已被标识,在步骤706,它们被从诸如图3的源储存库304和源储存库306的一个或多个源储存库中检索,并在步骤708,被传输到合适的虚拟机。同样,某些文件可能被多个虚拟机使用,且因此被传输到那些机器的每一个。在一个实施例中,为了最小化文件传输的网络开销,根据虚拟机将使用的文件的共性程度将虚拟机分组到虚拟机服务器上。在另一个实施例中,所传输的文件的副本被保持,使得如果将来它们再次被需要,那么它们不需要从源储存库重新被取回。
接着,在步骤710,要被签名的二进制代码文件的表示在计算机执行方法700被接收;在某些实施例中,这将是图3的构建服务控制器302。在一个实施例中,从生成二进制代码文件的虚拟机接收它们。在一个实施例中,接收整个二进制代码文件并生成更紧凑的表示用于后续重新传输。接着,在步骤712,表示被转发(例如,发送)到诸如签名服务器314的签名服务器。接着,在步骤714,对应于该表示的数字签名从签名服务器接收回,并在步骤716,它们被转发到合适的虚拟机。在一些实施例中,合适的虚拟机是创建对应二进制代码文件的虚拟机;在其它实施例中,这是负责二进制代码包创建的另一个虚拟机。在步骤718,包括对应于源文件的二进制代码文件以及数字签名的二进制代码包被接收。在一个实施例中,从创建它们的虚拟机接收它们。在另一个实施例中,它们还包括未被构建过程改变的数据文件。接着,在步骤720,这些包对后续检索可用。在一个实施例中,这通过将它们发布到存储服务来完成。在另一个实施例中,这通过将它们传输到预先确定的位置来完成。在又一个实施例中,这通过将它们本地存储直到它们被用户检索来完成。最后,在步骤722,生成通知来警告用户包可用。该通知可以采取结合图2的步骤222所讨论的任何形式。
现在转到图8,描绘了根据本发明的又一个方面的流程图图示,其适于由诸如图3的虚拟机服务器318的虚拟机服务器来执行,并且该流程图图示被概括地指代为附图标记800。在一些实施例中,图3的虚拟机服务器318是单个物理机器,诸如膝上型计算机、台式计算机或服务器级计算机。在其它实施例中,虚拟机服务器318本身可以是诸如服务器场的分布式计算环境。
最初,在步骤802,接收一个或多个分支的列表和源文件。在一个实施例中,仅接收源文件的一个列表,且源文件从诸如源储存库304的源储存库检索。在另一个实施例中,源文件与一个或多个分支的列表一起接收。接着,在步骤804,一个或多个虚拟机被实例化。如上面对向虚拟机分派二进制代码的讨论中所讨论的,构想了多个分派策略,且所使用的精确的分派策略将通知实例化的虚拟机数量。步骤804还包括准备虚拟机来参与构建服务。准备包括构建环境的部署。在实例化期间,构建环境可被加载到工作者VM上,或在实例化后,构建环境可被构建系统控制器302推送到工作者VM上。在虚拟机已经被实例化之后,在步骤806,合适的源文件被传输到每个虚拟机。
接着,在步骤808,从那些源文件生成的二进制代码文件被从虚拟机收集。在一个实施例中,为了对它们进行签名的目的,二进制代码文件的紧凑表示被生成。接着,在步骤810,获得二进制代码的数字签名。在一个实施例中,这通过直接与图3的签名服务器314进行通信来完成;在另一个实施例中,这通过经由图3的构建服务控制器302来与签名服务器314进行通信来完成。在步骤812,从二进制代码文件、数字签名和在一些实施例中的其它数据文件,来生成二进制代码包。接着,在步骤814,使得这些二进制代码包对检索可用。在一个实施例中,这包括将它们传输到它们要从那儿被检索的位置。在另一个实施例中,它包括将它们置于VM上的公知本地位置,软件代理或人可从那儿检索它们。最后,在步骤816,生成通知。在一个实施例中,这是用户通知;在另一个实施例中,它包括通知软件代理。
本发明的替换实施例和实现在本领域的技术人员仔细阅读了本说明书包括附图之后将变得显而易见。因此,本发明的范围由本文档以下的“权利要求”部分中的权利要求,而非前面的描述,来限定。
Claims (10)
1.一种分发能缩放的构建服务的方法,所述方法包括:
确定要构建的分支;
标识用于构建所述分支的至少一部分的第一虚拟机,其中各虚拟机根据文件的共性程度被分组到虚拟机服务器上;
标识要为所述分支传输的多个源文件,其中所述第一虚拟机处理所述多个源文件中的至少一个源文件来生成对应的二进制代码文件;将所述多个源文件中的所述源文件传输到所述第一虚拟机,
在所述第一虚拟机上部署构建环境;
使得所述第一虚拟机处理所述多个源文件中的至少所述源文件以便生成二进制代码文件;
接收足以为所述二进制代码文件生成数字签名的所述二进制代码文件的表示,并将所述表示转发到专门的签名服务器;
使得所述专门的签名服务器生成所述二进制代码文件的数字签名;
将所述数字签名传输到第二虚拟机;以及
使得至少所述第二虚拟机从至少所述二进制代码文件和所述数字签名生成二进制代码包。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
生成所述二进制代码包能够用于检索的用户通知。
3.如权利要求1所述的方法,其特征在于,标识要被传输的多个源文件包括:
获得用于构建所述分支的源文件的列表;
为用于构建所述分支的所述源文件列表的所选的源文件确定:
(1)所选源文件要被传输到的目的地虚拟机;
(2)所述目的地虚拟机当前是否存储着基本上与所选源文件相同的源文件;以及
a)如果所述目的地虚拟机当前存储着基本上与所选源文件相同的源文件,则将所选源文件标识为不要被传输;以及
b)如果所述目的地虚拟机当前未存储基本上与所选源文件相同的源文件,则将所选源文件标识为要被传输。
4.如权利要求1所述的方法,其特征在于,标识用于构建所述分支的至少一部分的虚拟机包括:
确定第一虚拟机服务器是否具有空闲虚拟机;
如果所述第一虚拟机服务器具有空闲虚拟机,则将所述空闲虚拟机标识为用于构建所述分支的至少一部分的虚拟机;以及
如果所述第一虚拟机服务器不具有空闲虚拟机,则实例化新虚拟机并将所述新虚拟机标识为用于构建所述分支的至少一部分的虚拟机。
5.一种能缩放且分布式的构建服务系统,包括:
多个虚拟机,其中的每个虚拟机被适配于执行以下功能:
(1)接收源文件;
(2)处理至少所述源文件以生成二进制代码文件;
(3)接收对应于所述二进制代码文件的数字签名;以及
(4)从至少所述二进制代码文件和所述数字签名来生成二进制代码包;
适配于执行以下功能的第一源储存库:
(1)存储所述源文件;以及
(2)将所述源文件发送到构建服务控制器;
适配于执行以下功能的签名服务器:
(1)接收足以为所述二进制代码文件生成数字签名的所述二进制代码文件的表示;以及
(2)生成对应于所述二进制代码文件的所述表示的数字签名;
构建服务控制器,功能性地连接到所述多个虚拟机、所述第一源储存库和所述签名服务器,并使用处理器和存储器来执行以下功能:
(1)确定要构建的分支;
(2)标识要为所述分支传输的多个源文件;
(3)从至少所述第一源储存库检索所述多个源文件;
(4)将所述多个源文件中的第一源文件发送到所述多个虚拟机中的第一虚拟机;
(5)接收足以为所述二进制代码文件生成所述数字签名的所述二进制代码文件的表示,并将所述表示转发到所述签名服务器;以及
(6)接收所述数字签名并将所述数字签名转发到所述多个虚拟机中的第二虚拟机。
6.如权利要求5所述的系统,其特征在于,所述构建系统控制器还执行将所述多个二进制代码包发布到存储服务的功能。
7.如权利要求5所述的系统,其特征在于,所述构建系统控制器还执行为将来的执行调度构建过程的功能。
8.如权利要求5所述的系统,其特征在于,所述构建系统控制器还执行生成所述多个二进制代码包是可用的的用户通知的功能。
9.如权利要求5所述的系统,其特征在于,所述构建系统控制器执行为所述分支标识要被传输的多个源文件的功能的至少以下子功能:
获得用于构建所述分支的源文件的列表;
为用于构建所述分支的所述源文件列表的所选源文件确定:
(1)所选源文件要被传输到的目的地虚拟机;
(2)所述目的地虚拟机当前是否存储着基本上与所选源文件相同的源文件;以及
a)如果所述目的地虚拟机当前存储着基本上与所选源文件相同的源文件,则将所选源文件标识为不要被传输;以及
b)如果所述目的地虚拟机当前未存储基本上与所选源文件相同的源文件,则将所选源文件标识为要被传输。
10.一种适于用于分布式计算环境中的计算机实现方法,所述方法利用处理器和存储器来实现能缩放的且分布式的构建服务,所述方法包括:
在单个物理机器处,接收对应于要被生成的多个二进制代码文件的多个源文件;
在单个物理机器上实例化多个虚拟机,其中所述多个虚拟机根据文件的共性程度被分组到单个物理机器上,所述多个虚拟机中的每个虚拟机用构建环境来配置,其中所述多个虚拟机是与要在所述单个物理机器上生成的二进制代码文件数量相等数量的虚拟机;
向所述多个虚拟机中的每个虚拟机发送对应于所述多个二进制代码文件中的各单个二进制代码文件的那些源文件;
使得所述多个虚拟机中的每个虚拟机从所述源文件生成各二进制代码文件;
接收足以为所述二进制代码文件生成数字签名的所述二进制代码文件的表示,并将所述表示转发到专门的签名服务器;
使得所述专门的签名服务器为多个所生成的二进制代码文件中的至少一个二进制代码文件生成数字签名;以及
使得包括二进制代码文件和对应的数字签名的二进制代码包被生成。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/221,202 | 2011-08-30 | ||
US13/221,202 US8635607B2 (en) | 2011-08-30 | 2011-08-30 | Cloud-based build service |
PCT/US2012/048433 WO2013032607A1 (en) | 2011-08-30 | 2012-07-27 | Cloud-based build service |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103765379A CN103765379A (zh) | 2014-04-30 |
CN103765379B true CN103765379B (zh) | 2017-10-17 |
Family
ID=47745605
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280042013.4A Active CN103765379B (zh) | 2011-08-30 | 2012-07-27 | 基于云的构建服务 |
Country Status (6)
Country | Link |
---|---|
US (3) | US8635607B2 (zh) |
EP (1) | EP2751663B1 (zh) |
JP (1) | JP6027615B2 (zh) |
KR (1) | KR101906912B1 (zh) |
CN (1) | CN103765379B (zh) |
WO (1) | WO2013032607A1 (zh) |
Families Citing this family (91)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013501293A (ja) * | 2009-08-04 | 2013-01-10 | アクサナ・(イスラエル)・リミテッド | 遠隔データミラーリングシステムにおけるデータギャップ管理 |
US9836340B2 (en) * | 2011-10-03 | 2017-12-05 | International Business Machines Corporation | Safe management of data storage using a volume manager |
US9817733B2 (en) * | 2011-10-05 | 2017-11-14 | International Business Machines Corporation | Resource recovery for checkpoint-based high-availability in a virtualized environment |
US8930542B2 (en) * | 2012-01-23 | 2015-01-06 | International Business Machines Corporation | Dynamically building a set of compute nodes to host the user's workload |
US9507612B1 (en) | 2012-08-31 | 2016-11-29 | United Services Automobile Association (Usaa) | Managing dedicated and floating pool of virtual machines based on demand |
US9778884B2 (en) * | 2013-03-13 | 2017-10-03 | Hewlett Packard Enterprise Development Lp | Virtual storage pool |
US9916133B2 (en) | 2013-03-14 | 2018-03-13 | Microsoft Technology Licensing, Llc | Software release workflow management |
US9690566B2 (en) | 2013-03-14 | 2017-06-27 | Oracle International Corporation | System and method for virtual assembly patching in a cloud environment |
WO2014144854A1 (en) * | 2013-03-15 | 2014-09-18 | Oracle International Corporation | System and method for generic product wiring in a virtual assembly builder environment |
US9286043B2 (en) | 2013-03-15 | 2016-03-15 | Microsoft Technology Licensing, Llc | Software build optimization |
CN104123184B (zh) | 2013-04-28 | 2017-12-22 | 国际商业机器公司 | 一种用于为构建过程中的任务分配资源的方法和系统 |
US11073986B2 (en) * | 2014-01-30 | 2021-07-27 | Hewlett Packard Enterprise Development Lp | Memory data versioning |
WO2016025321A1 (en) * | 2014-08-13 | 2016-02-18 | OneCloud Labs, Inc. | Replication of virtualized infrastructure within distributed computing environments |
US10048974B1 (en) | 2014-09-30 | 2018-08-14 | Amazon Technologies, Inc. | Message-based computation request scheduling |
US9146764B1 (en) | 2014-09-30 | 2015-09-29 | Amazon Technologies, Inc. | Processing event messages for user requests to execute program code |
US9323556B2 (en) | 2014-09-30 | 2016-04-26 | Amazon Technologies, Inc. | Programmatic event detection and message generation for requests to execute program code |
US9715402B2 (en) | 2014-09-30 | 2017-07-25 | Amazon Technologies, Inc. | Dynamic code deployment and versioning |
US9600312B2 (en) | 2014-09-30 | 2017-03-21 | Amazon Technologies, Inc. | Threading as a service |
US9678773B1 (en) | 2014-09-30 | 2017-06-13 | Amazon Technologies, Inc. | Low latency computational capacity provisioning |
US9830193B1 (en) | 2014-09-30 | 2017-11-28 | Amazon Technologies, Inc. | Automatic management of low latency computational capacity |
US9413626B2 (en) | 2014-12-05 | 2016-08-09 | Amazon Technologies, Inc. | Automatic management of resource sizing |
US9588790B1 (en) | 2015-02-04 | 2017-03-07 | Amazon Technologies, Inc. | Stateful virtual compute system |
US9733967B2 (en) | 2015-02-04 | 2017-08-15 | Amazon Technologies, Inc. | Security protocols for low latency execution of program code |
US9785476B2 (en) | 2015-04-08 | 2017-10-10 | Amazon Technologies, Inc. | Endpoint management system and virtual compute system |
US9930103B2 (en) | 2015-04-08 | 2018-03-27 | Amazon Technologies, Inc. | Endpoint management system providing an application programming interface proxy service |
US10648823B2 (en) | 2017-06-22 | 2020-05-12 | Aeris Communications, Inc. | Learning common routes and automatic geofencing in fleet management |
US9774994B2 (en) | 2015-08-14 | 2017-09-26 | Aeris Communications, Inc. | System and method for monitoring devices relative to a user defined geographic area |
US10437575B2 (en) * | 2015-08-14 | 2019-10-08 | Aeris Communications, Inc. | Aercloud application express and aercloud application express launcher |
US9910654B1 (en) * | 2015-09-29 | 2018-03-06 | Amazon Technologies, Inc. | Extensible software release management automation service |
US9910713B2 (en) | 2015-12-21 | 2018-03-06 | Amazon Technologies, Inc. | Code execution request routing |
US10067801B1 (en) | 2015-12-21 | 2018-09-04 | Amazon Technologies, Inc. | Acquisition and maintenance of compute capacity |
US11132213B1 (en) | 2016-03-30 | 2021-09-28 | Amazon Technologies, Inc. | Dependency-based process of pre-existing data sets at an on demand code execution environment |
US10891145B2 (en) | 2016-03-30 | 2021-01-12 | Amazon Technologies, Inc. | Processing pre-existing data sets at an on demand code execution environment |
US10102040B2 (en) | 2016-06-29 | 2018-10-16 | Amazon Technologies, Inc | Adjusting variable limit on concurrent code executions |
US10884787B1 (en) | 2016-09-23 | 2021-01-05 | Amazon Technologies, Inc. | Execution guarantees in an on-demand network code execution system |
US10754761B2 (en) * | 2016-11-11 | 2020-08-25 | Atlassian Pty Ltd | Systems and methods for testing source code |
US10001982B1 (en) * | 2016-12-16 | 2018-06-19 | Palantir Technologies, Inc. | Imposing a common build system for services from disparate sources |
US11132636B2 (en) | 2017-06-22 | 2021-09-28 | Aeris Communications, Inc. | System and method for monitoring and sharing location and activity of devices |
US11627195B2 (en) | 2017-06-22 | 2023-04-11 | Aeris Communications, Inc. | Issuing alerts for IoT devices |
US10735904B2 (en) | 2017-06-22 | 2020-08-04 | Aeris Communications, Inc. | System and method for monitoring location and activity of devices |
US10481898B2 (en) * | 2017-11-03 | 2019-11-19 | Salesforce.Com, Inc. | Automated software package deployment |
JP2019101553A (ja) * | 2017-11-29 | 2019-06-24 | 株式会社Preferred Networks | 情報処理システム、サーバ装置、情報処理方法及びプログラム |
US10564946B1 (en) | 2017-12-13 | 2020-02-18 | Amazon Technologies, Inc. | Dependency handling in an on-demand network code execution system |
US10733085B1 (en) | 2018-02-05 | 2020-08-04 | Amazon Technologies, Inc. | Detecting impedance mismatches due to cross-service calls |
US10831898B1 (en) | 2018-02-05 | 2020-11-10 | Amazon Technologies, Inc. | Detecting privilege escalations in code including cross-service calls |
US10725752B1 (en) | 2018-02-13 | 2020-07-28 | Amazon Technologies, Inc. | Dependency handling in an on-demand network code execution system |
US10776091B1 (en) | 2018-02-26 | 2020-09-15 | Amazon Technologies, Inc. | Logging endpoint in an on-demand code execution system |
US10853115B2 (en) | 2018-06-25 | 2020-12-01 | Amazon Technologies, Inc. | Execution of auxiliary functions in an on-demand network code execution system |
US10649749B1 (en) | 2018-06-26 | 2020-05-12 | Amazon Technologies, Inc. | Cross-environment application of tracing information for improved code execution |
US11146569B1 (en) | 2018-06-28 | 2021-10-12 | Amazon Technologies, Inc. | Escalation-resistant secure network services using request-scoped authentication information |
US10949237B2 (en) | 2018-06-29 | 2021-03-16 | Amazon Technologies, Inc. | Operating system customization in an on-demand network code execution system |
US11099870B1 (en) | 2018-07-25 | 2021-08-24 | Amazon Technologies, Inc. | Reducing execution times in an on-demand network code execution system using saved machine states |
US11099917B2 (en) | 2018-09-27 | 2021-08-24 | Amazon Technologies, Inc. | Efficient state maintenance for execution environments in an on-demand code execution system |
US11243953B2 (en) | 2018-09-27 | 2022-02-08 | Amazon Technologies, Inc. | Mapreduce implementation in an on-demand network code execution system and stream data processing system |
US11943093B1 (en) | 2018-11-20 | 2024-03-26 | Amazon Technologies, Inc. | Network connection recovery after virtual machine transition in an on-demand network code execution system |
US10884812B2 (en) | 2018-12-13 | 2021-01-05 | Amazon Technologies, Inc. | Performance-based hardware emulation in an on-demand network code execution system |
US11010188B1 (en) | 2019-02-05 | 2021-05-18 | Amazon Technologies, Inc. | Simulated data object storage using on-demand computation of data objects |
US11861386B1 (en) | 2019-03-22 | 2024-01-02 | Amazon Technologies, Inc. | Application gateways in an on-demand network code execution system |
CN109947458A (zh) * | 2019-03-22 | 2019-06-28 | 广东电网有限责任公司 | 一种离线源代码安全持续集成方法 |
US20220179930A1 (en) * | 2019-04-18 | 2022-06-09 | RunSafe Security, Inc. | Source modification engine |
US10719336B1 (en) | 2019-05-14 | 2020-07-21 | Microsoft Technology Licensing, Llc | Dependency version conflict auto-resolution |
US11748150B2 (en) | 2019-05-14 | 2023-09-05 | Microsoft Technology Licensing, Llc | System and method for blocking path detection |
US11119809B1 (en) | 2019-06-20 | 2021-09-14 | Amazon Technologies, Inc. | Virtualization-based transaction handling in an on-demand network code execution system |
US11190609B2 (en) | 2019-06-28 | 2021-11-30 | Amazon Technologies, Inc. | Connection pooling for scalable network services |
US11159528B2 (en) | 2019-06-28 | 2021-10-26 | Amazon Technologies, Inc. | Authentication to network-services using hosted authentication information |
US11115404B2 (en) | 2019-06-28 | 2021-09-07 | Amazon Technologies, Inc. | Facilitating service connections in serverless code executions |
US10908927B1 (en) | 2019-09-27 | 2021-02-02 | Amazon Technologies, Inc. | On-demand execution of object filter code in output path of object storage service |
US10996961B2 (en) | 2019-09-27 | 2021-05-04 | Amazon Technologies, Inc. | On-demand indexing of data in input path of object storage service |
US11023311B2 (en) | 2019-09-27 | 2021-06-01 | Amazon Technologies, Inc. | On-demand code execution in input path of data uploaded to storage service in multiple data portions |
US11055112B2 (en) | 2019-09-27 | 2021-07-06 | Amazon Technologies, Inc. | Inserting executions of owner-specified code into input/output path of object storage service |
US11656892B1 (en) | 2019-09-27 | 2023-05-23 | Amazon Technologies, Inc. | Sequential execution of user-submitted code and native functions |
US11360948B2 (en) | 2019-09-27 | 2022-06-14 | Amazon Technologies, Inc. | Inserting owner-specified data processing pipelines into input/output path of object storage service |
US11394761B1 (en) | 2019-09-27 | 2022-07-19 | Amazon Technologies, Inc. | Execution of user-submitted code on a stream of data |
US11250007B1 (en) | 2019-09-27 | 2022-02-15 | Amazon Technologies, Inc. | On-demand execution of object combination code in output path of object storage service |
US11023416B2 (en) | 2019-09-27 | 2021-06-01 | Amazon Technologies, Inc. | Data access control system for object storage service based on owner-defined code |
US11416628B2 (en) | 2019-09-27 | 2022-08-16 | Amazon Technologies, Inc. | User-specific data manipulation system for object storage service based on user-submitted code |
US11386230B2 (en) | 2019-09-27 | 2022-07-12 | Amazon Technologies, Inc. | On-demand code obfuscation of data in input path of object storage service |
US11106477B2 (en) | 2019-09-27 | 2021-08-31 | Amazon Technologies, Inc. | Execution of owner-specified code during input/output path to object storage service |
US11263220B2 (en) | 2019-09-27 | 2022-03-01 | Amazon Technologies, Inc. | On-demand execution of object transformation code in output path of object storage service |
US11550944B2 (en) | 2019-09-27 | 2023-01-10 | Amazon Technologies, Inc. | Code execution environment customization system for object storage service |
CN110750763A (zh) * | 2019-10-22 | 2020-02-04 | 北京联合信任技术服务有限公司 | 代码签名的方法、设备、存储介质和程序产品 |
US10942795B1 (en) | 2019-11-27 | 2021-03-09 | Amazon Technologies, Inc. | Serverless call distribution to utilize reserved capacity without inhibiting scaling |
US11119826B2 (en) | 2019-11-27 | 2021-09-14 | Amazon Technologies, Inc. | Serverless call distribution to implement spillover while avoiding cold starts |
US11016799B1 (en) * | 2020-01-30 | 2021-05-25 | Coupang Corp. | Systems and methods for centralization of server initialization information |
US11714682B1 (en) | 2020-03-03 | 2023-08-01 | Amazon Technologies, Inc. | Reclaiming computing resources in an on-demand code execution system |
US11188391B1 (en) | 2020-03-11 | 2021-11-30 | Amazon Technologies, Inc. | Allocating resources to on-demand code executions under scarcity conditions |
US11775640B1 (en) | 2020-03-30 | 2023-10-03 | Amazon Technologies, Inc. | Resource utilization-based malicious task detection in an on-demand code execution system |
US11593270B1 (en) | 2020-11-25 | 2023-02-28 | Amazon Technologies, Inc. | Fast distributed caching using erasure coded object parts |
US11550713B1 (en) | 2020-11-25 | 2023-01-10 | Amazon Technologies, Inc. | Garbage collection in distributed systems using life cycled storage roots |
US11388210B1 (en) | 2021-06-30 | 2022-07-12 | Amazon Technologies, Inc. | Streaming analytics using a serverless compute system |
US11968280B1 (en) | 2021-11-24 | 2024-04-23 | Amazon Technologies, Inc. | Controlling ingestion of streaming data to serverless function executions |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101201883A (zh) * | 2007-09-18 | 2008-06-18 | 北京赛柏科技有限责任公司 | 基于虚拟机的软件保护方法 |
CN101938416A (zh) * | 2010-09-01 | 2011-01-05 | 华南理工大学 | 一种基于动态重配置虚拟资源的云计算资源调度方法 |
CN102096598A (zh) * | 2010-12-30 | 2011-06-15 | 广州市聚晖电子科技有限公司 | 一种虚拟机系统及其实现方法 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2594979B2 (ja) * | 1987-10-23 | 1997-03-26 | 株式会社日立製作所 | マルチプロセツサシステム |
JPH04199230A (ja) * | 1990-11-26 | 1992-07-20 | Nec Corp | 複数原始プログラムの翻訳方式 |
JPH0581039A (ja) * | 1991-09-19 | 1993-04-02 | Hokuriku Nippon Denki Software Kk | 分散コンパイルによるロードモジユール作成方式 |
US7146602B2 (en) * | 2001-01-16 | 2006-12-05 | Ajile Systems, Inc. | Builder tool and interface for system supporting multiple virtual machines |
US7337436B2 (en) * | 2003-02-07 | 2008-02-26 | Sun Microsystems, Inc. | System and method for cross platform and configuration build system |
US7281247B2 (en) * | 2003-06-24 | 2007-10-09 | Microsoft Corporation | Software image creation in a distributed build environment |
US7549144B2 (en) | 2005-02-22 | 2009-06-16 | Microsoft Corporation | Custom API modeling for source code static analysis simulator |
JP3924306B2 (ja) * | 2005-07-20 | 2007-06-06 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ソフトウェア・パッケージを再構築する方法 |
US8458661B2 (en) * | 2006-03-31 | 2013-06-04 | Ebay Inc. | Distributed parallel build system |
WO2007123958A2 (en) | 2006-04-18 | 2007-11-01 | Collabnet, Inc. | Systems and methods for on- demand deployment of software build and test environments |
US7565616B2 (en) | 2006-06-02 | 2009-07-21 | Hewlett-Packard Development Company, L.P. | System for controlling display content for multiple electronic display units |
US8065676B1 (en) * | 2007-04-24 | 2011-11-22 | Hewlett-Packard Development Company, L.P. | Automated provisioning of virtual machines for a virtual machine buffer pool and production pool |
US8347277B2 (en) | 2007-08-17 | 2013-01-01 | International Business Machines Corporation | Verifying that binary object file has been generated from source files |
US10657466B2 (en) | 2008-05-29 | 2020-05-19 | Red Hat, Inc. | Building custom appliances in a cloud-based network |
US20100042670A1 (en) | 2008-08-13 | 2010-02-18 | Electronic Data Systems Corporation | Integrated development engine for a cloud computing environment |
US8566362B2 (en) | 2009-01-23 | 2013-10-22 | Nasuni Corporation | Method and system for versioned file system using structured data representations |
WO2010102084A2 (en) | 2009-03-05 | 2010-09-10 | Coach Wei | System and method for performance acceleration, data protection, disaster recovery and on-demand scaling of computer applications |
US8407190B2 (en) | 2009-06-30 | 2013-03-26 | Commvault Systems, Inc. | Performing data storage operations with a cloud environment, including containerized deduplication, data pruning, and data transfer |
US20110016473A1 (en) | 2009-07-20 | 2011-01-20 | Srinivasan Kattiganehalli Y | Managing services for workloads in virtual computing environments |
US8504443B2 (en) | 2009-08-31 | 2013-08-06 | Red Hat, Inc. | Methods and systems for pricing software infrastructure for a cloud computing environment |
US20110078243A1 (en) | 2009-09-30 | 2011-03-31 | Boopsie, Inc. | Leveraging Collaborative Cloud Services to Build and Share Apps |
WO2011074168A1 (ja) * | 2009-12-14 | 2011-06-23 | パナソニック株式会社 | 情報処理装置 |
JP5646650B2 (ja) * | 2010-01-08 | 2014-12-24 | ソース ラブズ, インコーポレイテッドSauce Labs, Inc. | ウェブアプリケーションのリアルタイム検証 |
US8423998B2 (en) * | 2010-06-04 | 2013-04-16 | International Business Machines Corporation | System and method for virtual machine multiplexing for resource provisioning in compute clouds |
US8489929B2 (en) * | 2010-09-30 | 2013-07-16 | Salesforce.Com, Inc. | Facilitating large-scale testing using virtualization technology in a multi-tenant database environment |
US9069620B2 (en) * | 2010-10-20 | 2015-06-30 | Microsoft Technology Licensing, Llc | Creating and deploying service-ready virtual hard disks |
US9250863B1 (en) * | 2010-12-28 | 2016-02-02 | Amazon Technologies, Inc. | Managing virtual machine migration |
-
2011
- 2011-08-30 US US13/221,202 patent/US8635607B2/en active Active
-
2012
- 2012-07-27 EP EP12827532.8A patent/EP2751663B1/en active Active
- 2012-07-27 KR KR1020147005387A patent/KR101906912B1/ko active IP Right Grant
- 2012-07-27 JP JP2014528400A patent/JP6027615B2/ja active Active
- 2012-07-27 WO PCT/US2012/048433 patent/WO2013032607A1/en active Application Filing
- 2012-07-27 CN CN201280042013.4A patent/CN103765379B/zh active Active
-
2014
- 2014-01-17 US US14/158,447 patent/US9342332B2/en active Active
-
2016
- 2016-04-27 US US15/139,693 patent/US10078536B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101201883A (zh) * | 2007-09-18 | 2008-06-18 | 北京赛柏科技有限责任公司 | 基于虚拟机的软件保护方法 |
CN101938416A (zh) * | 2010-09-01 | 2011-01-05 | 华南理工大学 | 一种基于动态重配置虚拟资源的云计算资源调度方法 |
CN102096598A (zh) * | 2010-12-30 | 2011-06-15 | 广州市聚晖电子科技有限公司 | 一种虚拟机系统及其实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103765379A (zh) | 2014-04-30 |
EP2751663B1 (en) | 2021-04-07 |
WO2013032607A1 (en) | 2013-03-07 |
EP2751663A1 (en) | 2014-07-09 |
US20140137116A1 (en) | 2014-05-15 |
JP6027615B2 (ja) | 2016-11-16 |
US10078536B2 (en) | 2018-09-18 |
JP2014525624A (ja) | 2014-09-29 |
EP2751663A4 (en) | 2015-04-29 |
US9342332B2 (en) | 2016-05-17 |
US8635607B2 (en) | 2014-01-21 |
KR101906912B1 (ko) | 2018-12-07 |
US20130055253A1 (en) | 2013-02-28 |
KR20140058590A (ko) | 2014-05-14 |
US20170083369A1 (en) | 2017-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103765379B (zh) | 基于云的构建服务 | |
US11740935B2 (en) | FPGA acceleration for serverless computing | |
EP3559874B1 (en) | Event-driven blockchain workflow processing | |
JP6678930B2 (ja) | 分類モデルを学習する方法、コンピュータ・システムおよびコンピュータ・プログラム | |
CN107710161A (zh) | 用于增加的工作流优化的独立可联网硬件加速器 | |
US20140130059A1 (en) | Lattice Computing | |
CN109791483A (zh) | 用于计算设备的共享软件库 | |
CN107637026A (zh) | 在分布式计算环境中的虚拟机实例上执行命令 | |
CN104937544B (zh) | 用于计算任务结果的方法、计算机可读介质和计算机系统 | |
KR20210036226A (ko) | 복수의 엣지와 클라우드를 포함하는 분산 컴퓨팅 시스템 및 이의 적응적 지능 활용을 위한 분석 모델 제공 방법 | |
Naik et al. | Multiobjective virtual machine selection for task scheduling in cloud computing | |
Rayan et al. | IoT enabled secured fog based cloud server management using task prioritization strategies | |
D’Aniello et al. | Designing a multi-agent system architecture for managing distributed operations within cloud manufacturing | |
CN116880928B (zh) | 模型部署方法、装置、设备及存储介质 | |
US11943277B2 (en) | Conversion system, method and program | |
Kushwah et al. | A basic simulation of aco algorithm under cloud computing for fault tolerant | |
Meena et al. | Performance analysis of cloud based software as a service (SaaS) model on public and hybrid cloud | |
Strumberger et al. | Hybrid elephant herding optimization approach for cloud computing load scheduling | |
CN108885772A (zh) | 切换时的冷链数据传输 | |
Baskar et al. | A Survey of Workload Management Difficulties in the Public Cloud | |
EP3427116B1 (en) | Method and system of analyzing and controlling a cold chain system | |
US11893426B2 (en) | Systems and methods for routing data payloads through a plurality of microservices using machine learning | |
Shola et al. | A metaheuristic for solving flowshop problem | |
US11321073B1 (en) | Utilizing models for replacing existing enterprise software with new enterprise software | |
Xiong et al. | Self-organising, self-managing frameworks and strategies |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150727 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150727 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: Washington State Applicant before: Microsoft Corp. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |