US20110295984A1 - Cartridge-based package management - Google Patents
Cartridge-based package management Download PDFInfo
- Publication number
- US20110295984A1 US20110295984A1 US13/151,193 US201113151193A US2011295984A1 US 20110295984 A1 US20110295984 A1 US 20110295984A1 US 201113151193 A US201113151193 A US 201113151193A US 2011295984 A1 US2011295984 A1 US 2011295984A1
- Authority
- US
- United States
- Prior art keywords
- support
- program
- identified
- components
- application
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/62—Uninstallation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- 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/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- 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/445—Program loading or initiating
- G06F9/44536—Selecting among different versions
-
- 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/451—Execution arrangements for user interfaces
- G06F9/453—Help systems
-
- 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/45533—Hypervisors; Virtual machine monitors
-
- 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/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
Definitions
- Embodiments of the present invention relate to the application deployment, and more specifically to automatically loading software components associated with an application.
- a program in the PHP scripting language may need to be loaded simultaneously with a language runtime for the PHP scripting language, and possibly other support components.
- a program makes use of a feature of the PHP scripting language that first appeared in a particular version of the PHP scripting language, the loaded language runtime for the PHP scripting language must be recent enough to support this feature.
- FIG. 1A is a block diagram of a network architecture in which embodiments of the invention may operate.
- FIG. 1B is a block diagram of one embodiment of a Platform-as-a-Service approach for facilitating the execution of a web application in a cloud.
- FIG. 1C illustrates provisioning of an application using an application architecture descriptor.
- FIG. 2 illustrates an exemplary user interface for specifying dependencies of a web application, in accordance with some embodiments.
- FIG. 3 is a flow diagram of one embodiment of a method for establishing a support environment for a program.
- FIG. 4 illustrates a sample component catalog table used by the facility to store information about support components in some embodiments.
- FIG. 5 illustrates a sample business logic table used by the facility to store business logic for selecting support components in some embodiments.
- FIG. 6 is a relationship diagram providing an overview of the cartridge system implemented by the facility in some embodiments.
- FIG. 7 is a relationship diagram portraying dependency relationships between components and features in some embodiments.
- FIG. 8 is a relationship diagram depicting interfaces between cartridges and the platform in accordance with some embodiments.
- FIG. 9 is a relationship diagram depicting a cartridge extension technique in accordance with some embodiments.
- FIG. 10 is the state diagram showing states of the application that are based upon current states of the support environment in accordance with some embodiments.
- FIG. 11 is a data and control flow diagram depicting the installation and removal of settings, in the context of starting and stopping the application, performed by the facility in some embodiments.
- FIG. 12 is a flow diagram of one embodiment of a method for injecting an empty cartridge package.
- FIG. 13 is a flow diagram of one embodiment of a method for installing a cartridge.
- FIG. 14 is a flow diagram of one embodiment of a method for reconfiguring a cartridge.
- FIG. 15 is a flow diagram of one embodiment of a method for removing a cartridge.
- FIG. 16 is a flow diagram of one embodiment of a method for upgrading a cartridge.
- FIG. 17 illustrates a diagrammatic representation of a machine in the exemplary form of a computer system.
- a program may depend on several support components.
- Manually determining an optimized set of support software components to load with a program can be difficult, especially where the exact nature of the program's dependencies on support components is unclear; where support components have cascading dependencies on downstream support components; where such decisions must be made in a dynamic environment in which certain support components can become available or unavailable; and where there are multiple support components that can satisfy a dependency. It can also be difficult to cause manually selected support components to be loaded and initialized in an optimal order.
- Embodiments of the present invention provide a software and/or hardware cartridge and package management facility (“the facility”) that tracks dependencies of the program on abstract features.
- the dependencies of the program on abstract features are expressly declared by the developer of the program, either within the code for the program or externally, such as by being inputted as part of the process of submitting the program.
- the facility infers the dependencies of the program on abstract features by automatically analyzing the program's code.
- the facility may operate as part of a virtual machine running on top of a hypervisor in a host.
- the virtual machine may be delivered when a single package (“the slab”) is installed on the host to run on top of the hypervisor. An application runs on top of this slab.
- the facility maps abstract features depended upon by the program to support components that provide these abstract features.
- a support component together with information identifying the abstract features provided by the support component are sometimes referred to collectively herein as a “cartridge” that the facility can load into and unload from a current configuration that includes the program.
- the facility uses business logic in order to select an optimal one of these support components.
- the facility may also automatically manage the loading and initialization of a program together with the selected support components.
- the facility manages cascading dependencies; that is, a support component can itself depend upon abstract features provided by other support components (“downstream support components”).
- the facility similarly manages the selection, loading, and initialization of these downstream support components, to an arbitrary level of depth.
- the facility responds dynamically to changes in the availability of particular support components. For example, where a support component that is already loaded becomes unavailable, the facility can automatically pause any other components that have dependencies on the unavailable component, including the program, and unload the unavailable component. If an alternative to the unavailable component is available—that is, another support component that also provides the abstract features that were the basis for the original loading of the unavailable support component—the facility can automatically load the alternative support component and other components on which the alternative support component depend.
- the facility pauses the components that rely on these features, unloads the currently-loaded support component that provides these features, loads the newly-available support component, and unpauses the paused components.
- the facility is able to automatically maintain a set of appropriate, and in many cases optimal, components to support the execution of a program.
- FIG. 1A is a block diagram of a network architecture 100 in which embodiments of the invention may operate.
- the network architecture 100 includes a cloud 130 managed by a cloud provider system 104 .
- the cloud 130 provides virtual machines, such as virtual machines 111 , 112 , 121 , and 122 .
- Each virtual machine is hosted on a physical machine configured as part of the cloud 130 .
- Such physical machines are often located in a data center.
- virtual machines 111 and 112 are hosted on physical machine 110 in cloud 130 provided by cloud provider 104 .
- Users can interact with applications executing on cloud-based virtual machines using client computer systems, such as clients 160 , 170 and 180 , via corresponding web browser programs 161 , 171 and 181 .
- Clients 160 , 170 and 190 are connected to hosts 110 , 120 and the cloud provider system 104 via a network 102 , which may be may be a private network (e.g., a local area network (LAN), a wide area network (WAN), intranet, or other similar private networks) or a public network (e.g., the Internet).
- a network 102 may be a private network (e.g., a local area network (LAN), a wide area network (WAN), intranet, or other similar private networks) or a public network (e.g., the Internet).
- Each client 160 , 170 , 190 may be a mobile device, a PDA, a laptop, a desktop computer, or any other computing device.
- Each host 110 , 120 may be a server computer system, a desktop computer or any other computing device.
- the cloud provider system 104 may include one or more machines such as server computers, desktop computers, etc.
- the cloud provider system 104 is coupled to a cloud controller 108 via the network 102 .
- the cloud controller 108 may reside on one or more machines (e.g., server computers, desktop computers, etc.) and may manage the execution of applications in the cloud 130 .
- the cloud controller 108 provides slabs associated with different applications to the cloud provider 104 .
- a slab is a pre-generated image that can be provided to the cloud provider 104 and stored in an image repository 106 . This image may be a virtual machine image or an image of a physical system.
- the cloud provider 104 Upon receiving a command identifying a specific slab, the cloud provider 104 retrieves the corresponding image from the image repository 106 , creates an instance of it and loads it on the host 110 , 120 to run on top of a hypervisor (not shown).
- the command may be received from the cloud controller 108 or a user (e.g., a system administrator) via a console computer or a client machine.
- the image repository 106 may reside locally or remotely and may represent a single data structure or multiple data structures (databases, repositories, files, etc.) residing on one or more mass storage devices, such as magnetic or optical storage based disks, solid-state drives (SSDs) or hard drives.
- the image repository 106 may also store application packages and cartridges (packages of applications' support components). Alternatively, application packages and/or cartridges may be stored in one or more other repositories (not shown) residing locally or remotely.
- the cloud provider 104 or the cloud controller 108 may load an application package on the host 110 , 120 to run on top of the slab. A package manager executing in the slab may then determine the application's dependencies, identify cartridges based on the dependencies, and automatically load the cartridges to support the application during execution.
- slab may be implemented in a variety of other environments including a single, monolithic computer system, as well as various other combinations of computer systems or similar devices connected in various ways.
- FIG. 1B is a block diagram of one embodiment of a Platform-as-a-Service (PaaS) environment 150 for facilitating the execution of a web application in a cloud.
- the PaaS environment 150 includes an Infrastructure-as-a-Service (IaaS) 152 , which consists of hardware (e.g., one or more processors, memory, IO devices, etc.) and a hypervisor, and a platform 154 running on the IaaS 152 .
- the platform 154 is delivered as an auto-clustering virtual machine image, resulting in one or more virtual machines 158 , each containing a platform core 160 and a component layer in form of cartridges.
- IaaS Infrastructure-as-a-Service
- the platform 154 is delivered as an auto-clustering virtual machine image, resulting in one or more virtual machines 158 , each containing a platform core 160 and a component layer in form of cartridges.
- the platform core 160 may include the guest OS with the kernel, distributed services, a data transport, data services and a monitoring component.
- Distributed services allow communication between platforms when the application runs on multiple platforms (a cluster) executing on one or more hypervisors in one or more hosts.
- the monitoring component receives monitoring data from cartridges 164 , the guest OS and kernel and passes it to the data services that store this data in a data store inside the platform 154 and allows querying of this data by the user(s) and/or client(s).
- the monitoring data may describe the behavior and measure the performance of cartridges 164 , other components of the platform 154 , elements of hardware and the application 156 .
- Data transport communicates data between different components of the platform 154 and between different platforms when applicable.
- the component layer provides a variety of middleware, framework and other support software in form of cartridges 164 .
- the middleware/framework components can include such components as Java, Apache, MySQL, PHP, JBoss, and Tomcat.
- Application 156 includes an application package 166 containing multiple application parts 168 which may correspond to different individually deployable modules of the application.
- Application 156 may be an n-tiered web applications based on languages such as Java, Ruby, Python, PHP or the like.
- the PaaS environment 150 may also include external services 170 on which the application 156 depends.
- An application package may be provided by a user or created automatically based on information about the application that is provided by a user via a user interface or by other means.
- the platform core 160 and cartridges 164 may be provided by the PaaS provider. Cartridges 164 are not packaged with the application 156 . Instead, the application package 166 expresses a dependency on platform services provided by cartridges. The platform 154 then imports the appropriate cartridges 164 at deployment time.
- the platform 154 automates the process of installing and configuring the application 156 .
- the platform 154 provides a virtually care-free runtime environment for the application 156 and produces monitoring data describing the performance of the application 156 , operating system and support software.
- FIG. 1C illustrates provisioning of an application using an application architecture descriptor.
- An application architecture descriptor 176 expresses the logical architecture of an application and specifies how application parts are to be deployed and provisioned as well as the communication paths between application parts and services.
- FIG. 2 illustrates an exemplary user interface (UI) 200 for specifying dependencies of a web application, in accordance with some embodiments.
- the UI 200 identifies the application 201 and allows a user to select application components 202 for the application.
- the application components 202 include properties of the application (e.g., application type 224 ) and dependencies of the application on features of support software (e.g., web server 210 , application server version 230 , language version 220 , database 240 and other components 250 ).
- support software e.g., web server 210 , application server version 230 , language version 220 , database 240 and other components 250 .
- the user selects a save control in order to establish the dependency of this program on the selected components.
- the user can select the displayed features, but decline to select particular components, and the facility will automatically select components providing those features.
- FIG. 3 is a flow diagram of one embodiment of a method 300 for establishing a support environment made up of support components for a program.
- the method is performed by processing logic that may comprise hardware (circuitry, dedicated logic, etc.), software (such as is run on a general purpose computer system or a dedicated machine), or a combination of both.
- the method is performed by a host 110 , 120 of FIG. 1 (and in one embodiment, by a platform 154 running on the host on top of the hypervisor).
- the host designates the program as a component to be loaded. As part of this designation, the host adds the features required by the program to an empty list of needed features.
- the dependencies of the program on abstract features are expressly declared by the developer of the program, either within the code for the program or externally, such as by being inputted as part of the process of submitting the program.
- the facility infers the dependencies of the program on abstract features by automatically analyzing the program's code. As an example, a sample program has one feature required: php-5.2.
- Method 300 then loops through operations 302 - 305 while the list of needed features is not empty.
- the host identifies available support components each providing at least one feature on the list of needed features.
- the host uses a component catalog table as a basis for determining which support components provide and require which features.
- FIG. 4 illustrates a sample component catalog table used by the facility to store information about support components in some embodiments.
- the table 400 is made up of rows 401 - 405 , each corresponding to a different support component. Each row is divided into the following columns: a component 411 identifying a component to which the row corresponds; a version column 412 indicating the version of the components in which the row corresponds; a features provided column 413 that lists any features that are provided by the component; a features required column 414 that lists any features that are required by the component; a release date column 415 indicating the release date of the component; besides column 416 showing the amount of memory occupied by the component; a resource efficiency column 417 that contains a score indicating the relative level of resource efficiency provided by the component; the stability column 418 that contains a score indicating the relative level of stability provided by the component; efficiency column 419 containing a score indicating the relative level of efficacy of the component; and a cost column 420 indicating the cost of using the component.
- row 401 indicates that version 5.2.9 of a PHP runtime component provides the feature php-5.2, which requires the feature dynamic_server, was released on Oct. 5, 2009, has a size of 17.3 MB, has a resource efficiency score of 3, has a stability score of 10, has an efficacy score of 6, and has a cost of $50.
- FIG. 4 and each of the table diagrams discussed below show a table whose contents and organization are designed to make them more comprehensible by a human reader
- actual data structures used by the facility to store this information may differ from the table shown, in that they, for example, may be organized in a different manner; may contain more or less information than shown; may be compressed and/or encrypted; may contain a much larger number of rows than shown, etc.
- the host identifies the components of rows 401 - 403 as all providing the dynamic_server feature required by the program in the example.
- the host applies business logic to the components identified at block 303 to select one of the components.
- the host uses a business logic table as a basis for selecting one of the identified components.
- FIG. 5 is a sample business logic table that stores business logic for selecting support components in some embodiments.
- the table 500 is made up of rows 501 - 503 , each corresponding to a different business logic rule. Each row is divided into the following columns: a feature column 511 indicating a feature to which the rule to which the row corresponds applies; a precedence column 512 indicating the relative precedence of the rule to which the row corresponds; a selection attribute column 513 indicating a selection attribute used by the rule as a basis for selecting a component; and a favored direction column 514 indicating whether higher or lower values of the indicated selection attribute are favored.
- row 501 indicates that, among components providing the php-5.2 feature, higher stability scores are to be preferred, with a precedence of 2.
- a row does not identify a feature, its rule applies to components identified as providing any feature.
- row 503 does not identify a feature; as a result, its rule applies to selecting among components providing any feature.
- the host applies the rules of rows 501 - 503 in order to select one of the components identified at block 303 as providing the php-5.2 feature required by the program.
- the host permits the rule of row 501 to control, as it has the highest precedence score 2 among the precedence scores of the rules of rows 501 and 503 , 2 and 7.
- the host selects the component of row 401 , having the highest stability score 10 among stability scores 5, 7, and 10.
- the host designates the selected component as a component to be loaded. As part of this designation, the host removes features provided by the selected component from the list of needed features, and adds features required by the selected component to the list of needed features.
- the host designates the component of row 401 , and removes the feature php-5.2 from the list of needed features as it is provided by the designated component.
- the facility further adds the feature dynamic_server to the list of needed features, as it is required by the designated component.
- the method continues to block 307 , else the method returns to block 302 .
- the host loads, initializes, and executes the designated components.
- the method returns to block 302 in order to select a component providing the dynamic_server feature.
- FIG. 6 is a relationship diagram providing an overview of a cartridge system 600 in accordance with some embodiments.
- the relationship diagram of FIG. 6 shows the population of a flat container 620 with components such as “cartridges” 624 that provide features required by the application.
- application package 602 includes an application bundle 604 that may include, for example, static files, code and third party software.
- the application package includes meta information 606 that specifies characteristics of the application (e.g., the application name and the application version), dependencies of the application or optionally an application architecture descriptor, and cartridge configuration.
- Cartridge configuration includes native configuration data. E.g., configuration for an Apache cartridge may, among others, include a native httpd.conf file and configuration for a Tomcat cartridge may include a native server.xml file, among others, and so forth.
- the platform (or slab) loaded on top of the hypervisor 632 initially includes the operating system 630 , management components 622 and a placeholder for cartridges 624 .
- the operating system 630 may be updated or upgraded using OS update facility 636 .
- the management components 622 include a monitoring component intended to receive monitoring data from cartridges 624 and the operating system 630 during the execution of the application and to store the monitoring data in a data store. The monitoring data can be queried by a user via a console.
- a package manager finds corresponding cartridges 624 in a repository 634 and adds these cartridges 624 to the container 620 .
- a cartridge may include hooks 610 , a support software component 612 providing support functionality required by the application, and optionally a probe 614 .
- Hooks 610 are executables used to install, remove, start, stop, configure and deconfigure a cartridge, among others.
- Probe 614 may be a piece of code that generates monitoring data that can (1) directly describe the behavior and measure the performance of the instrumented component(s), and/or (2) indirectly describe the behavior and measure the performance of other components of the platform, elements of hardware, and ultimately the application.
- Monitoring component in management 622 receives the monitoring information from the probes in cartridges and the operating system 630 and stores this monitoring data in the data store within the container 620 . In some embodiments, as part of storing the monitoring data, this monitoring component performs one or more of analyzing the monitoring data, matching related portions of the monitoring data, compressing the monitoring data, and aggregating and/or abstracting the monitoring data.
- FIG. 7 is a relationship diagram portraying dependency relationships between components and features in some embodiments.
- the relationship diagram 700 shows a dependency table 710 tracking which components have been loaded to support which other components by providing features required by them.
- applications 714 and 716 depend on feature 712 that is provided by cartridges 704 each of which depends on cartridge 702 .
- the optimal cartridge is php-5.2.11 that is selected for the feature 712 .
- an alternative cartridge 706 may become available and the selected cartridge may be dynamically replaced in real time (during the execution of the application) by the cartridge 706 without destructing the execution of the application.
- this cartridge 708 can be loaded without interrupting the execution of the application.
- a snapshot 718 can be provided that shows current application code being executed, logs contents, application execution history, application performance history (e.g., memory or CPU usage, timing information, etc.), and data manipulated by the application.
- FIG. 8 is a relationship diagram depicting interfaces between cartridges and the platform in accordance with some embodiments.
- Cartridge 802 functionality can be called through executable hooks 804 that can, for example, provide a list of hooks present in the cartridge 802 , install the cartridge 802 , configure or deconfigure the cartridge 802 , start or stop the software 806 in the cartridge 802 , remove the cartridge, etc.
- Monitoring API 810 is provided to collect monitoring data generated by probe 808 .
- the cartridge 802 can issue commands to request system information such as information about the architecture and packages installed, and can further communicate with the platform via communication channels such as the file system, interprocess communication (IPC), and a network.
- the cartridge 802 can trigger events such as threshold violations, scaling events, notification triggers, etc.
- FIG. 9 is relationship diagram depicting a cartridge extension technique used by the facility in some embodiments.
- the relationship diagram shows an application and package manager (“VPM”) 908 that includes a dependency table 916 identifying a dependant entity, features required by the dependent entities and providers of these features. The connection between the dependant and the provider is determined by the platform based on business rules as discussed above.
- a dependant entity 902 can be an application or a cartridge.
- a provider 906 is a cartridge providing a desired feature to the dependant 902 .
- Dependant 902 includes a software component 910 , configuration 912 and log files 914 .
- Provider 906 includes a software component 922 , hooks 920 and an optional cartridge support component 926 .
- a cartridge support module 926 which includes an options database and a parser, is provided to assist cartridge authors to validate and sanitize dependant's cartridge configuration data.
- the setup directory 912 may include any configuration data that the target cartridge is supposed to be configured with.
- a package manager fetches settings from the setup directory 912 , performs runtime interpolation such as pathname or network port number interpolation, and creates a shadow directory 918 in the VPM 908 .
- the package manager then passes the configuration information to a configure hook of the cartridge 906 , which invokes the parser of the cartridge support 926 to parse and validate it and write it to the options database.
- the cartridge information is saved in a configuration file 924 of the cartridge 906 .
- the software component 922 When the software component 922 is invoked (via a start hook) to run during the execution of the application, the software component 922 uses the configuration file 924 and writes log data to log file 914 on behalf of the application 902 .
- extensions to the provider cartridge's software component 922 that are contributed by dependant 902 are made available to the software component via symbolic links.
- FIG. 10 is the state diagram showing states of the application that are based upon current states of the support environment, in accordance with some embodiments.
- the state diagram 1000 show states that spring from starting application, and from changing it.
- an application package can be created 1004 based on user input (such as input provided via the UI of FIG. 2 ), or uploaded 1006 if it already exists.
- the application package is uploaded 1006 , it is verified 1008 . If it fails verification, it is rejected 1014 . Alternatively, it is verified 1008 , unpacked 101 , imported 1012 and committed 1020 to version control.
- a new application package created at 1004 or an existing application package can be edited 1016 and committed 1020 to version control.
- the application package can be versioned 1026 and subsequently removed 1032 if needed. If there is a conflict during the commit 1020 , the application goes through the broken state 1018 and becomes editable 1016 . If there is no conflict, the application package moves to the partly resolved state 1022 and partly setup state 1024 to begin identifying dependencies of the application and configuring the application. Once all dependencies are identified, the application package moves to the resolved state 1028 and the setup state 1030 . The resolved state 1028 can bring the application into the stopped state 1034 which can follow by the running state 1036 when the application is started. Subsequently, if the application is stopped, it moves back to the stopped state 1034 .
- FIG. 11 is a data and control flow diagram 1100 depicting the installation and removal of settings, in the context of starting and stopping the application, in accordance with some embodiments.
- the data and control flow diagram 1100 shows a start sequence (white numbers) that can be initiated by a user via a console 1104 or automatically by a package manager 1102 .
- the start sequence is initiated by fetching application settings from the application package 1106 .
- the application settings may include cartridge configuration, vhost files, certificates, etc.).
- the cartridge configuration is then applied to cartridges.
- cartridges include a static web server 1112 , a dynamic web server 1110 and a language runtime 1108 .
- the application's start hook is invoked, which results in starting the dynamic web server cartridge 1110 (since neither the application nor its host cartridge 1108 are executable processes in the illustrated example).
- the cartridge 1110 calls the start hook of the cartridge 1112 , which initiates the configuration process and then reloads itself when the configuration is completed.
- the stop sequence (black numbers) is performed when the application's stop hook is initiated by the package manager 1102 as part of application removal or in response to a user request via the console 1104 .
- the application 1106 delegates running of its stop hook to the application's host cartridge 1108 , which depends on the cartridge 1110 , and therefore delegates it to the cartridge 1110 .
- the cartridge 1110 calls the stop hook of the cartridge 1112 using the application name.
- the cartridge 1112 deactivates the configuration of the cartridge 1112 for the application and reloads itself, thus ceasing to serve requests on behalf of the application.
- the cartridge 1110 then stops itself, which in turn shuts down the cartridge 1108 and the application 1106 . If stop was called due to application removal, the package manager 1102 removes any settings pertaining to the application 1106 from the cartridges 1108 , 1110 and 1112 , and then removes the application package.
- FIG. 12-16 are flow diagrams of various embodiments of package management methods.
- the methods are performed by processing logic that may comprise hardware (circuitry, dedicated logic, etc.), software (such as is run on a general purpose computer system or a dedicated machine), or a combination of both.
- the methods are performed by the platform 154 running on the host 110 , 120 , and in particular by a package manager within the platform 154 .
- FIG. 12 is a flow diagram of one embodiment of a method 1200 for injecting an empty cartridge package to allow users who have a license to inject binary data.
- a package inject process starts.
- a cartridge package is extracted to a temporary location.
- a hook script is called.
- hook script “inject” is run, causing binary data to be injected to a temporary location (block 1208 ).
- the packages files are removed from the temporary location ( 1212 ) and the package inject process ends.
- FIG. 13 is a flow diagram of one embodiment of a method 1300 for installing a cartridge.
- a cartridge install process starts.
- the signature of the cartridge is verified to prevent tampering.
- the required packages e.g., the cartridge package and other packages on which this cartridge depends
- the package manager verifies that all required packages are installed.
- the files are extracted and saved to disk.
- the package manager submits a request to run a package install hook, which causes the hook script to be called (block 1312 ) and an install subprocess to start (block 1314 ).
- the install subprocess performs installation (block 1316 ), adds required modules to the platform (block 1318 ) and configures the cartridge (block 1320 ) as discussed above.
- the hook script is finished (block 1322 )
- the hook script is copied to a registry store (block 1324 ), and the package is registered in the registry (block 1325 ), completing the installation of the cartridge (block 1328 ).
- FIG. 14 is a flow diagram of one embodiment of a method 1400 for reconfiguring a cartridge.
- a cartridge reconfigure process starts.
- the cartridge is reconfigured based on configuration information specified in the application.
- the reconfiguration of the cartridge is completed.
- FIG. 15 is a flow diagram of one embodiment of a method 1500 for removing a cartridge.
- a cartridge uninstall process starts.
- the package manager checks whether any other packages require this cartridge.
- a request to remove the cartridge is issued (block 1504 ), starting a subprocess that runs a remove hook script ( 1506 ).
- the subprocess performs removal operations 1508 and 1510 , finishing the execution of the hook script (block 1512 ).
- the package manager deletes hook scripts from the registry store (block 1514 ), removes the cartridge from the registry (block 1516 ) and deletes cartridge files from the registry (block 1518 ), completing the removal of the cartridge (block 1520 ).
- FIG. 16 is a flow diagram of one embodiment of a method 1600 for upgrading a cartridge.
- a cartridge upgrade process starts.
- the package manager verifies the signature of the new package.
- the package manager verifies that all required packages are installed.
- the package manager verifies that the upgrade package is already installed.
- the package manager verifies that the lower version of the cartridge is installed.
- the package manager issues a request to upgrade the cartridge (block 1610 ), causing the removal of the old version to start (block 1612 ). Once the old version is removed (block 1614 ), the install process for the new version is performed (block 1616 ), and the cartridge upgrade completes (block 1618 ).
- Hooks may include standard hooks and custom hooks.
- Standard hooks are hooks that are called by the package management system if they exist. Not all hooks may have the same parameter list.
- the info hook may be used to obtain usage information. Table 2 below lists exemplary standard hooks.
- pre-install This hook is called immediately before the package files are in- stalled in their final location.
- the hook takes no arguments. How- ever, as with all hooks VS_HOME is set in the environment and will hold the final destination path. This hook is currently reserved for internal purposes.
- post-install This hook is called immediately after the package files, have been installed in their final location. The hook takes no arguments. configure package directory This hook is called with a package name and a directory. The car- tridge will then recurse into that directory and pick and choose whatever file it needs to configure itself for the package.
- deconfigure package Deconfigures the cartridge for the named package. start Start the software contained in the package. When called by the package management system, this hook takes no arguments. stop Stop the software contained in the package.
- This hook is called immediately before the package files are re- moved from their install location. The hook takes no arguments.
- post-remove This hook is called immediately after the package files are re- moved from their install location. The hook takes no arguments.
- VS_HOME is set in the environment and will hold the final destination path. This hook is currently reserved for internal purposes.
- FIG. 17 is a diagram of one embodiment of a computer system for facilitating the execution of a web application in a cloud.
- the machine may be connected (e.g., networked) to other machines in a LAN, an intranet, an extranet, or the Internet.
- the machine can be a host 110 , 120 in a cloud 130 , a cloud provider system 104 , a cloud controller 108 or any other machine.
- the machine can operate in the capacity of a server or a client machine in a client-server network environment, or as a peer machine in a peer-to-peer (or distributed) network environment.
- the machine may be a personal computer (PC), a tablet PC, a console device or set-top box (STB), a Personal Digital Assistant (PDA), a cellular telephone, a web appliance, a server, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine.
- PC personal computer
- PDA Personal Digital Assistant
- STB console device or set-top box
- a cellular telephone a web appliance
- server e.g., a server
- network router e.g., switch or bridge
- the exemplary computer system 1700 includes a processing device 1702 , a main memory 1704 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or DRAM (RDRAM), etc.), a static memory 1706 (e.g., flash memory, static random access memory (SRAM), etc.), and a secondary memory 1716 (e.g., a data storage device in the form of a drive unit, which may include fixed or removable computer-readable storage medium), which communicate with each other via a bus 1708 .
- main memory 1704 e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or DRAM (RDRAM), etc.
- DRAM dynamic random access memory
- SDRAM synchronous DRAM
- RDRAM DRAM
- static memory 1706 e.g., flash memory, static random access memory (SRAM), etc.
- secondary memory 1716 e.g.,
- Processing device 1702 represents one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like. More particularly, the processing device 1702 may be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, processor implementing other instruction sets, or processors implementing a combination of instruction sets. Processing device 1702 may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. Processing device 1702 is configured to execute the instructions 1726 for performing the operations and steps discussed herein.
- CISC complex instruction set computing
- RISC reduced instruction set computing
- VLIW very long instruction word
- Processing device 1702 may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the
- the computer system 1700 may further include a network interface device 1722 .
- the computer system 1700 also may include a video display unit 1710 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)) connected to the computer system through a graphics port and graphics chipset, an alphanumeric input device 1712 (e.g., a keyboard), a cursor control device 1714 (e.g., a mouse), and a signal generation device 1720 (e.g., a speaker).
- a video display unit 1710 e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)
- an alphanumeric input device 1712 e.g., a keyboard
- a cursor control device 1714 e.g., a mouse
- a signal generation device 1720 e.g., a speaker
- the secondary memory 1716 may include a machine-readable storage medium (or more specifically a computer-readable storage medium) 1724 on which is stored one or more sets of instructions 1726 embodying any one or more of the methodologies or functions described herein.
- the instructions 1726 may also reside, completely or at least partially, within the main memory 1704 and/or within the processing device 1702 during execution thereof by the computer system 1700 , the main memory 1704 and the processing device 1702 also constituting machine-readable storage media.
- the instructions 1726 may further be transmitted or received over a network 1718 via the network interface device 1722 .
- the computer-readable storage medium 1724 may also be used to store the instructions 1726 persistently. While the computer-readable storage medium 1724 is shown in an exemplary embodiment to be a single medium, the term “computer-readable storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The terms “computer-readable storage medium” shall also be taken to include any medium that is capable of storing or encoding a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present invention. The term “computer-readable storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media.
- the instructions 1726 , components and other features described herein can be implemented as discrete hardware components or integrated in the functionality of hardware components such as ASICS, FPGAs, DSPs or similar devices.
- the instructions 1726 can be implemented as firmware or functional circuitry within hardware devices.
- the instructions 1726 can be implemented in any combination hardware devices and software components.
- Embodiments of the invention also relate to an apparatus for performing the operations herein.
- This apparatus can be specially constructed for the required purposes, or it can comprise a general purpose computer system specifically programmed by a computer program stored in the computer system.
- a computer program can be stored in a computer-readable storage medium, such as, but not limited to, any type of disk including optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions.
- a computer-readable storage medium can include any mechanism for storing information in a form readable by a machine (e.g., a computer), but is not limited to, optical disks, Compact Disc, Read-Only Memory (CD-ROMs), and magneto-optical disks, Read-Only Memory (ROMs), Random Access Memory (RAM), Erasable Programmable Read-Only memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), magnetic or optical cards, flash memory, or the like.
- a machine e.g., a computer
- CD-ROMs Compact Disc
- CD-ROMs Compact Disc
- CD-ROMs Compact Disc
- magneto-optical disks Read-Only Memory
- ROMs Read-Only Memory
- RAM Random Access Memory
- EPROM Erasable Programmable Read-Only memory
- EEPROM Electrically Erasable Programmable Read-Only Memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
Description
- This application is related to and claims the benefit of U.S. Provisional Patent application Ser. No. 61/350,442 filed Jun. 1, 2010 and U.S. Provisional Patent application Ser. No. 61/350,444 filed Jun. 1, 2010, which are hereby incorporated by reference.
- Embodiments of the present invention relate to the application deployment, and more specifically to automatically loading software components associated with an application.
- It is common for computer programs to need to be loaded simultaneously with one or more support components in order to function properly. For example, a program in the PHP scripting language may need to be loaded simultaneously with a language runtime for the PHP scripting language, and possibly other support components. Where such a program makes use of a feature of the PHP scripting language that first appeared in a particular version of the PHP scripting language, the loaded language runtime for the PHP scripting language must be recent enough to support this feature.
- Embodiments of the present invention are illustrated by way of example, and not by way of limitation, and can be more fully understood with reference to the following detailed description when considered in connection with the figures in which:
-
FIG. 1A is a block diagram of a network architecture in which embodiments of the invention may operate. -
FIG. 1B is a block diagram of one embodiment of a Platform-as-a-Service approach for facilitating the execution of a web application in a cloud. -
FIG. 1C illustrates provisioning of an application using an application architecture descriptor. -
FIG. 2 illustrates an exemplary user interface for specifying dependencies of a web application, in accordance with some embodiments. -
FIG. 3 is a flow diagram of one embodiment of a method for establishing a support environment for a program. -
FIG. 4 illustrates a sample component catalog table used by the facility to store information about support components in some embodiments. -
FIG. 5 illustrates a sample business logic table used by the facility to store business logic for selecting support components in some embodiments. -
FIG. 6 is a relationship diagram providing an overview of the cartridge system implemented by the facility in some embodiments. -
FIG. 7 is a relationship diagram portraying dependency relationships between components and features in some embodiments. -
FIG. 8 is a relationship diagram depicting interfaces between cartridges and the platform in accordance with some embodiments. -
FIG. 9 is a relationship diagram depicting a cartridge extension technique in accordance with some embodiments. -
FIG. 10 is the state diagram showing states of the application that are based upon current states of the support environment in accordance with some embodiments. -
FIG. 11 is a data and control flow diagram depicting the installation and removal of settings, in the context of starting and stopping the application, performed by the facility in some embodiments. -
FIG. 12 is a flow diagram of one embodiment of a method for injecting an empty cartridge package. -
FIG. 13 is a flow diagram of one embodiment of a method for installing a cartridge. -
FIG. 14 is a flow diagram of one embodiment of a method for reconfiguring a cartridge. -
FIG. 15 is a flow diagram of one embodiment of a method for removing a cartridge. -
FIG. 16 is a flow diagram of one embodiment of a method for upgrading a cartridge. -
FIG. 17 illustrates a diagrammatic representation of a machine in the exemplary form of a computer system. - Described herein are methods and systems for automatically establishing a support environment for a program. A program may depend on several support components. Manually determining an optimized set of support software components to load with a program can be difficult, especially where the exact nature of the program's dependencies on support components is unclear; where support components have cascading dependencies on downstream support components; where such decisions must be made in a dynamic environment in which certain support components can become available or unavailable; and where there are multiple support components that can satisfy a dependency. It can also be difficult to cause manually selected support components to be loaded and initialized in an optimal order.
- Embodiments of the present invention provide a software and/or hardware cartridge and package management facility (“the facility”) that tracks dependencies of the program on abstract features. In various embodiments, the dependencies of the program on abstract features are expressly declared by the developer of the program, either within the code for the program or externally, such as by being inputted as part of the process of submitting the program. In some embodiments, the facility infers the dependencies of the program on abstract features by automatically analyzing the program's code. The facility may operate as part of a virtual machine running on top of a hypervisor in a host. The virtual machine may be delivered when a single package (“the slab”) is installed on the host to run on top of the hypervisor. An application runs on top of this slab.
- The facility maps abstract features depended upon by the program to support components that provide these abstract features. A support component together with information identifying the abstract features provided by the support component are sometimes referred to collectively herein as a “cartridge” that the facility can load into and unload from a current configuration that includes the program. In some embodiments, where multiple support components provide abstract features depended upon by the program, the facility uses business logic in order to select an optimal one of these support components. The facility may also automatically manage the loading and initialization of a program together with the selected support components.
- In some embodiments, the facility manages cascading dependencies; that is, a support component can itself depend upon abstract features provided by other support components (“downstream support components”). The facility similarly manages the selection, loading, and initialization of these downstream support components, to an arbitrary level of depth.
- In some embodiments, the facility responds dynamically to changes in the availability of particular support components. For example, where a support component that is already loaded becomes unavailable, the facility can automatically pause any other components that have dependencies on the unavailable component, including the program, and unload the unavailable component. If an alternative to the unavailable component is available—that is, another support component that also provides the abstract features that were the basis for the original loading of the unavailable support component—the facility can automatically load the alternative support component and other components on which the alternative support component depend. Where a new support component becomes available that the facility's business rules regard more highly than a currently-loaded support component that provides the same features, the facility pauses the components that rely on these features, unloads the currently-loaded support component that provides these features, loads the newly-available support component, and unpauses the paused components.
- By behaving in some or all of the ways described above, the facility is able to automatically maintain a set of appropriate, and in many cases optimal, components to support the execution of a program.
- While various embodiments are described in terms of the environment described above, those skilled in the art will appreciate that the facility may be implemented in a variety of other environments including a single, monolithic computer system, as well as various other combinations of computer systems or similar devices connected in various ways. In various embodiments, a variety of computing systems or other different client devices may be used in place of the web client computer systems, such as mobile phones, personal digital assistants, televisions, cameras, etc.
-
FIG. 1A is a block diagram of anetwork architecture 100 in which embodiments of the invention may operate. Thenetwork architecture 100 includes acloud 130 managed by acloud provider system 104. Thecloud 130 provides virtual machines, such asvirtual machines cloud 130. Such physical machines are often located in a data center. For example,virtual machines physical machine 110 incloud 130 provided bycloud provider 104. Users can interact with applications executing on cloud-based virtual machines using client computer systems, such asclients web browser programs -
Clients hosts cloud provider system 104 via anetwork 102, which may be may be a private network (e.g., a local area network (LAN), a wide area network (WAN), intranet, or other similar private networks) or a public network (e.g., the Internet). Eachclient host cloud provider system 104 may include one or more machines such as server computers, desktop computers, etc. - In one embodiment, the
cloud provider system 104 is coupled to acloud controller 108 via thenetwork 102. Thecloud controller 108 may reside on one or more machines (e.g., server computers, desktop computers, etc.) and may manage the execution of applications in thecloud 130. In one embodiment, thecloud controller 108 provides slabs associated with different applications to thecloud provider 104. As will be discussed in more detail below, a slab is a pre-generated image that can be provided to thecloud provider 104 and stored in animage repository 106. This image may be a virtual machine image or an image of a physical system. Upon receiving a command identifying a specific slab, thecloud provider 104 retrieves the corresponding image from theimage repository 106, creates an instance of it and loads it on thehost cloud controller 108 or a user (e.g., a system administrator) via a console computer or a client machine. Theimage repository 106 may reside locally or remotely and may represent a single data structure or multiple data structures (databases, repositories, files, etc.) residing on one or more mass storage devices, such as magnetic or optical storage based disks, solid-state drives (SSDs) or hard drives. - The
image repository 106 may also store application packages and cartridges (packages of applications' support components). Alternatively, application packages and/or cartridges may be stored in one or more other repositories (not shown) residing locally or remotely. Thecloud provider 104 or thecloud controller 108 may load an application package on thehost - While various embodiments are described in terms of the environment described above, those skilled in the art will appreciate that the slab may be implemented in a variety of other environments including a single, monolithic computer system, as well as various other combinations of computer systems or similar devices connected in various ways.
-
FIG. 1B is a block diagram of one embodiment of a Platform-as-a-Service (PaaS)environment 150 for facilitating the execution of a web application in a cloud. ThePaaS environment 150 includes an Infrastructure-as-a-Service (IaaS) 152, which consists of hardware (e.g., one or more processors, memory, IO devices, etc.) and a hypervisor, and aplatform 154 running on theIaaS 152. Theplatform 154 is delivered as an auto-clustering virtual machine image, resulting in one or morevirtual machines 158, each containing aplatform core 160 and a component layer in form of cartridges. Theplatform core 160 may include the guest OS with the kernel, distributed services, a data transport, data services and a monitoring component. Distributed services allow communication between platforms when the application runs on multiple platforms (a cluster) executing on one or more hypervisors in one or more hosts. The monitoring component receives monitoring data fromcartridges 164, the guest OS and kernel and passes it to the data services that store this data in a data store inside theplatform 154 and allows querying of this data by the user(s) and/or client(s). The monitoring data may describe the behavior and measure the performance ofcartridges 164, other components of theplatform 154, elements of hardware and theapplication 156. Data transport communicates data between different components of theplatform 154 and between different platforms when applicable. - The component layer provides a variety of middleware, framework and other support software in form of
cartridges 164. In various embodiments, the middleware/framework components can include such components as Java, Apache, MySQL, PHP, JBoss, and Tomcat.Application 156 includes anapplication package 166 containingmultiple application parts 168 which may correspond to different individually deployable modules of the application.Application 156 may be an n-tiered web applications based on languages such as Java, Ruby, Python, PHP or the like. ThePaaS environment 150 may also includeexternal services 170 on which theapplication 156 depends. - An application package may be provided by a user or created automatically based on information about the application that is provided by a user via a user interface or by other means. The
platform core 160 andcartridges 164 may be provided by the PaaS provider.Cartridges 164 are not packaged with theapplication 156. Instead, theapplication package 166 expresses a dependency on platform services provided by cartridges. Theplatform 154 then imports theappropriate cartridges 164 at deployment time. - The
platform 154 automates the process of installing and configuring theapplication 156. In addition, theplatform 154 provides a virtually care-free runtime environment for theapplication 156 and produces monitoring data describing the performance of theapplication 156, operating system and support software. -
FIG. 1C illustrates provisioning of an application using an application architecture descriptor. Anapplication architecture descriptor 176 expresses the logical architecture of an application and specifies how application parts are to be deployed and provisioned as well as the communication paths between application parts and services. - At deployment of the application, a package manager examines the
application architecture descriptor 176 to determine the application's dependencies. Based on the dependencies, the package manager selects appropriate cartridges. Eachcartridge 180 has acartridge descriptor 182 defining characteristics of the cartridge, which are used to select an appropriate cartridge for the application. - An
application manager 188 interprets theapplication architecture descriptor 176 to determine how acartridge 180 should be configured and—once the application has been provisioned—configures thecartridge 180 accordingly. E.g., it may configure a PHP cartridge to load a number of PHP extensions on behalf of the application or it may configure a Tomcat cartridge to listen on a given port and address the application under a given context root or it may configure an Apache cartridge to rewrite certain requests or allow access to the application only for a given subset of clients, etc. Theapplication manager 188 also communicates with a cloud controller 190 (e.g., via a network) to provision the application with appropriate infrastructure (a set of nodes), in accordance to the application architecture descriptor. The set of compute nodes that are part of this provisioning scheme is known as a cluster. From an application perspective, the platform may extend only as far as the cluster reaches. In another embodiment, the platform supports and/or manages cross-cluster communication. -
FIG. 2 illustrates an exemplary user interface (UI) 200 for specifying dependencies of a web application, in accordance with some embodiments. TheUI 200 identifies the application 201 and allows a user to selectapplication components 202 for the application. Theapplication components 202 include properties of the application (e.g., application type 224) and dependencies of the application on features of support software (e.g.,web server 210,application server version 230,language version 220,database 240 and other components 250). - After performing the selections, the user selects a save control in order to establish the dependency of this program on the selected components. In some embodiments, the user can select the displayed features, but decline to select particular components, and the facility will automatically select components providing those features.
-
FIG. 3 is a flow diagram of one embodiment of amethod 300 for establishing a support environment made up of support components for a program. The method is performed by processing logic that may comprise hardware (circuitry, dedicated logic, etc.), software (such as is run on a general purpose computer system or a dedicated machine), or a combination of both. In one embodiment, the method is performed by ahost FIG. 1 (and in one embodiment, by aplatform 154 running on the host on top of the hypervisor). - At
block 301, the host designates the program as a component to be loaded. As part of this designation, the host adds the features required by the program to an empty list of needed features. In various embodiments, the dependencies of the program on abstract features are expressly declared by the developer of the program, either within the code for the program or externally, such as by being inputted as part of the process of submitting the program. In some embodiments, the facility infers the dependencies of the program on abstract features by automatically analyzing the program's code. As an example, a sample program has one feature required: php-5.2. -
Method 300 then loops through operations 302-305 while the list of needed features is not empty. Atblock 303, the host identifies available support components each providing at least one feature on the list of needed features. In some embodiments, atblock 303, the host uses a component catalog table as a basis for determining which support components provide and require which features. -
FIG. 4 illustrates a sample component catalog table used by the facility to store information about support components in some embodiments. The table 400 is made up of rows 401-405, each corresponding to a different support component. Each row is divided into the following columns: acomponent 411 identifying a component to which the row corresponds; aversion column 412 indicating the version of the components in which the row corresponds; a features providedcolumn 413 that lists any features that are provided by the component; a features requiredcolumn 414 that lists any features that are required by the component; arelease date column 415 indicating the release date of the component; besidescolumn 416 showing the amount of memory occupied by the component; aresource efficiency column 417 that contains a score indicating the relative level of resource efficiency provided by the component; thestability column 418 that contains a score indicating the relative level of stability provided by the component;efficiency column 419 containing a score indicating the relative level of efficacy of the component; and acost column 420 indicating the cost of using the component. For example,row 401 indicates that version 5.2.9 of a PHP runtime component provides the feature php-5.2, which requires the feature dynamic_server, was released on Oct. 5, 2009, has a size of 17.3 MB, has a resource efficiency score of 3, has a stability score of 10, has an efficacy score of 6, and has a cost of $50. - While
FIG. 4 and each of the table diagrams discussed below show a table whose contents and organization are designed to make them more comprehensible by a human reader, those skilled in the art will appreciate that actual data structures used by the facility to store this information may differ from the table shown, in that they, for example, may be organized in a different manner; may contain more or less information than shown; may be compressed and/or encrypted; may contain a much larger number of rows than shown, etc. - Referring again to
FIG. 3 , atblock 303 the host identifies the components of rows 401-403 as all providing the dynamic_server feature required by the program in the example. Atblock 304, the host applies business logic to the components identified atblock 303 to select one of the components. In some embodiments, atblock 304, the host uses a business logic table as a basis for selecting one of the identified components. -
FIG. 5 is a sample business logic table that stores business logic for selecting support components in some embodiments. The table 500 is made up of rows 501-503, each corresponding to a different business logic rule. Each row is divided into the following columns: afeature column 511 indicating a feature to which the rule to which the row corresponds applies; aprecedence column 512 indicating the relative precedence of the rule to which the row corresponds; aselection attribute column 513 indicating a selection attribute used by the rule as a basis for selecting a component; and afavored direction column 514 indicating whether higher or lower values of the indicated selection attribute are favored. For example,row 501 indicates that, among components providing the php-5.2 feature, higher stability scores are to be preferred, with a precedence of 2. Where a row does not identify a feature, its rule applies to components identified as providing any feature. For example,row 503 does not identify a feature; as a result, its rule applies to selecting among components providing any feature. - Returning to
FIG. 3 , atblock 304, the host applies the rules of rows 501-503 in order to select one of the components identified atblock 303 as providing the php-5.2 feature required by the program. In applying these two rules, the host permits the rule ofrow 501 to control, as it has thehighest precedence score 2 among the precedence scores of the rules ofrows row 401, having thehighest stability score 10 amongstability scores - At
block 305, the host designates the selected component as a component to be loaded. As part of this designation, the host removes features provided by the selected component from the list of needed features, and adds features required by the selected component to the list of needed features. - In accordance with the example, at
block 305, the host designates the component ofrow 401, and removes the feature php-5.2 from the list of needed features as it is provided by the designated component. The facility further adds the feature dynamic_server to the list of needed features, as it is required by the designated component. - At
block 306, if the list of new features is empty, then the method continues to block 307, else the method returns to block 302. Atblock 307, the host loads, initializes, and executes the designated components. In accordance with the example, atblock 306, because the list of new features contains the dynamic_server feature and is therefore not empty, the method returns to block 302 in order to select a component providing the dynamic_server feature. -
FIG. 6 is a relationship diagram providing an overview of acartridge system 600 in accordance with some embodiments. The relationship diagram ofFIG. 6 shows the population of aflat container 620 with components such as “cartridges” 624 that provide features required by the application. In particular,application package 602 includes anapplication bundle 604 that may include, for example, static files, code and third party software. In addition, the application package includesmeta information 606 that specifies characteristics of the application (e.g., the application name and the application version), dependencies of the application or optionally an application architecture descriptor, and cartridge configuration. Cartridge configuration includes native configuration data. E.g., configuration for an Apache cartridge may, among others, include a native httpd.conf file and configuration for a Tomcat cartridge may include a native server.xml file, among others, and so forth. - The platform (or slab) loaded on top of the
hypervisor 632 initially includes theoperating system 630,management components 622 and a placeholder forcartridges 624. Theoperating system 630 may be updated or upgraded usingOS update facility 636. Themanagement components 622 include a monitoring component intended to receive monitoring data fromcartridges 624 and theoperating system 630 during the execution of the application and to store the monitoring data in a data store. The monitoring data can be queried by a user via a console. - Based on dependencies specified in the
meta information 606, a package manager finds correspondingcartridges 624 in arepository 634 and adds thesecartridges 624 to thecontainer 620. As shown in acartridge view 608, a cartridge may includehooks 610, asupport software component 612 providing support functionality required by the application, and optionally aprobe 614.Hooks 610 are executables used to install, remove, start, stop, configure and deconfigure a cartridge, among others.Probe 614 may be a piece of code that generates monitoring data that can (1) directly describe the behavior and measure the performance of the instrumented component(s), and/or (2) indirectly describe the behavior and measure the performance of other components of the platform, elements of hardware, and ultimately the application. Monitoring component inmanagement 622 receives the monitoring information from the probes in cartridges and theoperating system 630 and stores this monitoring data in the data store within thecontainer 620. In some embodiments, as part of storing the monitoring data, this monitoring component performs one or more of analyzing the monitoring data, matching related portions of the monitoring data, compressing the monitoring data, and aggregating and/or abstracting the monitoring data. -
FIG. 7 is a relationship diagram portraying dependency relationships between components and features in some embodiments. The relationship diagram 700 shows a dependency table 710 tracking which components have been loaded to support which other components by providing features required by them. In particular,applications feature 712 that is provided bycartridges 704 each of which depends oncartridge 702. As shown, the optimal cartridge is php-5.2.11 that is selected for thefeature 712. - Subsequently, an
alternative cartridge 706 may become available and the selected cartridge may be dynamically replaced in real time (during the execution of the application) by thecartridge 706 without destructing the execution of the application. In addition, if anew cartridge 708 providing additional functionality desired by the application becomes available, thiscartridge 708 can be loaded without interrupting the execution of the application. - During the execution of the application, a
snapshot 718 can be provided that shows current application code being executed, logs contents, application execution history, application performance history (e.g., memory or CPU usage, timing information, etc.), and data manipulated by the application. -
FIG. 8 is a relationship diagram depicting interfaces between cartridges and the platform in accordance with some embodiments.Cartridge 802 functionality can be called throughexecutable hooks 804 that can, for example, provide a list of hooks present in thecartridge 802, install thecartridge 802, configure or deconfigure thecartridge 802, start or stop thesoftware 806 in thecartridge 802, remove the cartridge, etc.Monitoring API 810 is provided to collect monitoring data generated byprobe 808. Thecartridge 802 can issue commands to request system information such as information about the architecture and packages installed, and can further communicate with the platform via communication channels such as the file system, interprocess communication (IPC), and a network. In addition, thecartridge 802 can trigger events such as threshold violations, scaling events, notification triggers, etc. -
FIG. 9 is relationship diagram depicting a cartridge extension technique used by the facility in some embodiments. The relationship diagram shows an application and package manager (“VPM”) 908 that includes a dependency table 916 identifying a dependant entity, features required by the dependent entities and providers of these features. The connection between the dependant and the provider is determined by the platform based on business rules as discussed above. Adependant entity 902 can be an application or a cartridge. Aprovider 906 is a cartridge providing a desired feature to thedependant 902.Dependant 902 includes asoftware component 910,configuration 912 and log files 914.Provider 906 includes asoftware component 922, hooks 920 and an optionalcartridge support component 926. Acartridge support module 926, which includes an options database and a parser, is provided to assist cartridge authors to validate and sanitize dependant's cartridge configuration data. - When the
provider 906 is selected, it is configured according to configuration specified in the dependant'ssetup directory 912. Thesetup directory 912 may include any configuration data that the target cartridge is supposed to be configured with. During configuration, a package manager fetches settings from thesetup directory 912, performs runtime interpolation such as pathname or network port number interpolation, and creates ashadow directory 918 in theVPM 908. The package manager then passes the configuration information to a configure hook of thecartridge 906, which invokes the parser of thecartridge support 926 to parse and validate it and write it to the options database. In addition, the cartridge information is saved in aconfiguration file 924 of thecartridge 906. When thesoftware component 922 is invoked (via a start hook) to run during the execution of the application, thesoftware component 922 uses theconfiguration file 924 and writes log data to log file 914 on behalf of theapplication 902. In some embodiments, extensions to the provider cartridge'ssoftware component 922 that are contributed bydependant 902 are made available to the software component via symbolic links. -
FIG. 10 is the state diagram showing states of the application that are based upon current states of the support environment, in accordance with some embodiments. The state diagram 1000 show states that spring from starting application, and from changing it. In particular, uponstart 1002, an application package can be created 1004 based on user input (such as input provided via the UI ofFIG. 2 ), or uploaded 1006 if it already exists. When the application package is uploaded 1006, it is verified 1008. If it fails verification, it is rejected 1014. Alternatively, it is verified 1008, unpacked 101, imported 1012 and committed 1020 to version control. A new application package created at 1004 or an existing application package can be edited 1016 and committed 1020 to version control. - Once the application package is committed 1020 to version control, it can be versioned 1026 and subsequently removed 1032 if needed. If there is a conflict during the commit 1020, the application goes through the
broken state 1018 and becomes editable 1016. If there is no conflict, the application package moves to the partly resolvedstate 1022 and partlysetup state 1024 to begin identifying dependencies of the application and configuring the application. Once all dependencies are identified, the application package moves to the resolvedstate 1028 and thesetup state 1030. The resolvedstate 1028 can bring the application into the stoppedstate 1034 which can follow by the runningstate 1036 when the application is started. Subsequently, if the application is stopped, it moves back to the stoppedstate 1034. -
FIG. 11 is a data and control flow diagram 1100 depicting the installation and removal of settings, in the context of starting and stopping the application, in accordance with some embodiments. The data and control flow diagram 1100 shows a start sequence (white numbers) that can be initiated by a user via aconsole 1104 or automatically by apackage manager 1102. The start sequence is initiated by fetching application settings from theapplication package 1106. The application settings may include cartridge configuration, vhost files, certificates, etc.). The cartridge configuration is then applied to cartridges. In the illustrated example, cartridges include astatic web server 1112, adynamic web server 1110 and alanguage runtime 1108. - Further, the application's start hook is invoked, which results in starting the dynamic web server cartridge 1110 (since neither the application nor its
host cartridge 1108 are executable processes in the illustrated example). Once started, thecartridge 1110 calls the start hook of thecartridge 1112, which initiates the configuration process and then reloads itself when the configuration is completed. - The stop sequence (black numbers) is performed when the application's stop hook is initiated by the
package manager 1102 as part of application removal or in response to a user request via theconsole 1104. Theapplication 1106 delegates running of its stop hook to the application'shost cartridge 1108, which depends on thecartridge 1110, and therefore delegates it to thecartridge 1110. Thecartridge 1110 calls the stop hook of thecartridge 1112 using the application name. Thecartridge 1112 deactivates the configuration of thecartridge 1112 for the application and reloads itself, thus ceasing to serve requests on behalf of the application. Thecartridge 1110 then stops itself, which in turn shuts down thecartridge 1108 and theapplication 1106. If stop was called due to application removal, thepackage manager 1102 removes any settings pertaining to theapplication 1106 from thecartridges -
FIG. 12-16 are flow diagrams of various embodiments of package management methods. The methods are performed by processing logic that may comprise hardware (circuitry, dedicated logic, etc.), software (such as is run on a general purpose computer system or a dedicated machine), or a combination of both. In one embodiment, the methods are performed by theplatform 154 running on thehost platform 154. -
FIG. 12 is a flow diagram of one embodiment of amethod 1200 for injecting an empty cartridge package to allow users who have a license to inject binary data. Atblock 1201, a package inject process starts. Atblock 1202, a cartridge package is extracted to a temporary location. Atblock 1204, a hook script is called. Atblock 1206, hook script “inject” is run, causing binary data to be injected to a temporary location (block 1208). Once the hook script is finished (block 1210), the packages files are removed from the temporary location (1212) and the package inject process ends. -
FIG. 13 is a flow diagram of one embodiment of amethod 1300 for installing a cartridge. Atblock 1301, a cartridge install process starts. Atblock 1302, the signature of the cartridge is verified to prevent tampering. Atblock 1304, the required packages (e.g., the cartridge package and other packages on which this cartridge depends) are identified. Atblock 1306, the package manager verifies that all required packages are installed. Atblock 1308, the files are extracted and saved to disk. Atblock 1310, the package manager submits a request to run a package install hook, which causes the hook script to be called (block 1312) and an install subprocess to start (block 1314). The install subprocess performs installation (block 1316), adds required modules to the platform (block 1318) and configures the cartridge (block 1320) as discussed above. When the hook script is finished (block 1322), the hook script is copied to a registry store (block 1324), and the package is registered in the registry (block 1325), completing the installation of the cartridge (block 1328). -
FIG. 14 is a flow diagram of one embodiment of amethod 1400 for reconfiguring a cartridge. Atblock 1401, a cartridge reconfigure process starts. Atblock 1402, the cartridge is reconfigured based on configuration information specified in the application. Atblock 1403, the reconfiguration of the cartridge is completed. -
FIG. 15 is a flow diagram of one embodiment of amethod 1500 for removing a cartridge. Atblock 1501, a cartridge uninstall process starts. Atblock 1502, the package manager checks whether any other packages require this cartridge. Atblock 1504, a request to remove the cartridge is issued (block 1504), starting a subprocess that runs a remove hook script (1506). The subprocess performsremoval operations -
FIG. 16 is a flow diagram of one embodiment of amethod 1600 for upgrading a cartridge. Atblock 1601, a cartridge upgrade process starts. Atblock 1602, the package manager verifies the signature of the new package. Atblock 1604, the package manager verifies that all required packages are installed. Atblock 1606, the package manager verifies that the upgrade package is already installed. Atblock 1608, the package manager verifies that the lower version of the cartridge is installed. Atblock 1610, the package manager issues a request to upgrade the cartridge (block 1610), causing the removal of the old version to start (block 1612). Once the old version is removed (block 1614), the install process for the new version is performed (block 1616), and the cartridge upgrade completes (block 1618). - An exemplary package layout will now be discussed in more detail. Application metadata, as well as application and cartridge configuration may be stored inside the application package. Similarly, cartridges providing base configuration may store it within their own cartridge package. Both application packages and cartridges may use essential the same package format. A package may include two top-level directories, bundle and info. Optionally, there may be a data directory as well. The bundle directory may hold user files, and the info directory may hold package metadata as well as package-managed files such as configuration files, hooks, or scaffolding templates. An exemplary layout is provided in Table 1 below.
-
TABLE 1 <package-name>/ - (auto-generated) |--bundle/ - bundled software. This is $VS_HOME | {grave over ( )}-- .data/ - symlinks to data directories | |-- cache −> ../../data/cache | |-- local −> ../../data/local | |-- logs −> ../../data/logs | |-- share −> ../../data/share | {grave over ( )}-- tmp −> ../../data/tmp |-- info/ - package meta information | |-- control - main control file | |-- changelog - internal build number | |-- alternatives/ - environment alternatives | | {grave over ( )}-- <name>/ - one directory per named environment | | {grave over ( )}-- ... | |-- defaults/ - cartridge scaffolding directory | | |-- idl - configuration wizard IDL spec | | {grave over ( )}-- <package-name/ - scaffolding (cartridge-specific) | | {grave over ( )}-- ... | |-- files - file spec: ownership, permissions, etc. | |-- hooks/ - hooks: start, stop, configure, etc. | |-- logs - log file descriptor | |-- setup - dependant setup files, configuration | | |-- mapping - (optional) mapping rules | | {grave over ( )}-- <dependency>/ - one directory per dependency | | {grave over ( )}-- ... | |-- md5sums - md5 digests (optional, Python 2.4) | |-- sha512sums - sha512 digests (reserved) | |-- signature - package signature (optional) | {grave over ( )}-- version - package format version {grave over ( )}-- data/ |-- cache/ - secondary data ($VS_CACHE) |-- local/ - node-local persistent data ($VS_LOCAL) |-- logs/ - node-local log files ($VS_LOGS) |-- repository/ - (internal) version history when exported |-- store/ - (internal) performance/deployment history |-- share/ - cluster-wide persistent data ($VS_SHARE) {grave over ( )}-- tmp/ - temporary files ($VS_TMP) - The platform may manage 5 application-specific storage areas: (1) cache—secondary data that are cached for performance reasons by can be recreated from original sources at any point; (2) local—for other node-local persistent data; (3) logs—for node-local application log files; (4) share—for persistent data that are to be shared across the cluster; the application is responsible for managing concurrent access to files, if any; and (4) tmp—for temporary files; files in this directory are not expected to survive a restart of the application. The above directories may be made accessible to the application in two ways: (1) in the file system under $VS_HOME/.data/{cache,local,logs,share,tmp); and (2) via environment variables VS_{CACHE,LOCAL,LOGS,SHARE,TMP}.
- As discussed above, packages may expose internal functionality via hooks. In some embodiments, hooks are published in the info/hooks directory and must be executable. In some embodiments, all hooks are optional and not every file stored in info/hooks is automatically a hook. Some files may contain shared code and as such be not executable, etc. Hook discovery may be performed solely by calling a special info hook. As a result, if a package exposes any hook at all, it should provide an info hook.
- Hooks may include standard hooks and custom hooks. Standard hooks are hooks that are called by the package management system if they exist. Not all hooks may have the same parameter list. The info hook may be used to obtain usage information. Table 2 below lists exemplary standard hooks.
-
TABLE 2 Name Description info Without arguments print a list of hooks and arguments to stdout, one hook per line. Each line is a tab-separated list of to- kens starting with the hook name. Remaining tokens are argument names or syntactic markers. Syntactic markers are: ‘{’ and ‘}’ for grouping, ‘|’ for logical alternatives, and the well known regular expression quantifiers ‘?’, ‘*’, and ‘+’. Groups may be nested. Quan- tifiers are postfixed. Example response: start\tapplication-name\t{\taddress\t}\t? info name Print arguments to stdout for a specific hook. Print an empty line (or no line) if name is unknown. pre-install This hook is called immediately before the package files are in- stalled in their final location. The hook takes no arguments. How- ever, as with all hooks VS_HOME is set in the environment and will hold the final destination path. This hook is currently reserved for internal purposes. post-install This hook is called immediately after the package files, have been installed in their final location. The hook takes no arguments. configure package directory This hook is called with a package name and a directory. The car- tridge will then recurse into that directory and pick and choose whatever file it needs to configure itself for the package. deconfigure package Deconfigures the cartridge for the named package. start Start the software contained in the package. When called by the package management system, this hook takes no arguments. stop Stop the software contained in the package. pre-remove This hook is called immediately before the package files are re- moved from their install location. The hook takes no arguments. post-remove This hook is called immediately after the package files are re- moved from their install location. The hook takes no arguments. However as with all hooks VS_HOME is set in the environment and will hold the final destination path. This hook is currently reserved for internal purposes. -
FIG. 17 is a diagram of one embodiment of a computer system for facilitating the execution of a web application in a cloud. Within thecomputer system 1700 is a set of instructions for causing the machine to perform any one or more of the methodologies discussed herein. In alternative embodiments, the machine may be connected (e.g., networked) to other machines in a LAN, an intranet, an extranet, or the Internet. The machine can be ahost cloud 130, acloud provider system 104, acloud controller 108 or any other machine. The machine can operate in the capacity of a server or a client machine in a client-server network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine may be a personal computer (PC), a tablet PC, a console device or set-top box (STB), a Personal Digital Assistant (PDA), a cellular telephone, a web appliance, a server, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines (e.g., computers) that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein. - The
exemplary computer system 1700 includes aprocessing device 1702, a main memory 1704 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or DRAM (RDRAM), etc.), a static memory 1706 (e.g., flash memory, static random access memory (SRAM), etc.), and a secondary memory 1716 (e.g., a data storage device in the form of a drive unit, which may include fixed or removable computer-readable storage medium), which communicate with each other via abus 1708. -
Processing device 1702 represents one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like. More particularly, theprocessing device 1702 may be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, processor implementing other instruction sets, or processors implementing a combination of instruction sets.Processing device 1702 may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like.Processing device 1702 is configured to execute theinstructions 1726 for performing the operations and steps discussed herein. - The
computer system 1700 may further include anetwork interface device 1722. Thecomputer system 1700 also may include a video display unit 1710 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)) connected to the computer system through a graphics port and graphics chipset, an alphanumeric input device 1712 (e.g., a keyboard), a cursor control device 1714 (e.g., a mouse), and a signal generation device 1720 (e.g., a speaker). - The
secondary memory 1716 may include a machine-readable storage medium (or more specifically a computer-readable storage medium) 1724 on which is stored one or more sets ofinstructions 1726 embodying any one or more of the methodologies or functions described herein. Theinstructions 1726 may also reside, completely or at least partially, within themain memory 1704 and/or within theprocessing device 1702 during execution thereof by thecomputer system 1700, themain memory 1704 and theprocessing device 1702 also constituting machine-readable storage media. Theinstructions 1726 may further be transmitted or received over a network 1718 via thenetwork interface device 1722. - The computer-
readable storage medium 1724 may also be used to store theinstructions 1726 persistently. While the computer-readable storage medium 1724 is shown in an exemplary embodiment to be a single medium, the term “computer-readable storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The terms “computer-readable storage medium” shall also be taken to include any medium that is capable of storing or encoding a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present invention. The term “computer-readable storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media. - The
instructions 1726, components and other features described herein can be implemented as discrete hardware components or integrated in the functionality of hardware components such as ASICS, FPGAs, DSPs or similar devices. In addition, theinstructions 1726 can be implemented as firmware or functional circuitry within hardware devices. Further, theinstructions 1726 can be implemented in any combination hardware devices and software components. - In the above description, numerous details are set forth. It will be apparent, however, to one skilled in the art, that the present invention may be practiced without these specific details. In some instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the present invention.
- Some portions of the detailed description which follows are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
- It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “detecting,” “generating,” “performing,” “storing,” “updating,” “implementing,” “determining,” “accessing,” or the like, refer to the actions and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (e.g., electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
- Embodiments of the invention also relate to an apparatus for performing the operations herein. This apparatus can be specially constructed for the required purposes, or it can comprise a general purpose computer system specifically programmed by a computer program stored in the computer system. Such a computer program can be stored in a computer-readable storage medium, such as, but not limited to, any type of disk including optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions.
- The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general purpose systems can be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform the method steps. The structure for a variety of these systems will appear from the description below. In addition, embodiments of the present invention are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages can be used to implement the teachings of embodiments of the invention as described herein.
- A computer-readable storage medium can include any mechanism for storing information in a form readable by a machine (e.g., a computer), but is not limited to, optical disks, Compact Disc, Read-Only Memory (CD-ROMs), and magneto-optical disks, Read-Only Memory (ROMs), Random Access Memory (RAM), Erasable Programmable Read-Only memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), magnetic or optical cards, flash memory, or the like.
- Thus, a method and apparatus for automatically establishing a support environment for a program is described. It is to be understood that the above description is intended to be illustrative and not restrictive. Many other embodiments will be apparent to those of skill in the art upon reading and understanding the above description. The scope of the invention should, therefore, be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.
Claims (24)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/151,193 US9009663B2 (en) | 2010-06-01 | 2011-06-01 | Cartridge-based package management |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US35044210P | 2010-06-01 | 2010-06-01 | |
US35044410P | 2010-06-01 | 2010-06-01 | |
US13/151,193 US9009663B2 (en) | 2010-06-01 | 2011-06-01 | Cartridge-based package management |
Publications (2)
Publication Number | Publication Date |
---|---|
US20110295984A1 true US20110295984A1 (en) | 2011-12-01 |
US9009663B2 US9009663B2 (en) | 2015-04-14 |
Family
ID=45023017
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/151,227 Active 2031-11-12 US8607200B2 (en) | 2010-06-01 | 2011-06-01 | Executing a web application at different stages in the application life cycle |
US13/151,183 Active 2032-02-27 US8966450B2 (en) | 2010-06-01 | 2011-06-01 | Facilitating the execution of web applications in the cloud |
US13/151,193 Active 2032-07-02 US9009663B2 (en) | 2010-06-01 | 2011-06-01 | Cartridge-based package management |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/151,227 Active 2031-11-12 US8607200B2 (en) | 2010-06-01 | 2011-06-01 | Executing a web application at different stages in the application life cycle |
US13/151,183 Active 2032-02-27 US8966450B2 (en) | 2010-06-01 | 2011-06-01 | Facilitating the execution of web applications in the cloud |
Country Status (1)
Country | Link |
---|---|
US (3) | US8607200B2 (en) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103067501A (en) * | 2012-12-28 | 2013-04-24 | 广州杰赛科技股份有限公司 | Large data processing method of PaaS platform |
US20130198371A1 (en) * | 2012-02-01 | 2013-08-01 | International Business Machines Corporation | Deploying an executable with historical performance data |
US20130198718A1 (en) * | 2012-01-31 | 2013-08-01 | Red Hat Inc. | Automated configuration of an application in a computing platform |
US20140173594A1 (en) * | 2012-12-14 | 2014-06-19 | Microsoft Corporation | Scalable Services Deployment |
US20150193452A1 (en) * | 2014-01-09 | 2015-07-09 | Red Hat, Inc. | Locked Files for Cartridges in a Multi-Tenant Platform-as-a-Service (PaaS) System |
US20150295824A1 (en) * | 2014-04-09 | 2015-10-15 | Red Hat, Inc. | Routing Tier for Highly-Available Applications on a Multi-Tenant Platform-as-a-Service (PaaS) System |
US20160162264A1 (en) * | 2014-12-04 | 2016-06-09 | Johnson Wong | Extensibility Framework |
US9563472B2 (en) * | 2014-12-04 | 2017-02-07 | International Business Machines Corporation | Concurrent workload deployment to synchronize activity in a design palette |
US9614931B2 (en) * | 2015-01-20 | 2017-04-04 | Sphere 3D Inc. | Identifying a resource set require for a requested application and launching the resource set in a container for execution in a host operating system |
US20170180308A1 (en) * | 2015-12-18 | 2017-06-22 | Bluedata Software, Inc. | Allocation of port addresses in a large-scale processing environment |
US10037196B2 (en) * | 2015-01-27 | 2018-07-31 | Red Hat, Inc. | Source to image framework for a platform-as-a-service system |
WO2021102617A1 (en) * | 2019-11-25 | 2021-06-03 | 深圳晶泰科技有限公司 | Multi-public cloud computing platform-oriented cluster monitoring system and monitoring method therefor |
Families Citing this family (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9448790B2 (en) | 2010-04-26 | 2016-09-20 | Pivotal Software, Inc. | Rapid updating of cloud applications |
US9772831B2 (en) | 2010-04-26 | 2017-09-26 | Pivotal Software, Inc. | Droplet execution engine for dynamic server application deployment |
US8612578B2 (en) | 2011-03-10 | 2013-12-17 | International Business Machines Corporation | Forecast-less service capacity management |
US8997078B2 (en) | 2011-04-12 | 2015-03-31 | Pivotal Software, Inc. | Release lifecycle management system for a multi-node application |
US9383985B2 (en) * | 2011-06-10 | 2016-07-05 | Unisys Corporation | Automated modification of pre-generated MSI packaged applications |
US9122551B2 (en) * | 2011-06-17 | 2015-09-01 | The Boeing Comapny | Methods and systems for generating read-only operating systems |
US8706869B2 (en) * | 2011-06-14 | 2014-04-22 | International Business Machines Corporation | Distributed cloud placement software |
US8819660B2 (en) * | 2011-06-29 | 2014-08-26 | Microsoft Corporation | Virtual machine block substitution |
US9170798B2 (en) | 2012-03-02 | 2015-10-27 | Vmware, Inc. | System and method for customizing a deployment plan for a multi-tier application in a cloud infrastructure |
US9996403B2 (en) | 2011-09-30 | 2018-06-12 | Oracle International Corporation | System and method for providing message queues for multinode applications in a middleware machine environment |
US9570124B2 (en) * | 2012-01-11 | 2017-02-14 | Viavi Solutions Inc. | High speed logging system |
US9052961B2 (en) | 2012-03-02 | 2015-06-09 | Vmware, Inc. | System to generate a deployment plan for a cloud infrastructure according to logical, multi-tier application blueprint |
US9047133B2 (en) | 2012-03-02 | 2015-06-02 | Vmware, Inc. | Single, logical, multi-tier application blueprint used for deployment and management of multiple physical applications in a cloud environment |
US10031783B2 (en) | 2012-03-02 | 2018-07-24 | Vmware, Inc. | Execution of a distributed deployment plan for a multi-tier application in a cloud infrastructure |
US9158660B2 (en) | 2012-03-16 | 2015-10-13 | International Business Machines Corporation | Controlling operation of a run-time instrumentation facility |
US9250902B2 (en) | 2012-03-16 | 2016-02-02 | International Business Machines Corporation | Determining the status of run-time-instrumentation controls |
US9411591B2 (en) * | 2012-03-16 | 2016-08-09 | International Business Machines Corporation | Run-time instrumentation sampling in transactional-execution mode |
US9280447B2 (en) | 2012-03-16 | 2016-03-08 | International Business Machines Corporation | Modifying run-time-instrumentation controls from a lesser-privileged state |
US9367316B2 (en) | 2012-03-16 | 2016-06-14 | International Business Machines Corporation | Run-time instrumentation indirect sampling by instruction operation code |
US9442824B2 (en) | 2012-03-16 | 2016-09-13 | International Business Machines Corporation | Transformation of a program-event-recording event into a run-time instrumentation event |
US9454462B2 (en) | 2012-03-16 | 2016-09-27 | International Business Machines Corporation | Run-time instrumentation monitoring for processor characteristic changes |
US9471315B2 (en) | 2012-03-16 | 2016-10-18 | International Business Machines Corporation | Run-time instrumentation reporting |
US9430238B2 (en) | 2012-03-16 | 2016-08-30 | International Business Machines Corporation | Run-time-instrumentation controls emit instruction |
US9405541B2 (en) | 2012-03-16 | 2016-08-02 | International Business Machines Corporation | Run-time instrumentation indirect sampling by address |
US9465716B2 (en) | 2012-03-16 | 2016-10-11 | International Business Machines Corporation | Run-time instrumentation directed sampling |
US9483268B2 (en) | 2012-03-16 | 2016-11-01 | International Business Machines Corporation | Hardware based run-time instrumentation facility for managed run-times |
US8880704B2 (en) | 2012-04-19 | 2014-11-04 | Empire Technology Development Llc | Migration in place by infrastructure deployment of platforms to customer hardware |
US8984134B2 (en) * | 2012-05-07 | 2015-03-17 | International Business Machines Corporation | Unified cloud computing infrastructure to manage and deploy physical and virtual environments |
US9405602B1 (en) | 2012-06-25 | 2016-08-02 | Google Inc. | Method for application notification and tasking |
US9923859B1 (en) | 2013-06-25 | 2018-03-20 | Vmware, Inc. | Creating a group of members based on monitoring a social network |
US9736254B1 (en) | 2012-06-25 | 2017-08-15 | Vmware, Inc. | Administration of a member of a network |
US9929998B1 (en) | 2012-08-24 | 2018-03-27 | Vmware, Inc. | Tagged messages to facilitate administration of a virtualization infrastructure |
US9348652B2 (en) | 2012-07-02 | 2016-05-24 | Vmware, Inc. | Multi-tenant-cloud-aggregation and application-support system |
US9378073B2 (en) | 2012-08-14 | 2016-06-28 | International Business Machines Corporation | Remote procedure call for a distributed system |
US8997088B2 (en) * | 2012-11-02 | 2015-03-31 | Wipro Limited | Methods and systems for automated deployment of software applications on heterogeneous cloud environments |
US9684505B2 (en) | 2013-06-12 | 2017-06-20 | Mitsubishi Electric Corporation | Development environment system, development environment apparatus, development environment providing method, and program |
US9843624B1 (en) | 2013-06-13 | 2017-12-12 | Pouya Taaghol | Distributed software defined networking |
US9887951B2 (en) * | 2013-06-25 | 2018-02-06 | Vmware, Inc. | Graphing relative health of virtualization servers |
US9246773B2 (en) | 2013-07-30 | 2016-01-26 | Draios Inc. | System, method, and graphical user interface for application topology mapping in hosted computing environments |
US9432270B2 (en) * | 2013-07-30 | 2016-08-30 | Draios Inc. | Performance and security management of applications deployed in hosted computing environments |
US20160078008A1 (en) * | 2014-09-11 | 2016-03-17 | Microsoft Corporation | Integrating user interface experiences from multiple applications |
US10284664B2 (en) * | 2014-10-13 | 2019-05-07 | Microsoft Technology Licensing, Llc | Application testing |
US11182280B2 (en) | 2014-10-13 | 2021-11-23 | Microsoft Technology Licensing, Llc | Application testing |
US9507636B2 (en) * | 2015-04-20 | 2016-11-29 | International Business Machines Corporation | Resource management and allocation using history information stored in application's commit signature log |
US10049403B2 (en) * | 2015-07-06 | 2018-08-14 | Bank Of America Corporation | Transaction identification in a network environment |
US9864624B2 (en) * | 2015-12-21 | 2018-01-09 | International Business Machines Corporation | Software-defined computing system remote support |
US9912571B2 (en) | 2015-12-28 | 2018-03-06 | International Business Machines Corporation | Determining a transaction parallelization improvement metric |
US9509578B1 (en) * | 2015-12-28 | 2016-11-29 | International Business Machines Corporation | Method and apparatus for determining a transaction parallelization metric |
US11424931B2 (en) | 2016-01-27 | 2022-08-23 | Blackberry Limited | Trusted execution environment |
US10599409B2 (en) * | 2016-02-02 | 2020-03-24 | Blackberry Limited | Application lifecycle operation queueing |
EP3473035B1 (en) * | 2016-07-13 | 2021-04-07 | Huawei Technologies Co., Ltd. | Application resilience system and method thereof for applications deployed on a cloud platform |
US10606586B2 (en) * | 2017-08-01 | 2020-03-31 | Accenture Global Solutions Limited | Application architecture generation |
TWI672924B (en) * | 2017-11-23 | 2019-09-21 | 財團法人資訊工業策進會 | Platform as a service cloud server and machine learning data processing method thereof |
US10708755B2 (en) | 2018-04-03 | 2020-07-07 | Servicenow, Inc. | Discovery and service mapping of serverless resources |
US10708753B2 (en) | 2018-04-03 | 2020-07-07 | Servicenow, Inc. | Discovery and service mapping of serverless resources |
US11288163B1 (en) * | 2018-06-22 | 2022-03-29 | R-Stor Inc. | Portable performance analytics system and method |
US10884815B2 (en) | 2018-10-29 | 2021-01-05 | Pivotal Software, Inc. | Independent services platform |
US11074060B2 (en) * | 2018-11-15 | 2021-07-27 | Vmware, Inc. | Automated detection of patch criticality on customer environment |
US12096259B2 (en) * | 2019-03-28 | 2024-09-17 | Nokia Solutions And Networks Oy | Network performance monitoring |
US11188386B2 (en) * | 2019-11-01 | 2021-11-30 | Sap Portals Israel Ltd. | Lightweight remote process execution |
US11650797B2 (en) | 2020-04-17 | 2023-05-16 | Jpmorgan Chase Bank, N.A. | Cloud portability code scanning tool |
DE102021205385A1 (en) * | 2021-05-27 | 2022-12-01 | Robert Bosch Gesellschaft mit beschränkter Haftung | Persistent security configuration monitoring |
US11489939B1 (en) * | 2022-01-06 | 2022-11-01 | International Business Machines Corporation | Smart egress in service mesh |
Citations (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5586304A (en) * | 1994-09-08 | 1996-12-17 | Compaq Computer Corporation | Automatic computer upgrading |
US6009274A (en) * | 1996-12-13 | 1999-12-28 | 3Com Corporation | Method and apparatus for automatically updating software components on end systems over a network |
US6330717B1 (en) * | 1998-03-27 | 2001-12-11 | Sony Corporation Of Japan | Process and system for developing an application program for a distributed adaptive run-time platform |
US6347396B1 (en) * | 1998-03-12 | 2002-02-12 | Telefonaktiebolaget Lm Ericsson (Publ) | Disturbance free update of data |
US20030051066A1 (en) * | 2000-09-01 | 2003-03-13 | Pace Charles P. | Method and system for deploying an asset over a multi-tiered network |
US20040128669A1 (en) * | 2002-10-16 | 2004-07-01 | Xerox Corporation | Apparatus for low cost embedded platform for device-side, distributed services enablement |
US6854112B2 (en) * | 2001-08-29 | 2005-02-08 | International Business Machines Corporation | System and method for the automatic installation and configuration of an operating system |
US20050149940A1 (en) * | 2003-12-31 | 2005-07-07 | Sychron Inc. | System Providing Methodology for Policy-Based Resource Allocation |
US20050243729A1 (en) * | 2004-04-16 | 2005-11-03 | Apparent Networks, Inc. | Method and apparatus for automating and scaling active probing-based IP network performance monitoring and diagnosis |
US6986148B2 (en) * | 2001-07-17 | 2006-01-10 | Appforge, Inc. | Methods and systems for providing platform-independent shared software components for mobile devices |
US7356503B1 (en) * | 2001-02-21 | 2008-04-08 | Fair Isaac And Company, Inc. | ASP business decision engine |
US20090031307A1 (en) * | 2007-07-24 | 2009-01-29 | International Business Machines Corporation | Managing a virtual machine |
US7584471B2 (en) * | 2002-09-23 | 2009-09-01 | Telefonaktiebolaget L M Ericsson (Publ) | Plug-in model |
US20100333085A1 (en) * | 2009-06-25 | 2010-12-30 | Microsoft Corporation | Streaming Optimized Virtual Application Images |
US7962918B2 (en) * | 2004-08-03 | 2011-06-14 | Microsoft Corporation | System and method for controlling inter-application association through contextual policy control |
US20110145836A1 (en) * | 2009-12-12 | 2011-06-16 | Microsoft Corporation | Cloud Computing Monitoring and Management System |
US20110161952A1 (en) * | 2009-12-31 | 2011-06-30 | International Business Machines Corporation | Porting Virtual Images Between Platforms |
US20110214124A1 (en) * | 2010-02-26 | 2011-09-01 | James Michael Ferris | Systems and methods for generating cross-cloud computing appliances |
US20110225017A1 (en) * | 2010-03-11 | 2011-09-15 | International Business Machines Corporation | Analytic-based scaling of information technology resources |
US20110265164A1 (en) * | 2010-04-26 | 2011-10-27 | Vmware, Inc. | Cloud platform architecture |
US8230417B1 (en) * | 2007-06-08 | 2012-07-24 | Adobe Systems Incorporated | Combined application and execution environment install |
US8429630B2 (en) * | 2005-09-15 | 2013-04-23 | Ca, Inc. | Globally distributed utility computing cloud |
US8448164B2 (en) * | 2008-08-18 | 2013-05-21 | Software Ag | SOA-registry, method and platform manager for automatic SOA application deployment |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4751635A (en) * | 1986-04-16 | 1988-06-14 | Bell Communications Research, Inc. | Distributed management support system for software managers |
US7080351B1 (en) * | 2002-04-04 | 2006-07-18 | Bellsouth Intellectual Property Corp. | System and method for performing rapid application life cycle quality assurance |
US7668870B1 (en) * | 2004-04-15 | 2010-02-23 | Citicorp Development Center, Inc. | Methods and systems for updating web pages via a web data instant update utility |
US8935316B2 (en) * | 2005-01-14 | 2015-01-13 | Citrix Systems, Inc. | Methods and systems for in-session playback on a local machine of remotely-stored and real time presentation layer protocol data |
WO2008055270A2 (en) * | 2006-11-04 | 2008-05-08 | Virident Systems, Inc. | Writing to asymmetric memory |
US8346526B1 (en) * | 2006-12-29 | 2013-01-01 | The Mathworks, Inc. | Test environment for accumulating cumulative metric data |
US8543998B2 (en) * | 2008-05-30 | 2013-09-24 | Oracle International Corporation | System and method for building virtual appliances using a repository metadata server and a dependency resolution service |
EP2316071A4 (en) * | 2008-06-19 | 2011-08-17 | Servicemesh Inc | Cloud computing gateway, cloud computing hypervisor, and methods for implementing same |
US8271974B2 (en) * | 2008-10-08 | 2012-09-18 | Kaavo Inc. | Cloud computing lifecycle management for N-tier applications |
US8209272B2 (en) * | 2009-02-27 | 2012-06-26 | Red Hat, Inc. | Dynamic computation of optimal placement for services in a distributed computing system |
US8640216B2 (en) * | 2009-12-23 | 2014-01-28 | Citrix Systems, Inc. | Systems and methods for cross site forgery protection |
US9772831B2 (en) * | 2010-04-26 | 2017-09-26 | Pivotal Software, Inc. | Droplet execution engine for dynamic server application deployment |
US8719804B2 (en) * | 2010-05-05 | 2014-05-06 | Microsoft Corporation | Managing runtime execution of applications on cloud computing systems |
-
2011
- 2011-06-01 US US13/151,227 patent/US8607200B2/en active Active
- 2011-06-01 US US13/151,183 patent/US8966450B2/en active Active
- 2011-06-01 US US13/151,193 patent/US9009663B2/en active Active
Patent Citations (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5586304A (en) * | 1994-09-08 | 1996-12-17 | Compaq Computer Corporation | Automatic computer upgrading |
US6009274A (en) * | 1996-12-13 | 1999-12-28 | 3Com Corporation | Method and apparatus for automatically updating software components on end systems over a network |
US6347396B1 (en) * | 1998-03-12 | 2002-02-12 | Telefonaktiebolaget Lm Ericsson (Publ) | Disturbance free update of data |
US6330717B1 (en) * | 1998-03-27 | 2001-12-11 | Sony Corporation Of Japan | Process and system for developing an application program for a distributed adaptive run-time platform |
US20030051066A1 (en) * | 2000-09-01 | 2003-03-13 | Pace Charles P. | Method and system for deploying an asset over a multi-tiered network |
US7356503B1 (en) * | 2001-02-21 | 2008-04-08 | Fair Isaac And Company, Inc. | ASP business decision engine |
US6986148B2 (en) * | 2001-07-17 | 2006-01-10 | Appforge, Inc. | Methods and systems for providing platform-independent shared software components for mobile devices |
US6854112B2 (en) * | 2001-08-29 | 2005-02-08 | International Business Machines Corporation | System and method for the automatic installation and configuration of an operating system |
US7584471B2 (en) * | 2002-09-23 | 2009-09-01 | Telefonaktiebolaget L M Ericsson (Publ) | Plug-in model |
US20040128669A1 (en) * | 2002-10-16 | 2004-07-01 | Xerox Corporation | Apparatus for low cost embedded platform for device-side, distributed services enablement |
US20050149940A1 (en) * | 2003-12-31 | 2005-07-07 | Sychron Inc. | System Providing Methodology for Policy-Based Resource Allocation |
US20050243729A1 (en) * | 2004-04-16 | 2005-11-03 | Apparent Networks, Inc. | Method and apparatus for automating and scaling active probing-based IP network performance monitoring and diagnosis |
US7962918B2 (en) * | 2004-08-03 | 2011-06-14 | Microsoft Corporation | System and method for controlling inter-application association through contextual policy control |
US8429630B2 (en) * | 2005-09-15 | 2013-04-23 | Ca, Inc. | Globally distributed utility computing cloud |
US8230417B1 (en) * | 2007-06-08 | 2012-07-24 | Adobe Systems Incorporated | Combined application and execution environment install |
US20090031307A1 (en) * | 2007-07-24 | 2009-01-29 | International Business Machines Corporation | Managing a virtual machine |
US8448164B2 (en) * | 2008-08-18 | 2013-05-21 | Software Ag | SOA-registry, method and platform manager for automatic SOA application deployment |
US20100333085A1 (en) * | 2009-06-25 | 2010-12-30 | Microsoft Corporation | Streaming Optimized Virtual Application Images |
US20110145836A1 (en) * | 2009-12-12 | 2011-06-16 | Microsoft Corporation | Cloud Computing Monitoring and Management System |
US20110161952A1 (en) * | 2009-12-31 | 2011-06-30 | International Business Machines Corporation | Porting Virtual Images Between Platforms |
US20110214124A1 (en) * | 2010-02-26 | 2011-09-01 | James Michael Ferris | Systems and methods for generating cross-cloud computing appliances |
US20110225017A1 (en) * | 2010-03-11 | 2011-09-15 | International Business Machines Corporation | Analytic-based scaling of information technology resources |
US20110265164A1 (en) * | 2010-04-26 | 2011-10-27 | Vmware, Inc. | Cloud platform architecture |
Non-Patent Citations (1)
Title |
---|
Identifying Components in Object-Oriented Programs using Dynamic Analysis and Clustering - Simon AllierDIRO Universit´e de Montr´eal Universit´e de Bretagne-Sud - Houari A. Sahraoui DIRO Universit´e de Montr´eal - Salah SadouVALORIA Universit´e de Bretagne-Sud -CASCON '09 -2009. * |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130198718A1 (en) * | 2012-01-31 | 2013-08-01 | Red Hat Inc. | Automated configuration of an application in a computing platform |
US9959105B2 (en) * | 2012-01-31 | 2018-05-01 | Red Hat, Inc. | Configuration of an application in a computing platform |
US20170262270A1 (en) * | 2012-01-31 | 2017-09-14 | Red Hat, Inc. | Configuration of an application in a computing platform |
US9665356B2 (en) * | 2012-01-31 | 2017-05-30 | Red Hat, Inc. | Configuration of an application in a computing platform |
US9253059B2 (en) * | 2012-02-01 | 2016-02-02 | International Business Machines Corporation | Deploying an executable with historical performance data |
US20130198371A1 (en) * | 2012-02-01 | 2013-08-01 | International Business Machines Corporation | Deploying an executable with historical performance data |
US9253058B2 (en) * | 2012-02-01 | 2016-02-02 | International Business Machines Corporation | Deploying an executable with historical performance data |
US9189285B2 (en) * | 2012-12-14 | 2015-11-17 | Microsoft Technology Licensing, Llc | Scalable services deployment |
US20140173594A1 (en) * | 2012-12-14 | 2014-06-19 | Microsoft Corporation | Scalable Services Deployment |
CN103067501A (en) * | 2012-12-28 | 2013-04-24 | 广州杰赛科技股份有限公司 | Large data processing method of PaaS platform |
US11012499B2 (en) | 2014-01-09 | 2021-05-18 | Red Hat, Inc. | Template directories for cartridges in a multi-tenant Platform-as-a-Service (PaaS) system |
US10033800B2 (en) | 2014-01-09 | 2018-07-24 | Red Hat, Inc. | Downloadable cartridges for a multi-tenant platform-as-a-service (PaaS) system |
US9742838B2 (en) * | 2014-01-09 | 2017-08-22 | Red Hat, Inc. | Locked files for cartridges in a multi-tenant platform-as-a-service (PaaS) system |
US20150193452A1 (en) * | 2014-01-09 | 2015-07-09 | Red Hat, Inc. | Locked Files for Cartridges in a Multi-Tenant Platform-as-a-Service (PaaS) System |
US10715435B2 (en) * | 2014-04-09 | 2020-07-14 | Red Hat, Inc. | Routing tier for highly-available applications on a multi-tenant platform-as-a-service (PaaS) system |
US20150295824A1 (en) * | 2014-04-09 | 2015-10-15 | Red Hat, Inc. | Routing Tier for Highly-Available Applications on a Multi-Tenant Platform-as-a-Service (PaaS) System |
US11805057B2 (en) | 2014-04-09 | 2023-10-31 | Red Hat, Inc. | Routing tier for highly-available applications on a multi-tenant Platform-as-a-Service (PaaS) system |
US9563473B2 (en) * | 2014-12-04 | 2017-02-07 | International Business Machines Corporation | Concurrent workload deployment to synchronize activity in a design palette |
US9875119B2 (en) * | 2014-12-04 | 2018-01-23 | Business Objects Software Ltd. | Extensibility framework |
US9563472B2 (en) * | 2014-12-04 | 2017-02-07 | International Business Machines Corporation | Concurrent workload deployment to synchronize activity in a design palette |
US20160162264A1 (en) * | 2014-12-04 | 2016-06-09 | Johnson Wong | Extensibility Framework |
US9614931B2 (en) * | 2015-01-20 | 2017-04-04 | Sphere 3D Inc. | Identifying a resource set require for a requested application and launching the resource set in a container for execution in a host operating system |
US10037196B2 (en) * | 2015-01-27 | 2018-07-31 | Red Hat, Inc. | Source to image framework for a platform-as-a-service system |
US20170180308A1 (en) * | 2015-12-18 | 2017-06-22 | Bluedata Software, Inc. | Allocation of port addresses in a large-scale processing environment |
WO2021102617A1 (en) * | 2019-11-25 | 2021-06-03 | 深圳晶泰科技有限公司 | Multi-public cloud computing platform-oriented cluster monitoring system and monitoring method therefor |
Also Published As
Publication number | Publication date |
---|---|
US8966450B2 (en) | 2015-02-24 |
US8607200B2 (en) | 2013-12-10 |
US9009663B2 (en) | 2015-04-14 |
US20110302569A1 (en) | 2011-12-08 |
US20120066665A1 (en) | 2012-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9009663B2 (en) | Cartridge-based package management | |
US20210349706A1 (en) | Release lifecycle management system for multi-node application | |
US11567755B2 (en) | Integration of containers with external elements | |
US9959105B2 (en) | Configuration of an application in a computing platform | |
US9880826B2 (en) | Installing of application resources in a multi-tenant platform-as-a-service (PaS) system | |
US11347555B2 (en) | Integrated system to distribute and execute complex applications | |
US11698781B2 (en) | System and method for upgrading kernels in cloud computing environments | |
US9569259B2 (en) | Virtual machine migration tool | |
US8543998B2 (en) | System and method for building virtual appliances using a repository metadata server and a dependency resolution service | |
US9262238B2 (en) | Connection management for an application in a computing platform | |
US9898279B2 (en) | Optimizing ABAP development as a service | |
JP6192534B2 (en) | Virtual application extension point | |
US9170797B2 (en) | Automated deployment of an application in a computing platform | |
US20150193481A1 (en) | Installation and Update of Cartridges in a Multi-Tenant Platform-as-a-Service (PaaS) System | |
US10838751B1 (en) | Virtual machine configuration | |
US10411961B2 (en) | Image management in cloud environments | |
CN107220074B (en) | Method and device for accessing and upgrading supporting layer software function | |
EP4363968A1 (en) | Deploying a machine learning model | |
US8904396B2 (en) | System and method of general service management | |
US12118379B1 (en) | Secure package installation into a target container | |
WO2021223544A1 (en) | Application starting method and related device | |
CN117573183A (en) | Database management method, device, electronic equipment and storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: RED HAT, INC., NORTH CAROLINA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:KUNZE, TOBIAS;REEL/FRAME:026373/0578 Effective date: 20110601 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |