Method for supporting deployment of applications on a server, server device, and program

The method automates the matching and configuration of server deployment objects, addressing complex interdependencies in distributed networks by iteratively resolving configuration mismatches and generating detailed reports, ensuring complete deployment configurations.

JP7809192B2Active Publication Date: 2026-01-30INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2024500544
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-07-23
Filing Date
2022-07-08
Publication Date
2026-01-30
Estimated Expiration
2042-07-08

AI Technical Summary

Technical Problem

Existing methods for deploying applications on servers face challenges in efficiently matching and configuring required configuration objects across complex distributed network architectures, where applications can assume both server and client roles, leading to intricate interdependencies and numerous configuration types, including vendor-specific objects, which can grow over time.

Method used

A computer-automated method and program that iteratively matches required configurations with available ones, generates error messages for unmatched configurations, and outputs a configuration report detailing selected and missing configurations, while handling constraints and dependencies among configuration objects.

Benefits of technology

Facilitates efficient deployment of applications by ensuring complete configuration object sets are provided, reducing errors and manual intervention, and providing detailed reports on missing configurations.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007809192000001
    Figure 0007809192000001
  • Figure 0007809192000002
    Figure 0007809192000002
  • Figure 0007809192000003
    Figure 0007809192000003
Patent Text Reader

Abstract

A method is provided to support the deployment of applications to a server having a set of configurations available to the application deployed to the server. For each configuration required by the application, a method is provided in which it is matched to the configurations available at the server, and if there are multiple possible matches, one is selected and an error message is generated if there is no match. Each selected configuration is then examined and iterated to identify any references contained in the selected configuration that themselves require further configuration. The iteration of examination and matching, which may follow references, continues until all such references are exhausted, either by a match or by failure to match and the resulting generation of an error message. Finally, a configuration report is output specifying the selected configurations and an error message if not all required configurations were matched to available configurations.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present disclosure relates to a computer program, a computer program product, and a computer-implemented method for supporting configuration of a server for application deployment. [Background technology]

[0002] To prepare an application for deployment to a server, it is necessary to configure the server by selecting the appropriate configuration objects. The selection must consider the application's process flow, as defined by one or more process flow artifacts. In some cases, an application may be defined exclusively by one or more process flow artifacts. In other cases, there may additionally be other types of artifacts used to define the application.

[0003] Deploying applications with the aid of configuration objects is an important approach in distributed network architectures, such as enterprise service buses (ESBs). In distributed network architectures, many applications may be deployed across multiple hardware and software platforms with complex interdependencies, resulting in any given application potentially taking on either a server role or a client role as needed, creating a flexible web of client-server relationships. ESB applications typically have many configuration types. In a given distributed computer system, there may be multiple configuration objects of any given configuration type; for example, different objects of the same type may be provided for different environments (e.g., development, test, replication, production).

[0004] A configuration object is an instance of a given configuration type. Some configuration types may be standard, while others may be vendor-specific. There can be 100 or more configuration objects. The number of configuration types also tends to grow over time as more functionality is added. Examples of configuration objects are those related to third-party connector accounts, connections to trust stores (repositories of digital certificates such as public keys), and Open Database Connectivity (ODBC) details or server policies. Configuration objects have descriptors. For example, an application flow artifact may contain a descriptor that specifies the environment the application requires to run successfully.

[0005] To configure an application for deployment to a particular server, a user is typically presented with a list of available configuration objects for each configuration type and is 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, there is provided a computer-automated method for supporting the deployment of applications to a server provided with a set of available configurations for use by applications deployed to the server, the method including: matching configurations required by the application to available configurations in the set of configurations, wherein for each required configuration matched with at least one available configuration in the set of configurations, selecting one of the available configurations and generating an error message for each unmatched required configuration specifying that the respective required configuration is unavailable; examining each selected required configuration to identify any references to further required configurations contained in each selected required configuration; performing matching again for each said further configuration; repeating the examining and matching of subsequent references until all such references are exhausted by one of the successful matches between a required configuration and an available configuration and generating an error message indicating that the required configuration is unavailable; and outputting a configuration report specifying the selected available configurations as required by the application and an error message if not all required configurations have been matched to available configurations.

[0007] According to an embodiment of the present invention, there is provided a computer program stored on a computer-readable medium and loadable into an internal memory of a computing device having software code portions, the computer program, when executed on the computing device, for performing a computer-automated method for supporting deployment of an application to a server provided with a set of available configurations for use by the application to be deployed to the server, the method including: matching configurations required by the application to available configurations in the set of configurations; for each required configuration matched with at least one available configuration in the set of configurations, selecting one of the available configurations; and for each required configuration that cannot be matched, designating that each required configuration is unavailable. and generating an error message indicating that a required configuration is unavailable; and outputting a configuration report specifying the selected available configurations as required by the application and an error message if not all required configurations have been matched to available configurations.

[0008] According to an embodiment of the present invention, there is provided a computer-automated method for supporting the deployment of applications to a server provided with a set of available configurations for use by applications deployed to the server, the method including: matching configurations required by the application to available configurations in the set of configurations, wherein for each required configuration matched with at least one available configuration in the set of configurations, selecting one of the available configurations and generating an error message for each unmatched required configuration specifying that the respective required configuration is unavailable; inspecting each selected required configuration to identify any references to required further configurations included in each selected required configuration; performing matching again for each said further configuration; repeating the inspection and matching following the references until all such references are exhausted by one of the successful matches between a required configuration and an available configuration; generating one or more required missing configurations; updating the application with the one or more missing configurations; and outputting a configuration report specifying the selected available configurations as required by the application and one or more generated configurations if not all required configurations were matched to available configurations.

[0009] According to an embodiment of the present invention, there is provided a computer program product storing a computer program having software code portions that, when executed on a computing device, cause the computing device to perform a method for supporting the deployment of applications to a server provided with a set of available configurations for use by the applications deployed on the server, the method including: matching configurations required by the application with available configurations in the set of configurations, wherein for each required configuration matched with at least one available configuration in the set of configurations, selecting one of the available configurations and generating, for each unmatched required configuration, an error message specifying that the each required configuration is unavailable; inspecting each selected required configuration to identify any references to further required configurations included in each selected required configuration; performing matching again for each said further configuration; repeating the inspection and matching of subsequent references until all such references are exhausted by one of the successful matches between a required configuration and an available configuration and generating an error message indicating that the required configuration is unavailable; and outputting a configuration report specifying the selected available configurations as required by the application and an error message if not all required configurations have been matched to available configurations.

[0010] 10. The server device according to claim 9, further comprising: a server apparatus configured to: provide a set of available configurations for use by applications deployed on the server apparatus; and an application configuration tool operable to support deployment of applications on the server apparatus by: matching configurations required by the application with available configurations in the set of configurations; for each required configuration matched with at least one available configuration in the set of configurations, selecting one of the available configurations and, for each unmatched required configuration, generating an error message specifying that the each required configuration is unavailable; examining each selected required configuration to identify any references to further required configurations included in each selected required configuration; performing the matching again for each said further configuration; repeating the examining and matching of subsequent references until all such references are exhausted by one of the successful matches between a required configuration and an available configuration; and generating an error message indicating that the required configuration is unavailable; and outputting a configuration report specifying the selected available configurations as required by the application and an error message if not all required configurations have been matched to available configurations.

[0011] In the following, the invention will be further explained, by way of example only, with reference to exemplary embodiments illustrated in the drawings. [Brief explanation of the drawings]

[0012] [Figure 1] 1 is a flow chart of a method according to one embodiment of the present disclosure. [Figure 2] FIG. 1 is a block diagram of an example node capable of hosting an embodiment of the present disclosure. [Figure 3] FIG. 1 is a schematic diagram illustrating an example of a network of three nodes. [Figure 4]FIG. 1 is a diagram of a typical computing device that may be used as part of a computing system according to some embodiments of the present invention. [Figure 5] FIG. 1 is a diagram of a cloud computing system according to one embodiment of the present disclosure. [Figure 6] FIG. 2 is a diagram of abstraction model layers according to one embodiment of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION

[0013] In the following detailed description, for purposes of explanation and not limitation, specific details are set forth 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 practiced in other embodiments that depart from these specific details.

[0014] For brevity, we refer to process flow artifacts as flow artifacts.

[0015] Consider an example where it is desirable to deploy an application A on a server S with a single flow artifact F. Flow artifact F contains a node N that requires the configuration of type T.

[0016] The first part of the analysis can examine the content of the application to be deployed and its configuration object requirements. Because the content of an application may contain external references to other configuration objects, it is important to note that all configuration objects required to deploy an application on a particular server cannot necessarily be inferred from the application's content alone. A node may interact with one or more other nodes, which may be internal or external to the application. Examples of external nodes are a node for sending email (e.g., to Gmail) and a node for adding information to a remotely hosted customer relationship management (CRM) platform (e.g., creating a sales lead). In our example, the configuration tool can analyze the list of configuration objects available on server S to find a configuration object of configuration type T required by flow artifact F. If there are multiple candidates, the configuration tool can suggest one or present all candidates and prompt the user to select one for node N. If there is only one candidate, the configuration tool can automatically select this candidate for node N. (If there are no candidates, an error message can be generated to indicate that a suitable configuration object is not available.) The selected configuration object can be labeled T1.

[0017] The configuration tool can then continue further by analyzing the newly selected configuration object T1. If T1 is self-contained, it can configure a complete configuration for deploying application A (or at least its flow artifact F) on the intended server, and no further iterations are necessary to configure flow artifact F. On the other hand, T1 may reference another node P that requires the configuration of type C, for which an appropriate configuration object C1 exists. The configuration tool can then add C1 along with T1 as part of A's configuration object requirements.

[0018] Further iterations can then be performed as needed if the newly added configuration in a previous iteration is not self-contained, but rather references or links to one or more other nodes that have their own configuration object requirements, and these references can be resolved without error by adding additional configuration objects. At some point in the iteration, there may be no more links to follow and the iteration may come to an end.

[0019] The configuration tool can then output a configuration report for the application to be deployed. The report can specify selected (i.e., available) configuration objects required by the application and, if not all required configuration objects are found, an error message specifying which configuration objects are missing. For any given application, or more specifically, for its flow artifacts, the configuration report can represent either a complete configuration (no errors) or an incomplete configuration (errors). A complete configuration can define a complete set of configuration objects that is sufficient to enable the application to be deployed on a server, such as a virtualized server in a distributed network environment. An incomplete configuration can define an incomplete set of configuration objects, as well as one or more error messages providing information about each missing configuration object, preferably as detailed and specific as possible. Examples of specific error messages are: ·Unable to find configuration objects of type "Account" that contain "Salesperson Account". 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 one to include it.

[0020] In another aspect, the configuration tool can determine whether the application includes required configuration objects, and for any missing configuration objects, the configuration tool can generate the configuration objects and update the application configuration based on the deployments associated with the application. Additionally, the configuration tool can generate one or more notification messages providing information about each generated configuration object, with this information preferably being as detailed and specific as possible.

[0021] If a complete configuration is not provided, the method may populate the current set of configuration objects available to the server with a user error message listing any required configuration objects that are not available.

[0022] Figure 1 is a flow chart illustrating an example of the method described above. Step S1: The user selects the first flow artifact of the application. Step S2: The content of the flow artifact is analyzed to find the required configuration objects. Step S3: Each required configuration object is either automatically selected (i.e., if only one instance satisfies the constraints), or the user is prompted via the user interface to select if there are multiple instances that satisfy the constraints (optionally with recommendations), or the user is informed if the object is not available (i.e., the instance does not satisfy the constraints) by generating an error message. Step S4: The analysis is carried out as follows. - It is checked whether all constraints are satisfied with the current configuration object selection (if yes, no further action is required). If no, it is checked whether an alternative selection of configuration objects can be found that satisfies the constraints (step S4.1). This loop can be automatically terminated after a certain number of unsuccessful attempts to find a combination of objects that satisfies all constraints. - If yes, a configuration object selection is made (or several possible options are proposed, or the user is prompted to make a neutral choice among several possible options). - If no configuration object selection is found that satisfies all constraints, an error message is generated by making an entry in the errors section of the configuration report. Step S5: For the current selection of configuration objects, the system checks for any inconsistencies (name clashes, cardinality restrictions). If possible, any inconsistencies can be automatically corrected (e.g., by renaming to resolve name clashes). Alternatively, the inconsistencies can be presented as part of the configuration report. Step S6: The content of the object selected in the previous iteration of step S3 is analyzed. For objects found in the content of the object selected in the previous iteration (the traversal immediately preceding step S3), step S3 is continued so that further objects can be selected. Analysis of the objects can then be performed as before (steps S4 and S5). Step S7: Go to step S4 until no more new configuration objects are added and all constraints are satisfied (as far as possible). Step S8: If the application involves the deployment of multiple flow artifacts, select the next flow artifact (step S8.1) and repeat from step S2 until all flow artifacts have been processed.

[0023] Embodiments of the method may be configured to enable configuration objects to be selected taking into account various different kinds of constraints, i.e., relationship requirements, involving the configuration object and its associated configuration type, as just described.

[0024] The first type of constraint can be on the relationship between flow artifacts and configuration types, and three examples include: First, cardinality may be associated with the required configuration type. For example, when deploying a flow artifact, exactly one "accounts.yaml" file must be selected for each "serverconf.yaml" file. Second, there may be dependencies based on flow artifacts; therefore, if a processing node of a certain type is in the process flow of a flow artifact, the flow artifact must include all configuration objects associated with this processing node. For example, a database node requires a sample data source configuration information file, such as "odbc.ini," with the correct content. Third, all assets of a certain type may be required to exist in the configuration type; for example, all accounts used in the flow artifact must exist in "accounts.yaml."

[0025] The second kind of constraint can be on the relationship between configuration types, and includes two examples of this. First, there may be mutually exclusive types that cannot be selected together. For example, if a user selects a type A instance, this may preclude the selection of a type B instance. A specific example would be "credentials.yaml" and "accounts.yaml," which cannot both be selected. Second, there may be type dependencies with min-max requirements. For example, if a user selects configuration type A, a certain number of type B configuration objects must be selected, where the number must range from a minimum to a maximum value.

[0026] The third type of constraint can be on the relationships between configuration objects. Three examples include: First, it may be necessary to avoid content collisions between selected configuration objects. When deploying a flow artifact, a user may select several of these objects to configure the flow artifact for deployment to the intended server. Note that there are no name collisions during selection, as a name collision would invalidate the selection of the configuration objects. For example, a configuration object of type "setdbparms" contains credentials that must be identified by unique names. Second, there may be content dependencies between configuration objects that must be respected. For example, selecting a type A configuration object that contains a reference may require that the reference be defined in a type B configuration object. Third, there may be a requirement that all references from a selected type A configuration object must exist in a type B configuration object. For example, a configuration object of type EVENT_STREAM_CREDENTIALS contains several variables marked with $, and all such variables must be defined in a configuration object of type EVENT_STREAM_CREDENTIALS_SECRET.

[0027] FIG. 2 is a block diagram of an example server instance capable of hosting an embodiment of the present disclosure. Each server can provide a runtime environment for applications and message flows and resources, including message flows between applications. Resources may further include static and / or shared libraries accessible by applications. Messages can be routed from senders to receivers based on the content of the message. Message flows can control message routing. Message flows can describe the operations to be performed on incoming messages and the sequence in which the operations are executed. Each message flow can comprise a series of steps used to process the message and connections that define the route through the processing. A server environment is provided as shown.

[0028] Figure 3 is a schematic diagram illustrating an example network of three nodes, Node A, Node B, and Node C, linked by flows and configuration objects. The nodes are shown connected in series for the example. The links between configuration objects, illustrated by lines, are not physical links but rather dependencies inferred by the method described above based on the contents of the configuration objects. To enable this, Node B and Node C must be configured to allow them to properly connect to the database. The "odbc.ini" file contains the connection details, and the "setdbparms" file contains the credentials. There can be only one "odbc.ini" file per system, so the correct one must be selected. There can be more than one "setdbparms" file, but when there are multiple such files, they cannot have conflicting entries. The first parse of the "find odbc.ini_1" command matches Node B, from which it can be seen that "setdbparms_1" is also needed. It can then be seen that Node C is not configured, so "odbc.ini_2" should be tried instead. As a result, "odbc.ini_2" requires both "setdbparms_1" and "setdbparms_2". With this set of configuration, the system is complete and it is viable to connect to a database.

[0029] In summary, an application configuration tool and associated method are provided for supporting the deployment of applications to a server having a set of configurations available for applications deployed to the server. The method attempts to match each configuration required by the application to a configuration available on the server. If there are multiple potential matches, one is selected. When there is no match, an error message is generated. The method iterates, examining each selected configuration to identify any references contained in the selected configuration that themselves require further configuration. The iteration of examining and matching following references continues until all such references are exhausted, either by a match or by a failure to match and the resulting generation of an error message. Finally, a configuration report can be output specifying the selected configurations and an error message if not all required configurations were matched to available configurations.

[0030] FIG. 4 illustrates the structure of a computer system 501 and a computer program 507 used to implement an embodiment of the present invention. The computer system may be a server as described above, and the computer program 507 may be an application as described above. The computer system 501 includes a processor 503 for providing processor resources coupled through one or more I / O interfaces 509 to one or more hardware data storage devices 511 and one or more I / O devices 513 capable of managing graphic object requests, and a display 515 capable of displaying graphic objects. The processor 503 may also be connected to one or more memory devices 505. At least one memory device 505 having memory resources includes stored computer programs 507. Each computer program comprises computer-executable instructions. The data storage device 511 may store the computer programs 507. Each computer program 507 stored in the storage device 511 is configured to be executed by the processor 503 via the memory device 505. The processor 503 executes a stored computer program 507 .

[0031] It will be apparent to those skilled in the art that all or a portion of the logical process steps of the preferred embodiments may alternatively be embodied in a logic device or multiple logic devices comprising logical elements arranged to perform the logical process steps of the method, and that such logical elements may comprise hardware components, firmware components, or a combination thereof.

[0032] 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 method steps, and that such logic elements may comprise components such as logic gates, for example, in a programmable logic array or an application specific integrated circuit. Such logic arrangements may be further embodied by enabling elements for temporarily or permanently establishing logic structures within such arrays or circuits, for example, using a virtual hardware description language, stored and transmitted using a fixed or transmittable carrier medium.

[0033] In a further alternative embodiment, the present invention may be realized in the form of a computer-implemented method of deploying a service comprising the step of deploying a computer program that is deployed on a computer infrastructure and that, when executed thereon, is operable to cause a computing device to perform all of the steps of the method.

[0034] It will be appreciated that the methods and components of the preferred embodiments may alternatively be embodied, in whole or in part, in a parallel computing system comprising two or more processors for executing parallel software.

[0035] Further embodiments of the present invention are computer program products defined in terms of systems and methods, which may include a computer-readable storage medium (or media) having computer-readable program instructions for causing a processor to carry out aspects of the present invention.

[0036] A computer-readable storage medium may be a tangible device that can hold and store instructions for use by an instruction-execution device.

[0037] The present invention may be a system, a method, and / or a computer program product, which may include a computer-readable storage medium (or media) having computer-readable program instructions for causing a processor to perform aspects of the present invention.

[0038] 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 may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes portable computer diskettes, 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 versatile disk (DVD), memory stick, floppy disk, mechanically encoded devices such as punch cards or ridge-in-groove structures having instructions recorded thereon, and any suitable combination of the foregoing. Computer-readable storage media as used herein should not be construed as being signals that are transitory in nature, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (e.g., light pulses passing through fiber optic cable), or electrical signals transmitted through wires.

[0039] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to each computing / processing device or to an external computer or external storage device over a network, such as the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof. The network may include copper transmission cables, optical fiber transmissions, wireless transmissions, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions for storage on a computer-readable storage medium within the respective computing / processing device.

[0040] Computer-readable program instructions for carrying out the operations of the present invention may be source or object code written in any combination of one or more programming languages, including assembler instructions, instruction set architecture (ISA) instructions, machine language instructions, machine-dependent instructions, microcode, firmware instructions, state-setting data, or conventional procedural programming languages ​​such as the "C" programming language or similar programming languages, such as object-oriented programming languages ​​such as Smalltalk®, C++, or the like. The computer-readable program instructions may execute entirely on the user's computer, partially on the user's computer, as a stand-alone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, or the connection may be to an external computer (e.g., through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuitry, a field programmable gate array (FPGA), or a programmable logic array (PLA) may execute computer readable program instructions by utilizing state information of the computer readable program instructions to individualize the electronic circuitry to implement aspects of the present invention.

[0041] Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the disclosure. It will 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.

[0042] These computer-readable program instructions may be provided to a processor of a general-purpose computer, special-purpose computer, or other programmable data processing apparatus, to produce a machine, whose instructions, executing on the processor of the computer or other programmable data processing apparatus, create means for performing the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams. These computer-readable program instructions may also be stored on a computer-readable storage medium, such that the computer-readable storage medium comprises an article of manufacture containing instructions for performing aspects of the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams, and can direct a computer, programmable data processing apparatus, or other device, or combination thereof, to function in a particular manner.

[0043] The computer-readable program instructions may also be loaded into a computer, other programmable data processing apparatus, or other device to perform a series of operational steps on the computer, other programmable apparatus, or other device to produce a computer-executed process, the instructions executing on the computer, other programmable apparatus, or other device to perform the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.

[0044] Although this disclosure includes a detailed description of cloud computing, it should be understood that implementations of the teachings recited herein are not limited to cloud computer systems. Rather, embodiments of the present invention may be practiced in conjunction with any other type of computer system now known or later developed.

[0045] Cloud computing is a service delivery model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be quickly provisioned and released with minimal administrative effort or interaction with a service provider. This cloud model may include at least five characteristics, at least three service models, and at least four deployment models.

[0046] The characteristics are as follows: On-demand self-service: Cloud users can unilaterally provide computing capacity, such as server time and network storage, automatically as needed, without the need for human interaction with the service provider. Broad Network Access: Capabilities are available over the network and accessed through standard mechanisms that facilitate use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs). Resource Pooling: Provider computing resources are pooled to serve multiple consumers using a multi-tenant model, with various physical and virtual resources dynamically allocated and reallocated on demand. Location independence is meant in that consumers generally have no control or knowledge of the exact location of the resources provided, but may specify location at a higher level of abstraction (e.g., country, state, or data center). Rapid Elasticity: Capacity is rapidly and elastically provisioned, sometimes automatically, to quickly scale out, and rapidly releasable to quickly scale in. To the consumer, the capacity available for provisioning often appears unlimited, and can be purchased in any quantity at any time. Metered Services: Cloud systems automatically control and optimize resource usage (e.g., storage, processing, bandwidth, and active user accounts) by leveraging metering capabilities at some level of abstraction appropriate to the type of service. Resource utilization can be monitored, controlled, and reported, providing transparency to both providers and consumers of the services used.

[0047] The service model is as follows: Software as a Service (SaaS): The consumer is provided with the ability to use a provider's applications running on a cloud infrastructure. The applications are accessible from a variety of client devices through a thin-client interface, such as a web browser (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage, or possibly individual application capabilities, with the possible exception of limited user-specific application configuration settings. Platform as a Service (PaaS): The ability provided to a consumer is to deploy consumer-created or acquired applications, created using programming languages ​​and tools supported by the provider, onto a cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, or storage, but rather exercises control over the deployed applications and, in some cases, the application-hosting environment configuration. Infrastructure as a Service (IaaS): The capability provided to a customer is the provision of processing, storage, networking, and other basic computing resources on which the customer can deploy and run any software, which may include operating systems and applications. The customer does not manage or control the underlying cloud infrastructure, but rather exercises control over the operating systems, storage, deployed applications, and in some cases, limited control over selected networking components (e.g., host firewalls).

[0048] The deployment model is as follows: Private Cloud: The cloud infrastructure is operated solely for the organization. The cloud infrastructure may be managed by the organization or a third party and may be on-site or off-site. Community Cloud: Cloud infrastructure is shared by some organization to support a specific community with shared concerns (e.g., mission, security requirements, policies, and compliance considerations). The cloud infrastructure may be managed by the organization or a third party and may be on-site or off-site. Public Cloud: Cloud infrastructure is made available to the general public or large industry groups and is owned by organizations that sell cloud services. Hybrid Cloud: A cloud infrastructure is a composite of two or more clouds (private, community, or public) that remain unique entities but are tied together by standard or proprietary technologies that enable data and application portability (e.g., cloud bursting for load balancing between clouds).

[0049] Cloud computer systems are service-oriented, with a focus on statelessness, loose coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure that includes a network of interconnected nodes.

[0050] Referring now to FIG. 5, an illustrative cloud computing system 50 is depicted. As shown, the cloud computing system 50 includes one or more cloud computing nodes 10 with which local computing devices used by cloud users, such as, for example, a personal digital assistant (PDA) or cellular phone 54A, a desktop computer 54B, a laptop computer 54C, or an automobile computer system 54N, or combinations thereof, may communicate. The nodes 10 may also communicate with each other. The nodes 10 may be physically or virtually grouped in one or more networks (not shown), such as private, community, public, or hybrid clouds, or combinations thereof, as described above. This enables the cloud computing system 50 to provide infrastructure, platform, and / or software as a service without requiring cloud users to maintain resources on their local computing devices. The types of computing devices 54A-N shown in FIG. 5 are intended to be illustrative only, and it is understood that computing node 10 and cloud computer system 50 can communicate with any type of computerized device via any type of network, or network-addressable connection (e.g., using a web browser), or both.

[0051] Referring now to Figure 6, a set of functional abstraction layers provided by cloud computer system 50 (Figure 5) is shown. It should be understood in advance that the components, layers, and functions shown in Figure 6 are intended to be illustrative only, and embodiments of the present disclosure are not limited thereto. As depicted, the following layers and corresponding functions are provided:

[0052] Hardware and software layer 60 includes hardware and software components. Examples of hardware components include mainframe 61, RISC (reduced instruction set computer) architecture-based servers 62, servers 63, blade servers 64, storage devices 65, and network and networking components 66. In some embodiments, software components include network application server software 67 and database software 68.

[0053] The virtualization layer 70 provides an abstraction layer in which examples of virtual entities are provided, such as virtual servers 71, virtual storage 72, virtual networks including virtual private networks 73, virtual applications and operating systems 74, and virtual clients 75.

[0054] In one example, management layer 80 may provide the following functions: Resource provisioning 81 dynamically procures computing and other resources utilized to perform tasks within the cloud computing system; Metering and pricing 82 tracks costs as resources are utilized within the cloud computing system and bills or invoices for the usage of these resources; In one example, these resources may include application software licenses; Security verifies the identity of cloud users and tasks and protects data and other resources; User portal 83 provides users and system administrators with access to the cloud computing system; Service level management 84 allocates and manages cloud computing resources to ensure required service levels are met; and Service level agreement (SLA) planning and execution 85 pre-provisions and procures cloud computing resources to anticipate future requirements in accordance with SLAs.

[0055] The workload layer 90 provides examples of functions for which cloud computing systems are utilized. Examples of workloads and functions provided from this layer include mapping and navigation 91, software lifecycle management 92, virtual classroom instruction delivery 93, data analytics processing 94, transaction processing 95, and application configuration tools 96 according to embodiments of the present disclosure.

[0056] It will be apparent to those skilled in the art that many improvements and modifications can be made to the exemplary embodiments described above without departing from the scope of the present disclosure.

Claims

1. 1. A method for supporting the deployment of an application to a server, the server being provided with a set of available configurations for use by the application to be deployed on the server, the method comprising: matching configurations required by the application with available configurations in the set of configurations, where for each required configuration matched with at least one available configuration in the set of configurations, selecting one of the available configurations, and for each required configuration that cannot be matched, generating an error message specifying that the respective required configuration is unavailable; inspecting each selected required configuration, and analyzing the content of the required configuration during said inspection to identify references to further configurations that are required for the execution of said required configuration, which references are specified by said required configuration; performing said matching again for each said further configuration; repeating said checking and said matching following said references until all said references are exhausted by one of successful matching of a required configuration with an available configuration, and generating one or more error messages indicating that the required configuration is unavailable; outputting a configuration report specifying the selected available configurations required by the application and the one or more error messages if not all required configurations were matched to available configurations; A method comprising:

2. If all required configurations have been matched to available configurations, the method configuring the server to run the application based on the configuration report; deploying the application on the server; The method of claim 1 further comprising:

3. 2. The method of claim 1, wherein when a required configuration is matched to only one available configuration, the required configuration is selected, and when a required configuration is matched to multiple available configurations each providing suitable candidates for selection, the user is prompted to select from among the suitable candidates via a user interface.

4. The method of claim 1 , wherein the application includes at least one artifact, and the matching, checking, performing, and repeating are performed separately for each artifact.

5. The method of claim 4 , wherein the at least one artifact comprises at least one process flow artifact.

6. 6. The method of claim 5, wherein the server comprises a plurality of processing nodes, each processing node associated with requirements for at least one configuration, and each process flow artifact defines a process flow of the application in terms of how the application traverses the processing nodes.

7. The method of claim 1 , wherein the configurations are categorized by type and the matching of configurations requires matching of types.

8. 2. The method of claim 1, wherein the set of configurations is associated with a set of constraints that define conditions to be satisfied by a selected configuration, the method further comprising checking whether the selected configuration satisfies the constraints.

9. 1. A computer program stored on a computer-readable medium and loadable into an internal memory of a computing device having software code portions, the computer program, when executed on the computing device to perform a method for supporting deployment of applications to a server provided with a set of configurations available for use by applications deployed to the server, the program causing the computer to: matching configurations required by the application with available configurations in the set of configurations, where for each required configuration matched with at least one available configuration in the set of configurations, selecting one of the available configurations, and for each required configuration that cannot be matched, generating an error message specifying that the respective required configuration is unavailable; inspecting each selected required configuration, and analyzing the content of the required configuration during said inspection to identify references to further configurations that are required for the execution of said required configuration, which references are specified by said required configuration; performing said matching again for each said further configuration; repeating said checking and said matching following said references until all said references are exhausted by one of successful matches between required configurations and available configurations, and generating an error message indicating that the required configuration is unavailable; outputting a configuration report specifying the selected available configurations required by the application and the error message if not all required configurations were matched to available configurations; A computer program that executes the following:

10. 1. A method for supporting the deployment of an application to a server, the server being provided with a set of available configurations for use by the application to be deployed on the server, the method comprising: matching configurations required by the application with available configurations in the set of configurations, where for each required configuration matched with at least one available configuration in the set of configurations, selecting one of the available configurations, and for each required configuration that cannot be matched, generating an error message specifying that the respective required configuration is unavailable; inspecting each selected required configuration, and analyzing the content of the required configuration during said inspection to identify references to further configurations that are required for the execution of said required configuration, which references are specified by said required configuration; performing said matching again for each said further configuration; repeating the checking and matching following the references until all the references are exhausted by one of the successful matches between the required configuration and the available configuration, and generating one or more required missing configurations; updating the application with the one or more missing configurations; outputting a configuration report specifying the selected available configuration required by the application and the one or more generated configurations if not all required configurations were matched to available configurations; A method comprising:

11. If all required configurations have been matched to available configurations, the method configuring the server to run the application based on the configuration report; deploying the application on the server; The method of claim 10 further comprising:

12. 11. The method of claim 10, wherein when the required configuration is matched to only one available configuration, the configuration is selected, and when the required configuration is matched to multiple available configurations, each providing suitable candidates for selection, the user is prompted to select from among the suitable candidates via a user interface.

13. The method of claim 10 , wherein the application includes at least one artifact, and the matching, checking, performing, and repeating are performed separately for each artifact.

14. The method of claim 13 , wherein the at least one artifact comprises at least one process flow artifact.

15. A computer program product having the computer program according to claim 9 recorded on a computer-readable recording medium.

16. If all required configurations have been matched to available configurations, the method configuring the server to run the application based on the configuration report; deploying the application on the server; 16. The computer program product of claim 15, further comprising:

17. 16. The computer program product of claim 15, wherein when a required configuration is matched to only one available configuration, the configuration is selected, and when a required configuration is matched to multiple available configurations each providing suitable candidates for selection, the computer program product prompts a user to select from among the suitable candidates via a user interface.

18. a server device, a set of configurations available for use by applications deployed on said server device; 1. An application configuration tool, comprising: matching configurations required by the application with available configurations in the set of configurations, where for each required configuration matched with at least one available configuration in the set of configurations, selecting one of the available configurations, and for each required configuration that cannot be matched, generating an error message specifying that the respective required configuration is unavailable; inspecting each selected required configuration, and analyzing the content of the required configuration during said inspection to identify references to further configurations that are required for the execution of said required configuration, which references are specified by said required configuration; performing said matching again for each said further configuration; repeating said checking and said matching following said references until all said references are exhausted by one of successful matches between required configurations and available configurations, and generating an error message indicating that the required configuration is unavailable; outputting a configuration report specifying the selected available configurations required by the application and the error message if not all required configurations were matched to available configurations; and the application configuration tool operable to support deployment of applications to the server device.

19. When all required configurations have been matched to available configurations, the application configuration tool: configuring the server device to run the application based on the configuration report; deploying the application on the server device; 20. The server device of claim 18, further operable to:

20. 20. The server apparatus of claim 18, wherein the application configuration tool is further operable to select a configuration when a required configuration is matched to only one available configuration, and to prompt a user to select from among the appropriate candidates via a user interface when a required configuration is matched to multiple available configurations providing respective appropriate candidates for selection.

21. 20. The server device of claim 18, wherein the application includes at least one artifact, and the matching, checking, performing, and iterating are performed separately for each artifact.

22. 22. The server apparatus of claim 21, wherein the at least one artifact includes at least one process flow artifact.

23. 23. The server apparatus of claim 22, wherein the server apparatus comprises a plurality of processing nodes, each processing node being associated with requirements for at least one configuration, and each process flow artifact defining a process flow of the application in terms of how the application traverses the processing nodes.

24. 20. The server device of claim 18, wherein the configurations are categorized by type, and the matching of configurations requires matching of types.

25. 20. The server apparatus of claim 18, wherein the set of configurations is associated with a set of constraints that define conditions to be satisfied by a selected configuration, and the application configuration tool is further operable to check whether the selected configuration satisfies the constraints.

Citation Information

Patent Citations

  • Method of changing business system configuration, management computer, and program for method of changing business system configuration

    JP2008021111A

  • Techniques for conditional deployment of application artifacts

    US20120066674A1