Apparatus, systems and methods for deployment and management of distributed computing systems and applications
Claim Score by NHIP
Abstract
Embodiments of apparatus, systems and methods facilitate the running a distributed computing application on at least one of a plurality of cloud infrastructures. In some embodiments, the processor implemented method comprises: deriving an infrastructure independent representation of the distributed computing application; and running the distributed computing application on one of a plurality of cloud infrastructures by utilizing a cloud-specific implementation of the infrastructure independent representation of the distributed computing application. The cloud-specific implementation of the infrastructure independent representation corresponds to the cloud infrastructure on which the distributed application is run.

Term
5.4 yearsto projected expiry
Projected expiry 8 February 2032, counted from filing; an application has no term until it is granted.
- Priority and filed
- Published
- Today
- Projected expiry
20 claims: 3 independent, 17 dependent
- 1Broadest claimClaim Score 76, broad(NHIP)A processor-implemented method for running a distributed computing application on at least one of a plurality of cloud infrastructures, the processor implemented method comprising:deriving an infrastructure independent representation of the distributed computing application;and running the distributed computing application on the at least one cloud infrastructure by utilizing at least one cloud-specific implementation of the infrastructure independent representation of the distributed computing application, and wherein the at least one cloud-specific implementation corresponds to the at least one cloud infrastructure.
- 11A system comprising:at least one system manager, wherein the system manager derives an infrastructure independent representation of the distributed computing application;at least one coordinator, wherein the coordinator maintains a library of program routines that are used to implement the infrastructure independent representation of the distributed computing application on at least one of a plurality of cloud infrastructures;and wherein the at least one system manager sends the infrastructure independent representation of the distributed computing application to the at least one coordinator and the coordinator executes routines from the library of program routines to implement the infrastructure independent representation of the distributed computing application on the at least one cloud infrastructure.
- 19A computer-readable medium that stores instructions, which when executed by a processor perform steps in a method for running a distributed computing application on at least one of a plurality of cloud infrastructures, the processor implemented method comprising:deriving an infrastructure independent representation of the distributed computing application;and running the distributed computing application on the at least one cloud infrastructure by utilizing at least one cloud-specific implementation of the infrastructure independent representation of the distributed computing application, and wherein the at least one cloud-specific implementation corresponds to the at least one cloud infrastructure.
Independent claims3
76 paragraphs in 4 sections, as filed
BACKGROUND
00011. Field of the Invention
0002The present invention relates to the field of distributed computing and in particular, to apparatus, systems, and methods to facilitate the deployment and management of distributed computing systems and applications.
00032. Description of Related Art
0004The performance of computing applications may often be increased by distributing the computational workload across nodes in a cluster of computers. For example, the performance of compute intensive applications such as DNA sequencing, financial modeling, weather simulations, electronic design automation, etc. can be significantly improved by distributing the applications across nodes in computing clusters. Similarly, by distributing web applications over a computing cluster performance of the application may be enhanced by decreasing latency and/or increasing throughput. Most applications today, including the examples mentioned above, are designed and programmed to be distributed over a cluster of computers. Indeed, a vast majority of organizations such as corporations, academic departments, and research centers use computing clusters for both mission critical applications and for a variety of other functions that arise in the course of normal business operations. Because applications that utilize an organizations private cluster may be run infrequently, the utilization of such clusters may be less than ideal. In addition, there are significant costs associated with the provisioning and maintenance of large computing clusters. Moreover, for a given private cluster and application there is an upper threshold on the scalability of the application because increasing the capacity of the cluster may involve the physical addition of hardware and other resources to the cluster. The evolution of “Cloud computing services” or “public clouds”, which provide on-demand access to high performance computing capabilities over the Internet, is an attempt to increase efficiencies and scalability, while reducing the costs associated with large computing clusters.
0005“Cloud computing” can refer to the use of a company's own computer cluster, but more often the term refers to the use of publicly available computing resources over the Internet through Web browser-based or client-side applications. The cloud infrastructures are typically made available on an on-demand basis. Cloud computing enables organizations to run applications on reliable, highly-available, and scalable software and hardware infrastructures referred to as clouds. Clouds may use virtualization or sophisticated systems management solutions to provide a flexible, fault tolerant, and highly available view of underlying resources so that dedicated hardware resources can be dynamically shared across several users instead of being assigned individually. These computing resources, which are often made available as virtual machines (and in some instances as physical machines), may be accessed using Application Programming Interfaces (“APIs”) and self-service portals—such as websites accessed using a web browser. Cloud infrastructure, which is offered by companies such as Amazon™ EC2, Terremark™, Rackspace™, and Savvis™, refers to the provision of Infrastructure as a Service (IaaS) and permits fee-based on-demand access to the power of computing clusters and datacenters over the Internet. In some instances, organizations may use virtualization and convert their private data-centers into clouds as well. These are termed private clouds. As used herein, the term cloud can refer to both public and private clouds, which can be set-up as virtualized or physical compute clusters.
0006One drawback of current cloud computing systems is that they continue to present an infrastructure view of the resources so that end users manage cloud-dependent machines with varying storage, network, memory, and compute capabilities. For example, cloud providers may use very different APIs to present resources and the underlying capabilities of the cloud computing infrastructure to users. Consequently, complicated software systems may be even harder to manage on clouds than on private datacenters because (i) the infrastructure may be very different from a configuration under one's private control (ii) the cloud infrastructure varies with provider and, (iii) each cloud provider has very different APIs to access, provision, and scale resources. For example, shared storage may be provided in different ways on different clouds. Amazon™ for e.g.; has https based shared storage called Amazon™ S3, while on Rackspace™, one can utilize Network Attached Storage/System Area Network (“NAS/SAN”) hardware to get shared storage. These differences in hardware and distributed systems capabilities creep into the virtualization abstraction, so that porting and migrating existing applications to cloud infrastructures can involve significant re-coding, re-architecting, and revision of systems management, security and compliance features. Therefore, there is a need for apparatus, systems, and methods that facilitate the quick, seamless, and transparent porting and migration of existing applications to a variety of cloud infrastructures, including hybrid public/private infrastructures.
SUMMARY
0007Consistent with embodiments disclosed herein, apparatus, systems and methods for the deployment and management of distributed computing systems and applications are presented. In some embodiments, a method for running a distributed computing application on at least one of a plurality of cloud infrastructures may comprise: deriving an infrastructure independent representation of the distributed computing application; and running the distributed computing application on the at least one cloud infrastructure by utilizing at least one cloud-specific implementation of the infrastructure independent representation of the distributed computing application, and wherein the at least one cloud-specific implementation corresponds to the at least one cloud infrastructure.
0008Embodiments also relate to software, firmware, and program instructions created, stored, accessed, or modified by processors using computer-readable media or computer-readable memory. The methods described may be performed on computers including distributed computing systems such as clouds.
0009These and other embodiments are further explained below with respect to the following figures.
BRIEF DESCRIPTION OF THE DRAWINGS
0010<figref idref="DRAWINGS">FIG. 1</figref> illustrates the typical systems architecture of the software systems involved in the delivery of cloud computing.
0011<figref idref="DRAWINGS">FIG. 2</figref> shows a block diagram illustrating the conventional process of migrating applications to clouds.
0012<figref idref="DRAWINGS">FIG. 3</figref> shows an exemplary block diagram illustrating an exemplary workflow consistent with embodiments disclosed herein for deploying and/or migrating applications to distributed systems, including clouds.
0013<figref idref="DRAWINGS">FIG. 4A</figref> shows an exemplary specification for a batch execution pattern primitive.
0014<figref idref="DRAWINGS">FIG. 4B</figref> shows an exemplary specification for the “RUN-CMD-LINE” primitive.
0015<figref idref="DRAWINGS">FIG. 4C</figref> shows an exemplary specification for the “SHARED-STORAGE” primitive.
0016<figref idref="DRAWINGS">FIG. 4D</figref> shows an exemplary specification for the “COMPUTE-NODE” primitive.
0017<figref idref="DRAWINGS">FIG. 4E</figref> shows an exemplary specification for the “INF-BUS”.
0018<figref idref="DRAWINGS">FIG. 5A</figref> shows a flowchart of an exemplary algorithm to obtain inputs for the modeling of applications based on system and pattern primitives.
0019<figref idref="DRAWINGS">FIG. 5B</figref> shows a flowchart of an exemplary algorithm to obtain inputs for the deployment and execution of applications using system and pattern primitives.
0020<figref idref="DRAWINGS">FIG. 6</figref> shows an exemplary architecture of a system consistent with disclosed embodiments for deploying and/or migrating applications to distributed systems including clouds.
DETAILED DESCRIPTION
0021In accordance with embodiments disclosed herein, apparatus, systems and methods for the deployment and management of distributed computing systems and are presented.
0022<figref idref="DRAWINGS">FIG. 1</figref> illustrates the typical systems architecture <b>100</b> of the software systems involved in the delivery of cloud computing. As shown in <figref idref="DRAWINGS">FIG. 1</figref>, system architecture <b>100</b> includes cloud infrastructure layer <b>170</b>. Cloud platform layer <b>160</b>, which is built on top of cloud infrastructure layer <b>170</b>, can facilitate the development of applications to run on a platform provider's infrastructure. Typically, Cloud infrastructure layer <b>170</b> can provide virtualized servers that may be provisioned dynamically on-demand. Other infrastructure components like hardware load balancing, security, and storage can exist within cloud infrastructure layer <b>170</b>. Because the layer permits dynamic on-demand access to cloud computing infrastructure, the functionality it provides is also referred to as Infrastructure as a Service (“IaaS”).
0023Cloud platform layer <b>160</b> allows developers to build applications to run on a platform provider's infrastructure, which can free developers from concerns about environment configuration and infrastructure scaling. Typically, the service delivery model allows the customer to rent a “platform”, which may include virtualized servers along with associated services that provide an integrated environment for one or more of development, testing, deployment, hosting, maintenance, and running of applications. The functionality provided by the cloud platform layer is also termed Platform as a Service (“PaaS”). Finally, Cloud application layer <b>150</b> is where applications run. These applications may include those that offer web-based software as a service (“SaaS”).
0024<figref idref="DRAWINGS">FIG. 2</figref> shows a block diagram <b>200</b> illustrating the conventional process of migrating applications to cloud infrastructures. Typically, current solutions for cloud migration for an application either involve a dedicated “Do It Yourself” (DIY) effort to migrate the application directly, or effort directed to port the application to use an appropriate Platform as a Service (PaaS) solution directed to the target cloud infrastructure.
0025In the DIY method significant work may be needed to re-code and re-architect existing applications, create virtual image deployments, and implement a management layer to provision, configure and manage those images in the target cloud environment. Because distributed systems require orchestration between several components that can be part of different images, migrating applications between clouds may involve complicated deployment and management procedures.
0026Using an appropriate PaaS may help reduce the complexity of the migration task. However, available PaaS' are also specific to a given style of computing and application and technology stack. For example, Heroku™ is a PaaS cloud that takes applications written in the Ruby language and deploys them to Amazon™ EC2. Heroku™ maintains appropriate Amazon™ Machine Images (“AMIs”) (that are needed for running Ruby applications on Amazon™ and a management layer to provision and scale such applications. However, Heroku™ suffers from the limitations similar to the DIY methodology because its custom-built Amazon™ specific library of virtual machine images can be only used on Amazon™ for Ruby applications.
0027As shown in <figref idref="DRAWINGS">FIG. 2</figref>, cloud infrastructure Cloud-<b>1</b><b>230</b>-<b>1</b> may be Amazon™ EC-2, while cloud infrastructure Cloud-<b>2</b><b>230</b>-<b>2</b> may be Terremark™, and cloud infrastructure Cloud-<b>3</b><b>230</b>-<b>3</b> may be a private cloud. The conventional process of migrating applications <b>210</b> to cloud infrastructures <b>230</b>-<b>1</b>, <b>230</b>-<b>2</b>, and/or <b>230</b>-<b>3</b> typically involves significant effort in the form of migration tasks <b>220</b>-<b>1</b>, <b>220</b>-<b>2</b>, and <b>220</b>-<b>3</b>, respectively. As explained above, migration tasks <b>220</b>-<b>1</b>, <b>220</b>-<b>2</b>, and <b>220</b>-<b>3</b> to port application <b>210</b>-<b>1</b> may involve: (a) Recoding and re-architecting distributed application to fit cloud infrastructure; (b) Creating Virtual Machine Images for distributed application on that cloud (c) Coding a deployment and management layer to provision, configure and scale application deployment on the cloud; and (d) Implementing additional management features such as security and compliance.
0028<figref idref="DRAWINGS">FIG. 3</figref> shows an exemplary block diagram <b>300</b> illustrating an exemplary workflow consistent with embodiments disclosed herein for deploying and/or migrating applications to distributed systems, including clouds. Although distributed applications are often designed for a given infrastructure, a consistent pattern of utilization of distributed systems and resources underlies the applications. Capturing these patterns of utilization and providing appropriate translation mechanisms that permit utilization the underlying cloud's APIs and resources can facilitate the migration and deployment of an existing application to multiple cloud infrastructures, including hybrid infrastructures. Representations of the underlying patterns of utilization of distributed system resources are termed “infrastructure independent representations”.
0029In some embodiments, infrastructure independent representation <b>320</b> may be obtained based on characteristics and/or attributes associated with distributed application <b>210</b>. For example, a metadata representation of distributed application <b>210</b> may be used as infrastructure independent representation <b>320</b>. In some embodiments, infrastructure independent representation <b>320</b> may be obtained without recoding or re-architecting distributed application <b>210</b>.
0030For example, infrastructure independent representation <b>320</b> may be obtained based on a contract or behavior associated with the applications that guarantees successful execution. In general, distributed systems may be modeled by in terms of constructs that capture these contracts or behaviors. Constructs can include “system constructs”, which pertain to a manner of utilizing resources (e.g. compute resources, storage, memory and/or network) and “pattern constructs,” which pertain to the mechanics, framework, or paradigm governing the interaction of systems in performing a computational task (e.g. master-slave, map-reduce, message passing, stateless applications). In some embodiments, infrastructure independent representation <b>320</b> may be obtained by using the contract or behavior associated with distributed application <b>210</b> to remove infrastructure dependent details from system and pattern constructs in a manner that is independent of the underlying implementation of that construct.
0031For example, from the perspective of distributed application <b>210</b>, shared storage is a distributed system that adheres to the contract that bits stored in the system are consistently available to individual nodes in the computing cluster. Shared storage may be implemented by many available systems, such as, Network File System (“NFS”) over NAS/SAN, Cluster File System, Distributed File System (“DFS”) or https based remote storage such as Amazon™ S3. In addition, the shared storage used by distributed application <b>210</b> may have various associated characteristics such as one or more of security, high-availability and/or redundancy constraints, minimum read and write performance, etc. Although, the eventual implementation of the shared storage may be infrastructure dependent, infrastructure independent representation <b>320</b> can include a description of the shared storage in terms of the contract and characteristics associated with the storage.
0032In some embodiments, seamless transparent migration and deployment of distributed application <b>210</b> to various cloud infrastructures may be facilitated by using the infrastructure independent representation <b>320</b> to obtain corresponding infrastructure-dependent implementations, such as shared storage implementations for the respective cloud infrastructures. Cloud infrastructures include, but are not limited to, public cloud infrastructures such as Amazon™ RackSpace™, Terremark™, Microsoft™ Azure, and Savvis™, and/or private clouds that may be built using products such as VMware™ vCloud, Nimbula™, OpenStack or over plain linux clusters. For example, the shared storage information in infrastructure independent representation <b>320</b> may be used to obtain an appropriate shared storage implementation with the appropriate specified characteristics, such as DFS for Amazon™, NAS/SAN for Terremark™, etc.
0033In some embodiments, code libraries on the various clouds may be used to obtain infrastructure dependent implementations from infrastructure independent representation <b>320</b>. Accordingly, implementations of distributed application <b>210</b> may be automatically realized and deployed on cloud infrastructures Cloud-<b>1</b><b>230</b>-<b>1</b>, Cloud-<b>2</b><b>230</b>-<b>2</b>, and/or Cloud-<b>3</b><b>230</b>-<b>3</b> based on information infrastructure independent representation <b>320</b>. As shown in <figref idref="DRAWINGS">FIG. 3</figref>, cloud infrastructure Cloud-<b>1</b><b>230</b>-<b>1</b> may be Amazon™ EC-2, while cloud infrastructure Cloud-<b>2</b><b>230</b>-<b>2</b> may be Terremark™, and cloud infrastructure Cloud-<b>3</b><b>230</b>-<b>3</b> may be a private cloud. In some embodiments, infrastructure independent representation <b>320</b> may be generated by using language primitives in an appropriate programming or description language, which in some instances, may be a proprietary language.
0034In some embodiments, the primitives used may be based on the system and pattern constructs used to models distributed systems. For example, System Primitives may include commands or instructions that facilitate the “launching of cluster with n nodes” on one or more clouds. Cloud-specific implementations of “launching of cluster with n nodes” may be used to implement the primitive. As another example, system primitives may also include commands or instructions that facilitate the “launching of shared storage,” wherein the underlying implementation of the primitive (on individual clouds) can be a cloud specific.
0035Pattern Primitives may include commands or instructions such as “parallel pattern,” which may be used to run an application command or a series of commands on n compute nodes with shared storage in parallel. The “parallel pattern” primitive describes the simple execution of commands simultaneously on cluster nodes. Another example of a pattern primitive is “batch execution pattern,” which may be used to run a number “t” of tasks placed on a queue on a number “n” of compute nodes. The “batch execution pattern” primitive example above can describe an execution pattern that utilizes shared storage, a queue and master-slave compute nodes. Pattern primitives may be used to orchestrate the set up of underlying distributed systems during application deployment.
0036<figref idref="DRAWINGS">FIG. 4A</figref> shows an exemplary specification <b>400</b> for a batch execution pattern primitive. As shown in <figref idref="DRAWINGS">FIG. 4</figref>, batch execution pattern primitive specification <b>400</b> includes information such as: name of the primitive—Name <b>402</b> (Batch Execution), a description of the primitive's function or utility—Description <b>404</b> (Batch Execute an application), version or revision number Version—<b>405</b>, and any dependencies or interrelationships with other primitives—Dependencies <b>406</b>. As shown in <figref idref="DRAWINGS">FIG. 4A</figref>, batch execution pattern primitive specification <b>400</b> lists Dependencies <b>406</b> as RUN-CMD-LINE, SHARED-STORAGE, COMPUTE-NODE, INF-BUS.
0037Additionally, as shown in <figref idref="DRAWINGS">FIG. 4A</figref>, batch execution pattern primitive specification <b>400</b> further includes information such as inputs at modeling time—Model Inputs <b>408</b> (None), inputs utilized at deployment/execution time (at the time of application deployment/execution)—Run Inputs <b>410</b>, and application characteristics—Characteristic Inputs <b>412</b> (None). Batch execution pattern primitive specification <b>400</b> lists Run Inputs <b>410</b> as NumTasks, NumNodes, which indicates that the Number of Tasks and the Number of Nodes to be utilized are input at run time.
0038Batch execution pattern primitive specification <b>400</b> also includes a listing of implementations of the primitive on various clouds—Implementations <b>414</b> which lists the clouds (Amazon™, Rackspace™) under Cloud <b>416</b> on which the primitive has been implemented. In some embodiments, a library of implementations for primitives is maintained for one or more clouds. Implementations of the primitive may include metadata and code. For example, the metadata portion of a primitive implementation on a cloud may include: (i) a reference to the primitive for which this is the implementation and (ii) a reference to the cloud type for which this implementation has been made, and/or (iii) concrete values for characteristics that this implementation can meet. The code portion may include details pertaining to the specific implementation represented by an execute method that has the appropriate logic to launch or execute the primitive on the cloud. In one embodiment, for an Object Oriented implementation, primitives may be represented by interfaces or XML metadata, while implementations can be concrete classes with execute methods. As shown in <figref idref="DRAWINGS">FIG. 4A</figref>, Cloud <b>416</b> lists the specific execute methods for Amazon™ and Rackspace™ as AmazonBatchExecution and RackspaceBatchExecution, respectively.
0039<figref idref="DRAWINGS">FIG. 4B</figref> shows an exemplary specification for the “RUN-CMD-LINE” primitive <b>420</b> listed in Dependencies <b>406</b> in batch execution pattern primitive <b>400</b>. RUN-CMD-LINE primitive specification <b>420</b> includes information such as: name of the primitive—Name <b>422</b> (“Run Command Line”), a description of the primitive's function or utility—Description <b>424</b> (“Run an application through the command line”), version or revision number Version—<b>425</b>, any dependencies or interrelationships with other primitives—Dependencies <b>426</b>, and inputs utilized at modeling time <b>428</b>. As shown in <figref idref="DRAWINGS">FIG. 4B</figref>, RUN-CMD-LINE primitive specification <b>420</b> lists Dependencies <b>426</b> as “SHARED-STORAGE, COMPUTE-NODE.”
0040Additionally, as shown in <figref idref="DRAWINGS">FIG. 4B</figref>, RUN-CMD-LINE primitive specification <b>420</b> further includes information such as Model Inputs <b>428</b>, inputs utilized at deployment/execution time—Run Inputs <b>430</b>, and application characteristics—Characteristic Inputs <b>432</b>. Model Inputs <b>428</b> lists the “Application bits,” which is the name of the executable, the command line to run the executable, and the names of command line parameters. RUN-CMD-LINE primitive specification <b>420</b> lists Run Inputs <b>430</b> as “Command line parameters,” and, in practice, would list the actual command line parameter values to be used at run time.
0041Further, RUN-CMD-LINE primitive specification <b>420</b> also lists the operating system and hardware configuration for running under Characteristic Inputs <b>432</b>. RUN-CMD-LINE primitive specification <b>420</b> also includes a listing of implementations of the primitive on various clouds—Implementations <b>434</b> which lists the clouds (Amazon, Rackspace) under Cloud <b>436</b> on which the primitive has been implemented. As shown in <figref idref="DRAWINGS">FIG. 4B</figref>, Cloud <b>436</b> lists the cloud specific implementations of RUN-CMD-LINE primitive <b>420</b> for Amazon™ and Rackspace™ as AmazonRunCmdLine and RackspaceRunCmdLine, respectively.
0042<figref idref="DRAWINGS">FIG. 4C</figref> shows an exemplary specification for the “SHARED-STORAGE” primitive <b>440</b> listed in Dependencies <b>406</b> in batch execution pattern primitive <b>400</b>. “SHARED-STORAGE” primitive <b>440</b> includes information such as: name of the primitive—Name <b>442</b> (“Shared Storage”), a description of the primitive's function or utility—Description <b>444</b> (“Shared Storage”), version or revision number Version—<b>445</b>, any dependencies or interrelationships with other primitives—Dependencies <b>446</b> (None—i.e. no dependencies), inputs utilized at modeling time <b>448</b> (None), and inputs utilized at deployment/execution time—Run Inputs <b>450</b> (None).
0043Additionally, as shown in <figref idref="DRAWINGS">FIG. 4C</figref>, “SHARED-STORAGE” primitive <b>440</b> specification further includes information such as Characteristic Inputs <b>452</b>, which can list the maximum and minimum storage (Max Storage, Min Storage) for the application. “SHARED-STORAGE” primitive <b>440</b> also includes a listing of implementations of the primitive on various clouds—Implementations <b>454</b> which lists the clouds (Amazon, Rackspace) under Cloud <b>456</b> on which the primitive has been implemented. As shown in <figref idref="DRAWINGS">FIG. 4C</figref>, Cloud <b>456</b> lists the cloud specific implementations of “SHARED-STORAGE” primitive <b>440</b> for Amazon and Rackspace as AmazonDFS and RackspaceSAN, respectively.
0044<figref idref="DRAWINGS">FIG. 4D</figref> shows an exemplary specification for the “COMPUTE-NODE” primitive <b>460</b> listed in Dependencies <b>406</b> in batch execution pattern primitive <b>400</b>. Like the other exemplary primitive specifications, COMPUTE-NODE primitive specification <b>460</b> includes information such as: name of the primitive—Name <b>462</b> (“A Computation Node”), a description of the primitive's function or utility—Description <b>464</b> (“A Computation Node”), version or revision number Version—<b>465</b>, any dependencies or interrelationships with other primitives—Dependencies <b>466</b> (None), and inputs utilized at modeling time <b>468</b> (None), and Run-Inputs <b>470</b> (None).
0045Additionally, as shown in <figref idref="DRAWINGS">FIG. 4D</figref>, COMPUTE-NODE primitive specification <b>460</b> further includes information on additional characteristics—Characteristic Inputs <b>472</b>. COMPUTE-NODE primitive specification <b>460</b> can optionally list “Pricing” under Characteristic Inputs <b>472</b>. When “Pricing” is specified under Characteristic Inputs <b>472</b>, the application may be run on those clouds whose pricing model falls within the pricing constraints specified under “Pricing.” COMPUTE-NODE primitive specification <b>460</b> also includes a listing of implementations of the primitive on various clouds—Implementations <b>474</b> which lists the clouds (Amazon™, Rackspace™) under Cloud <b>476</b> on which the primitive has been implemented. As shown in <figref idref="DRAWINGS">FIG. 4D</figref>, Cloud <b>476</b> lists the cloud specific implementations of COMPUTE-NODE primitive specification <b>460</b> for Amazon™ and Rackspace™ as AmazonInstanceType and RackspaceNode, respectively.
0046<figref idref="DRAWINGS">FIG. 4E</figref> shows an exemplary specification for the “INF-BUS” primitive <b>480</b> listed in Dependencies <b>406</b> in batch execution pattern primitive <b>400</b>. Like the other exemplary primitive specifications, INF-BUS primitive specification <b>480</b> includes information such as: name of the primitive—Name <b>482</b> (“Information Bus”), a description of the primitive's function or utility—Description <b>484</b> (“Information Queue over Network”), version or revision number Version—<b>485</b>, any dependencies or interrelationships with other primitives—Dependencies <b>486</b> (None), inputs utilized at modeling time Model Inputs <b>488</b> (None), Run Inputs <b>490</b> (None), and Characteristic Inputs <b>492</b> (None).
0047INF-BUS primitive specification <b>480</b> also includes a listing of implementations of the primitive on various clouds—Implementations <b>494</b> which lists the clouds (Amazon™, Rackspace™) under Cloud <b>496</b> on which the primitive has been implemented. As shown in <figref idref="DRAWINGS">FIG. 4E</figref>, Cloud <b>496</b> lists the cloud specific implementations of INF-BUS primitive specification <b>480</b> for Amazon™ and Rackspace™ as AmazonSQS and RackspaceInfinisim-JMSQ, respectively.
0048Based on available metadata descriptions of primitives exemplified by <figref idref="DRAWINGS">FIGS. 4A-E</figref>, an application can be (a) modeled in terms of a high level primitive such as “Batch Execution” (<figref idref="DRAWINGS">FIG. 4A</figref>) using the model inputs and characteristics needed; and (b) deployed/executed on a cloud of choice using runtime inputs.
0049<figref idref="DRAWINGS">FIG. 5A</figref> shows a flowchart <b>500</b> of an exemplary algorithm to obtain inputs for the modeling of applications based on system and pattern primitives. As shown in <figref idref="DRAWINGS">FIG. 5A</figref>, in step <b>520</b>, at the time an application is being modeled, the user may be queried for the pattern primitive (or a pattern built from one or more primitives) such as exemplary BATCH-EXECUTION primitive <b>400</b> discussed above. Next, in step <b>530</b>, for a given pattern, the algorithm may query users for model inputs and characteristic inputs. In step <b>540</b>, the algorithm determines if a given pattern has dependencies. If there are no dependencies, the modeling is complete. Otherwise (if there are dependencies), for given pattern, the algorithm iterates through steps <b>520</b> and <b>530</b> for each dependency pattern. Once application modeling is complete, then, in step <b>545</b>, an infrastructure representation of the application may be generated and the application can be deploy-executed seamlessly.
0050Using the above algorithm, for an exemplary application “CompApp.exe,” which is being batch executed using the exemplary BATCH-EXECUTION primitive discussed above, the following inputs may be provided at modeling time: <ul id="ul0001" list-style="none"><li id="ul0001-0001" num="0000"><ul id="ul0002" list-style="none"><li id="ul0002-0001" num="0051">i. Application Bits: “CompApp.exe”,</li><li id="ul0002-0002" num="0052">ii. Command Line: “%shared_store%/CompApp.exe-parameter<b>1</b> value<b>1</b>-parameter<b>2</b> value<b>2</b> inputData”</li><li id="ul0002-0003" num="0053">iii. Command Line Parameter Names: parameter<b>1</b>, parameter<b>2</b>, inputData</li><li id="ul0002-0004" num="0054">iv. Application Characteristics: <ul id="ul0003" list-style="none"><li id="ul0003-0001" num="0055">a. OS=Windows</li><li id="ul0003-0002" num="0056">b. Hardware profile=x86, etc.</li><li id="ul0003-0003" num="0057">c. Node Pricing (optional)</li><li id="ul0003-0004" num="0058">d. Maximum Storage, Minimum Storage</li></ul></li></ul></li></ul>
0059<figref idref="DRAWINGS">FIG. 5B</figref> shows a flowchart <b>550</b> of an exemplary algorithm to obtain inputs for the deployment and execution of applications using system and pattern primitives. At run time, in step <b>570</b>, the user may select a pattern primitive (or a pattern built from primitives) such as exemplary BATCH-EXECUTION primitive <b>400</b> discussed above. Next, in step <b>580</b>, for given pattern, system queries users for runtime inputs or may obtain these automatically from a file. In step <b>590</b>, the algorithm determines if a given pattern has dependencies. If there are no dependencies, then, in step <b>595</b>, the algorithm may query the user or automatically determine the cloud infrastructure on which the application is being deployed-executed. Otherwise, if the application has dependencies, for a given pattern, the system iterates through steps <b>570</b> and <b>580</b> for each dependency pattern.
0060Using the above algorithm, for the exemplary batch executed application “CompApp.exe,” the following inputs will be provided at run time: <ul id="ul0004" list-style="none"><li id="ul0004-0001" num="0061">i. Tasks</li><li id="ul0004-0002" num="0062">ii. Number of Nodes—numNodes</li><li id="ul0004-0003" num="0063">iii. parameter<b>1</b> value</li><li id="ul0004-0004" num="0064">iv. parameter<b>2</b> value</li><li id="ul0004-0005" num="0065">v. inputData</li><li id="ul0004-0006" num="0066">vi. Infrastructure (Amazon, Rackspace, etc.)</li></ul>
0067Note that the primitives above are exemplary and for illustrative purposes only. In general, composite interfaces can be built based on these primitive patterns. In addition, “cluster synchronization operations” may be used to create “workflow templates” that capture the mechanics of a distributed computing pattern. Examples of cluster synchronization operations include, “Wait on Node,” where a task on a node in a workflow can proceed after the immediately preceding task has completed on that node. Another example of a cluster synchronization operation is “Wait on Cluster,” where task in a workflow can proceed after the immediately preceding task has completed on all nodes
0068For example, for a parallel problem where: (i) data is split, (ii) followed by parallel computations in batch mode on “n” nodes, and (iii) followed by processing of results on a single node can be modeled using the pattern template below. The number in parentheses indicates the size of the cluster launched. <ul id="ul0005" list-style="none"><li id="ul0005-0001" num="0000"><ul id="ul0006" list-style="none"><li id="ul0006-0001" num="0069">1. Launch Shared Storage</li><li id="ul0006-0002" num="0070">2. Launch <b>1</b> node</li><li id="ul0006-0003" num="0071">3. Parallel (1)—split data using <b>1</b> computation node into t tasks Wait On Cluster</li><li id="ul0006-0004" num="0072">4. Launch n-<b>1</b> nodes</li><li id="ul0006-0005" num="0073">5. Parallel (n)—set up application on each worker node Wait On Node</li><li id="ul0006-0006" num="0074">6. Batch (n)—batch execution of application on n nodes for t tasks Wait On Cluster</li><li id="ul0006-0007" num="0075">7. Terminate n-<b>1</b> nodes</li><li id="ul0006-0008" num="0076">8. Parallel(1)—process results</li></ul></li></ul>
0077In step 1 above, shared storage is launched. A single node is launched next (step 2), which, in step 3, splits the data set in parallel so that it can be processed using “t” tasks. Further computational steps are delayed by synchronization operator “wait on cluster” until all the data has been split. Next, in step 4, n-<b>1</b> nodes are launched and, in step 5, the application is set up in parallel on “n” worker nodes. The “wait on node” synchronization operator ensures that the batch execution of the application on any individual node will not take place until application setup for that node has completed. After batch execution of the application “t” tasks on “n” nodes (step 6) has completed, which is ensured by the synchronization operator “wait on cluster,” then, in step 7, n-<b>1</b> nodes are terminated. Finally, in step 8, the results are processed in parallel by one node.
0078Other patterns for which primitives may be derived include, but are not limited to, applications based on Message Passing Interface (“MPI”), Map-Reduce, and Stateless Three-Tier Web patterns. MPI applications are typically launched initially on one node in a cluster. The computation is then automatically distributed by the MPI platform, which launches independent computational processes on some specified number of nodes in the cluster. These independent computational processes (running on individual cluster nodes) synchronize state periodically using the platform interfaces. A pattern template for MPI may use launch nodes, RUN-CMD-LINE, SHARED STORAGE and INF-BUS primitives. An exemplary workflow template for MPI is shown below. <ul id="ul0007" list-style="none"><li id="ul0007-0001" num="0000"><ul id="ul0008" list-style="none"><li id="ul0008-0001" num="0079">1. Launch Shared Storage</li><li id="ul0008-0002" num="0080">2. Launch n nodes</li><li id="ul0008-0003" num="0081">3. Parallel (1)—launch MPI command on only one node Wait On Cluster</li><li id="ul0008-0004" num="0082">4. Terminate n nodes <br /> Model time input for the primitive may be an MPI platform such as OpenMPI. A cloud-specific implementation of the MPI primitive can set up the nodes, storage, and network resources on the MPI platform and execute MPI application commands. </li></ul></li></ul>
0083Map-Reduce is a programming model for processing and generating large data sets. Users specify a map function that processes a key/value pair to generate a set of intermediate key/value pairs, and a reduce function that merges all intermediate values associated with the same intermediate key. A template based pattern for Map-Reduce may be derived by combining two batch execution primitives with a Wait On Cluster synchronization operation. The first batch execution is the Map part, while the second batch execution is the reduce part.
0084In some embodiments, the application model is specified in terms of pattern and system primitives. In some embodiments, pattern and/or system primitives may be combined to build higher-level primitives termed composite interfaces, which may facilitate application modeling for more complex applications. Composite interfaces may be built using basic primitives as building blocks.
0085For example, web applications are typically designed to be stateless three-tier web applications. The three tiers are the application or application stack, the application container (or the server) and the database. A higher-level composite interface for the three-tier stateless pattern may comprise three primitives for the three tiers. Because the applications are stateless, they can be distributed simply by adding more instances of the same application stack to an existing cluster with the same database tier. Although various three-tier application stacks exist today such as Java™ Applications over well known containers such as JBoss, Apache Tomcat, and Ruby over Rails applications, the underlying distributed paradigm is the same. Therefore, a three-tier stateless web-application primitive can be derived. Model time inputs for the primitive may include the specific application stack technologies and the application bits.
0086In some embodiments, at deployment time, the system may invoke execute methods corresponding to a composite interface's implementation for a specific cloud on which the deployment is taking place. Because composite interfaces can be built using system and pattern primitives, the implementation for a composite interface can also result in the invocation of execute methods that implement the underlying system and pattern primitives (which have been used to build the composite interface) for the cloud on which the application is being deployed. In addition, in some embodiments, the deployment system may also interact directly with the cloud provider's APIs to achieve deployment.
0087If the application model is specified using a workflow template, then the deployment system follows the semantics of the workflow for that template. Steps in the workflow template may be executed, and upon completion of a step, the workflow may proceed to the next step either in a cluster-wide fashion or a node-wise fashion depending on the cluster synchronization operation between the steps. In some embodiments, the deployment system may maintain a workflow state in memory to facilitate deployment. The workflow state may include information such as the size of the cluster, list of current nodes in the cluster, current task status on individual nodes, etc.
0088In some embodiments, an execution engine may perform the function of using the infrastructure independent representation to deploy and execute applications on a specified cluster. In one embodiment, the following algorithm may be used to deploy/execute the application on a cluster. <ul id="ul0009" list-style="none"><li id="ul0009-0001" num="0000"><ul id="ul0010" list-style="none"><li id="ul0010-0001" num="0089">1) The execution engine may start with an infrastructure independent representation of the application.</li><li id="ul0010-0002" num="0090">2) If the infrastructure independent representation includes composite interfaces, then the engine may invoke execute methods corresponding to a composite interface's implementation for a specific cloud on which the deployment is taking place. <ul id="ul0011" list-style="none"><li id="ul0011-0001" num="0091">a. If the composite interface's implementation, in turn, uses additional interfaces, system, or pattern primitives, then the execution engine may be called recursively to deploy these components.</li><li id="ul0011-0002" num="0092">b. Deployment may involve direct interaction with the cloud provider's APIs.</li></ul></li><li id="ul0010-0003" num="0093">3) If the application model is a template, then the execution engine follows the semantics of the workflow for that template, which can include: <ul id="ul0012" list-style="none"><li id="ul0012-0001" num="0094">a. Calling the engine recursively or each step in the workflow</li><li id="ul0012-0002" num="0095">b. Using the cluster synchronization operations to determine whether to move to the subsequent step in the workflow in a cluster-wide or node-wise fashion.</li></ul></li></ul></li></ul>
0096<figref idref="DRAWINGS">FIG. 6</figref> shows an exemplary architecture of a system consistent with disclosed embodiments for deploying and/or migrating applications to distributed systems including clouds. As shown in <figref idref="DRAWINGS">FIG. 2</figref>, system <b>600</b> includes System Manager <b>615</b>, Coordinator/Gateway <b>650</b>, security/firewall <b>620</b>, and secure communication interlinks <b>625</b>.
0097In some embodiments, system manager <b>615</b> may be deployed on a cloud infrastructure, which may be private or public cloud <b>605</b>. As shown in <figref idref="DRAWINGS">FIG. 2</figref>, resource <b>612</b> in cloud <b>605</b> represents the hardware and software that underlies cloud <b>605</b>. For example, resource <b>612</b> may include hardware such as servers, computers, storage, and software such as operating systems, platforms, application servers, applications, etc. For example, resource <b>612</b> may facilitate the hosting of distributed computing applications to be modeled and deployed. Resource <b>612</b> may also facilitate the hosting of data for the distributed computing application to be modeled and deployed and store the results obtained after running the distributed computing application. Data and communications between Resource <b>612</b> and System Manager <b>615</b> may occur over secure communication interlinks <b>625</b>.
0098In some embodiments, system manager <b>615</b> may facilitate the modeling and deployment of distributed computing applications on one or more cloud infrastructures, such as exemplary Amazon™ cloud infrastructure <b>630</b>, Terremark™ <b>670</b>, and/or Rackspace™ <b>680</b>. For example, system manager <b>615</b> may provide APIs for managing templates and modeling new applications. In one embodiment, system manager <b>615</b> may provide User Console <b>617</b> to allow users to model distributed computing applications for deployment and may also be used to provide run time inputs for deploying applications. For example, a program implementing exemplary algorithm <b>500</b> shown in <figref idref="DRAWINGS">FIG. 5A</figref> may be invoked on User Console <b>617</b> to obtain inputs for modeling.
0099In some embodiments, coordinator/gateway <b>650</b> orchestrates the deployment and execution of distributed computing application for a cloud. In some embodiments, each cloud (Amazon cloud <b>630</b>, Terremark cloud <b>670</b>, and Rackspace <b>680</b>) may include a distinct coordinator/gateway <b>650</b>. Coordinator/gateway <b>650</b> and system manager <b>615</b> may communicate with each other over the network using secure communication interlinks <b>625</b>. In one embodiment, system manager <b>615</b> and coordinator/gateway <b>650</b> may communicate with each other over the using Representational State Transfer (“REST”) compliant, or RESTful web service calls.
0100In some embodiments, when an application needs to be deploy-executed on a cloud, the infrastructure independent application model may be passed to the gateway for that cloud as an input. In the description below, for ease of explanation, the cloud is assumed to be the Amazon™ cloud infrastructure <b>630</b>. However, the concepts discussed are not limited to any specific cloud infrastructure and may be applied to any cloud infrastructure with appropriate modifications as would be apparent to one of ordinary skill in the art. For example, system manager <b>615</b> may pass the infrastructure independent application model to coordinator/gateway <b>650</b> for Amazon™ cloud infrastructure <b>630</b>.
0101As shown in <figref idref="DRAWINGS">FIG. 6</figref>, Amazon™ cloud infrastructure <b>630</b> includes virtual machine nodes <b>640</b> and shared storage <b>660</b>, which may be encrypted. In some embodiments, coordinator/gateway <b>650</b> may also run on one or more virtual machine nodes. The exchange of data between virtual node <b>640</b> and shared storage <b>660</b> can occur over secure communication interlinks <b>625</b>. In some embodiments, coordinator/gateway <b>650</b> maintains a library of implementations for primitives and composite interfaces for Amazon™ cloud <b>630</b>. When an application is to be deployed, coordinator/gateway <b>650</b> can use the library to perform deployment and execution tasks for Amazon™ cloud <b>630</b>. Accordingly, the launching of a shared storage implementation will set up a DFS on Amazon™ cloud <b>630</b>, while launching the shared storage implementation on Terremark™ cloud <b>670</b> will set up NAS/SAN. In some embodiments, coordinator/gateway <b>650</b> may launch agents, which can be deployed on application cluster nodes, to monitor and report task status back to coordinator/gateway <b>650</b>.
0102In some embodiments, system manager <b>615</b> may perform the following steps while deploying an application after obtaining appropriate run-time inputs either directly from the user or by using other automated mechanisms to obtain the inputs. For example, when run-time inputs are obtained from the user, algorithm <b>550</b> may be invoked to obtain the appropriate run-time inputs through user console <b>617</b>. In some embodiments, system manager <b>615</b> may select one of clouds <b>630</b>, <b>670</b>, or <b>680</b> for deployment. For example, for the batch execution pattern example above, system manager <b>615</b> may determine that there is no existing implementation for Batch-Execution pattern for Terremark™ cloud <b>670</b>. Therefore, system manager <b>615</b> may rule out Terremark™ as a possible execution cloud.
0103System manager <b>615</b> may then select Amazon™ cloud <b>630</b> and may then provide coordinator/gateway <b>650</b> for Amazon™ cloud <b>630</b> with all model-time and run-time inputs for that application and job. Since this is a primitive abstract, the execute method corresponding to the implementation for Amazon™ cloud <b>630</b> will be called along with the user provided model-time and run-time inputs. Accordingly, coordinator/gateway <b>650</b> may select AmazonBatchExecution as the Amazon™ implementation for the batch execution pattern of computing based on information in batch execution pattern primitive specification <b>400</b>, which lists the specific execute method for Amazon™ (under Clouds <b>416</b> in batch execution pattern primitive specification <b>400</b>) as Amazon BatchExecution.
0104Note that batch execution pattern primitive specification <b>400</b> also lists “SHARED-STORAGE” primitive <b>440</b> and “INF-BUS” primitive <b>480</b> as dependencies <b>406</b>. Therefore, in some embodiments, the implementation code AmazonBatchExecution may request the implementation of these primitives from coordinator/gateway <b>650</b>. Coordinator/gateway <b>650</b> may then provide Amazon DFS and AmazonSQS as the implementations of “SHARED-STORAGE” primitive <b>440</b> and “INF-BUS” primitive <b>480</b>, respectively, to AmazonBatchExecution.
0105AmazonBatchExecution may then execute methods associated with AmazonDFS and AmazonSQS to setup the shared storage and the information bus. For example, various well-known distributed systems technologies may be used to create shared storage as a distributed file system. In one embodiment, commercially available systems such as SectorFS, GlusterFS, etc. may be used. In general, the execute method associated with AmazonDFS will include logic for how to bring up and run an appropriate distributed file system on Amazon™ Similarly, execute methods associated with AmazonSQS may bring up Amazon Shared Queue Service, which provides a Queue for producing and consuming messages.
0106After the AmazonDFS and AmazonSQS methods have completed, AmazonBatchExecution may launch the appropriate number compute nodes as specified by Number of Nodes (numNodes) run time input. COMPUTE-NODE primitive specification <b>460</b> lists the cloud specific implementations of COMPUTE-NODE primitive specification <b>460</b> for Amazon™ as AmazonInstanceType. Accordingly, for the example above, the execute method associated with AmazonInstanceType may be used to launch the nodes. In some embodiments, AmazonBatchExecution may also launch agents on the individual nodes. The agents may monitor and report task status back to coordinator/gateway <b>650</b> and perform other tasks as directed.
0107In some embodiments, AmazonBatchExecution may also place numTasks units of compute tasks on the information bus, which may be Amazon™ Shared Queue Service, to synchronize batch execution. In some embodiments, AmazonBatchExecution running on coordinator/gateway <b>650</b> may request the agents on compute nodes to pick up compute tasks from the Amazon™ Shared Queue service and run them as per the RUN-CMD-LINE pattern primitive <b>420</b>, which specifies AmazonRunCmdLine as the Amazon implementation. Accordingly, AmazonRunCmdLine may be invoked using the appropriate run time inputs. For example, in one instance, AmazonRunCmdLine may simply open a command shell and call the virtual machine node OS to execute the command as specified in the command line.
0108Note that although the description above uses exemplary cloud infrastructures to describe possible implementations, alternate implementations are envisaged and the methods described could be extended to other cloud infrastructures as would be apparent to one of ordinary skill in the art. Further, although primitives, composite interfaces, and templates have been described as exemplary intermediate infrastructure independent representations, other infrastructure independent intermediate representational schemes may also be used. In some embodiments, software to facilitate conducting the processes described above can be recorded on computer-readable media or computer-readable memory. These include, but are not limited to, hard drives, solid state drives, optical media, removable media, and the like.
0109Other embodiments of the present invention will be apparent to those skilled in the art from consideration of the specification and practice of one or more embodiments of the invention disclosed herein. It is intended that the specification and examples be considered as exemplary only, with a true scope and spirit of the invention being indicated by the following claims.
Contents4
11 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US10419283B1 | Cited by | United States of America | Search report |
| CN105991735A | Cited by | China | Search report |
| US9507579B2 | Cited by | United States of America | Applicant |
| US11138090B2 | Cited by | United States of America | Applicant |
| US9485459B2 | Cited by | United States of America | Applicant |
| US10867421B2 | Cited by | United States of America | Applicant |
| US9800673B2 | Cited by | United States of America | Applicant |
| US9253520B2 | Cited by | United States of America | Applicant |
| US10324696B2 | Cited by | United States of America | Search report |
| US2014143401A1 | Cited by | United States of America | Pre-grant |
| US11113852B2 | Cited by | United States of America | Applicant |
| US10223502B2 | Cited by | United States of America | Applicant |
| US10949436B2 | Cited by | United States of America | Applicant |
| US10095559B2 | Cited by | United States of America | Applicant |
| US12475615B2 | Cited by | United States of America | Applicant |
| US2016248625A1 | Cited by | United States of America | Pre-grant |
| US10613914B2 | Cited by | United States of America | Search report |
| US9754303B1 | Cited by | United States of America | Applicant |
| US9632814B2 | Cited by | United States of America | Applicant |
| US10803031B1 | Cited by | United States of America | Applicant |
| US11269823B1 | Cited by | United States of America | Applicant |
| US9292330B2 | Cited by | United States of America | Applicant |
| US10963346B2 | Cited by | United States of America | Applicant |
| US11010349B2 | Cited by | United States of America | Search report |
| CN104408555A | Cited by | China | Search report |
| US9444880B2 | Cited by | United States of America | Search report |
| EP2808790A3 | Cited by | European Patent Office (EPO) | Search report |
| US9590872B1 | Cited by | United States of America | Search report |
| US9612815B1 | Cited by | United States of America | Applicant |
| US2014082131A1 | Cited by | United States of America | Pre-grant |
| US10255136B2 | Cited by | United States of America | Search report |
| US10331802B2 | Cited by | United States of America | Applicant |
| US11194635B2 | Cited by | United States of America | Applicant |
| GB2510489A | Cited by | United Kingdom | Search report |
| US9633406B2 | Cited by | United States of America | Applicant |
| US2014149494A1 | Cited by | United States of America | Pre-grant |
| US10635563B2 | Cited by | United States of America | Applicant |
| US2012331528A1 | Cited by | United States of America | Pre-grant |
| US9467494B1 | Cited by | United States of America | Search report |
| US9274843B2 | Cited by | United States of America | Applicant |
| US11894135B2 | Cited by | United States of America | Applicant |
| US9645811B2 | Cited by | United States of America | Applicant |
| EP2808790A2 | Cited by | European Patent Office (EPO) | Search report |
| US9692632B2 | Cited by | United States of America | Applicant |
| US2013275486A1 | Cited by | United States of America | Pre-grant |
| CN104487948A | Cited by | China | Search report |
| CN113839821A | Cited by | China | Search report |
| US10817803B2 | Cited by | United States of America | Applicant |
| US9485099B2 | Cited by | United States of America | Applicant |
| US10419524B2 | Cited by | United States of America | Applicant |
| US9781205B2 | Cited by | United States of America | Search report |
| US2015039770A1 | Cited by | United States of America | Pre-grant |
| US10162666B2 | Cited by | United States of America | Applicant |
| US10692255B2 | Cited by | United States of America | Applicant |
| US10185727B1 | Cited by | United States of America | Search report |
| US9311161B2 | Cited by | United States of America | Search report |
| US9444896B2 | Cited by | United States of America | Applicant |
| US9282166B2 | Cited by | United States of America | Search report |
| US10212254B1 | Cited by | United States of America | Applicant |
| US10419546B2 | Cited by | United States of America | Applicant |
| US9736013B2 | Cited by | United States of America | Applicant |
| US10678602B2 | Cited by | United States of America | Applicant |
| US9430213B2 | Cited by | United States of America | Applicant |
| US2016173640A1 | Cited by | United States of America | Pre-grant |
| US11080906B2 | Cited by | United States of America | Applicant |
| US11706154B2 | Cited by | United States of America | Applicant |
| WO2014039888A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US9661071B2 | Cited by | United States of America | Applicant |
| US9654563B2 | Cited by | United States of America | Applicant |
| US2014195635A1 | Cited by | United States of America | Pre-grant |
| GB2510489B | Cited by | United Kingdom | Search report |
| WO2014093933A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US9608931B2 | Cited by | United States of America | Applicant |
| US10244081B2 | Cited by | United States of America | Applicant |
| US12001926B2 | Cited by | United States of America | Applicant |
| US10699211B2 | Cited by | United States of America | Applicant |
| US10218633B2 | Cited by | United States of America | Search report |
| US9942351B2 | Cited by | United States of America | Search report |
| US8713152B2 | Cited by | United States of America | Search report |
| US12250161B2 | Cited by | United States of America | Applicant |
| US2017083403A1 | Cited by | United States of America | Pre-grant |
| US10374971B2 | Cited by | United States of America | Applicant |
| US11928760B2 | Cited by | United States of America | Applicant |
| US9300910B2 | Cited by | United States of America | Applicant |
| US2014304398A1 | Cited by | United States of America | Pre-grant |
| US8775464B2 | Cited by | United States of America | Search report |
| US2013232185A1 | Cited by | United States of America | Pre-grant |
| US11887015B2 | Cited by | United States of America | Applicant |
| US11650833B1 | Cited by | United States of America | Search report |
| US10003672B2 | Cited by | United States of America | Applicant |
| US11030049B2 | Cited by | United States of America | Applicant |
| US11670020B2 | Cited by | United States of America | Applicant |
| US2018027022A1 | Cited by | United States of America | Search report |
| US10915830B2 | Cited by | United States of America | Applicant |
| CN114679441A | Cited by | China | Search report |
| US10970186B2 | Cited by | United States of America | Applicant |
| US10970891B2 | Cited by | United States of America | Applicant |
| US11537940B2 | Cited by | United States of America | Applicant |
| US9229771B2 | Cited by | United States of America | Applicant |
| US11082439B2 | Cited by | United States of America | Applicant |
16 members in 1 office; this record represents the family
Members16
| Document | Office | Kind | |
|---|---|---|---|
| US2012203823A1 | United States of America | A1 | |
| US2012239739A1 | United States of America | A1 | |
| US2012331528A1 | United States of America | A1 | |
| US2013151598A1 | United States of America | A1 | |
| US8843998B2 | United States of America | B2 | |
| US8862933B2 | United States of America | B2 | |
| US2014372533A1 | United States of America | A1 | |
| US2015039770A1 | United States of America | A1 | |
| US9307019B2 | United States of America | B2 | |
| US2016156707A1 | United States of America | A1 | |
| US9661071B2 | United States of America | B2 | |
| US2017257432A1 | United States of America | A1 | |
| US9967318B2 | United States of America | B2 | |
| US10003672B2 | United States of America | B2 | |
| US10225335B2 | United States of America | B2 | |
| US10678602B2 | United States of America | B2 |
55 transactions on the USPTO file
Allowed after 1 non-final rejection, 1 final rejection and 1 RCE.
- Non-final rejections
- 1
- Final rejections
- 1
- RCEs
- 1
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 12th Year, Large EntityM1553 | M1553 | |
| Payment of Maintenance Fee, 8th Year, Large EntityM1552 | M1552 | |
| Payment of Maintenance Fee, 4th Year, Large EntityM1551 | M1551 | |
| Entity status set to undiscounted (initial default setting or status change)BIG. | BIG. | |
| Email NotificationEML_NTR | EML_NTR | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Correspondence Address ChangeC.AD | C.AD | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Filing Receipt - CorrectedFLRCPT.C | FLRCPT.C | |
| Applicant Has Filed a Verified Statement of Small Entity Status in Compliance with 37 CFR 1.27SMAL | SMAL | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Mail Advisory Action (PTOL - 303)MCTAV | MCTAV | |
| Advisory Action (PTOL-303)CTAV | CTAV | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Final ActionA.NE | A.NE | |
| PILOT- Request for After Final Consideration ProgramRAFC | RAFC | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Correspondence Address ChangeC.AD | C.AD | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Correspondence Address ChangeC.AD | C.AD | |
| Request for RefundIRFND | IRFND | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Sent to Classification ContractorPGPC | PGPC | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Application Is Now CompleteCOMP | COMP | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
9 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| Maintenance fee paymentMAFP | MAFP | |
| Maintenance fee paymentMAFP | MAFP | |
| Fee payment procedureENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.)FEPP | FEPP | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Publication
- 20120203823
- Application
- 13024302
Titles
- English
- APPARATUS, SYSTEMS AND METHODS FOR DEPLOYMENT AND MANAGEMENT OF DISTRIBUTED COMPUTING SYSTEMS AND APPLICATIONS
Patent term adjustment
- A delay
- +414 daysthe office missed an examination deadline
- B delay
- +126 dayspendency past three years
- Applicant delay
- −176 days
- Net adjustment
- 364 days
Classification
- CPC, 4
- G06F9/5072
- H04L67/1014
- H04L67/565
- H04L67/1097
- IPC, 3
- G06F15 16
- H04L45 16
- H04L45 74