Configuration tool for deploying applications on a server
By automatically matching and configuring applications on the server using computer automation methods, the complexity of configuration objects in distributed network architecture is solved, and efficient, detailed configuration reports and consistent configuration are achieved, thereby improving configuration efficiency.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- INTERNATIONAL BUSINESS MACHINE CORPORATION
- Filing Date
- 2022-07-08
- Publication Date
- 2026-07-07
AI Technical Summary
When deploying applications on servers, existing technologies struggle to efficiently match and configure complex configuration objects, especially in distributed network architectures where there are numerous configuration types and external references, making the configuration process cumbersome and error-prone.
The system uses a computer-automated method to automatically match the application's required configuration with the server's available configuration, generates error messages to indicate unavailability, and iterates through the checking and matching process until all references are successfully matched or error messages are generated, outputting a configuration report.
It enables efficient and accurate application configuration on the server, generates detailed configuration reports, ensures the integrity and consistency of configuration objects, reduces manual intervention, and improves configuration efficiency.
Smart Images

Figure CN117597667B_ABST
Abstract
Description
Technical Field
[0001] This disclosure relates to computer programs, computer program products, and computer-implemented methods for supporting the configuration and deployment of applications on servers. Background Technology
[0002] To prepare an application for deployment on a server, the server must be configured by selecting appropriate configuration objects. This selection needs to consider the application's processing flows, which can be defined by one or more processing flow artifacts. In some cases, the application may be defined by only one or more processing flow artifacts. In other cases, there may be other types of artifacts used to define the application.
[0003] Deploying applications using configuration objects is a key approach in distributed network architectures such as Enterprise Service Bus (ESB). In distributed network architectures, numerous applications can be deployed across multiple hardware and software platforms in complex, interdependent ways, allowing any given application to assume a server or client role as needed, thus creating flexible networks with client-server relationships. ESB applications typically have a large number of configuration types. In a given distributed computing system, multiple configuration objects of any given configuration type can exist; for example, different objects of the same type can be provided for different environments (e.g., development, testing, pre-production, production).
[0004] A configuration object is an instance of a given configuration type. Some configuration types can be standard, while others can be vendor-specific. The number of configuration objects can be one hundred or more. As more functionality is added, the number of configuration types tends to grow over time. Example configuration objects involve third-party connector accounts; connections to trust stores (e.g., repositories of digital certificates such as public keys); and Open Database Connectivity (ODBC) details or server policies. The configuration object has descriptors. For example, an application's streaming artifact might contain descriptors specifying the environment the application needs to run successfully.
[0005] To configure an application deployed on a specific server, users are typically shown a list of available configuration objects based on each configuration type, and are given some guidance on how to make appropriate selections from these type-specific lists of configuration objects. Summary of the Invention
[0006] According to an embodiment of the present invention, a computer automation method for supporting the deployment of an application on a server provided with a set of configurations available for use by an application deployed on the server, the method comprising: matching a configuration required by the application with a set of available configurations in the set of configurations, wherein for each required configuration that matches at least one available configuration in the set of configurations, one of the available configurations is selected, and wherein for each required configuration that does not match, an error message indicating its unavailability is generated; examining each selected required configuration to identify any references contained therein to further required configurations; performing the matching again for each further configuration; iterating the checking and the matching to follow the references until all such references are exhausted by a successful match between the required configuration and one of the available configurations, and generating an error message indicating the unavailability of the required configuration; and outputting a configuration report specifying the available configurations that have been selected as required by the application, and the error message to the extent that not all required configurations have been matched with available configurations.
[0007] According to an embodiment of the present invention, a computer program stored on a computer-readable medium and loadable into the internal memory of a computing device includes a software code portion that, when the program is run on the computing device, performs a computer automation method for supporting the deployment of an application on a server provided with a set of configurations available for use by an application deployed on the server. The method includes: matching a configuration required by the application against configurations available in the set of configurations, wherein for each required configuration that matches at least one available configuration in the set of configurations, one of the available configurations is selected, and wherein for each required configuration that does not match, an error message indicating its unavailability is generated; examining each selected required configuration to identify any references contained therein to further required configurations; performing the matching again for each further configuration; iterating the checking and the matching to follow the references until all such references are exhausted by a configuration where the required configuration successfully matches one of the available configurations and an error message indicating the unavailability of the required configuration is generated; and outputting a configuration report specifying the available configurations that have been selected as required by the application, and the error message indicating the extent to which not all required configurations have been matched with available configurations.
[0008] According to an embodiment of the present invention, a computer automation method for supporting the deployment of an application on a server provided with a set of configurations available for use by an application deployed on the server, the method comprising: matching configurations required by the application with configurations available in the set of configurations, wherein for each required configuration that matches at least one available configuration in the set of configurations, one of the available configurations is selected, and wherein for each required configuration that does not match, an error message indicating its unavailability is generated; examining each selected required configuration to identify any references contained therein to further required configurations; performing the matching again for each further configuration; iterating the checking and the matching to follow the references until all such references are exhausted by a configuration in which the required configuration successfully matches one of the available configurations and generating one or more required missing configurations; updating the application with the one or more missing configurations; and outputting a configuration report specifying the available configurations that have been selected as required by the application, and the one or more generated configurations to the extent that not all required configurations have been matched with available configurations.
[0009] According to an embodiment of the present invention, a computer program product storing a computer program including a software code portion, when run on a computing device, the software code portion causes the computing device to perform a method for supporting the deployment of an application on a server, the server being provided with a set of configurations available for use by the application deployed on the server, the method comprising: matching a configuration required by the application against configurations available in the set of configurations, wherein for each required configuration that matches at least one of the available configurations in the set of configurations, one of the available configurations is selected, and wherein for each required configuration that does not match, an error message indicating its unavailability is generated; examining each selected required configuration to identify any references contained therein to further required configurations; performing the matching again for each of the further configurations; and iterating the checking and the matching to follow the references until all such references are exhausted by a configuration in which the required configuration successfully matches one of the available configurations and and generating an error message indicating the unavailability of the required configuration; and outputting a configuration report specifying the available configurations that have been selected as required by the application, and the error message to the extent that not all required configurations have been matched with available configurations.
[0010] According to an embodiment of the present invention, a server device has a set of configurations available for use by an application deployed on the server device, and an application configuration tool, the application configuration tool being operable to support the deployment of the application on the server device by: matching a configuration requested by the application with configurations available in the set of configurations, wherein for each requested configuration that matches at least one of the available configurations in the set of configurations, one of the available configurations is selected, and wherein for each requested configuration that does not match, an error message indicating its unavailability is generated; examining each selected requested configuration to identify any references contained therein to further requested configurations; performing the matching again for each of the further requested configurations; and iterating the checking and the matching to follow the references until all such references are exhausted by a configuration in which the requested configuration successfully matches an available configuration and generating an error message indicating the unavailability of the requested configuration; and outputting a configuration report specifying the available configurations that have been selected as requested by the application, and the error message to the extent that not all requested configurations have been matched with available configurations. Attached Figure Description
[0011] In the following description, the invention will be further described by way of example only, with reference to the exemplary embodiments shown in the accompanying drawings.
[0012] Figure 1 This is a flowchart of a method according to an embodiment of the present disclosure.
[0013] Figure 2 This is a block diagram of exemplary nodes that can host embodiments of this disclosure.
[0014] Figure 3 This is a schematic diagram illustrating an exemplary network with three nodes.
[0015] Figure 4 A general-purpose computer device that can be used as part of a computer system according to some embodiments of the present invention is shown.
[0016] Figure 5 A cloud computing system according to an embodiment of the present disclosure is described.
[0017] Figure 6 An abstract model layer according to an embodiment of this disclosure is described. Detailed Implementation
[0018] In the following detailed description, specific details are set forth for purposes of explanation and not limitation in order to provide a better understanding of the present disclosure. It will be apparent to those skilled in the art that the present disclosure may be implemented in other embodiments that depart from these specific details.
[0019] For the sake of simplicity, we will refer to process artifacts as process artifacts.
[0020] We consider an example scenario where we expect to deploy an application A with a single streaming artifact F on server S. The streaming artifact F contains a node N with a configuration of type T.
[0021] The first part of the analysis allows you to examine the content of the application to be deployed and its configuration object requirements. Note that not all configuration objects required to deploy an application on a particular server must be derived individually from the application's content, as the application content may contain external references to other configuration objects. Nodes can interact with one or more other nodes, either inside or outside the application. Example external nodes are nodes for sending emails (e.g., to 'Gmail') and nodes for adding information to a remotely hosted Customer Relationship Management (CRM) platform (e.g., creating a sales leader). In our example, the configuration tool can analyze the list of configuration objects available for server S to find those configuration objects of configuration type T required for the flow artifact F. If multiple candidates exist, the configuration tool can suggest or present all candidates to prompt the user to select one for node N. If only one candidate exists, the configuration tool can automatically make the selection for that candidate for node N. (If no candidate exists, an error message can be generated to indicate the unavailability of a suitable configuration object.) The selected configuration object can be labeled T1.
[0022] The configuration tool can then proceed by analyzing the newly selected configuration object T1. If T1 is self-contained, this can constitute a complete configuration for deploying application A (or at least its streaming artifact F) on the intended server, without requiring further iterations to configure streaming artifact F. Alternatively, it is possible that T1 references another node P that requires configuration of type C, for which a suitable configuration object C1 exists. The configuration tool can then add C1 alongside T1 as part of A's configuration object requirements.
[0023] Further iterations can then be performed as needed until any newly added configurations in the previous iteration are not self-contained but references or links to one or more other nodes that require their own configuration objects, and these references can be resolved error-free by adding further configuration objects. At some point in the iteration, there will be no more links to follow, and the iteration can end.
[0024] The configuration tool can then output a configuration report for the application to be deployed. This report can specify the selected (i.e., available) configuration objects required by the application, and, not necessarily, the extent to which all required configuration objects were found, specifying which configuration objects are missing and any associated error messages. For any given application, or more specifically, for its streaming artifacts, the configuration report can indicate a fully configured (error-free) or incomplete (error-prone) configuration. In a fully configured configuration, a complete set of configuration objects can be defined, sufficient to allow deployment of the application on a server (e.g., a virtualized server in a distributed network environment). In an incomplete configuration, an incomplete set of configuration objects can be defined, along with one or more error messages providing information about the corresponding missing configuration objects, preferably as detailed and specific as possible. Examples of specific error messages are:
[0025] • No configuration object of type "Accounts" containing "Salesforce counts" could be found.
[0026] The required configuration object T1 contains an unresolved reference "$secret1" that cannot be found in any configuration object. Consider creating a new configuration object for this object or updating an existing configuration object to include it.
[0027] On the other hand, the configuration tool can determine whether the application contains the required configuration objects based on the deployment associated with the application, and for any missing configuration objects, it can generate configuration objects and update the application configuration. Furthermore, the configuration tool can generate one or more notification messages providing information about the corresponding generated configuration objects, preferably as detailed and specific as possible.
[0028] Without providing a complete configuration, this method can provide a user error message detailing why the desired configuration object is not available for the current set of configuration objects available to the server.
[0029] Figure 1 This is a flowchart illustrating an example of the above method.
[0030] Step S1: The user selects the first-class artifact of the application.
[0031] Step S2: Analyze the contents of the flow artifacts to find the required configuration objects.
[0032] Step S3: Automatically select each required configuration object (i.e., only one instance satisfies the constraints), or, if multiple instances satisfy the constraints, prompt the user to select one via the user interface (optional recommendation), or, if no object is available, notify the user by generating an error message (i.e., no instance satisfies the constraints).
[0033] Step S4: Analysis as follows:
[0034] - Check if all constraints satisfy the current configuration object selection. (If so, no further action is required.)
[0035] - If 'No', then check if an alternative configuration object selection that satisfies the constraints can be found (step S4.1). The loop may automatically terminate after a certain number of failed attempts to find a combination of objects that satisfy all constraints.
[0036] - If 'yes', then select a configuration object (or suggest from multiple possible options, or neutrally prompt the user to select from multiple possible options).
[0037] If a configuration object selection that satisfies all constraints cannot be found, an error message is generated by making an entry in the error section of the configuration report.
[0038] Step S5: For the current selection of configuration objects, the system checks for any inconsistencies (name conflicts, cardinality limitations). If possible, any inconsistencies can be automatically corrected (e.g., resolving name conflicts by renaming). Alternatively, inconsistencies can be flagged as part of the configuration report.
[0039] Step S6: Analyze the contents of the objects selected in the iteration immediately preceding Step S3. Proceed to Step S3 so that additional objects can be selected from the contents of the objects selected in the immediate preceding iteration (the traversal immediately before Step S3). Then, the object analysis can be performed as before (Steps S4 and S5).
[0040] Step S7: Proceed to step S4 until no new configuration objects are added and all constraints are met (as much as possible).
[0041] Step S8: If the application involves deploying multiple streaming artifacts, select the next streaming artifact (step S8.1) and repeat from step S2 until all streaming artifacts have been processed.
[0042] Implementations of this method can be configured to allow selection of configuration objects taking into account various kinds of constraints (i.e., relational requirements) relating to configuration objects and their associated configuration types as now described.
[0043] The first type of constraint can be the relationship between streaming artifacts and configuration types: this includes three examples. First, the cardinality can be associated with the required configuration type. For example, when deploying a streaming artifact, a 'counts.yaml' file needs to be selected for each 'serverconf.yaml' file. Second, there may be dependencies based on streaming artifacts, such that if a certain type of processing node is in the processing flow of a streaming artifact, the streaming artifact is required to include all configuration objects associated with that processing node. For example, a database node needs a sample data source configuration information file, such as an 'odbc.ini' with the correct content. Third, all assets of a specific type may need to exist in the configuration type; for example, all accounts used in the streaming artifact need to exist in 'counts.yaml'.
[0044] The second type of constraint can exist between configuration types: two examples include the following. First, there may be mutually exclusive types that cannot be selected together. For example, if a user selects an instance of type A, this excludes the selection of an instance of type B. The concrete instances 'credentials.yaml' and 'accounts.yaml' will not be selected simultaneously. Second, there may be type dependencies with minimum-maximum requirements. For example, if a user selects configuration type A, they must select a certain number of configuration objects of type B, which must be within the minimum to maximum range.
[0045] The third type of constraint can exist between configuration objects: this includes three examples. First, it may be necessary to avoid content conflicts between selected configuration objects. When deploying streaming artifacts, users may select many of these objects to configure the streaming artifact for deployment on the intended server. It should be noted that there should be no name conflicts in the selection, as name conflicts invalidate the selection of configuration objects. For example, a configuration object of type 'setdbparms' contains certificates that need to be identified by a unique name. Second, there may be content dependencies between configuration objects that need to be accepted. For example, selecting a configuration object of type A containing references may require defining references in a configuration object of type B. Third, it may be necessary that all references from a selected configuration object of type A exist in a configuration object of type B. For example, a configuration object of type EVENT_STREAM_CREDENTIALS contains multiple variables marked with $, and all of these variables need to be defined in a configuration object of type EVENT_STREAM_CREDENTIALS_SECRET.
[0046] Figure 2This is a block diagram of an example server instance on which embodiments of the present disclosure may be hosted. Each server may provide a runtime environment for message flows and resources (including message flows between applications). Resources may also include static and / or shared libraries accessible by applications. Messages may be routed from sender to receiver based on their content. Message flows may control message routing. Message flows may describe the operations to be performed on incoming messages and the order in which they are performed. Each message flow may include a series of steps for processing messages and connections defining the routes through that processing. A server environment as shown in the figure is provided.
[0047] Figure 3 This is a schematic diagram illustrating an example network of three nodes linked through streams and configuration objects: node A, node B, and node C. The nodes are shown in series as an example. The links between configuration objects, indicated by lines, are not physical links but dependencies inferred from the content of the configuration objects using the methods described above. To enable nodes B and C, they need to be configured to allow them to connect correctly to the database. The "odbc.ini" file contains the connection details, and the "setdbparms" file contains the certificates. Only one "odbc.ini" file can exist per system, so the correct file must be selected. More than one "setdbparms" file may exist, but when multiple such files exist, they cannot have conflicting entries. The first parsing command "find odbc.ini_1" matches node B, and it is known that "setdbparms_1" is also required. Then, it can be seen that node C is not configured, so instead, "odbc.ini_2" is tried. In turn, "odbc.ini_2" requires both "setdbparms_1" and "setdbparms_2". With this configuration, the system is complete and can be run to connect to the database.
[0048] In summary, an application configuration tool and associated method are provided to support the deployment of applications on a server with a set of configurations available for applications deployed on that server. The method attempts to match each configuration required by the application with a configuration available on the server. In the case of multiple matching candidates, one candidate is selected. When no match is found, an error message is generated. The method is repeated to examine each selected configuration to identify any references contained within that selected configuration that themselves require further configuration. The examination and matching continue to iterate over the references until all such references are exhausted through matching or matching failures and subsequent error message generation. Finally, a configuration report can be output specifying the selected configurations and the extent to which error messages occurred where not all required configurations were matched with available configurations.
[0049] Figure 4 The structure of a computer system 501 and a computer program 507 that can be used to implement embodiments of the present invention is illustrated. The computer system may be a server as described above, and the computer program 507 may be an application program as described above. The computer system 501 includes a processor 503 and a display 515. The processor 503 provides processor resources coupled to one or more hardware data storage devices 511 and one or more I / O devices 513 via one or more I / O interfaces 509. The hardware data storage devices 511 and one or more I / O devices 513 can manage graphics object requests, and graphics objects can be displayed on the display 515. The processor 503 may also be connected to one or more storage devices 505. At least one memory device 505 having memory resources contains a stored computer program 507. Each computer program includes computer-executable instructions. The data storage device 511 may store the computer program 507. The computer programs 507 stored in the storage device 511 are each configured to be executed by the processor 503 via the memory device 505. The processor 503 executes the stored computer program 507.
[0050] It will be apparent to those skilled in the art that all or part of the logical process steps of this preferred embodiment may alternatively be embodied in a logic device or a plurality of logic devices, the logic device including logic elements arranged to perform the logical process steps of the method, and such logic elements may include hardware components, firmware components or a combination thereof.
[0051] It will also be apparent to those skilled in the art that all or part of the logic components of the preferred embodiments may alternatively be embodied in a logic device comprising logic elements for performing the steps of the method, and such logic elements may include, for example, components of logic gates in a programmable logic array or application-specific integrated circuit. This logical arrangement may be further embodied in enabling elements for temporarily or permanently establishing a logic structure in such an array or circuit, for example, using a virtual hardware descriptor language that can be stored and transmitted using a fixed or transmissible carrier medium.
[0052] In another alternative embodiment, the invention may be implemented as a computer-implemented method for deploying services, the method including the step of deploying a computer program that, when deployed to and executed on a computer infrastructure, causes the computing device to perform all the steps of the method.
[0053] It will be understood that the methods and components of the preferred embodiments may alternatively be fully or partially embodied in parallel computing systems comprising two or more processors for executing parallel software.
[0054] Another embodiment of the present invention is a computer program product defined according to systems and methods. The computer program product may include a computer-readable storage medium (or media) having computer-readable program instructions thereon for causing a processor to execute aspects of the present invention.
[0055] A computer-readable storage medium can be a tangible device capable of retaining and storing instructions used by an instruction execution device.
[0056] The present invention can be a system, method, and / or computer program product. A computer program product may include a computer-readable storage medium (or media) having computer-readable program instructions thereon for causing a processor to execute aspects of the present invention.
[0057] A computer-readable storage medium can be a tangible device capable of retaining and storing instructions for use by an instruction execution device. A computer-readable storage medium can be, for example, but not limited to, electronic storage devices, magnetic storage devices, optical storage devices, electromagnetic storage devices, semiconductor storage devices, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes: portable computer disks, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disk read-only memory (CD-ROM), digital universal disk (DVD), memory sticks, floppy disks, mechanical encoding devices such as punch cards or protrusions in slots having instructions recorded thereon, and any suitable combination of the foregoing. As used herein, a computer-readable storage medium should not be construed as a transient signal itself, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through waveguides or other transmission media (e.g., light pulses through fiber optic cables), or electrical signals transmitted through wires.
[0058] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to a corresponding computing / processing device or to an external computer or external storage device via a network (e.g., the Internet, a local area network, a wide area network, and / or a wireless network). The network may include copper transmission cables, optical transmission fibers, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards them to a computer-readable storage medium within the corresponding computing / processing device.
[0059] Computer-readable program instructions used to perform the operations of this invention may be assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, or source code or object code written in any combination of one or more programming languages, including object-oriented programming languages (such as Smalltalk, C++, etc.) and conventional procedural programming languages (such as the "C" programming language or similar programming languages). The computer-readable program instructions may be executed entirely on a user's computer, partially on a user's computer, as a standalone software package, partially on a user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter case, the remote computer may be connected to the user's computer via any type of network or may be connected to an external computer (e.g., via the Internet using an Internet service provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGAs), or programmable logic arrays (PLAs) may execute computer-readable program instructions by utilizing state information from the computer-readable program instructions to perform aspects of this invention.
[0060] This document describes various aspects of the invention with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the present disclosure. It should be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.
[0061] These computer-readable program instructions may be provided to a processor of a general-purpose computer, a special-purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / actions specified in one or more blocks of a flowchart and / or block diagram. These computer-readable program instructions may also be stored in a computer-readable storage medium that causes a computer, programmable data processing apparatus, and / or other device to operate in a particular manner, thereby comprising an article of manufacture containing instructions that implement aspects of the functions / actions specified in one or more blocks of a flowchart and / or block diagram.
[0062] These computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus, or other device to produce a computer-implemented process, thereby causing the instructions to be executed on the computer, other programmable apparatus, or other device to perform the functions / actions specified in one or more boxes of a flowchart and / or block diagram.
[0063] It should be understood that although this disclosure includes a detailed description of cloud computing, the implementation of the teachings described herein is not limited to cloud computing systems. Rather, embodiments of the invention can be implemented in conjunction with any other type of computer system now known or developed hereafter.
[0064] Cloud computing is a service delivery model that enables convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing power, memory, storage, applications, virtual machines, and services), which can be rapidly provisioned and released with minimal management effort or interaction with the service provider. This cloud model may include at least five features, at least three service models, and at least four deployment models.
[0065] The characteristics are as follows:
[0066] On-demand self-service: Cloud consumers can unilaterally and automatically provide computing power, such as server time and network storage, as needed, without requiring human interaction with the service provider.
[0067] Extensive network access: Capabilities are available through networks and accessed via standard mechanisms that facilitate the use of heterogeneous thin client or thick client platforms (e.g., mobile phones, laptops, and PDAs).
[0068] Resource pooling: A provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, where different physical and virtual resources are dynamically assigned and reassigned as needed. There is a sense of location independence because consumers typically do not have control or knowledge of the exact location of the resources provided, but may be able to specify the location at a higher level of abstraction (e.g., country, state, or data center).
[0069] Rapid flexibility: The ability to provide capacity quickly and flexibly, automatically scaling down and up rapidly in some situations to scale up rapidly. For consumers, the available supply capacity often appears unlimited and can be purchased in any quantity at any time.
[0070] Measurable services: Cloud systems automatically control and optimize resource usage by leveraging metering capabilities at a level of abstraction appropriate to the service type (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency to both service providers and consumers.
[0071] The service model is as follows:
[0072] Software as a Service (SaaS): This provides consumers with the ability to use the provider's applications running on cloud infrastructure. The applications can be accessed from different client devices via a thin client interface such as a web browser (e.g., web-based email). Consumers do not manage or control the underlying cloud infrastructure, including the network, servers, operating system, storage, or even individual application capabilities, with possible exceptions such as limited user-specific application configuration settings.
[0073] Platform as a Service (PaaS): This provides consumers with the ability to deploy applications created or acquired by the consumer using programming languages and tools supported by the provider onto cloud infrastructure. Consumers do not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but they have control over the deployed applications and the configuration of any application hosting environment.
[0074] Infrastructure as a Service (IaaS): The capabilities offered to consumers are processing, storage, networking, and other basic computing resources that enable consumers to deploy and run arbitrary software, which may include operating systems and applications. Consumers do not manage or control the underlying cloud infrastructure, but rather have control over the operating system, storage, deployed applications, and potentially limited control over selected networking components (e.g., host firewalls).
[0075] The deployment model is as follows:
[0076] Private cloud: A cloud infrastructure that operates solely for an organization. It can be managed by the organization or a third party and can exist on-site or off-site.
[0077] Community cloud: A cloud infrastructure shared by several organizations and supporting a specific community with shared concerns (e.g., tasks, security requirements, policies, and compliance considerations). It can be managed by an organization or a third party and can exist on-site or off-site.
[0078] Public cloud: Makes cloud infrastructure available to the public or large industry groups and is owned by an organization that sells cloud services.
[0079] Hybrid cloud: A cloud infrastructure is a combination of two or more clouds (private, community, or public) that remain a single entity but are bound together by standardized or proprietary technologies that enable data and applications to be portable (e.g., cloud bursting for load balancing between clouds).
[0080] Cloud computing systems are service-oriented, focusing on statelessness, loose coupling, modularity, and semantic interoperability. The core of cloud computing is its infrastructure, which includes a network of interconnected nodes.
[0081] See now Figure 5The illustration depicts a cloud computing system 50. As shown, the cloud computing system 50 includes one or more cloud computing nodes 10 to which local computing devices used by cloud consumers can communicate. These local computing devices include, for example, personal digital assistants (PDAs) or cellular phones 54A, desktop computers 54B, laptop computers 54C, and / or automotive computer systems 54N. The nodes 10 can communicate with each other. They can be physically or virtually grouped (not shown) in one or more networks, such as private clouds, community clouds, public clouds, or hybrid clouds, or combinations thereof, as described above. This allows the cloud computing system 50 to provide infrastructure, platforms, and / or software as services that cloud consumers do not need to maintain on their local computing devices. It should be understood that... Figure 5 The types of computing devices 54A-N shown are intended to be illustrative only, and computing node 10 and cloud computing system 50 can communicate with any type of computerized device via any type of network and / or network-addressable connection (e.g., using a web browser).
[0082] See now Figure 6 ), demonstrating a cloud computing system 50 ( Figure 5 This provides a set of functional abstractions. It should be understood beforehand. Figure 6 The components, layers, and functions shown are intended to be illustrative only, and embodiments of this disclosure are not limited thereto. As described, the following layers and corresponding functions are provided:
[0083] The hardware and software layer 60 includes hardware and software components. Examples of hardware components include: a mainframe 61; a RISC (Reduced Instruction Set Computer) based server 62; a server 63; a blade server 64; a storage device 65; and network and networking components 66. In some embodiments, software components include network application server software 67 and database software 68.
[0084] The virtualization layer 70 provides an abstraction layer from which the following examples of virtual entities can be provided: virtual server 71; virtual storage 72; virtual network 73, including virtual private network; virtual application and operating system 74; and virtual client 75.
[0085] In one example, management layer 80 may provide the following functionalities: Resource Provisioning 81 provides dynamic procurement of computing resources and other resources used to perform tasks within the cloud computing system. Metering and Pricing 82 provides cost tracking as resources are used within the cloud computing system and bills or invoices for the consumption of these resources. In one example, these resources may include application software licenses. Security provides authentication for cloud consumers and tasks, as well as protection for data and other resources. User Portal 83 provides access to the cloud computing system for consumers and system administrators. Service Level Management 84 provides cloud computing resource allocation and management to meet required service levels. Service Level Agreement (SLA) Planning and Fulfillment 85 provides pre-scheduling and procurement of cloud computing resources based on anticipated future needs according to the SLA.
[0086] Workload layer 90 provides examples of the capabilities that can be utilized from cloud computing systems. Examples of workloads and capabilities that may be provided from this layer include: map creation and navigation 91; software lifecycle management 92; virtual classroom education delivery 93; data analysis and processing 94; transaction processing 95; and application configuration tools 96 according to embodiments of this disclosure.
[0087] Those skilled in the art will understand that many improvements and modifications can be made to the foregoing exemplary embodiments without departing from the scope of this disclosure.
Claims
1. A computer automation method for supporting the deployment of an application on a server, the server providing configuration groups available for use by applications deployed on the server, the method comprising: The required configuration of the application is matched with the available configurations in the configuration group, wherein for each required configuration that matches at least one available configuration in the configuration group, one of the available configurations is selected, and wherein for each required configuration that does not match, an error message specifying its unavailability is generated; Examine the desired configuration for each selection to identify the references contained therein, which are for the required further configuration; The matching is performed again for each of the further configurations described; Iterate through the checks and matches to follow the references until all such references are exhausted by a configuration that successfully matches the desired configuration with an available configuration, and generate one or more error messages indicating the unavailability of the desired configuration; and Output a configuration report specifying the available configurations that have been selected as required by the application, and specifying one or more error messages if not all required configurations match the available configurations.
2. The computer automation method according to claim 1, wherein, The method further includes, assuming all required configurations have been matched with available configurations: Based on the configuration report, configure the server to run the application; and Deploy the application on the server.
3. The computer automation method according to claim 1, wherein, When the desired configuration matches only one available configuration, that configuration is selected, and when the desired configuration matches multiple available configurations that provide a suitable candidate for selection, the user is prompted to select from the suitable candidate via a user interface.
4. The computer automation method according to claim 1, wherein, The application includes at least one artifact and performs the matching, checking, execution, and iteration individually for each artifact.
5. The computer automation method according to claim 4, wherein, The at least one artifact includes at least one process flow artifact.
6. The computer automation method according to claim 5, wherein, The server includes multiple processing nodes, and each processing node is associated with a requirement for at least one configuration, wherein each process flow artifact defines the process flow of the application based on how the application traverses the processing nodes.
7. The computer automation method according to claim 1, wherein, The configurations are categorized according to type, and matching of configurations requires matching of types.
8. The computer automation method according to claim 1, wherein, The configuration group is associated with a set of constraints that define conditions to be satisfied by the selected configuration, and the method further includes checking that the selected configuration satisfies the constraints.
9. A computer automation method for supporting the deployment of an application on a server, the server providing configuration groups available for use by applications deployed on the server, the method comprising: The required configuration of the application is matched with the available configurations in the configuration group, wherein for each required configuration that matches at least one available configuration in the configuration group, one of the available configurations is selected, and wherein for each required configuration that does not match, an error message specifying its unavailability is generated; Examine each selected desired configuration to identify the references it contains for the required further configuration; The matching is performed again for each of the further configurations described; Iterate through the checks and matches to follow the references until all such references are exhausted by the configuration that successfully matches the desired configuration with the available configuration and one or more desired missing configurations are generated; Update the application using the one or more missing configurations; and Output a configuration report that specifies the available configurations that have been selected as required by the application, and specifies one or more generated configurations if not all required configurations match the available configurations.
10. The computer automation method according to claim 9, wherein, The method further includes, assuming all required configurations have been matched with available configurations: Based on the configuration report, configure the server to run the application; and Deploy the application on the server.
11. The computer automation method according to claim 9, wherein, When the desired configuration matches only one available configuration, the configuration is selected, and when the desired configuration matches multiple available configurations that provide appropriate candidates for selection, the user is prompted to select from the appropriate candidates via a user interface.
12. The computer automation method according to claim 9, wherein, The application includes at least one artifact and performs the matching, checking, execution, and iteration individually for each artifact.
13. The computer automation method according to claim 12, wherein, The at least one artifact includes at least one process flow artifact.
14. A computer program product storing a computer program, the computer program including a software code portion that, when run on a computing device, causes the computing device to perform a method for supporting the deployment of an application on a server, the server providing a configuration group usable by an application deployed on the server, the method comprising: The required configuration of the application is matched with the available configurations in the configuration group, wherein for each required configuration that matches at least one available configuration in the configuration group, one of the available configurations is selected, and wherein for each required configuration that does not match, an error message specifying its unavailability is generated; Examine each selected desired configuration to identify the references it contains for the required further configuration; The matching is performed again for each of the further configurations described; Iterate through the checks and matches to follow the references until all such references are exhausted by a configuration that successfully matches the desired configuration with an available configuration, and generate an error message indicating the unavailability of the desired configuration; and Output a configuration report specifying the available configurations that have been selected as required by the application, and specifying an error message if not all required configurations have been matched with available configurations.
15. The computer program product according to claim 14, wherein, The method further includes, assuming all required configurations have been matched with available configurations: Based on the configuration report, configure the server to run the application; and Deploy the application on the server.
16. The computer program product according to claim 14, wherein, When the desired configuration matches only one available configuration, the configuration is selected, and when the desired configuration matches multiple available configurations that provide appropriate candidates for selection, the user is prompted to select from the appropriate candidates via a user interface.
17. A server device, comprising a configuration group and an application configuration tool, the configuration group being usable by an application deployed on the server device, the application configuration tool being operable to support the deployment of the application on the server device in the following ways: Match the configuration required by the application with the configurations available in the configuration group, wherein... For each desired configuration that matches at least one available configuration in the configuration group, one of the available configurations is selected, and for each desired configuration that does not match, an error message specifying its unavailability is generated; Examine each selected desired configuration to identify the references it contains for the required further configuration; The matching is performed again for each of the further configurations described; Iterate through the checks and matches to follow the references until all such references are exhausted by a configuration that successfully matches the desired configuration with an available configuration, and generate an error message indicating the unavailability of the desired configuration; and Output a configuration report specifying the available configurations that have been selected as required by the application, and specifying an error message if not all required configurations match the available configurations.
18. The server device according to claim 17, wherein, If all required configurations match the available configurations, the application configuration tool can further operate to: Based on the configuration report, configure the server device to run the application; and The application is deployed on the server device.
19. The server device according to claim 17, wherein, When the required configuration matches only one available configuration, the application configuration tool is further operable to select the configuration, and wherein when the required configuration matches multiple available configurations that provide a suitable candidate for selection, the user is prompted to select from the suitable candidate via a user interface.
20. The server device according to claim 17, wherein, The application includes at least one artifact, and performs the matching, checking, execution, and iteration for each artifact separately.
21. The server device according to claim 20, wherein, The at least one artifact includes at least one process flow artifact.
22. The server device according to claim 21, wherein, The server device includes multiple processing nodes, and each processing node is associated with a requirement for at least one configuration, wherein each processing artifact defines the processing flow of the application based on how the application traverses the processing nodes.
23. The server device according to claim 17, wherein, The configurations are categorized according to type, and matching of the configurations requires matching of the types.
24. The server device according to claim 17, wherein, The configuration group is associated with a set of constraints that define the conditions to be satisfied by the selected configuration, and the application configuration tool is further operable to check that the selected configuration satisfies the constraints.