Module Decomposition and Assembly of a Container Software Management Cluster in a Hybrid Cloud
The method of replicating software clusters using software operators derived from analyzing control software clusters addresses the lack of unified solutions in hybrid cloud environments, enabling flexible and automated deployment with improved resource management and responsibility sharing.
Patent Information
- Application Number
- JP2024559624
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-06-13
- Filing Date
- 2023-06-06
- Publication Date
- 2025-07-15
AI Technical Summary
Current methods for deploying software clusters in hybrid cloud environments lack a unified solution, requiring manual intervention, in-depth technical knowledge, and fail to manage resource overhead effectively, with existing solutions lacking modular components and clear responsibility sharing.
A method and system for replicating a software cluster using software operators derived from analyzing a control software cluster, including containers, to create a template for execution in another computing environment, allowing modular selection of use cases and simplifying the architecture.
Enables flexible and automated deployment of software clusters across hybrid cloud environments, reducing the need for manual intervention and enhancing resource management, while providing clear responsibility sharing and transparency.
Smart Images

Figure 2025522253000001_ABST
Abstract
Description
Technical Field
[0001] This disclosure relates to the use of control software for replicating a software cluster including containers to another computing environment, such as a hybrid cloud computing environment.
Background Art
[0002] In a Kubernetes(R) environment, there are known methods for migration, backup / restore, cloning, use of instantiation of pods on a foreign cluster by UI (user interface) level abstraction, and peering between clusters. Problems associated with the above methods may include the lack of an overall disaster recovery solution available in multiple deployment scenarios. In another example, known solutions may require that an existing target cluster be prepared. In another example, the execution of migration may require manual intervention for activities. Other examples may include the need for in-depth skills knowledge of the technology stack, and the solution may lack modular components for functionality. In another example, known solutions lack a way to manage overhead, for example, more components require more management, and known solutions lack a way to manage resource overhead, for example, more components require more resources.
[0003] In one example, disaster recovery may utilize cloud resources. Creating a plan that takes into account a multi-cloud environment can be complex as each cloud platform is likely to have its own unique disaster recovery plan. In one example, a disaster recovery plan may include on-premises using containers as a service, public cloud container services, or a platform as a service (PaaS) as a container-based service. Some enterprises use more than two types of deployments. Each approach incorporates some container recovery capabilities, but none offers an overall solution. Management software such as Kubernetes(R) for container deployment during disaster recovery may involve a careful evaluation of various combinations of Kubernetes solutions where different answers to the problem can be applied to each cloud environment. Containers can represent a new handover of responsibility sharing in the public cloud that never clearly defines boundaries or identifies gaps. Orchestrating containers on a large scale can make the problem more difficult. Vendors may be responsible for maintaining a control plane that runs across availability zones for recoverability. Additional solutions may be required for a complete disaster recovery of Kubernetes(R), and other services or third-party tools may be utilized. Better responsibility sharing, transparency, and simplification can help clarify other aspects of the cloud strategy. Summary of the Invention Problems to be Solved by the Invention
[0004] The present disclosure recognizes the drawbacks and problems associated with current techniques for deploying software clusters in a hybrid cloud environment. Means for Solving the Problems
[0005] According to a preferred embodiment of the present invention, a unified solution for deploying a software cluster in a hybrid cloud environment is provided, which can be executed in an overall manner (e.g., using an operator) and provides the user with the flexibility to modularly select use cases. Thereby, simplifying the entire architecture (e.g., from multiple solutions to one solution with respect to use cases).
[0006] In an aspect according to the present invention, a method implemented by a computer using control software for replicating a software cluster including containers to another computing environment includes generating, using the computer, a software operator related to the modular functions of the control software cluster. The software operator is derived from analyzing a control software cluster including containers within a software computing environment. The software operator is further derived from analyzing the code of the control software cluster including containers and from analyzing the software configuration of the control software cluster. Generating the software operator includes at least partially determining the software configuration requirements of the control software cluster. The control software cluster includes containers for executing the software operator of the control software cluster in another software computing environment. Generating the software operator includes at least partially analyzing another software computing environment for executing the software operator of the control software cluster. Generating the software operator includes at least partially creating a template for the control software cluster based on the determined software configuration requirements and the analysis of another software computing environment. The template includes data for a custom resource definition for executing the software operator in another software computing environment. The method includes replicating all or part of the software operator of the control software cluster to another software computing environment based on the analysis of another software computing environment and the software configuration requirements.
[0007] According to one embodiment, analyzing another software computing environment includes comparing the configuration requirements of the control software cluster with another software computing environment.
[0008] According to one embodiment, the method further includes receiving, in a computer, from an operator, a selection of components of a software computing environment for the generation of a software operator.
[0009] According to one embodiment, the method further includes analyzing the software operator to determine a hierarchy for each of the software operators, and based on the hierarchy, recreating an instance of a control software cluster in another software computing environment.
[0010] According to one embodiment, the control software cluster is an application running within a computing environment, and the application running includes software code executed by a processor.
[0011] According to one embodiment, the software computing environment and another software computing environment are different cloud computing environments.
[0012] According to one embodiment, the software operator is created in response to the analysis of another software computing environment and the creation of a template, and the analysis of the container of the control software cluster is to determine a hierarchy for each of the software operators.
[0013] According to one embodiment, the method includes generating a model using a computer, the model further including updating the determination of software components of a control software cluster, updating the analysis of another software computing environment for executing software operators of the control software cluster, and updating the generation of software operators including at least partially updating the creation of a template for the control software cluster based on the determined software components and the analysis of another software computing environment. The method further includes updating the replication of all or part of the software operators of the control software cluster in another software computing environment based on the updated analysis of the other software computing environment and the software components.
[0014] According to one embodiment, the method further includes repeatedly generating the model to generate an updated model.
[0015] In another aspect according to the present invention, a system using control software and containers for replicating a software cluster in another computing environment is a computer system including a computer processor, a computer-readable storage medium, and program instructions stored on the computer-readable storage medium, the program instructions causing the computer system to perform the following functions, namely, generating, using a computer, a software operator related to the modular functions of a control software cluster, the software operator being derived from analyzing a control software cluster including containers in a software computing environment, the software operator being further derived from analyzing the code of the control software cluster including containers and analyzing the software configuration of the control software cluster, the generating being executable by the processor to perform the function of generating, the generating of the software operator including at least partially determining the software configuration requirements of the control software cluster, the control software cluster including containers for executing the software operator of the control software cluster in another software computing environment, the generating of the software operator including at least partially analyzing another software computing environment for executing the software operator of the control software cluster, the generating of the software operator including at least partially creating a template for the control software cluster based on the determined software configuration requirements and the analysis of another software computing environment, the template including data for a custom resource definition for executing the software operator in another software computing environment, the program instructions causing the computer system to perform the following functions, namely, based on the analysis of another software computing environment and the software configuration requirements,A computer system that is executable by a processor to perform a function for replicating all or a part of the software operators of a control software cluster in another software computing environment.
[0016] According to one embodiment, the analysis of another software computing environment includes comparing the components of the control software cluster with another software computing environment.
[0017] According to one embodiment, the system further includes a function of receiving from an operator in a computer a selection of components of a software computing environment for generating software operators.
[0018] According to one embodiment, the system further includes analyzing the software operators to determine a hierarchy for each of the software operators, and based on the hierarchy, performing a function for recreating an instance of the control software cluster in another software computing environment.
[0019] According to one embodiment, the control software cluster is an application running in a computing environment, and the running application includes software code executed by a processor.
[0020] According to one embodiment, the software computing environment and another software computing environment are different cloud computing environments.
[0021] According to one embodiment, the software operators are created in response to the analysis of another software computing environment and the creation of templates, and the analysis of the containers of the control software cluster will determine a hierarchy for each of the software operators.
[0022] In another aspect according to the present invention, a computer program product that uses control software and containers for replicating a software cluster in another computing environment includes a computer-readable storage medium having program instructions embodied by the computer-readable storage medium.Program instructions are executable by a computer to cause the computer to perform functions, where the functions include generating software operators related to the modular functions of a control software cluster using a computer, and the software operators are derived from analyzing a control software cluster including containers in a software computing environment, and further derived from analyzing the code of the control software cluster including containers and analyzing the software configuration of the control software cluster. The generation of the software operators includes determining the software configuration requirements of the control software cluster, where the control software cluster includes containers for executing the software operators of the control software cluster in another software computing environment. The generation of the software operators at least partially includes analyzing another software computing environment for executing the software operators of the control software cluster. The generation of the software operators includes creating a template for the control software cluster based on the determined software configuration requirements and the analysis of another software computing environment, where the template at least partially includes creating data for a custom resource definition for executing the software operators in another software computing environment. The functions include replicating all or part of the software operators of the control software cluster to another software computing environment based on the analysis of another software computing environment and the software configuration requirements.
[0023] According to one embodiment, the analysis of another software computing environment includes comparing the configuration requirements of the control software cluster with another software computing environment.
[0024] According to one embodiment, the computer program product further includes a function for receiving, in a computer, from an operator a selection of components of a software computing environment for generation of a software operator.
[0025] According to one embodiment, the computer program product further includes a function for analyzing software operators to determine a hierarchy for each of the software operators and, based on the hierarchy, recreating an instance of a control software cluster in another software computing environment.
[0026] Here, preferred embodiments of the present invention are described by way of example only in connection with the following invention.
Brief Description of the Drawings
[0027]
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
DETAILED DESCRIPTION OF THE INVENTION
[0028] The illustrations are for clarity in assisting those skilled in the art to understand the present invention in conjunction with the detailed description, and various features of the drawings are not to scale.
[0029] The following description with reference to the accompanying drawings is provided to assist in a comprehensive understanding of exemplary embodiments of the present invention as defined by the claims and their equivalents. The description includes various specific details to assist in that understanding, but these should be regarded as merely exemplary and serve to provide clarity and brevity. Accordingly, those skilled in the art will recognize that various changes and modifications can be made to the embodiments described herein without departing from the scope and spirit of the present invention. In addition, descriptions of well-known functions and structures may be omitted.
[0030] The terms and words used in the following description and claims are not limited to bibliographical meaning and are used merely to enable a clear and consistent understanding of the present invention. Accordingly, it should be apparent to those skilled in the art that the following description of exemplary embodiments of the present invention is provided for purposes of illustration only and not for the purpose of limiting the present invention as defined by the appended claims and their equivalents.
[0031] It should be understood that the singular forms "a", "an", and "the" include plural referents unless the context clearly indicates otherwise. Thus, for example, reference to "a component surface" includes reference to one or more of such surfaces unless the context clearly indicates otherwise.
[0032] Embodiments and Examples Embodiments and figures of the present disclosure may have components that are the same as or similar to those of other embodiments. Such figures and descriptions show and explain further examples and embodiments according to the present disclosure. Embodiments of the present disclosure may include actions or procedures of operations or both. Methods such as those implemented by a computer may include a series of operation blocks for implementing embodiments according to the present disclosure, which may include cooperation with one or more systems shown in the figures. The operation blocks of the methods and systems according to the present disclosure may include techniques, mechanisms, modules, etc. for implementing the functions of the operations according to the present disclosure. Similar components may have the same reference numbers. Components can operate in cooperation with methods implemented by a computer.
[0033] According to an embodiment of the present disclosure, a method and system may include decomposing a running management software cluster or container orchestrator (e.g., a Kubernetes(R) Cluster) in the form of an operator. The software cluster may include deployments, pods, routes, secrets, services, configuration maps, software repositories, image locations, daemon sets, replica sets, custom resource definitions (CRDs), namespaces, permanent virtual circuits (PVCs), users, and operators. The method and system may include creating operators for desired or required organized knowledge executed within the management software cluster, such as an operator for executing a software-defined network configuration, an operator for a software deployment service configuration, and an operator for user permissions.
[0034] Referring to FIG. 1, according to an embodiment of the present invention, a system 100 implemented by a computer for replicating a software cluster including control software and containers to another computing environment includes the features described below.
[0035] The system 100 includes decomposing a software cluster into an operator using an operator software tool (operator SDK) including a command-line tool to create a new template for an operator including a skeleton for a custom resource definition (CRD), such as the operation block 104. Thereby, the system generates an operator template represented by block 108.
[0036] The system includes generating data for Custom Resource Definitions (CRDs) needed to extend templates to be more useful. This is accomplished by taking existing files typical of the programming language used in configuration files, such as block 116, extracting data from application code, obtaining code from a code repository, or extracting important information as part of a DevOps toolchain.
[0037] Using an external probe, such as block 120, the actual configuration is examined by running pod 116 and used as the basis for the CRD. Also available for use are cloud resources (e.g., network, nodes, storage, etc.), which may be based on the APIs (Application Programming Interfaces) of a cloud service platform (CSP) to extract information.
[0038] The system can complete a template for generating a final operator template 112 with additional CRD data 124 that is verified against a running cluster and packaged for future use.
[0039] Furthermore, the system includes analyzing operators to determine the operator hierarchy. Thus, after decomposing an existing container configuration into several operators, it is possible to recreate the same instance of an existing cluster in another location, such as a cloud computing environment, by running the decomposed operators. However, the operators cannot simply be applied in a random order; rather, the requirements or parameters of the operators require that a specific resource or some configuration be executed before those operators can be run.
[0040] For example, a typical cluster may require the following. Ensuring that the network is available and, if not, starting the network. Starting the registry or, if the registry is remote, ensuring that the registry can be accessed. Starting the network storage that can be used by the cluster (e.g., typically using a network protocol). In one example, the system may include starting the master node, applying the security configuration, starting the worker nodes, and starting the pods. Each operator includes checking that the preconditions are met before execution. Also, the operator needs to ensure that for longer-running configuration tasks, the status of the configuration activities is tracked until completion and all error states are resolved. This can further be plugged into hierarchical services and the RPO / RTO (Recovery Point Objective / Recovery Time Objective) can be systematized within the operator accordingly. The user can also change the configuration.
[0041] In one example, the module decomposition can include multiple functions each of which can represent a specific requirement or purpose. Each of the multiple modules can represent a specific function. The decomposer can be executed as a service, executed with its controller, and can be accessed by the user through a secure route. In another example, the target selector can enable the user to select the target environment, select the correct bootstrap operator, and trigger the execution of the bootstrap operator.
[0042] In another example, a bootstrap process is identified and when the bootstrap process returns information about the target, a verification step ensures, for example, that the target has sufficient space / nodes to execute the proposed configuration. If there are not sufficient resources, the user is informed. At this point, the user can either decide to select another target location or implement only a subset of the operators in this environment such that a subset of the configuration now fits. The created hierarchy of operators is associated with disassembling the cluster. The order in which the operators should be executed is required to build the cluster. The preconditions of the operators in terms of resources need to be known in order to execute the operators.
[0043] In one example, the system triggers an assembly for a target specified by the user and includes execution at the target entity. The bootstrap process operator can initiate a defined provisioning. The disassembled operator can extend the container orchestrator software at the target. A controller dedicated to a defined task can look at the defined desired state, compare it to the state of the cluster, and perform actions (e.g., adding replicas, adding / creating deployments) on resources to achieve that state within the cluster. The system is based on these concepts, knows how to watch for specific events, knows the internal state within the cluster, and provides a custom controller that takes actions to match through the code we provide in a set of handlers. The information characterizing that specific knowledge is defined by extending the orchestrator software with what is called a custom resource (which may include an API (Application Programming Interface)). A custom resource (CR) is defined by a custom resource definition (CRD), which is the designed and intended extension point of the API. The operator can be based on the ability to leverage the features and abstractions of the platform.
[0044] In one example, the modular functionality can include the following. Components can be decomposed into desired components. The user can select specific operators for the assembly of the target. The user can use an interface through routes for functions such as disassembly, bootstrap, target location, etc. The user can specify a period for disassembly, the user can specify the retention of disassembled operators, and the user can specify a deletion time regarding the source cluster (e.g., the disassembled cluster).
[0045] Embodiments according to the present disclosure can include splitting a software cluster into two planes (such as a control plane / operator and a data plane), where the control plane includes a set of pods and implements a control loop that repeatedly compares the desired state of the cluster with the actual state of the cluster and creates a snapshot of the state of the cluster for disaster recovery. Embodiments can further include creating an operator for deploying and managing multiple instances of a software application by using a common resource descriptor (CRD) to recover data / applications from a disaster and migrate a workload to a new infrastructure / cloud / availability zone. Embodiments can include determining the relationship between an operator and a resource based on the feature value of each operator that makes up an application system and the information obtained about the resources belonging to the operator, thereby understanding the status of the resources, facilitating the migration of the application to a container orchestration platform, and enabling a user to select and place a desired operator in an operator management graphical user interface (GUI) of an application system building unit to construct an application system having a desired configuration. Embodiments can further replicate a software cluster or its configuration by analyzing an existing configuration, generate a set of operators that can be executed to reproduce the configuration in an alternative cloud environment or any target environment or landing zone, and have utility in disaster recovery (DR), as well as in migrating a system from one cloud provider to another or from on-premises to the platform of any cloud provider and vice versa.Embodiments can further include using modular functionality, enabling a user to break down only the desired components (e.g., an existing software cluster configuration) to an operator and select only specific operators or all of those operators for target assembly. A unique bootstrapper can be selected for each cloud environment and custom on-premises environment, zero-touch DR is enabled using systematized human knowledge, and flexibility is provided to the user to sort through the components of DR. A pluggable system can be provided with layered services, thereby enabling configurable recovery point objective (RPO) / recovery time objective (RTO). A user interface (UI) can be provided for easy user-level consumption using a method based on the maturity of an autopilot operator and a bootstrapper operator, and abstraction from all underlying cloud providers for overall DR can be enabled.
[0046] In a further example, according to the present disclosure, constructing an operator can be achieved by disassembling the running configuration and automatically constructing both the operators and the hierarchy of operators required to recreate the cluster. The automatic creation of the operators eliminates the possibility of user errors creeping in and dramatically reduces the time taken both to protect the applications using our invention and to deploy a new instance to a different location. The hierarchy does not focus solely on restoring the application, but deploys the preconditions in the correct order. The automatic disassembling of the environment into the operator hierarchy enables the entire cluster to be replicated. No user intervention is required to do this. Thus, embodiments of the present disclosure do not require the operators to pre-exist, and therefore allow a management environment that has no existing operators, some existing operators, or all the existing required operators. The hierarchies or operators discovered by our invention enable the management of all environments, not just those that are all pre-defined. It is possible to capture the actually running configuration, rather than the configuration captured via the GUI. Consider the case where the application scales up and is running more instances. In this situation, embodiments according to the present disclosure can cope. Thus, the running application can be deployed to a new instance or a new location, for example, in the event of a migration or disaster. The operator structure captures the configuration of the existing application and can be used through this captured configuration to (re)deploy it to a different location.
[0047] Referring to FIGS. 2 and 3, in another embodiment according to the present disclosure, for example, a method 300 implemented by a computer (associated with system 200) using control software 238 and containers to replicate a control software cluster 236 within a first computing environment 230 to another computing environment, for example, a second computing environment. The first computing environment includes a computer 231 that includes a processor 232 for executing code. The computer 231 includes a storage medium 234 that can store an application 235 and a software cluster 236. Also, the second computing environment may include a computer 241. A user or operator 246 can start and manage the operation procedure using the computer 231.
[0048] Method 300 includes using a computer to generate a software operator 248 related to the modular functions of a control software cluster. The software operator is derived from analyzing a control software cluster 236 that includes containers within a first software computing environment. The software operator is further derived from analyzing the code of the control software cluster that includes containers and analyzing the software configuration of the control software cluster, as represented in operation block 304.
[0049] The generation of a software operator at least partially includes determining the software components of a control software cluster. As in block 308, a control software cluster includes a container for executing a software operator of the control software cluster in another or second software computing environment. The generation of a software operator at least partially includes analyzing another or second software computing environment, such as a second computing environment 240, for executing the software operator of the control software cluster, as in block 312.
[0050] Furthermore, the generation of a software operator at least partially includes creating a template for the control software cluster based on the determined software components and the analysis of another or second software computing environment. The template includes data for a custom resource definition for executing a software operator in another or second software computing environment, as in block 316.
[0051] If the software operator is not acceptable at block 320, the method returns to block 308. If the software operator is acceptable, the method proceeds to block 324. The method includes replicating all or part of the software operator of the control software cluster to another software computing environment, such as a second computing environment 240, based on the analysis of the second software computing environment and the software components, as in block 324.
[0052] In one example, the analysis of another or second software computing environment includes comparing the component requirements of a control software cluster to another software computing environment. In another example, the method may further include receiving, in a computer from an operator, a selection of components of a software computing environment for the generation of a software operator.
[0053] In one example, the method may further include analyzing a software operator to determine a hierarchy for each of the software operators and, based on the hierarchy, recreating an instance of a control software cluster in another or second software computing environment. In another example, the control software cluster is an application running within a computing environment, and the running application includes software code being executed by a processor. In another example, the software computing environment and another or second software computing environment are different cloud computing environments.
[0054] In another example, a software operator is created in response to the analysis of another or second software computing environment and the creation of a template, and the analysis of the containers of the control software cluster determines a hierarchy for each of the software operators.
[0055] Referring to FIG. 4, method 400 continues from method 300 at block 324. Method 400 includes using a computer to generate a model, such as at block 404, the model including the following operations. The method includes updating the determination of the software components of the control software cluster, such as at block 406. The method includes updating the analysis of a second software computing environment for executing the software operator of the control software cluster, such as at block 408. The method includes updating the generation of the software operator, including at least partially updating the creation of a template for the control software cluster based on the determined software components and the analysis of the second software computing environment. As at block 412, the method includes updating the replication of all or part of the software operator of the control software cluster in another or second software computing environment based on the updated analysis of the another or second software computing environment and the software components. In one example, the method may include repeatedly generating the model to generate an updated model.
[0056] Additional Examples and Embodiments Referring to the figure, for example, FIG. 2, computer 231 can be integral with or communicate with the device. A computer 290 remote to the computer can communicate electronically, either all or in part, with a computer 272 as part of control system 270. The control system can include a computer 272 having a computer-readable storage medium 273 that can store one or more programs 274, and a processor 275 for executing program instructions. The control system can also include a storage medium that can include registration data or account data or both 282 and a profile 283 of a user or entity (such an entity can include a robotic entity) as part of a user account 281. The user account 281 can be stored in a storage medium 280 that is part of the control system, 270. The user account 281 can include registration and account data 282 as well as a user profile 283. The control system can also include a computer 272 having a computer-readable storage medium 273 that can store a program or code incorporated in the storage medium. The program code can be executed by the processor 275. The computer 272 can communicate with a database 276. The control system 270 can also include a database 276 for storing all or part of the data as described above and other data.
[0057] The control system can also communicate with a computer system 290 which may include a learning engine / module 292 and a knowledge corpus or database 296. The computer system 290 can also communicate with a computer 231 and can be remote from the computer. In another example, the computer system 290 can be all or part of the control system, or all or part of a device. The depiction of the computer system 290 and other components of the system 200 are shown as an example according to the present disclosure. One or more computer systems can communicate with a communication network 260, such as the Internet. For example, the computer 290 and the control system 270 can communicate with the communication network 260, and the computer 231 can communicate with a local communication network capable of communicating with the communication network 260.
[0058] In one example, a new or different AI (Artificial Intelligence) ecosystem, or a technology / communication or IT (Information Technology) ecosystem can include a local communication network capable of communicating with the communication network 260. The system 200 can include a learning engine / module 292 that is at least part of the control system or can communicate with the control system for generating a model or learning model.
[0059] In another example, the computer 231 can be part of a device. The computer can include a processor and a computer-readable storage medium on which an application 235 that can implement all or part of the method of the present disclosure in one example can be stored. The application can be embodied in code and include all or part of the instructions for implementing the method of the present disclosure stored on the computer-readable storage medium. In one example, the device can include a display. The device can operate in cooperation with a remote server, in whole or in part, via a communication network, such as the Internet.
[0060] The method may include an analysis to generate a model based on the received data. The model can also be generated at least in part by an AI system. In one example, the AI system may use AI system analysis using machine learning to generate the model.
[0061] In other embodiments and examples, in the present disclosure shown in the figures, the computer can be, for example, a remote computer or a remote server, for example, part of a remote server. In another example, the computer can be part of a control system and can provide for the execution of the functions of the present disclosure. In another embodiment, the computer can be part of a mobile device and can provide for the execution of the functions of the present disclosure. In yet another embodiment, part of the execution of the functions of the present disclosure can be shared between a control system computer and a mobile device computer. For example, the control system can function as the back end of one or more programs embodying the present disclosure, and the mobile device computer can function as the front end of one or more programs. A device, for example, a mobile device or a mobile phone, can belong to one or more users and can communicate with the control system via a communication network.
[0062] The computer can be part of a mobile device or a remote computer that communicates with the mobile device. In another example, the mobile device and the remote computer can work together to implement the method of the present disclosure using stored program code or instructions for performing the features of the method described herein. In one example, the device can include a computer having a processor and a storage medium for storing an application, and the computer includes a display. The application can incorporate program instructions for using the processor to perform the features of the present disclosure. In another example, a mobile device application or computer software can have program instructions executable for a front end of a software application that incorporates the features of the method of the present disclosure into the program instructions, while one or more back end programs of a software application stored on a computer of the control system communicate with the mobile device computer and perform other features of the method. The control system and the device (e.g., a mobile device or a computer) can communicate using a communication network, such as the Internet.
[0063] Thus, in one example, the control system can communicate with a computer or a device, and the computer can include an application or software. The computer, or the computer of the mobile device, can communicate with the control system using a communication network. In another example, the control system can have a front end computer belonging to one or more users and a back end computer embodied as the control system.
[0064] The methods and systems according to embodiments of the present disclosure may be incorporated into one or more computer programs or applications stored on an electronic storage medium and executable by a processor as part of a computer on a mobile device. For example, a mobile device may be able to communicate with a control system, and in another example, a device such as a video feed device may be able to communicate directly with the control system. Other users (not shown) may similarly have similar mobile devices that communicate with the control system. The application may be stored, in whole or in part, on a computer or the computer of the mobile device and a control system that communicates with the mobile device using a communication network such as, for example, the Internet. The application is assumed to be able to access all or some of the program instructions for implementing the method of the present disclosure. The program or application may communicate with a remote computer system via a communication network (such as, for example, the Internet), access data, and cooperate with programs stored on the remote computer system. Such interactions and mechanisms are described in more detail herein, shown in one or more embodiments herein, and described in more detail with respect thereto with reference to one or more computers and systems described herein, with reference to components of a computer system such as a computer-readable storage medium.
[0065] Also, referring to the figures, the device can include a computer, a computer-readable storage medium, and an operating system, or a program, or a software application, or a combination thereof, which may include program instructions executable using a processor. Embodiments of these features are shown in the figures herein. The method according to the present disclosure may include a computer as part of a control system to implement the features of the method according to the present disclosure. In another example, a computer as part of a control system can cooperate with a communication system and cooperate with a mobile device computer to implement the features of the method according to the present disclosure. In another example, a computer for implementing the functions of the method is part of a mobile device, and thus it is possible to implement the method locally.
[0066] The control system may include a storage medium for holding user registrations and those devices for audio input analysis. Such registrations can include user profiles, and those user profiles can include user data supplied by the user in connection with account registration and setup. In embodiments, the method and system incorporating the present disclosure include a control system (generally referred to as the back end) in combination and cooperation with a front end of the method and system that can be an application. In one example, the application can be stored on a device, such as a local computer or device, and can access the data and additional programs of the back end of the application, such as the control system.
[0067] Alternatively, the control system can be part of the implementation of a software application, or can represent a software application having a front-end user portion and a back-end portion that provides functionality, or both. In an embodiment, the method and system incorporating the present disclosure include combining, in cooperation, a control system (which can generally be referred to as the back-end of a software application incorporating a portion of the method and system of the embodiments of the present application) with the front-end of a software application that incorporates another portion of the method and system of the present application in a device. The application is stored on a device or computer and can access program data and additional programs stored in the back-end of the application, such as the control system.
[0068] The program can include all or a portion of a series of executable steps for implementing the method of the present disclosure. The program incorporating the method can be stored, in whole or in part, on a computer-readable storage medium of the control system or, in whole or in part, on a computer or device. The control system can not only store a user's profile, but in one embodiment, interact with a website for viewing on a display of a device such as a mobile device or, in another example, on the Internet, and receive user input related to the method and system of the present disclosure. Although the embodiments shown in the figures depict one or more profiles, it is understood that the method can include multiple profiles, users, registrations, etc. It is contemplated that multiple users or groups of users can register and provide profiles using the control system for use with the method and system of the present disclosure.
[0069] In one example, as part of the analysis of received data including data within a knowledge corpus and a historical database that can be populated by historical data collected from, for example, sensors, robotic devices, or other machines or devices.
[0070] Referring to one or more embodiments of the figures, a computer or device, which may also be referred to as a user device or an administrator's device, includes a computer having a processor and a storage medium in which an application may be stored. The application can embody the features of the method of the present disclosure as instructions. A user can use the device to connect to the learning engine. The device includes a computer and a display or monitor. The application can embody the method of the present disclosure and may be stored in a computer-readable storage medium. The device may further include a processor for executing the application / software. The device can communicate with a communication network, such as the Internet.
[0071] It is understood that the user device represents other similar devices that can be for other users, such as mobile devices, smart devices, laptop computers, etc.
[0072] In one example, the system of the present disclosure may include a control system that communicates with a user device via a communication network. The control system may incorporate all or part of an application or software for implementing the method of the present disclosure. The control system may include a computer-readable storage medium in which account data or registration data or both may be stored. A user profile, which is part of the account data, may be stored in the storage medium. The control system may include a computer having a computer-readable storage medium and a software program stored therein. A processor may be used to execute or implement the instructions of the software program. The control system may also include a database.
[0073] In other examples and embodiments, profiles can be stored for entities such as users, participants, operators, human operators, or robotic devices. Such profiles can supply data and delivery history regarding the user for analysis. In one example, a user can register or create an account using a control system that can include one or more profiles as part of registration data or account data or both. The registration can include a profile for each user with personalized data. For example, a user can register using a website via their computer and GUI (Graphical User Interface) interface. The registration or account data can include a profile regarding each user's account. Such accounts can be stored in a control system, which can also use a database for data storage. The user and associated account can refer to another machine such as, for example, a person, or an entity, or a corporate body, or a corporate department, or an entity for automation such as a system that uses artificial intelligence in whole or in part.
[0074] Furthermore, the methods and systems according to embodiments of the present disclosure can be considered in relation to a functional system depicted by a functional block diagram. The methods and systems can include components and operations for embodiments according to the present disclosure and are used herein for reference when explaining the operational steps of the methods and systems of the present disclosure. Additionally, the functional systems according to embodiments of the present disclosure depict functional operations that illustrate the embodiments considered herein.
[0075] Further examples and embodiments The methods and systems of the present disclosure may include a series of operation blocks for implementing one or more embodiments according to the present disclosure. The methods shown in the figures may be shown in other figures and may include aspects / operations previously considered, but may be another exemplary embodiment that may be reintroduced in another example. Thus, the operation blocks and system components shown in one or more of the figures may be similar to the operation blocks and system components shown in other figures. The diversity of operation blocks and system components depicts exemplary embodiments and aspects according to the present disclosure. For example, the methods shown are intended as exemplary embodiments that may include aspects / operations previously shown and considered in the present disclosure and, in one example, continue from previous methods shown in another flowchart.
[0076] It is understood that some parts of the figures, such as the features shown in the block diagrams, are functional representations of the features of the present disclosure. Such features are shown in embodiments of the systems and methods of the present disclosure for illustrative purposes to clarify the functions of the features of the present disclosure.
[0077] Further Consideration of Examples and Embodiments It is understood that a set or group is a collection of distinct objects or elements. The objects or elements that make up a set or group can be anything, for example, numbers, alphabetic characters, other sets, some people or users, etc. It is further understood that a set or group can be one element, for example one thing or a number, in other words, a set of one element, for example, one or more users or people or participants. It is also understood that in this specification, machines and devices are used interchangeably to refer to machines or devices within one or more ecosystems or environments that may include, for example, an artificial intelligence (AI) environment.
[0078] Further Embodiments and Examples The computer-implemented method disclosed herein may include using a computer to perform modeling. The model may be generated, in whole or in part, using a learning engine or modeling module of a computer system that can be of an artificial intelligence (AI) system that communicates with a computer or a control system or both. Such a computer system may include or communicate with a knowledge corpus or a historical database. In one example, an acceptable model may include a model that meets specified parameters. In another example, an acceptable model may be a model that has undergone multiple iterations of modeling. When the model is not acceptable, the method may return to a previous operation or proceed as instructed, e.g., as represented by the operation blocks of a flowchart.
[0079] In one example according to the present disclosure, the method can use a computer to generate a model that may include a series of operations. The model may be generated, in whole or in part, using a learning engine or modeling module of a computer system that can be of an artificial intelligence (AI) system that communicates with a computer or a control system or both. Such a computer system may include or communicate with a knowledge corpus or a historical database.
[0080] The model may be generated, in whole or in part, using a learning engine or modeling module of a computer system that can be of an artificial intelligence (AI) system that communicates with a computer or a control system or both. Such a computer system may include or communicate with a knowledge corpus or a historical database. The model can also be generated by an AI system, such as the output of an AI system analysis that uses machine learning at least in part.
[0081] Additional Embodiments and Examples For example, account data including profile data related to a user, and any data, whether personal or not, can be collected and stored, for example, in a control system. Such data collection is understood to be done with the knowledge and consent of the user and stored to protect privacy, which is discussed in more detail below. Such data can include personal data and data regarding personal belongings.
[0082] In one example, a user can register an account with a user profile on a control system. For example, data can be collected using the techniques discussed above, for example, using a camera, and the data can be uploaded to the user profile by the user. The user can include, for example, a corporate entity, or a company department, or a homeowner, or any end-user, human operator, or robotic device, or other personnel of a company.
[0083] Regarding the collection of data related to the present disclosure, such upload or generation of profiles is voluntary by one or more users and, thus, is initiated by the users upon obtaining the users' approval. Thereby, the users can opt-in to establish an account having a profile according to the present disclosure. Similarly, data received or input or received as input by the system is voluntary by one or more users and, thus, is initiated by the users upon obtaining the users' approval. Thereby, the users can opt-in to input data according to the present disclosure. Such users' approval further includes the users' option to cancel such profile or account or data input or both and, thus, the users' discretionary opt-out of communicating and capturing data. Further, all data stored or collected is understood to be stored securely and unavailable for use without authorization by the users and is intended to be unavailable to general or unauthorized or both users. Such stored data is understood to be deleted upon the users' request and deleted in a secure manner. Also, all use of such stored data is understood to be only if there is authorization and consent by the users according to the present disclosure.
[0084] In one or more embodiments of the present invention, a user can opt-in or register with a control system and, under the user's consent and authorization, voluntarily provide data and / or information in a process, and the data is stored and used in one or more ways of the present disclosure. Also, the user can register one or more user electronic devices for use with one or more methods and systems according to the present disclosure. As part of the registration, the user can also identify and authorize access to one or more activities or other systems (such as, for example, an audio system or a video system or both). Such opt-in for registration and authorization for data collection and / or storage are voluntary, and the user may request deletion of data (including profiles and / or profile data), cancellation of registration, and / or opt-out of any registration. Such opt-out is understood to include the disposal of all data in a secure manner. The user interface can also enable the user or individual to delete all of their history data.
[0085] Other additional embodiments and examples In one example, to generate a model or learning model as contemplated herein in embodiments of the present disclosure, all or part of artificial intelligence (AI) may be used. An artificial intelligence (AI) system may include machines, computers, and computer programs designed to act as if intelligent or to accurately mimic intelligence. Such systems may include a computer that executes algorithms. AI may include machine learning and deep learning. For example, deep learning may include neural networks. The AI system may be cloud-based, i.e., it may use a cloud-based computing environment having computing resources. In another example, the control system may be all or part of an artificial intelligence (AI) system. For example, the control system may be one or more components of an AI system.
[0086] The methods and systems according to embodiments of the present disclosure can be incorporated into (artificial intelligence) AI devices, components, or be part of an AI system, and it is understood that they can communicate with their respective AI systems and components as well as their respective AI system platforms. Thereby, such programs or applications incorporating the methods of the present disclosure, as discussed above, can be part of an AI system. In one embodiment according to the present invention, it is assumed that the control system can communicate with the AI system or, in another example, can be part of the AI system. Also, the control system can represent a software application having a front-end user part and a back-end part that provides functionality, and the software application can, in one or more examples, interact with, include, or be part of a larger system such as an AI system. In one example, the AI device can be all or partially a control system or a content delivery system or both, and can be associated with an AI system that can be remote to the AI device. Such an AI system can be represented by one or more servers storing a program on a computer-readable medium that can communicate with one or more AI devices. The AI system can communicate with the control system, and in one or more embodiments, the control system can be all or part of the AI system or vice versa.
[0087] As contemplated herein, it is understood that downloads or downloadable data can be initiated using voice commands or using a mouse, touch screen, etc. In such examples, a mobile device can be activated by a user, or an AI device can be used with the consent and permission of the user. Other examples of AI devices include microphones, speakers, devices capable of accessing a cellular network or a mobile network, a communication network, or the Internet, such as a computer, a vehicle that performs cellular communication or satellite communication, or in another example, IoT (Internet of Things) devices such as household appliances capable of accessing a cellular network or the Internet.
[0088] The descriptions of the various embodiments of the present invention are presented for purposes of illustration but are not intended to be exhaustive or limited to the disclosed embodiments. Similarly, the examples of the features or functions of the embodiments of the present disclosure described herein are not intended to limit the embodiments of the present disclosure described herein or to limit the present disclosure to the examples described herein, whether used in the description of a particular embodiment or listed as examples. Such examples are illustrative or exemplary and are not intended to be exhaustive. Many modifications and variations will become apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terms used herein are selected to best explain the principles of the embodiments, practical applications, or technological improvements found in the marketplace, or to enable those skilled in the art to understand the embodiments disclosed herein.
[0089] Further additional examples and embodiments Referring to FIG. 5, an embodiment of a system or computer environment 1000 according to the present disclosure includes a computer system 1010 in the form of a general-purpose computing device. For example, method 100 may be embodied in a program 1060 that includes program instructions embodied on a computer-readable storage device or computer-readable storage medium, such as computer memory 1030 and more particularly a computer-readable storage medium 1050. Such a memory or computer-readable storage medium or both are known as non-transitory computer-readable storage media or non-temporary computer-readable storage media and include such non-volatile memory or non-volatile storage. For example, such non-volatile memory may be a disk storage device including one or more hard drives. For example, memory 1030 may include a storage medium 1034 such as RAM (Random Access Memory) or ROM (Read Only Memory), and a cache memory 1038. Program 1060 is executable by a processor 1020 of computer system 1010 (to execute program steps, code, or program code). Additional data storage may be embodied as a database 1110 including data 1114. Computer system 1010 and program 1060 may be local to a user or provided as a remote service (e.g., as a cloud-based service), and in further examples, may be provided using a website accessible using a communication network 1200 (e.g., interacting with a network, the Internet, or a cloud service), which is a comprehensive representation of a computer and a program. Computer system 1010 generally represents, in this specification, a computer device or computer included in a device such as a laptop computer or a desktop computer, or a single or multiple servers as part of a data center.A computer system may include a network adapter / interface 1026 and an input / output (I / O) interface 1022. The I / O interface 1022 enables the input and output of data with an external device 1074 that may be connected to the computer system. The network adapter / interface 1026 may provide communication between the computer system and a network generally shown as a communication network 1200.
[0090] Computer 1010 may be described in the general context of executable instructions of a computer system, such as program modules, being executed by the computer system. Generally, program modules may include routines, programs, objects, components, logic, data structures, etc. that perform particular tasks or implement particular abstract data types. Method steps and system components and techniques may be embodied in modules of a program 1060 for performing each task of the method and system steps. The modules are generally represented in the figures as program modules 1064. The program 1060 and program modules 1064 may execute specific steps, routines, sub-routines, instructions, or code of the program.
[0091] The method of the present disclosure can be executed locally on a device such as a mobile device, or, for example, remotely, and can be executed as a service on a server 1100 that can be accessed using a communication network 1200. The program or executable instructions may be provided as a service by a provider. The computer 1010 may be implemented in a distributed cloud computing environment in which tasks are executed by remote processing devices linked via the communication network 1200. In a distributed cloud computing environment, program modules may be located on both local and remote computer system storage media including a memory storage device.
[0092] More specifically, the system or computer environment 1000 includes a computer system 1010 shown in the form of a general-purpose computing device with exemplary peripheral devices. The components of the computer system 1010 may include, but are not limited to, one or more processors or processing units 1020, a system memory 1030, and a bus 1014 that couples various system components including the system memory 1030 to the processor 1020.
[0093] The bus 1014 represents any one or more of several types of bus structures including a memory bus or memory controller using any of a variety of bus architectures, a peripheral bus, an accelerated graphics port, and a processor or local bus. By way of example and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Extended ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnects (PCI) bus.
[0094] Computer 1010 may include various computer-readable media. Such media may be any available media accessible by computer 1010 (e.g., a computer system, or a server), and may include both volatile and non-volatile media, as well as removable and non-removable media. Computer memory 1030 may include additional computer-readable media in the form of volatile memory, such as random access memory (RAM) 1034 or cache memory 1038, or both. Computer 1010 may further include other removable / non-removable, volatile / non-volatile computer storage media, such as in one example, portable computer-readable storage media 1072. In one embodiment, computer-readable storage media 1050 may be provided for reading from and writing to a non-removable non-volatile magnetic medium. Computer-readable storage media 1050 may be embodied, for example, as a hard drive. Additional memory and data storage may be provided as a storage system 1110 (e.g., a database) for storing, for example, data 1114 and communicating with processing unit 1020. The database may be stored on server 1100 or may be part of server 1100. Although not shown, a magnetic disk drive for reading from and writing to a removable non-volatile magnetic disk (e.g., a “floppy(R) disk”) and an optical disk drive for reading from or writing to a removable non-volatile optical disk such as a CD-ROM, DVD-ROM, or other optical media may be provided. In such cases, each may be connected to bus 1014 by one or more data media interfaces. As further depicted and described below, memory 1030 may include at least one program product that may include one or more program modules configured to execute the functions of embodiments of the present invention.
[0095] The methods described in this disclosure may be embodied, for example, in one or more computer programs generally referred to as program 1060, and may be stored in memory 1030 within computer-readable storage medium 1050. Program 1060 may include program modules 1064. Program modules 1064 can generally perform the functions or methods or both of the embodiments of the present invention as described herein. One or more programs 1060 are stored in memory 1030 and are executable by processing unit 1020. By way of example, memory 1030 may store operating system 1052, one or more application programs 1054, other program modules, and program data in computer-readable storage medium 1050. It is understood that program 1060 stored in computer-readable storage medium 1050, as well as operating system 1052 and application program 1054, are similarly executable by processing unit 1020. Application 1054 and program 1060 are shown inclusively and may include all or a portion of one or more applications and programs contemplated in this disclosure, or vice versa, that is, it is also understood that application 1054 and program 1060 may be all or a portion of one or more applications or programs contemplated in this disclosure. To implement the control system functions described in this disclosure, control system 1007 that communicates with the computer system may include all or a portion of computer system 1010 and its components, or control system may communicate with all or a portion of computer system 1010 and its components as a remote computer system, or both, which is also understood. Control system functions may include, for example, storing, processing, and executing software instructions for performing the functions of this disclosure.To implement the computer functions described in this disclosure, one or more computers or computer systems shown in other figures can include all or part of computer system 1010 and its components, or one or more computers can communicate with all or part of computer system 1010 and its components as a remote computer system, or both. For example, control system 1007 can be all or partly a representation of the control systems depicted in other figures herein.
[0096] In embodiments according to the present disclosure, one or more programs can be stored on one or more computer-readable storage media such that the program is embodied or encoded or both in the computer-readable storage media. In one example, the stored program can include program instructions for execution by a processor or a computer system having a processor to perform a method or cause a computer system to perform one or more functions. For example, in one embodiment according to the present disclosure, the program embodying the method includes a non-transitory or non-volatile computer-readable storage media and is embodied or encoded in a computer-readable storage media defined as a non-transitory or non-volatile computer-readable storage media. Thus, embodiments or examples according to the present disclosure of computer-readable storage media do not include signals, and embodiments can include one or more non-transitory or non-volatile computer-readable storage media. Thereby, in one example, the program can be recorded on the computer-readable storage media and become structurally and functionally interrelated with the media.
[0097] In addition, computer 1010 may communicate with one or more external devices 1074 such as a keyboard, a pointing device, a display 1080, one or more devices that enable a user to interact with computer 1010, or any device that enables computer 1010 to communicate with one or more other computing devices (e.g., a network card, a modem, etc.), or a combination thereof. Such communication may occur via an input / output (I / O) interface 1022. A power supply 1090 can also be connected to the computer using a power supply interface (not shown). Additionally, computer 1010 can communicate with one or more networks 1200 such as a local area network (LAN), a regular wide area network (WAN), or a public network (e.g., the Internet), or a combination thereof, via a network adapter / interface 1026. As depicted, network adapter 1026 communicates with other components of computer 1010 via bus 1014. Although not shown, it should be understood that other hardware components or software components or both may be used in conjunction with computer 1010. Examples include, but are not limited to, microcode, device drivers 1024, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archive storage systems.
[0098] The computer or program running on computer 1010 may communicate with a server embodied as server 1100 via one or more communication networks embodied as communication network 1200. It is understood that communication network 1200 may include, for example, wireless, wired, or fiber optic, and transmission media and network links including routers, firewalls, switches, and gateway computers. The communication network may include connections such as electrical wires, wireless communication links, or fiber optic cables. The communication network may represent a worldwide collection of networks and gateways, such as the Internet, that communicate with each other using various protocols such as the Lightweight Directory Access Protocol (LDAP), Transmission Control Protocol / Internet Protocol (TCP / IP), Hypertext Transfer Protocol (HTTP), Wireless Application Protocol (WAP). The network may include several different types of networks such as, for example, an intranet, a Local Area Network (LAN), or a Wide Area Network (WAN).
[0099] In one example, a computer can use a network that accesses websites on the web (World Wide Web) using the Internet. In one embodiment, a computer 1010, including a mobile device, can use a communication system or network 1200 that includes the Internet, or a public switched telephone network (PSTN), such as a cellular network. The PSTN may include telephone lines, fiber optic cables, microwave transmission links, cellular networks, and communication satellites. The Internet can facilitate a number of search and texting techniques, such as sending a query to a search engine via a text message (SMS), a multimedia messaging service (MMS) (related to SMS), email, or a web browser, using, for example, a cell phone or a laptop computer. The search engine can retrieve search results, i.e., links to websites, documents, or other downloadable data corresponding to the query, and similarly provide the search results to a user via the device, for example, as a web page of the search results.
[0100] Other aspects and examples The present invention may be a system, method, or computer program product, or a combination thereof, at any possible technical detail level of integration. The computer program product may include one computer-readable storage medium (or a plurality of computer-readable storage media) having computer-readable program instructions thereon for causing a processor to execute aspects of the present invention.
[0101] A computer-readable storage medium can be a tangible device that can hold and store instructions for use by an instruction-executing device. A computer-readable storage medium can be, for example, but 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 thereof. A non-exhaustive list of more detailed examples of computer-readable storage media is as follows, namely, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (RAM), an erasable programmable read-only memory (EPROM or flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disc (DVD), a memory stick, a floppy (R) disk, a punch card, or a mechanically encoded device such as a raised structure in a groove having instructions recorded thereon, and any suitable combination thereof. As used herein, a computer-readable storage medium should not be construed to be a transient signal per se, such as a radio wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., an optical pulse passing through an optical fiber cable), or an electrical signal transmitted through an electrical wire.
[0102] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to respective computing / processing devices, or to an external computer or external storage device via 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 transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface of each computing / processing device receives the computer-readable program instructions from the network and transfers the computer-readable program instructions for storage on a computer-readable storage medium within each respective computing / processing device.
[0103] The computer-readable program instructions for carrying out the operations of the present invention may be source code or object code written in any combination of one or more programming languages, including assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state setting data, configuration data for integrated circuits, or object-oriented programming languages such as Smalltalk, C++, and procedural programming languages such as the "C" programming language or similar programming languages. The computer-readable program instructions may be executed 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 the remote computer or server. In the last scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection to an external computer may be made (e.g., through the Internet using an Internet service provider). In some embodiments, for example, an electronic circuit including a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA) may execute the computer-readable program instructions by utilizing the state information of the computer-readable program instructions to personalize the electronic circuit for carrying out aspects of the present invention.
[0104] Aspects of the present invention are described herein with reference to flowcharts and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the present invention. It will be understood that each block of the flowcharts and / or block diagrams, and combinations of blocks in the flowcharts and / or block diagrams, can be implemented by computer-readable program instructions.
[0105] These computer-readable program instructions may be provided to the processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which are executed by the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / acts specified in one or more blocks of the flowchart and / or block diagram. These computer-readable program instructions may also be stored in a computer-readable storage medium that can direct a computer, programmable data processing apparatus, or other device to function in a particular manner, such that the medium storing the instructions contains an article of manufacture including instructions which implement the function / act specified in one or more blocks of the flowchart and / or block diagram.
[0106] The computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus, or other device to produce a computer-implemented process, such that the instructions which are executed on the computer, other programmable apparatus, or other device implement the functions / acts specified in one or more blocks of the flowchart and / or block diagram.
[0107] The flowcharts and block diagrams in the drawings of the present disclosure illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagram may represent a module, segment, or portion of instructions that include one or more executable instructions for implementing a specified logical function. In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the figures. For example, two blocks shown in succession may in fact be executed as one step, executed at the same time, substantially concurrently, partially or wholly in temporal overlap, or the blocks may sometimes be executed in the reverse order depending on the functionality involved. It should also be noted that each block of the block diagrams or flowcharts, or combinations of both, can be implemented by a dedicated hardware-based system that performs the specified functions or acts, or by a combination of dedicated hardware and computer instructions.
[0108] Additional aspects and examples The present disclosure includes detailed descriptions regarding cloud computing, but it should be understood that the implementations of the teachings described herein are not limited to a cloud computing environment. Rather, embodiments of the present invention can be implemented in conjunction with any other type of computing environment, now known or later developed.
[0109] Cloud computing is a service delivery model that enables convenient on-demand network access to a shared pool of configurable computing resources (such as networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal management 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.
[0110] The characteristics are as follows.
[0111] On-demand self-service: A cloud consumer can unilaterally and automatically provision computing capabilities, such as server time and network storage, as needed, without the need for human interaction with the service provider.
[0112] Broad network access: The capabilities are available over the network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (such as mobile phones, laptops, and PDAs).
[0113] Resource pooling: A provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, and different physical and virtual resources are dynamically assigned and reassigned according to demand. There is a sense of location independence in that consumers generally have no control over or knowledge of the exact location of the provided resources, although it may be possible to specify location at a higher level of abstraction (such as country, state, or data center).
[0114] Rapid elasticity: The ability can be provisioned quickly and elastically, sometimes automatically, to scale out rapidly and released quickly to scale in. To the consumer, the available capacity for provisioning often appears limitless and any amount can be purchased at any time.
[0115] Measured service: The cloud system automatically controls and optimizes resource usage by leveraging metering capabilities at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency to both the provider and consumer of the utilized service.
[0116] The service model is as follows.
[0117] Software as a Service (SaaS): The ability provided to the consumer is to use the provider's applications running on the cloud infrastructure. The applications are accessible from various 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 even the capabilities of the individual applications, with the possible exception of limited user-specific application configuration settings.
[0118] Platform as a Service (PaaS): The capabilities provided to consumers are to deploy applications created or acquired by consumers, which are created using programming languages and tools supported by the provider, onto the cloud infrastructure. Consumers do not manage or control the underlying cloud infrastructure, which includes the network, servers, operating systems, or storage, but can control the deployed applications and, possibly, the configuration of the application's hosting environment.
[0119] Infrastructure as a Service (IaaS): The capabilities provided to consumers are to provision processing, storage, networks, and other fundamental computing resources where consumers can deploy and run any software that may include operating systems and applications. Consumers do not manage or control the underlying cloud infrastructure but can control the operating systems, storage, deployed applications, and possibly perform limited control of selected networking components (e.g., the host firewall).
[0120] The deployment models are as follows.
[0121] Private cloud: The cloud infrastructure is operated solely for an organization. The cloud infrastructure may be managed by the organization or a third party and may exist on - premise or off - premise.
[0122] Community Cloud: The cloud infrastructure is shared by several organizations and supports a specific community with common concerns (e.g., mission, security requirements, policies, and compliance considerations). The cloud infrastructure may be managed by an organization or a third party and may exist on-premises or off-premises.
[0123] Public Cloud: The cloud infrastructure is made available to the general public or a large industry group and is owned by an organization that sells cloud services.
[0124] Hybrid Cloud: The cloud infrastructure remains a distinct entity but is a composition of two or more clouds (private, community, or public) tied together by standardized or proprietary technologies (e.g., cloud bursting for load distribution between clouds) that enable data and application portability.
[0125] The cloud computing environment is service-oriented and emphasizes statelessness, loose coupling, modularity, and semantic interoperability. At the center of cloud computing is an infrastructure that includes a network of interconnected nodes.
[0126] Referring now to FIG. 6, an exemplary cloud computing environment 2050 is depicted. As shown, cloud computing environment 2050 includes one or more cloud computing nodes 2010 that may communicate with local computing devices used by cloud consumers, such as, for example, a personal digital assistant (PDA) or cellular telephone 2054A, desktop computer 2054B, laptop computer 2054C, or in-vehicle computer system 2054N, or a combination thereof. Nodes 2010 may communicate with one another. Nodes 2010 may be physically or virtually grouped in one or more networks such as the private, community, public, or hybrid clouds described above, or a combination thereof (not shown). This enables cloud computing environment 2050 to provide infrastructure, platforms, software, or combinations thereof as services such that a cloud consumer need not maintain resources on a local computing device. The types of computing devices 2054A - N shown in FIG. 6 are intended to be exemplary only, and it should be understood that cloud computing nodes 2010 and cloud computing environment 2050 can communicate with any type of computerized device via any type of network, or network addressable connection, or both (e.g., using a web browser).
[0127] Referring now to FIG. 7, a set of functional abstractions provided by cloud computing environment 2050 (FIG. 6) is shown. It should be understood in advance that the components, layers, and functions shown in FIG. 7 are intended to be exemplary only and embodiments of the invention are not limited thereto. As depicted, the following layers and corresponding functions are provided.
[0128] The hardware and software layer 2060 includes hardware and software components. Examples of hardware components include mainframe 2061, RISC (Reduced Instruction Set Computer) architecture-based server 2062, server 2063, blade server 2064, storage device 2065, and network and networking components 2066. In some embodiments, the software components include network application server software 2067 and database software 2068.
[0129] The virtualization layer 2070 provides an abstraction layer from which the following examples of virtual entities may be provided: virtual server 2071, virtual storage 2072, virtual network 2073 including a virtual private network, virtual applications and operating systems 2074, and virtual client 2075.
[0130] In one example, management layer 2080 may provide the functions described below. Resource provisioning 2081 provides for the dynamic procurement of computing resources and other resources utilized to execute tasks within a cloud computing environment. Measurement and pricing 2082 provides for cost tracking when resources are utilized within a cloud computing environment and for billing or charging for consumption of these resources. In one example, these resources may include licenses for application software. Security provides for the verification of identities regarding cloud consumers and tasks and for the protection of data and other resources. User portal 2083 provides access to the cloud computing environment for consumers and system administrators. Service level management 2084 provides for the allocation and management of cloud computing resources such that the required service levels are met. Planning and fulfillment of service quality assurance contracts (SLAs) 2085 provides for the advance arrangement and procurement of cloud computing resources for which future needs are anticipated according to the SLA.
[0131] Workload layer 2090 provides examples of functions for which a cloud computing environment may be utilized. Examples of workloads and functions that may be provided from this layer include maps and navigation 2091, software development and life cycle management 2092, virtual classroom education delivery 2093, data analysis processing 2094, transaction processing 2095, and, for example, software replication 2096 in a multi-cloud environment using control software.
Claims
1. A method implemented by a computer using control software for replicating a software cluster including containers to another computing environment, the method comprising: using a computer to generate a software operator related to the modular functions of a control software cluster, the software operator being derived from analyzing the control software cluster including containers in a software computing environment, the software operator being further derived from analyzing the code of the control software cluster including the containers and from analyzing the software configuration of the control software cluster; wherein generating the software operator at least partially includes determining software configuration requirements of the control software cluster, the control software cluster including the containers for executing the software operator of the control software cluster in another software computing environment; wherein generating the software operator at least partially includes analyzing the another software computing environment for executing the software operator of the control software cluster; wherein generating the software operator includes creating a template for the control software cluster based on the determined software configuration requirements and the analysis of the another software computing environment, the template including data for a custom resource definition for executing the software operator in the another software computing environment; the method including replicating all or part of the software operator of the control software cluster to the another software computing environment based on the analysis of the another software computing environment and the software configuration requirements.
2. The method according to claim 1, wherein the analysis of the other software computing environment includes comparing the component requirements of the control software cluster with the other software computing environment.
3. The method according to claim 1 or 2, further comprising receiving, in the computer, from an operator, a selection of components of the software computing environment for generating the software operator.
4. analyzing the software operator to determine a hierarchy for each of the software operators; The method according to any one of claims 1 to 3, further comprising recreating an instance of the control software cluster in the other software computing environment based on the hierarchy.
5. The method according to any one of claims 1 to 4, wherein the control software cluster is a running application within the computing environment, and the running application includes software code executed by a processor.
6. The method according to any one of claims 1 to 5, wherein the software computing environment and the other software computing environment are different cloud computing environments.
7. The method according to any one of claims 1 to 6, wherein the software operator is created in response to the analysis of the other software computing environment and the creation of the template, and the analysis of the container of the control software cluster is to determine a hierarchy for each of the software operators.
8. generating a model using the computer, the model being updating the determination of the software component requirements of the control software cluster; updating the analysis of the other software computing environment for executing the software operator of the control software cluster; Updating the generation of the software operator, at least partially including updating the creation of the template for the control software cluster based on the determined software component requirements and the analysis of the another software computing environment, and Further including generating, including updating all or part of the replication of the software operator of the control software cluster in the another software computing environment based on the updated analysis of the another software computing environment and the software component requirements, the method according to any one of claims 1 to 7. **Claim 9** The method according to claim 8, further including repeatedly generating the model to generate an updated model. **Claim 10** A system using control software for replicating a software cluster including containers to another computing environment, A computer system including a computer processor, a computer-readable storage medium, and program instructions stored in the computer-readable storage medium, the program instructions causing the computer system to Generate, using a computer, a software operator related to the modular functions of a control software cluster, the software operator being derived from analyzing the control software cluster including containers in a software computing environment, the software operator being further derived from analyzing the code of the control software cluster including the containers and analyzing the software configuration of the control software cluster, and being executable by the processor to perform the function for performing the generating, The generating of the software operator includes determining software component requirements of the control software cluster, the control software cluster including the container for executing the software operator of the control software cluster in another software computing environment, the determining at least partially including The generation of the software operator at least partially includes analyzing the another software computing environment for executing the software operator of the control software cluster, The generation of the software operator is to create a template for the control software cluster based on the determined software components and the analysis of the another software computing environment, the template including data for custom resource definition for executing the software operator in the another software computing environment, the creating at least partially including, the program instructions causing the computer system to have the following functions, that is, Based on the analysis of the another software computing environment and the software components, being executable by the processor to cause the computer system including the another software computing environment to execute a function for replicating all or part of the software operator of the control software cluster in the another software computing environment.
11. The system according to claim 10, wherein the analysis of the another software computing environment includes comparing the components of the control software cluster with the another software computing environment.
12. The system according to claim 10 or 11, further including a function for receiving from an operator in the computer a selection of components of the software computing environment for generating the software operator.
13. Analyzing the software operator to determine a hierarchy for each of the software operators, The system according to any one of claims 10 to 12, further including a function for recreating an instance of the control software cluster in the another software computing environment based on the hierarchy.
14. The system according to any one of claims 10 to 13, wherein the control software cluster is an application running in the computing environment, and the running application includes software code executed by a processor.
15. The system according to any one of claims 10 to 14, wherein the software computing environment and the other software computing environment are different cloud computing environments.
16. The system according to any one of claims 10 to 14, wherein the software operator is created in response to the analysis of the other software computing environment and the creation of the template, and the analysis of the containers of the control software cluster is to determine a hierarchy for each of the software operators.
17. A computer program product using control software for replicating a software cluster including containers to another computing environment, the computer program product including a computer-readable storage medium having program instructions embodied by the computer-readable storage medium, the program instructions being executable by a computer to cause the computer to perform functions, and the functions being generating, using a computer, software operators related to the modular functions of a control software cluster, the software operators being derived from analyzing the control software cluster including containers in a software computing environment, the software operators being further derived from analyzing the code of the control software cluster including the containers and analyzing the software configuration of the control software cluster, and including the function for performing the generating. The generation of the software operator is to determine the software components of the control software cluster, and the control software cluster includes the container for executing the software operator of the control software cluster in another software computing environment, and the determining at least partially includes The generation of the software operator at least partially includes analyzing the another software computing environment for executing the software operator of the control software cluster The generation of the software operator is to create a template for the control software cluster based on the determined software components and the analysis of the another software computing environment, and the template includes data for custom resource definition for executing the software operator in the another software computing environment, and the creating at least partially includes A computer program product including a function for replicating all or part of the software operator of the control software cluster in the another software computing environment based on the analysis of the another software computing environment and the software components
18. The computer program product according to claim 17, wherein the analysis of the another software computing environment includes comparing the components of the control software cluster with the another software computing environment
19. The computer program product according to claim 17 or 18, further including a function for receiving, in the computer, a selection of components of the software computing environment for generating the software operator from an operator
20. Analyzing the software operator to determine a hierarchy for each of the software operators The computer program product according to claim 17, 18, or 19, further comprising a function for recreating an instance of the control software cluster in the other software computing environment based on the hierarchy.
21. A computer program comprising program code means adapted to execute the method according to any one of claims 1 to 9 when the program is executed on a computer.