Configuration discovery for computer applications

By extracting and verifying the environmental attributes of containerized computer applications, and using knowledge graphs and active learning models to generate deployment files, the problem of configuration information discovery in the modernization process of traditional applications is solved, realizing the automated containerization and efficient deployment of traditional applications.

CN115809098BActive Publication Date: 2026-07-10INTERNATIONAL BUSINESS MACHINE CORPORATION

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
INTERNATIONAL BUSINESS MACHINE CORPORATION
Filing Date
2022-09-09
Publication Date
2026-07-10

Smart Images

  • Figure CN115809098B_ABST
    Figure CN115809098B_ABST
Patent Text Reader

Abstract

This disclosure relates to configuration discovery of computer applications. Techniques are provided for discovering configuration information of one or more computer applications. For example, one or more embodiments described herein can include a system that can include a memory that can store computer executable components. The system can also include a processor that is operatively coupled to the memory and that can execute the computer executable components stored in the memory. The computer executable components can include a configuration component that can discover configuration information associated with a containerized computer application. The configuration information can be characterized by a set of environment properties that are extracted by querying source code of the containerized computer application.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This disclosure relates to configuration discovery for containerized computer applications, and more specifically to data-driven discovery of configuration settings for a set of computer applications, including legacy applications. Background Technology

[0002] Legacy applications may include computer applications that have become obsolete over time (e.g., regarding functionality, deployment, and / or platform). Legacy applications can be modernized for deployment in one or more newer computing environments. For example, a legacy application may be modernized for deployment in a cloud computing environment. Modernizing a computer application may involve capturing the application via one or more container images using one or more containerization technologies. However, containerization technologies may not cover the configuration settings for efficiently executing container image variables in the target computing environment. Summary of the Invention

[0003] The following overview is presented to provide a basic understanding of one or more embodiments of the invention. This overview is not intended to identify key or important elements, or to depict any scope of a particular embodiment or any scope of the claims. Its sole purpose is to present concepts in a simplified form as a prelude to the more detailed description that follows. In one or more embodiments described herein, systems, computer-implemented methods, apparatuses, and / or computer program products that can facilitate the discovery of configuration information are described.

[0004] According to one embodiment, a system is provided. The system may include memory storing computer-executable components. The system may also include a processor operatively coupled to the memory and capable of executing the computer-executable components stored in the memory. The computer-executable components may include a configuration component that can discover configuration information associated with a containerized computer application. The configuration information may be characterized by a set of environmental attributes extracted by querying the source code of the containerized computer application. An advantage of such a system could be that it facilitates the modernization of one or more legacy applications.

[0005] In some examples, the system may include an application containerization advisory component that can identify containers for a computer application based on a knowledge graph and application information representing one or more dependencies of the computer application. An advantage of such a system is the automated containerization of traditional computer applications.

[0006] According to one embodiment, a computer-implemented method is provided. This computer-implemented method may include the discovery of configuration information associated with a containerized computer application through a system discovery operatively coupled to a processor. The configuration information may be characterized by a set of environment attributes extracted by querying the source code of the containerized computer application. An advantage of such a computer-implemented method is the automatic discovery of configuration information across a traditional set of applications.

[0007] In some examples, the computer-implemented method may further include identifying containers of a computer application by the system based on a knowledge graph and application information representing one or more dependencies of the computer application. Moreover, the computer-implemented method may include extracting environment attributes from the container's image file by the system, wherein the environment attributes are defined by key-value pairs. An advantage of this computer-implemented method is that it can incorporate container attributes when configuration information is discovered.

[0008] According to one embodiment, a computer program product for computer application configuration discovery is provided. The computer program product may include a computer-readable storage medium having program instructions embodied therein. The program instructions are executable by a processor to enable the processor to discover configuration information associated with a containerized computer application, wherein the configuration information is characterized by a set of environment attributes extracted by querying the source code of the containerized computer application. An advantage of this computer program product is the automatic modernization of legacy applications.

[0009] In some examples, program instructions can further enable the processor to generate a candidate list of key-value pairs based on multiple environmental attributes extracted from the computer application. Moreover, the program instructions can enable the processor to validate the candidate list via an active learning model. The advantage of such a computer program product can be the use of active learning to enhance the accuracy of configuration information discovery. Attached Figure Description

[0010] Figure 1 A block diagram of an example non-limiting system that can discover configuration information for one or more containerized computer applications according to one or more embodiments described herein is shown.

[0011] Figure 2 A schematic diagram illustrating an example non-limiting process for identifying one or more containers for one or more computer applications according to one or more embodiments described herein.

[0012] Figure 3 A block diagram of an example non-limiting system for extracting one or more environmental attributes from a container image and / or application information, according to one or more embodiments described herein, is shown.

[0013] Figure 4A schematic diagram illustrates example non-limiting predefined and / or user-defined environment properties that can be extracted for configuration discovery according to one or more embodiments described herein.

[0014] Figure 5 The illustration shows an example non-limiting extraction process that facilitates the extraction of one or more environmental attributes from one or more container image descriptions according to one or more embodiments described herein.

[0015] Figure 6 The illustration shows an example non-limiting extraction process that facilitates the extraction of one or more environmental attributes from one or more computer applications according to one or more embodiments described herein.

[0016] Figure 7 A block diagram of an example non-limiting system that can employ active learning to enhance the accuracy of one or more configuration determinations according to one or more embodiments described herein is shown.

[0017] Figure 8 An illustration of an example, non-limiting active learning model that can be used to verify discovered configuration information according to one or more embodiments described herein is shown.

[0018] Figure 9 A block diagram of an example non-limiting system according to one or more embodiments described herein is shown, which may include generating one or more configuration files to facilitate the deployment of one or more computer applications in a modern computing environment.

[0019] Figure 10 An illustration is shown of an example non-limiting data transformation process that can facilitate the generation of one or more configuration files according to one or more embodiments described herein.

[0020] Figure 11 A flowchart illustrating an example non-limiting computer implementation of a method that can be used to automate the discovery of configuration information for one or more computer applications according to one or more embodiments described herein.

[0021] Figure 12 A cloud computing environment according to one or more embodiments described herein is depicted.

[0022] Figure 13 An abstract model layer is described according to one or more embodiments described herein.

[0023] Figure 14 A block diagram illustrating an example non-limiting operating environment that may facilitate one or more embodiments described herein is shown. Detailed Implementation

[0024] The following detailed description is illustrative only and is not intended to limit the embodiments and / or their application or use. Furthermore, it is not intended to be construed as being limited by any express or implied information presented in the preceding background or overview or detailed description sections.

[0025] One or more embodiments will now be described with reference to the accompanying drawings, wherein like reference numerals are used throughout to refer to like elements. In the following description, numerous specific details are set forth for purposes of explanation in order to provide a more thorough understanding of one or more embodiments. However, it will be apparent, in various cases, that one or more embodiments may be practiced without these specific details.

[0026] Considering the problems of other implementations of modernized legacy applications, this disclosure can be implemented to generate solutions to one or more of these problems by discovering one or more configuration settings associated with a containerized computer application for deployment in a target computer environment. Advantageously, one or more embodiments described herein can employ one or more active learning models to further enhance configuration discovery beyond rule-based methods. Furthermore, one or more embodiments described herein can be used to discover configuration settings, although: corresponding configuration settings may have different expressions depending on the origin; configuration settings may be located in various documents (e.g., may lack standardization); environment attributes may vary from one computer application to another; and / or environment attributes may be hard-coded into the source code of said computer application.

[0027] Various embodiments of the present invention may relate to computer processing systems, computer-implemented methods, apparatuses, and / or computer program products that facilitate efficient, effective, and autonomous (e.g., without direct human guidance) configuration discovery for one or more conventional applications. For example, one or more embodiments described herein can identify configuration information regarding one or more computer applications (e.g., conventional applications). For instance, configuration information may be identified by extracting predefined attributes and / or user-specified attributes from a container image, said attributes being extracted from different components of the computer application via graph-based feature extraction techniques. Additionally, the extracted attributes may be validated via one or more active learning models, wherein the validated attributes can be further mapped to target containers to generate one or more deployment files. Deployment files may include, for example, configuration information expressed as mapping attributes for deploying the corresponding container on a target computing environment.

[0028] Computer processing systems, computer-implemented methods, apparatuses, and / or computer program products employ hardware and / or software to solve problems that are inherently highly technical (e.g., computer application configuration discovery), non-abstract, and cannot be performed by humans as a set of mental actions. For example, individuals or groups cannot readily employ graph-based feature extraction to parse one or more computer applications and determine configuration information for targeted deployment of the computer applications in a modern computing environment. Moreover, by employing one or more graph-based feature extraction techniques to identify computer environment attributes that can be further verified via one or more active learning models, one or more embodiments described herein can constitute a technical improvement over conventional configuration information discovery. Furthermore, one or more embodiments described herein can be practically applied by facilitating the modernization of one or more legacy applications for deployment in one or more target computing environments (such as cloud computing environments). For example, various embodiments described herein can discover configuration information for one or more legacy applications that can facilitate the efficient deployment and / or execution of said one or more legacy applications in a modern computing environment.

[0029] Figure 1 A block diagram of an example non-limiting system 100 is shown, which can discover configuration information for one or more (e.g., a set) of computer applications (e.g., traditional applications). For brevity, repeated descriptions of similar elements employed in other embodiments described herein are omitted. Aspects of systems (e.g., system 100, etc.), apparatus, or processes in various embodiments of the invention may constitute one or more machine-executable components embodied within one or more machines (e.g., embodied in one or more computer-readable media (one or more media) associated with one or more machines). Such components, when executed by one or more machines (e.g., computers, computing devices, virtual machines, combinations thereof, and / or the like), cause the machines to perform the described operations.

[0030] like Figure 1 As shown, system 100 may include one or more servers 102, one or more networks 104, and / or input devices 106. Server 102 may include a configuration component 110. Configuration component 110 may further include a communication component 112 and / or an application containerization advisory (“ACA”) component 114. Additionally, server 102 may include at least one memory 116 or otherwise associated with at least one memory 116. Server 102 may also include a system bus 118, which may be coupled to various components, such as, but not limited to, configuration component 110 and associated components, memory 116, and / or processor 120. Although in Figure 1 Server 102 is shown, but in other embodiments, multiple devices of different types can be used. Figure 1 The features shown are associated with or include Figure 1 The features shown. Furthermore, server 102 can communicate with one or more cloud computing environments.

[0031] One or more networks 104 may include wired and wireless networks, including but not limited to cellular networks, wide area networks (WANs) (e.g., the Internet), or local area networks (LANs). For example, server 102 may communicate with one or more input devices 106 using virtually any desired wired or wireless technology (and vice versa), including, but not limited to, cellular, WAN, Wi-Fi, Wi-Max, WLAN, Bluetooth, combinations thereof, and / or the like. Furthermore, although configuration component 110 may be located on one or more servers 102 in the illustrated embodiment, it should be understood that the architecture of system 100 is not limited thereto. For example, configuration component 110 or one or more components of configuration component 110 may be located at another computer device (such as another server device, client device, etc.).

[0032] One or more input devices 106 may include one or more computerized devices, including but not limited to: personal computers, desktop computers, laptop computers, cellular phones (e.g., smartphones), computerized tablets (e.g., including processors), smartwatches, keyboards, touchscreens, mice, combinations thereof, and / or the like. One or more input devices 106 may be used to input application information 122 about one or more computer applications into system 100, thereby sharing the data with server 102 (e.g., via a direct connection and / or via one or more networks 104). For example, one or more input devices 106 may send data to communication component 112 (e.g., via a direct connection and / or via one or more networks 104). Additionally, one or more input devices 106 may include one or more displays that can present one or more outputs generated by system 100 to a user. For example, one or more displays may include, but are not limited to: cathode ray tube displays (“CRTs”), light-emitting diode displays (“LEDs”), electroluminescent displays (“ELDs”), plasma display panels (“PDPs”), liquid crystal displays (“LCDs”), organic light-emitting diode displays (“OLEDs”), combinations thereof, etc.

[0033] In various embodiments, one or more input devices 106 and / or one or more networks 104 may be used to input one or more settings and / or commands into system 100. For example, in the various embodiments described herein, one or more input devices 106 may be used to operate and / or manipulate server 102 and / or associated components. Additionally, one or more input devices 106 may be used to display one or more outputs (e.g., displays, data, visualizations, etc.) and / or associated components generated by server 102. Furthermore, in one or more embodiments, one or more input devices 106 may be included within and / or operatively coupled to a cloud computing environment.

[0034] In various embodiments, an entity may input application information 122 about one or more computer applications (e.g., a collection of traditional applications) into system 100 via one or more input devices 106. For example, application information 122 may be input into system 100 via questionnaires, infrastructure data, and / or static analysis. For example, application information 122 may include textual descriptions of one or more computer applications (e.g., via Bluecat, Pathfinder, combinations thereof, and / or the like). In another instance, application information 122 may include infrastructure data such as application dependencies (e.g., via a configuration management database (“CMBD”), Bluecat tools, application inventory tools, Excel files, combinations thereof, etc.). In yet another instance, application information 122 may include application data via, for example, CAST highlighting, transport agents (“TA”), message transport agents (“MTA”), static and / or dynamic analyzers of application source code, combinations thereof, etc. For example, application information 122 may include data describing where the one or more computer applications are deployed, the dependencies of the one or more computer applications, and / or subject matter expert (“SME”) survey data about the one or more computer applications. In another example, application information 122 may include software artifacts (e.g., source code artifacts), data about one or more attributes of the one or more computer applications, and / or deployment data about the one or more computer applications.

[0035] In one or more embodiments, ACA may generate one or more container recommendations based on application information 122 and one or more knowledge graphs (“KG”). The one or more KGs may provide a graphical representation of the data through identified entities and relationships. In various embodiments, entities may characterize data about one or more computer applications (e.g., from application information 122), including but not limited to: operating system information, application data, one or more databases, middleware, combinations thereof, and / or the like. In one or more embodiments, relationships may characterize one or more dependencies of one or more applications. For example, an example relationship may include: an application “runs on” an operating system (i.e., “runs on” is a relationship between a given computer application and a given operating system on which the computer application is executed). In various embodiments, the knowledge graph may represent entities via one or more nodes and relationships via one or more connections and / or edges of the graph.

[0036] In one or more embodiments, ACA component 114 may perform data normalization of application information 122. For example, ACA component 114 may organize application information 122 by, for example, extracting one or more components of application information 122 (e.g., databases, middleware, and / or other relevant information). Additionally, the ACA component may use one or more KG-based inference techniques to determine (e.g., infer) missing input in application information 122. For example, given the input “.NET Framework” from application information 122, ACA component 114 may determine, based on one or more KGs, that the operating system of a given computer application may be Windows. In one or more embodiments, ACA component 114 may perform data normalization by employing one or more natural language processing techniques (such as “named entity recognition”); wherein ACA component 114 may recommend versions and / or variants from the input. For example, given the input “red hat v6.9” from application information 122, ACA component 114 may identify the variant as Red Hat Linux and identify the version as 6.9.

[0037] In various embodiments, ACA component 114 may generate one or more container recommendations to optimize the modernization of one or more computer applications characterized by application information 122. Further, ACA component 114 may generate one or more recommendations regarding the disposal of application information 122, such as whether the computer application is recommended for containerization, refactoring, repackaging, or remaining as is. For example, ACA component 114 may treat application details (e.g., the application's technology stack) as one or more input variables, and then map the input variables to named entities existing in one or more KGs. Once the named entities are mapped, ACA component 114 may generate one or more container recommendations. Based on the recommended containers for the application, ACA component 114 may further determine disposal information. Moreover, for container recommendations, ACA component 114 may store information about candidate container images from data repositories (e.g., Docker Hub and / or Openshift) in one or more KGs.

[0038] Figure 2 The diagram illustrates an example of a non-limiting system 100 according to one or more embodiments described herein, including the operation of one or more input devices 106 and / or ACA component 114. For brevity, repeated descriptions of similar elements employed in other embodiments described herein are omitted. Figure 2 Example application collection 202 describes traditional applications (e.g., J2EE applications), including computer applications named "Daytrader", "Plants", "Jpetstore", and "Acmeair".

[0039] like Figure 2 As shown, application information 122 can be collected via application set 202 based on, for example, questionnaires, infrastructure data, and / or static analysis. In various embodiments, ACA component 114 can analyze the application information and generate one or more profiles 204 for each of the computer applications. For example, ACA component 114 can normalize the data of application information 122 into one or more templates to generate corresponding profiles 204. According to the various embodiments described herein, ACA component 114 can further generate one or more container recommendations (e.g., recommendations 206a, 206b, 206c, 206d) to facilitate the containerization of each of the computer applications in application set 202 (e.g., thereby facilitating the modernization of application set 202). Container recommendations can depict, for example, recommended container images (e.g., Apache Tomcat and / or MySQL from Docker Hub) based on application information.

[0040] Figure 3The accompanying diagram illustrates an example non-limiting system 100 that also includes an extraction component 302, according to one or more embodiments described herein. For brevity, repeated descriptions of similar elements employed in other embodiments described herein are omitted. In various embodiments, the extraction component 302 may extract environment attributes from one or more container recommendations (e.g., generated by the ACA component 114) and / or associated deployment files.

[0041] In various embodiments, environment attributes can be represented as <key, value> pairs, where the "key" can represent the attribute name and the "value" can represent the attribute's value in the context of a given computer application and / or container. Further, environment attributes can be predefined attributes and / or user-defined attributes. Example predefined attributes may include, but are not limited to: "_ENV MONGO_PORT" is 27017 for MongoDB, "FROM" is mysql_latest for MSQL, "FROM_ibmcom:db2" for DB2, and combinations thereof. Example user-defined attributes may include, but are not limited to: account credentials for MySQL (e.g., username and / or password), ENV MYSQL_DATABASE, ENV MYSQL_USER, ENV MYSQL_PASSWORD, combinations thereof, and / or the like. In one or more embodiments, one or more environment attributes can be extracted from one or more containers, public repositories, and / or computer applications. For example, Figure 4 An exemplary container 402 is depicted that can containerize one or more computer applications together with example predefined <key, value> pair extracts and / or user-defined <key, value> pair extracts. For the sake of brevity, repeated descriptions of similar elements used in other embodiments described herein are omitted.

[0042] In one or more embodiments, the extraction component 302 may employ one or more crawling algorithms 502 (e.g., configured crawling algorithms) to crawl one or more predefined and / or user-defined attributes from the container image description for each computer application. For example, Figure 5An exemplary environmental attribute extraction 500 that can be performed by extraction component 302 is depicted. For example, extraction component 302 may utilize one or more source map files 504 to map the values ​​of the extracted environmental attributes to canonical data 506 (e.g., as exemplified by first example canonical data 506a and / or second example canonical data 506b), which may be stored in canonical storage device 508 (e.g., located in one or more memories 116). One or more source map files 504 may be created by one or more SMEs and input into system 100 via one or more input devices 106. For example, one or more source map files 504 may be represented as terms in another markup language (“YAML”) file. In one or more embodiments, one or more source map files 504 may be generated and / or edited by an entity community familiar with a given framework. One or more source map files 504 may contain one or more relationships between a source format (e.g., crawled by one or more crawler algorithms 502) and canonical data 506 (e.g., stored in canonical storage device 508). The basis of one or more source map files 504 may be a canonical format. For example, if the canonical name of the database user identifier is "database.user(database.user)", then one or more source mapping files 504 can map variables representing user identifiers in the framework to "database.user" (e.g., similar to environment variable mapping).

[0043] Figure 6 A diagram illustrating another example of environment attribute extraction 600 that can be performed by extraction component 302 according to one or more embodiments described herein is shown. For brevity, repeated descriptions of similar elements employed in other embodiments described herein are omitted. In one or more embodiments, extraction component 302 may extract one or more environment attributes from application information 122.

[0044] For example, application information 122 collected via one or more questionnaires can identify one or more entities not present in the configuration data and / or provide search context relating to: "where the configuration information resides, code attributes, configuration files, web application data (e.g., xML), combinations thereof, and / or similar elements." In another instance, infrastructure data included in application information 122 can depict one or more application dependencies, such as the identification of one or more application output ports. In yet another instance, application information 122 can be analyzed via one or more static program analysis techniques to extract one or more environmental attributes.

[0045] In one or more embodiments, extraction component 302 can perform rule-based searches of computer application and / or application information 122, which allows for fuzzy searches for specific keys and returns values ​​associated with the matched keys. This can be used for specific application keys, such as MYSQL_DATABASE. In one or more embodiments, extraction component 302 can specify the search key as "mysql database" or "mysql db", etc. In one or more embodiments, extraction component 302 can perform pattern-based searches by finding rules in rows that fuzzily match a specific pattern. For example, in the case of webApplication id="daytrader8", performing a rule-based search on "id" can return many results that may not be relevant to the desired attribute extraction. Pattern-based searches can provide an appropriate level of filtering for such search queries by requiring that the rules occur in rows that are the same as the specific pattern (in this case, "WebApplication"). In the case of rule-based fuzzy matching, extraction component 302 can specify the pattern as, for example, "webapplication" or "web app". In one or more embodiments, the extraction component 302 can perform a context-based search that searches for one or more keys within a hierarchical context of a configuration file. The context of the target rule can occur in adjacent lines or even several lines from the specified context. For example, consider the following example:

[0046] FROM:tomcat:8.0.20-jre28

[0047] WORKDIR:$CATALINA_HOME / webapps /

[0048] Extracting component 302 allows you to locate the working directory of the Tomcat server.

[0049] Configuration files can have a hierarchical structure (e.g., line-based indentation and / or identification of parts using special tokens such as "-" or brackets). Such hierarchical information can be captured in a graph structure (e.g., a configuration graph), and a graph neural network ("GNN") can be used to implement rule-based, pattern-based, and / or context-based fuzzy searches. The GNN can use training data to learn patterns within the configuration graph. The trained model can then be used to implement fuzzy rule-based, pattern-based, and context-based searches of configuration information.

[0050] In one or more embodiments, extraction component 302 may use one or more environment attribute keys as queries to search all or nearly all (e.g., source code, configuration files, deployment files, combinations thereof, and / or the like included in application information 122) of a given computer application (e.g., a traditional application) to locate possible locations of value components of the environment attributes. Figure 6 As illustrated, extraction component 302 may employ one or more graph-based feature extraction techniques to query application information 122 and, taking the query into account, locate potential keys and values. Furthermore, extraction component 302 may employ a fuzzy value search method to rank and / or recommend one or more values ​​of one or more environmental attributes. Figure 6 The document also shows that the extracted <key, value> pairs can be formatted into one or more normalized templates 602. Fuzzy search can generate one or more relevant environmental attributes with values ​​for a given query. Values ​​determined for said one or more environmental attributes can be accepted or rejected based on one or more associated confidence measures (e.g., based on a threshold defined for the associated confidence measure). Furthermore, query search can facilitate locating the position of one or more environmental attributes present in a computer application.

[0051] In one or more embodiments, extraction component 302 may generate one or more additional questionnaires to collect application information about environmental attribute values ​​missing from the filled template. For example, one or more questionnaires generated by extraction component 302 may be shared with one or more input devices 106 (e.g., via one or more networks 104) to directly collect value data and / or collect contextual information about the location of the value data.

[0052] Figure 7 A diagram is shown of an example non-limiting system 100 including an active learning component 702 according to one or more embodiments described herein. For brevity, repeated descriptions of similar elements employed in other embodiments described herein are omitted. In one or more embodiments, the active learning component 702 may employ one or more active learning models to further enhance the accuracy of environmental attribute extraction.

[0053] In one or more embodiments, the active learning component 702 can collect and rank the extracted environmental attributes. For example, the extracted environmental attributes can be ranked based on one or more confidence measures associated with the environmental attributes, wherein the one or more confidence measures characterize the amount of confidence that the system 100 has in the accuracy of the value components of the extracted environmental attributes. Further, the ranked extracted environmental attributes can be shared with one or more users of one or more applications (e.g., SMEs for a given conventional application from which environmental attributes are extracted). In various embodiments, the extracted environmental attributes can be shared with one or more users based on environmental attributes having associated confidence measures equal to or less than a defined threshold. Thus, environmental attributes with low confidence measures (e.g., compared to a defined threshold) can be enhanced via user feedback. For example, the ranked extracted environmental attributes can be shared with one or more users for hit / miss marking, where one or more users can mark an attribute as accurate or inaccurate. Based on the hit / miss marking, the active learning component 702 can resolve ambiguities in the extracted environmental attributes and / or conflicting information to produce more accurate value components.

[0054] Figure 8 A diagram illustrating an example non-limiting active learning scheme that can be used by the active learning component 702 to train one or more classifiers for an active learning model according to one or more embodiments described herein. For brevity, repeated descriptions of similar elements employed in other embodiments described herein are omitted. Figure 8 As shown, the active learning component 702 can refer to the required attribute set 802 to analyze one or more templates 602 generated by the extraction component 302. Figure 8 Example template 602b, illustrating various embodiments described herein, includes environmental attributes that can be extracted by extraction component 302. Further, Figure 8 The example requires a set of properties 802a, which may include environment properties such as those required for the execution and / or deployment of a given container (e.g., identified by the active learning component 702).

[0055] For example, the active learning component 702 may organize a set of environment attributes (e.g., <key, value> pairs) required for deploying a given container, which may include one or more recommended given computer applications (e.g., legacy applications) generated by the ACA component 114. In one or more embodiments, the active learning component 702 may learn environment attributes (e.g., key and / or value components) from user interaction (e.g., via one or more input devices 106) and / or reuse the learned environment attributes for new datasets. Additionally, the active learning component 702 may organize a set of extracted environment attributes (e.g., extracted via extraction component 302 according to different embodiments described herein). The active learning component 702 may then compare the set of extracted environment attributes (e.g., included in one or more templates 602) with a set of desired environment attributes (e.g., included in one or more desired attribute sets 802) to identify one or more value components for each key component of the desired environment attribute.

[0056] For each key component of the required environment attribute, the active learning component 702 can generate a candidate list of associated values ​​from the extracted environment attribute. Furthermore, the active learning component 702 can analyze each of the candidate values ​​with respect to multiple metrics. Example metrics may include, but are not limited to: proximity to one or more known key values ​​(e.g., from similar key values ​​known, such as database_host (database_host) and / or mysql_database in a given example, and...). Figure 8 This is represented as "closeness to known k1", "closeness to known k2", and / or "closeness to known k3"; where k1, k2, and k3 may consider corresponding key values); semantic similarity between the format of the key label (e.g., how the desired attribute is represented) and the key components associated with the value candidate; whether the value candidate matches a previously determined value for a given key label used for the desired context attribute; combinations thereof; for example, where a database for the application is predetermined, such values ​​can be used to map to new entities similar to one or more existing entities. Figure 8 As shown, the required environmental attributes, candidate list, and determined metrics are formatted into a standardized format, such as Table 804. In one or more embodiments, the candidate list may be ranked within Table 804 based on one or more calculated metrics.

[0057] Additionally, Table 804 can be shared with one or more users (e.g., one or more SMEs related to one or more containerized computing applications) to facilitate hit / miss tagging and / or correction of conflicting entries. In one or more embodiments, Table 804 can serve as a reference table of known and / or frequently used tags for KG entries. In various embodiments, the active learning component 702 can utilize the previously generated Table 804 and / or previously executed hit / miss tagging to create a training dataset with known environmental attribute values. Further, the active learning model can utilize the training dataset to train one or more classifiers to facilitate candidate list curation and / or metric computation. In one or more embodiments, the active learning component 702 can train one or more classifiers by generating a set of environmental attributes (e.g., key-value pairs), shuffling the set, and splitting the set into known and unknown data. Thus, the active learning model can be trained on known data and used to predict unknown data.

[0058] Figure 9 A diagram illustrating an example non-limiting system 100, including a deployment component 902, according to one or more embodiments described herein. For brevity, repeated descriptions of similar elements employed in other embodiments described herein are omitted. In various embodiments, the deployment component 902 may generate one or more profiles for deploying one or more containerized computing applications in a target computing environment. For example, the deployment component 902 may generate one or more profiles based on extracted environment attributes, wherein one or more of the extracted environments may include <key, value> pairs validated and / or augmented via an active learning component (e.g., based on user feedback). Furthermore, the one or more profiles may include environment attributes mapped to a format compatible with the target deployment platform.

[0059] Figure 10 An illustration shows an example non-limiting configuration file generation 1000 that can be executed by deployment component 902 according to one or more embodiments described herein. For brevity, repeated descriptions of similar elements employed in other embodiments described herein are omitted. Figure 10 As shown, deployment component 902 can accept one or more target mapping files 1002, one or more extracted templates 602 and / or specification data 506 (e.g., stored in one or more specification storage devices 508) as input to generate one or more target configuration files 1004.

[0060] According to the embodiments described herein, one or more extracted templates 602 may include one or more extracted environmental attributes. Further, the content of one or more templates 602 may be validated and / or expanded via one or more active learning models (e.g., by active learning component 702 according to one or more embodiments described herein). Additionally, deployment component 902 may retrieve specification data 506 from one or more specification storage devices 508. According to the embodiments described herein, specification data 506 may include environmental attributes extracted and / or normalized from one or more container descriptions via one or more crawler algorithms 502. In various embodiments, one or more target mapping files 1002 may depict one or more relationships between the format of specification data 506 and the format of target profile 1004. For example, depending on the target computing environment, environmental attributes may be mapped and / or generate related artifacts. Based on one or more target mapping files 1002, deployment component 902 may map the environmental attributes depicted in templates 602 and / or specification data 506 to the format adopted by target profile 1004. The format of target profile 1004 may vary depending on the computing environment in which a given computer application will be deployed. Therefore, converting configuration information represented by multiple extracted environmental attributes into one or more target configuration files facilitates the deployment of one or more containerized computer applications (e.g., traditional applications) into modern computing environments (e.g., cloud computing environments).

[0061] Figure 11 A flowchart illustrating an example, non-limiting computer implementation of a method 1100 for configuration discovery with respect to one or more computer applications, executable by system 100 according to one or more embodiments described herein. For brevity, repeated descriptions of similar elements employed in other embodiments described herein are omitted.

[0062] At 1102, the computer-implemented method 1100 may include identifying (e.g., via ACA component 114) one or more containers for one or more computer applications based on one or more KGs and / or application information 122 characterizing one or more dependencies of one or more computer applications. At 1104, the computer-implemented method 1100 may include extracting (e.g., via extraction component 302) one or more environment attributes from image files of the containers by the system 100, wherein the one or more environment attributes may be defined by key-value pairs. For example, extraction component 302 may employ one or more crawler algorithms 502 according to different embodiments described herein to extract one or more environment attributes from image descriptions of one or more containers.

[0063] At 1106, the computer-implemented method 1100 may include extracting (e.g., via extraction component 302) one or more second contextual attributes from the one or more computer applications by the system 100 querying the computer application and locating the one or more value components using a graph-based feature extraction algorithm. For example, extraction component 302 may query the source code of one or more computer applications according to different embodiments described herein. At 1108, the computer-implemented method 1100 may include generating one or more candidate lists of key-value pairs by the system 100 based on multiple contextual attributes extracted from the one or more computer applications (e.g., via active learning component 702). For example, active learning component 702 may generate one or more tables 804 according to different embodiments described herein.

[0064] At 1110, the computer-implemented method 1100 may include a candidate list validated by system 100 via an active learning model (e.g., via active learning component 702). For example, according to different embodiments described herein, the candidate list may be shared with one or more SMEs for hit or miss marking. At 1112, the computer-implemented method 1100 may include system 100 generating one or more profiles for one or more containerized computer applications (e.g., via deployment component 902) based on the validated candidate list, wherein the one or more profiles may include configuration information for deploying one or more computer applications in one or more target computing environments.

[0065] It should be understood that while this disclosure includes a detailed description of cloud computing, the implementation of the teachings cited herein is not limited to cloud computing environments. Rather, embodiments of the invention can be implemented in conjunction with any other type of computing environment now known or developed hereafter.

[0066] 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, 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.

[0067] The features are as follows:

[0068] 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.

[0069] 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).

[0070] 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).

[0071] 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.

[0072] Measuring 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.

[0073] The service model is as follows:

[0074] Software as a Service (SaaS): This provides consumers with the ability to use the provider's applications running on cloud infrastructure. Applications can be accessed from different client devices via thin client interfaces such as web browsers (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.

[0075] 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.

[0076] Infrastructure as a Service (IaaS): The capabilities provided 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).

[0077] The deployment model is as follows:

[0078] 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.

[0079] 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.

[0080] Public cloud: Makes cloud infrastructure available to the public or large industry groups and is owned by an organization that sells cloud services.

[0081] 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 ported (e.g., cloud bursting for load balancing between clouds).

[0082] Cloud computing environments are service-oriented, focusing on statelessness, loose coupling, modularity, and semantic interoperability. At the heart of cloud computing is the infrastructure comprising a network of interconnected nodes.

[0083] See now Figure 12 The illustration depicts a cloud computing environment 1200. As shown, the cloud computing environment 1200 includes one or more cloud computing nodes 1202, and local computing devices used by cloud consumers (such as, for example, personal digital assistants (PDAs) or cellular phones 1204, desktop computers 1206, laptop computers 1208, and / or automotive computer systems 1210) can communicate with the cloud computing nodes 1202. The nodes 1202 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 environment 1200 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 12 The types of computing devices 1204-1210 shown are intended to be illustrative only, and computing node 1202 and cloud computing environment 1200 can communicate with any type of computerized device via any type of network and / or network-addressable connection (e.g., using a web browser).

[0084] See now Figure 13 This demonstrates the 1200 cloud computing environment ( Figure 12This provides a set of functional abstraction layers. For the sake of brevity, repeated descriptions of similar elements used in other embodiments described herein are omitted. It should be understood beforehand that... Figure 13 The components, layers, and functions shown are intended to be illustrative only, and embodiments of the invention are not limited thereto. As described, the following layers and corresponding functions are provided.

[0085] The hardware and software layer 1302 includes hardware and software components. Examples of hardware components include: a mainframe 1304; a RISC (Reduced Instruction Set Computer) based server 1306; a server 1308; a blade server 1310; a storage device 1312; and a network and network components 1314. In some embodiments, the software components include network application server software 1316 and database software 1318.

[0086] The virtualization layer 1320 provides an abstraction layer from which the following examples of virtual entities can be provided: virtual server 1322; virtual storage 1324; virtual network 1326, including virtual private network; virtual application and operating system 1328; and virtual client 1330.

[0087] In one example, management layer 1332 can provide the functions described below: Resource Provisioning 1334 Provides dynamic procurement of computing resources and other resources used to perform tasks within the cloud computing environment. Metering and Pricing 1336 Provides cost tracking as resources are utilized within the cloud computing environment 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 1338 Provides consumers and system administrators with access to the cloud computing environment. Service Level Management 1340 Provides cloud computing resource allocation and management to ensure that required service levels are met. Service Level Agreement (SLA) Planning and Fulfillment 1342 Provides pre-scheduling and procurement of cloud computing resources based on anticipated future needs according to the SLA.

[0088] Workload layer 1344 provides examples of functionalities that can leverage a cloud computing environment. Examples of workloads and functionalities that can be provided from this layer include: mapping and navigation 1346; software development and lifecycle management 1348; virtual classroom education delivery 1350; data analytics and processing 1352; transaction processing 1354; and configuration discovery 1356. Various embodiments of the invention can be found by referring to [reference needed]. Figure 12 and 13 The cloud computing environment described is used to collect application information 122 and / or extract environment attributes to facilitate the discovery of configuration information for one or more computer applications.

[0089] This invention can be a system, method, and / or computer program product of any possible level of technical detail integration. A computer program product may include a computer-readable storage medium (one or more media) having computer-readable program instructions thereon for causing a processor to execute aspects of the invention. A computer-readable storage medium may be a tangible means capable of retaining and storing instructions for use by an instruction execution device. A computer-readable storage medium may 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 thereof. 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 on which instructions are recorded, and any suitable combination thereof. As stated above, the computer-readable storage medium used herein should not be construed as a temporary signal itself, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through waveguides or other transmission media (e.g., optical pulses through fiber optic cables), or electrical signals transmitted through wires.

[0090] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to a suitable computing / processing device via a network (e.g., the Internet, a local area network, a wide area network, and / or a wireless network), or to an external computer or external storage device. The network may include copper cables, optical 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 suitable computing / processing device.

[0091] 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, integrated circuit configuration 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 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 (including a local area network (LAN) or a wide area network (WAN)) 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 the invention.

[0092] The present invention will now be described with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. 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.

[0093] 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 can instruct a computer, a programmable data processing apparatus, and / or other devices to operate in a particular manner, such that the computer-readable storage medium having the instructions stored therein includes an article of writing comprising instructions for implementing aspects of the functions / actions specified in one or more blocks of a flowchart and / or block diagram.

[0094] 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 computer-implemented processing, such that the instructions executed on the computer, other programmable apparatus, or other device perform the functions / actions specified in one or more boxes of a flowchart and / or block diagram.

[0095] The flowcharts and block diagrams in the accompanying drawings illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. Each block in a flowchart or block diagram may represent a module, segment, or portion of instructions, including one or more executable instructions for implementing a specified logical function. In some alternative implementations, the functions marked in the blocks may occur in a different order than indicated in the figures. For example, depending on the functions involved, two consecutively shown blocks may actually be executed substantially simultaneously, or these blocks may sometimes be executed in reverse order. It should also be noted that each block in the block diagram and / or flowchart illustrations, as well as combinations of blocks in the block diagram and / or flowchart illustrations, may be implemented by a dedicated hardware-based system that performs the specified function or action or executes a combination of dedicated hardware and computer instructions.

[0096] To provide additional context for the different embodiments described herein, Figure 14 The following discussion is intended to provide a general description of a suitable computing environment 1400 in which various embodiments of the embodiments described herein may be implemented. Although the embodiments have been described above in the general context of computer-executable instructions that can run on one or more computers, those skilled in the art will recognize that the embodiments may also be implemented in combination with other program modules and / or as a combination of hardware and software.

[0097] Typically, program modules include routines, programs, components, data structures, etc., that perform specific tasks or implement specific abstract data types. Furthermore, those skilled in the art will recognize that the methods of this invention can be practiced with other computer system configurations, including single-processor or multi-processor computer systems, minicomputers, mainframe computers, Internet of Things (“IoT”) devices, distributed computing systems, and personal computers, handheld computing devices, microprocessor-based or programmable consumer electronics, each of which can be operatively coupled to one or more associated devices.

[0098] The embodiments illustrated herein can also be implemented in a distributed computing environment, where certain tasks are performed by remote processing devices linked via a communication network. In a distributed computing environment, program modules can reside in both local and remote memory storage devices. For example, in one or more embodiments, a computer-executable component can be executed from memory that may include or comprise one or more distributed memory cells. As used herein, the terms "memory" and "memory cell" are interchangeable. Furthermore, one or more embodiments described herein enable the execution of code from a computer-executable component in a distributed manner, for example, by multiple processors working together or cooperating to execute code from one or more distributed memory cells. As used herein, the term "memory" can encompass a single memory or memory cell at one location or multiple memories or memory cells at one or more locations.

[0099] Computing devices typically include a variety of media, which may include computer-readable storage media, machine-readable storage media, and / or communication media, these two terms being used differently from each other herein. A computer-readable storage medium or a machine-readable storage medium can be any available storage medium accessible by a computer, and includes volatile and non-volatile media, removable and non-removable media. By way of example and not limitation, a computer-readable storage medium or a machine-readable storage medium can be implemented in combination with any method or technique used for storing information such as computer-readable or machine-readable instructions, program modules, structured data, or unstructured data.

[0100] Computer-readable storage media may include, but is not limited to: random access memory (“RAM”), read-only memory (“ROM”), electrically erasable programmable read-only memory (“EEPROM”), flash memory or other memory technologies, compact disc read-only memory (“CDROM”), digital universal disc (“DvD”), Blu-ray disc (“BD”) or other optical disc storage, magnetic tape cassettes, magnetic tape, disk storage or other magnetic storage devices, solid-state drives or other solid-state storage devices, or other tangible and / or non-transient media that can be used to store desired information. In this regard, the terms “tangible” or “non-transient” as used herein with respect to storage, memory, or computer-readable media shall be understood to exclude only the propagation of transient signals themselves as a modifier, and shall not waive the rights to all standard storage, memory, or computer-readable media that do not only propagate transient signals themselves.

[0101] A computer-readable storage medium can be accessed by one or more local or remote computing devices, for example via access requests, queries or other data retrieval protocols, for various operations with respect to the information stored in the medium.

[0102] Communication media typically embody computer-readable instructions, data structures, program modules, or other structured or unstructured data as data signals such as modulated data signals (e.g., carrier waves or other transmission mechanisms), and include any medium for delivering or transmitting information. The term "modulated data signal" refers to a signal whose characteristics are set or altered in a manner that encodes information in one or more signals. By way of example and not limitation, communication media include wired media, such as wired networks or direct-line connections, and wireless media, such as acoustic, RF, infrared, and other wireless media.

[0103] See you again Figure 14 Example environment 1400 for implementing various embodiments of the aspects described herein includes a computer 1402, which includes a processing unit 1404, system memory 1406, and a system bus 1408. The system bus 1408 couples system components, including but not limited to system memory 1406, to the processing unit 1404. The processing unit 1404 can be any processor among various commercially available processors. Dual microprocessors and other multiprocessor architectures can also be used as the processing unit 1404.

[0104] System bus 1408 can be any of several types of bus structures capable of further interconnecting to a memory bus (with or without a memory controller), a peripheral bus, and a local bus using any of a variety of commercially available bus architectures. System memory 1406 includes ROM 1410 and RAM 1412. The basic input / output system (“BIOS”) can be stored in non-volatile memory, such as ROM, erasable programmable read-only memory (“EPROM”), or EEPROM, containing basic routines such as those that help transfer information between components within computer 1402 during startup. RAM 1412 may also include high-speed RAM, such as static RAM for caching data.

[0105] Computer 1402 further includes an internal hard disk drive (“HDD”) 1414 (e.g., EiDE, SATA), one or more external storage devices 1416 (e.g., floppy disk drive (“FDD”) 1416, memory stick or flash drive reader, memory card reader, combinations thereof, etc.), and an optical disc drive 1420 (e.g., capable of reading from or writing to CD-ROM discs, DVDs, BDs, etc.). Although the internal HDD 1414 is illustrated as being located within computer 1402, the internal HDD 1414 can also be configured for external use in a suitable chassis (not shown). Furthermore, although not shown in environment 1400, a solid-state drive (“SSD”) can be attached to or replace the HDD 1414 for use. The HDD 1414, external storage device 1416, and optical disc drive 1420 can be connected to system bus 1408 via HDD interface 1424, external storage interface 1426, and optical drive interface 1428, respectively. The interface 1424 for the external driver implementation may include at least one or both of Universal Serial Bus (“USB”) and Institute of Electrical and Electronics Engineers (“IEEE”) 1394 interface technologies. Other external driver connectivity technologies are contemplated in the embodiments described herein.

[0106] The drive and its associated computer-readable storage medium provide non-volatile storage of data, data structures, computer-executable instructions, etc. For computer 1402, the drive and storage medium accommodate any data stored in a suitable digital format. Although the above description of computer-readable storage media refers to a corresponding type of storage device, those skilled in the art will understand that other types of computer-readable storage media (whether currently existing or developed in the future) may also be used in the example operating environment, and further, any such storage medium may contain computer-executable instructions for performing the methods described herein.

[0107] Multiple program modules may be stored in the drive and RAM 1412, including an operating system 1430, one or more applications 1432, other program modules 1434, and program data 1436. All or part of the operating system, applications, modules, and / or data may also be cached in RAM 1412. The systems and methods described herein may be implemented using different commercially available operating systems or combinations of operating systems.

[0108] Computer 1402 may optionally include emulation technology. For example, a hypervisor (not shown) or other intermediary may emulate the hardware environment used for operating system 1430, and the emulated hardware may optionally be different from that of the operating system 1430. Figure 14The hardware shown is illustrated. In this embodiment, the operating system 1430 may include one of a plurality of virtual machines (“VMs”) hosted at the computer 1402. Furthermore, the operating system 1430 may provide a runtime environment for the application 1432, such as the Java Runtime Environment or the .NET Framework. A runtime environment is a consistent execution environment that allows the application 1432 to run on any operating system that includes a runtime environment. Similarly, the operating system 1430 may support containers, and the application 1432 may be in the form of a container, which is a lightweight, standalone, executable software package that includes, for example, code, runtime, system tools, system libraries, and setup for the application.

[0109] Furthermore, computer 1402 may enable security modules, such as a Trusted Processing Module (“TPM”). For example, with TPM, before loading the next boot component, the boot component hashes the boot component in time and waits for the result to match a security value. This process can occur at any layer of the computer 1402’s code execution stack, for example, at the application execution level or at the operating system (“OS”) kernel level, thereby achieving security at any code execution level.

[0110] Users can input commands and information into computer 1402 through one or more wired / wireless input devices (e.g., keyboard 1438, touchscreen 1440, and pointing devices such as mouse 1442). Other input devices (not shown) may include microphones, infrared (“IR”) remote controls, radio frequency (“RF”) remote controls, or other remote controls, joysticks, virtual reality controllers and / or virtual reality headsets, game controllers, styluses, image input devices (e.g., cameras), gesture sensor input devices, visual motion sensor input devices, emotion or face detection devices, biometric input devices (e.g., fingerprint or iris scanners), etc. These and other input devices are typically connected to processing unit 1404 via input device interface 1444, which may be coupled to system bus 1408 but may be connected via other interfaces such as parallel ports, IEEE 1394 serial ports, game ports, USB ports, IR interfaces, etc. Interfaces, etc.

[0111] The monitor 1446 or other types of display devices may also be connected to the system bus 1408 via an interface such as a video adapter 1448. In addition to the monitor 1446, the computer typically includes other peripheral output devices (not shown), such as speakers, printers, combinations thereof, etc.

[0112] Computer 1402 can operate in a networked environment using logical connections via wired and / or wireless communications to one or more remote computers, such as remote computer 1450. Remote computer 1450 may be a workstation, server computer, router, personal computer, portable computer, microprocessor-based entertainment device, peer-to-peer device, or other public network node, and typically includes many or all of the elements described relative to computer 1402; however, for brevity, only memory / storage device 1452 is shown. The depicted logical connections include wired / wireless connections to a local area network (“LAN”) 1454 and / or a larger network (e.g., a wide area network (“WAN”) 1456). Such LAN and WAN networking environments are common in offices and companies and facilitate enterprise-wide computer networks, such as intranets, all of which can connect to global communication networks, such as the Internet.

[0113] When used in a LAN networking environment, computer 1402 can connect to local network 1454 via a wired and / or wireless communication network interface or adapter 1458. Adapter 1458 can facilitate wired or wireless communication to LAN 1454, which may also include a wireless access point (“AP”) disposed thereon for communicating with adapter 1458 in wireless mode.

[0114] When used in a WAN networking environment, computer 1402 may include modem 1460, or may be connected to a communication server on WAN 1456 via other means (such as via the Internet) for establishing communication over WAN 1456. Modem 1460 may be an internal or external, wired or wireless device, and may be connected to system bus 1408 via input device interface 1444. In a networking environment, program modules depicted relative to computer 1402 or portions thereof may be stored in remote memory / storage device 1452. It should be understood that the network connection shown is an example, and other means for establishing communication links between computers may be used.

[0115] When used in a LAN or WAN networking environment, computer 1402 can access cloud storage systems or other network-based storage systems as a supplement to or replacement of external storage device 1416 as described above. Typically, the connection between computer 1402 and the cloud storage system can be established, for example, on LAN 1454 or WAN 1456 via adapter 1458 or modem 1460, respectively. When computer 1402 is connected to an associated cloud storage system, external storage interface 1426 can manage the storage provided by the cloud storage system via adapter 1458 and / or modem 1460, just like other types of external storage. For example, external storage interface 1426 can be configured to provide access to cloud storage sources as if those sources were physically connected to computer 1402.

[0116] Computer 1402 is operable to communicate with any wireless device or entity operably arranged in wireless communication, such as a printer, scanner, desktop and / or laptop computer, portable data assistant, communications satellite, any device or location associated with a wirelessly detectable tag (e.g., self-service terminal, newsstand, store shelf, etc.), and telephone. This may include Wireless Fibre (“Wi-Fi”) and Wireless technology. Therefore, communication can be a predefined structure like a traditional network, or simply self-organizing communication between at least two devices.

[0117] The above description includes only examples of systems, computer program products, and computer-implemented methods. Of course, for the purposes of describing this disclosure, it is impossible to describe every conceivable combination of components, products, and / or computer-implemented methods; however, those skilled in the art will recognize that many further combinations and substitutions of this disclosure are possible. Furthermore, the terms “comprising,” “having,” “possessing,” etc., used in the detailed description, claims, appendices, and drawings are intended to be inclusive in a manner similar to the term “including,” as “including” is interpreted when used as a transitional word in a claim. Various embodiments have been described for illustrative purposes but are not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terminology used herein has been chosen to best explain the principles of the embodiments, their practical application, or technical improvements to technologies found in the market, or to enable those skilled in the art to understand the embodiments disclosed herein.

Claims

1. A computer-implemented system, comprising: Memory stores computer-executable components; as well as A processor operatively coupled to the memory and executing the computer-executable component stored in the memory, wherein the computer-executable component includes: An active learning component trains an active learning model to generate a candidate list of values ​​for environment attributes used to deploy containerized computer applications in a target computing environment. as well as A configuration component that uses the active learning model to discover configuration information associated with the containerized computer application, wherein the configuration information is characterized by a set of environment attributes extracted by querying the source code of the containerized computer application.

2. The computer-implemented system according to claim 1 further includes: The application containerization advisory component uses the active learning model to identify containers for the computer application based on a knowledge graph and application information representing one or more dependencies of the computer application.

3. The computer-implemented system according to claim 2 further includes: An extraction component uses the active learning model to extract environmental attributes from the image file of the container, wherein the environmental attributes are defined by key-value pairs.

4. The computer-implemented system according to claim 3, wherein, The extraction component uses a graph-based feature extraction algorithm to query the computer application and locate the value of the second environmental attribute, and then uses the active learning model to further extract the second environmental attribute from the computer application.

5. The computer-implemented system according to claim 4, wherein, The active learning component extracts multiple environmental attributes from the computer application, and the active learning model uses the active learning model to generate a candidate list of key-value pairs based on the multiple environmental attributes extracted from the computer application.

6. The computer-implemented system according to claim 5, wherein, The active learning component also uses the active learning model to validate the candidate list.

7. The computer-implemented system according to claim 6 further includes: A deployment component that uses the active learning model to generate a configuration file for the containerized computer application for the target computing environment based on a validated candidate list, wherein the configuration file includes the configuration information.

8. A computer-implemented method, comprising: Active learning models are trained by manipulating systems coupled to the processor to generate a candidate list of values ​​for environment attributes used to deploy containerized computer applications in a target computing environment. as well as The system discovers configuration information associated with containerized computer applications, wherein the configuration information is characterized by a set of environment attributes extracted by querying the source code of the containerized computer application.

9. The computer-implemented method according to claim 8, further comprising: The system uses the active learning model to identify containers of computer applications based on knowledge graphs and application information representing one or more dependencies of the computer application.

10. The computer-implemented method according to claim 9, further comprising: The system uses the active learning model to extract environmental attributes from the image file of the container, wherein the environmental attributes are defined by key-value pairs.

11. The computer-implemented method according to claim 10, further comprising: The system uses the active learning model to query the computer application and locate the value of the second environmental attribute by employing a graph-based feature extraction algorithm, thereby extracting the second environmental attribute from the computer application.

12. The computer implementation method according to claim 11, wherein, Extracting multiple environmental attributes from the computer application, wherein the computer-implemented method further includes: The system uses the active learning model to generate a candidate list of key-value pairs based on the multiple environmental attributes extracted from the computer application.

13. The computer-implemented method according to claim 12, further comprising: The system uses the active learning model to validate the candidate list.

14. The computer-implemented method according to claim 13, further comprising: The system uses the active learning model to generate a configuration file for the containerized computer application based on a validated candidate list, wherein the configuration file includes the configuration information.

15. A computer program product for computer application configuration discovery, the computer program product comprising program instructions executable by a processor to cause the processor to perform the method according to any one of claims 8 to 14.