Multi-tiered hybrid multi-cloud service management architecture
The multi-cloud service manager addresses the complexity of managing diverse cloud environments by detecting inter-cloud negotiations, selecting and designating local controllers, and performing service discovery, resulting in optimized resource allocation and enhanced system performance.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- INTERNATIONAL BUSINESS MACHINE CORPORATION
- Filing Date
- 2024-05-29
- Publication Date
- 2026-07-07
AI Technical Summary
Managing multi-cloud networks is challenging due to a lack of visibility into workloads across various clouds, creating difficulties with compliance and regulatory constraints, and the complexity of managing diverse cloud environments hinders IT teams from focusing on innovation.
A multi-cloud service manager that detects inter-cloud service negotiations, identifies and selects local controllers based on performance metrics, designates a supercontroller to manage resources, and performs service discovery across multiple cloud environments, maintaining a controller repository for efficient resource allocation and task distribution.
This approach optimizes resource utilization, ensures efficient task completion, enhances system performance, and improves flexibility and resilience in managing multi-cloud environments by providing a centralized management point and dynamic resource allocation.
Smart Images

Figure 2026522183000001_ABST
Abstract
Description
Technical Field
[0001] The present invention generally relates to network management. More specifically, the present invention relates to methods, systems, and computer programs for multi-layer multi-cloud service management.
[0002] Hybrid cloud technologies that integrate private (hosted on-premises or in a colocation facility) and public cloud infrastructure have evolved significantly in recent years. The current trend of deploying hybrid cloud and multi-cloud strategies is similar to achieving near-universal use among modern enterprises. This evolution may be due to the pursuit of avoiding vendor lock-in, making full use of best-in-class solutions, or sometimes occurring unintentionally as a result of "shadow IT," which occurs when information technology systems, solutions, software, or hardware are managed and utilized without the knowledge of or explicit approval from an organization's IT department.
[0003] A multi-cloud approach (also simply called a cloud network) is a composite structure composed of various interconnected elements (cloud providers) that process information according to an organization's needs. A multi-cloud infrastructure is designed according to the network interconnectivity but functions as processing devices (algorithms and / or platforms) of different scales. Large-scale multi-cloud setups may span several cloud providers, while a single enterprise may, in some cases, manage workloads in the billions, and accordingly, the complexity of their overall interactions and emergent behavior increases.
Summary of the Invention
[0004] Exemplary embodiments achieve the management of a multi-layer hybrid multi-cloud environment.
[0005] According to one aspect of the present invention, one embodiment includes a multi-cloud service manager detecting inter-cloud service negotiations between multiple cloud environments, wherein the inter-cloud service negotiations represent interactions between the multiple cloud environments. By detecting inter-cloud service negotiations between multiple cloud environments, the multi-cloud service manager can understand the distribution of resources and tasks across multiple cloud environments, which can facilitate more efficient management of these resources.
[0006] The embodiment also includes the multi-cloud service manager identifying multiple local controllers within the multiple cloud environments, where one of the multiple local controllers is a computer control node configured to manage resources associated with a cloud environment, including workers, and where the workers are computer execution nodes configured to perform tasks using the resources associated with the cloud environment. Identifying multiple local controllers within the multiple cloud environments provides a technical advantage in recognizing resource management nodes in multiple different cloud environments. Identifying local controllers allows the multi-cloud service manager to have a clear view of which nodes are managing resources, which can lead to improved decision-making regarding task and resource allocation.
[0007] The embodiment also includes the multi-cloud service manager selecting a local controller from among the multiple local controllers based on the performance metrics of the local controllers. By selecting a local controller from among the multiple local controllers based on the performance metrics of the local controllers, it is ensured that the most efficient node for the task is selected. This provides a technical advantage in that it ensures optimal resource utilization and task completion speed. By selecting the local controller with the best performance metrics, the process ensures that the task at hand is completed as efficiently as possible.
[0008] The embodiment also includes designating the selected local controller as a supercontroller by the multi-cloud service manager, wherein the supercontroller is configured to manage resources associated with the multiple cloud environments, including the multiple local controllers. Designating the selected local controller as a supercontroller is a strategic decision to enhance resource management across cloud environments. The technological advantage here is the creation of a centralized management point for multiple cloud environments. This helps streamline task distribution and resource allocation processes and enables a more efficient and coordinated approach to managing tasks across multiple cloud environments.
[0009] Overall, this embodiment yields significant technical benefits in improving the efficiency and management of multi-cloud environments. By identifying, selecting, and specifying specific nodes, the multi-cloud service manager can optimize resource allocation, ensure that tasks are distributed efficiently, and enhance overall system performance across multiple cloud environments.
[0010] In one embodiment, the performance metrics include at least one of workload, processing power, and service accessibility. This embodiment, in which the performance metrics include at least one of workload, processing power, and service accessibility, provides a technical advantage of multifaceted evaluation of the local controller. Such an approach ensures that the optimal local controller is selected based on a variety of determinants, thereby ensuring high efficiency and best use of resources across the cloud environment.
[0011] In one embodiment, the multi-cloud service manager performs service discovery across the multiple cloud environments. This embodiment, in which the multi-cloud service manager performs service discovery across the multiple cloud environments, provides a technical advantage of a dynamic and up-to-date understanding of the entire multi-cloud system. This real-time mapping enables accurate tracking of resource availability and load distribution, ensuring optimized and efficient system performance.
[0012] In one embodiment, performing service discovery includes identifying multiple local controllers and multiple workers within the multiple cloud environments. In this embodiment, performing service discovery includes identifying multiple local controllers and multiple workers within the multiple cloud environments, there is a technical advantage in obtaining up-to-date knowledge about all compute and control nodes in the system. This provides a comprehensive view of all available resources and enables optimal task allocation.
[0013] In one embodiment, the multi-cloud service manager updates the controller repository in response to performing the service discovery. This embodiment, which includes updating the controller repository in response to service discovery, provides the technical advantage of maintaining up-to-date records of the system architecture and resources. This facilitates strategic and efficient resource allocation and further optimizes multi-cloud management.
[0014] In one embodiment, in response to the supercontroller selecting a second local controller for resource allocation, the multi-cloud service manager transmits an allocation request to the second local controller among the plurality of local controllers. Transmitting an allocation request to the second local controller among the plurality of local controllers in response to the supercontroller selecting a second local controller for resource allocation provides a technical advantage in ensuring efficient distribution of workloads. This embodiment ensures that resources are utilized efficiently, that no single local controller is overloaded, and maintains the overall health and performance of the system.
[0015] In one embodiment, in response to the supercontroller selecting a second worker for resource allocation, the multi-cloud service manager transmits an allocation request to the second worker in the multiple cloud environments. This embodiment, which includes the transmission of an allocation request to the second worker in the multiple cloud environments in response to the supercontroller selecting a second worker for resource allocation, provides the technical advantage of dynamic and optimal task allocation. This embodiment ensures that workloads are distributed among workers, promoting efficient resource use and improved system performance.
[0016] One embodiment includes the multicloud service manager selecting a second local controller from among the multiple local controllers; designating the selected second local controller as a second supercontroller; de-designating the supercontroller as a supercontroller; and updating the controller repository. In the embodiment in which the multicloud service manager selects a second local controller from among the multiple local controllers, there is an advantage in that the leadership roles within the system can be dynamically reconfigured. This allows the system to adapt to changing workloads and conditions, thereby enhancing the overall efficiency and resilience of the system.
[0017] The aforementioned multi-cloud service manager offers the advantage of enabling a novel perspective and approach to managing resources and tasks across multiple cloud environments by designating the selected second local controller as a second supercontroller. The new supercontroller may bring different strengths or capabilities, potentially leading to improvements in system performance.
[0018] The aforementioned multi-cloud service manager offers the advantage of flexibility by allowing the supercontroller to be removed from its designated supercontroller role. This enables efficient rotation of roles within the system. This also provides opportunities for a previously designated supercontroller to be used in multiple different ways within the system.
[0019] Finally, the action of updating the controller repository via the multi-cloud service manager provides the benefit of maintaining a current record of the system's management structure. This helps track the evolution of system performance, resource allocation, and roles within the system, ensuring a well-coordinated and effective multi-cloud environment.
[0020] Overall, this embodiment enhances the system's flexibility, dynamism, and adaptability, improving the resilience and performance of multi-cloud environments.
[0021] In one embodiment, updating the controller repository includes merging a first service discovery record associated with the supercontroller that has been removed from designation with a second service discovery record associated with the second supercontroller. In this embodiment, updating the controller repository includes merging a first service discovery record associated with the supercontroller that has been removed from designation with a second service discovery record associated with the second supercontroller, there is an advantage in retaining accumulated knowledge and insights of both the outgoing and incomoing supercontrollers. This facilitates a smooth transition in resource management and ensures service continuity.
[0022] The act of merging service discovery records ensures that all relevant information, including operational data, performance metrics, and resource usage patterns from both supercontrollers, is centrally managed. This helps provide a comprehensive overview of the system's state and performance over the long term, enabling improved decision-making and planning.
[0023] In addition, by combining these records, the system enhances the efficiency and reliability of the system's data management practices by preventing potential data loss and avoiding unnecessary duplication.
[0024] Overall, this step of merging service discovery records contributes to a more seamless transition between supercontrollers, preserves critical system data, and enhances the overall efficiency and effectiveness of multi-cloud service manager operations.
[0025] One embodiment of the operation of a multi-cloud service manager may include a supercontroller performing service discovery to identify local controllers and workers across the cloud environment, updating the controller repository, and then sending allocation requests to the selected local controllers and workers. This embodiment may have a technical advantage in creating a more dynamic and responsive cloud environment. In particular, the service discovery feature may allow the supercontroller to have real-time insights into the resources and capacity available across the cloud environment, which may consequently influence improved resource allocation decision-making.
[0026] A specific use case of this embodiment or another embodiment may involve a large organization with operations spanning different geographical locations. Each location may have its own local cloud environment, but resources need to be efficiently shared and allocated across these locations. The organization may implement a multi-cloud service manager to manage these resources. The manager can identify local controllers within each cloud environment, designate a supercontroller based on performance metrics, and then effectively manage resources across all environments. If there is a surge in demand for resources in one location, the supercontroller can immediately reallocate resources to meet this demand, enhancing the organization's operational efficiency and responsiveness.
[0027] One embodiment includes a computer-readable program product. The computer-readable program product includes a computer-readable storage medium and program instructions stored on the storage medium.
[0028] One embodiment includes a computer system. The computer system includes a processor, a computer-readable memory, and a computer-readable storage medium, and includes program instructions stored on the storage medium that are executed by the processor via the memory.
Brief Description of the Drawings
[0029] The novel features believed to be characteristic of the invention are set forth in the appended claims. However, the invention itself, and the preferred mode of use, further objectives, and advantages thereof, will be best understood by reference to the following detailed description of illustrative embodiments when read in conjunction with the accompanying drawings.
[0030] [Figure 1] A block diagram of a computing environment according to an illustrative embodiment is shown.
[0031] [Figure 2] A block diagram of an exemplary software integration process according to an illustrative embodiment is shown.
[0032] [Figure 3] A block diagram of an exemplary hybrid multi-cloud environment according to an illustrative embodiment is shown.
[0033] [Figure 4] A block diagram of an exemplary diagram of a supercontroller according to an illustrative embodiment is shown.
[0034] [Figure 5] A block diagram of an exemplary diagram of a supercontroller according to an illustrative embodiment is shown.
[0035] [Figure 6]This shows a block diagram of an exemplary diagram of a multi-tier hybrid multi-cloud service management architecture according to one exemplary embodiment.
[0036] [Figure 7] This shows a block diagram of an exemplary diagram of a multi-tier hybrid multi-cloud service management architecture according to one exemplary embodiment.
[0037] [Figure 8] This shows a block diagram of an exemplary process for managing a multi-tiered, multi-cloud architecture according to one exemplary embodiment.
[0038] [Figure 9] This shows a block diagram of an exemplary process for managing a multi-tiered, multi-cloud architecture according to one exemplary embodiment. [Modes for carrying out the invention]
[0039] Hybrid cloud technology promises efficiency through seamless integration of private and public cloud resources, resource optimization, improved scalability, and enhanced disaster recovery capabilities. Despite these expected benefits, managing multi-cloud networks quickly becomes challenging due to a lack of visibility into workloads across various clouds, creating difficulties when compliance and regulatory constraints are critical to business operations.
[0040] This creates an urgent need for a comprehensive and robust multi-cloud network infrastructure. This infrastructure aims to provide agility, flexibility, resilient scaling, operational efficiency, and security, encompassing everything from workload management to access. These multi-cloud networking solutions must ensure consistent network policies across various cloud providers through software. Elements such as network configuration, security policies, troubleshooting, and even analytics and reporting should be accessible regardless of where the workload is running.
[0041] Organizations frequently require the flexibility to migrate workloads according to their unique operational needs. However, managing such workloads across multiple cloud environments with diverse interfaces and tools can be a challenging task. As a result, IT teams often become preoccupied with the complexities of day-to-day IT infrastructure operations rather than driving innovation and streamlining connectivity between these diverse environments.
[0042] Furthermore, in light of the need for increased flexibility, organizations are gradually adopting local cloud-as-a-service (LCaaS) platforms. LCaaS is a service cloud option that allows organizations to consume infrastructure as resources rather than as individual components or products, provided by a dedicated or private provider. This approach significantly simplifies the management of the digital environment, which can strengthen the alignment between IT investments and business operations.
[0043] The LCaaS platform allows you to leverage the benefits of the public cloud within a dedicated on-premises environment. It serves as the foundation for a hybrid cloud model, providing a consistent and effective strategy for migrating and managing workloads and applications.
[0044] LCaaS platforms can deliver improved organizational efficiency and productivity. By reducing the complexity associated with traditional methods, these platforms create a more agile and responsive IT infrastructure. As a result, organizations can focus more on transformation with less emphasis on day-to-day operational complexities, paving the way for meaningful business growth and transformation.
[0045] Nevertheless, the technological landscape highlights the urgent need for a way to skillfully manage multiple multi-cloud networks. This requirement applies across various platforms, whether LCaaS or any other cloud service provider. The desired method must demonstrate robust efficiency to effectively meet the ever-evolving demands of modern organizations.
[0046] This disclosure addresses the aforementioned shortcomings by providing a process (and system, method, machine-readable medium, etc.) that unlocks the potential of a three-tier architecture in a hybrid multi-cloud infrastructure. This novel invention encompasses the maintenance of a controller repository containing information related to local controllers and workers, thereby facilitating the seamless integration and smooth operation of services across a hybrid multi-cloud environment.
[0047] The exemplary embodiment realizes a multi-tiered hybrid multi-cloud service management architecture. As used herein, “multi-tiered” can mean an architecture organized into several layers or tiers, each specialized in managing a particular type of task within a structured system design. As used herein, “hybrid” can mean a computing environment that integrates multiple types of cloud services, such as public and private clouds, into a single interconnected network. As used herein, “multi-cloud” can mean a strategy that includes the use of multiple cloud computing and storage services within a single network architecture. As used herein, “service” can mean, for example, a function or capability provided over a network by a cloud service provider. Such services may include a variety of services, such as software as a service (SaaS), platform as a service (PaaS), and infrastructure as a service (IaaS). As used herein, “management” can mean a collection of processes and tools used to monitor, control, and optimize tasks within the network. Management tasks may include, but are not limited to, a variety of operations, including resource provisioning and deprovisioning, performance monitoring, cost tracking, and security measures. As used herein, “architecture” may refer to the overall design and structure of the system, encompassing the arrangement of its components, their interactions, communication methodologies, and the principles and guidelines that govern its design.
[0048] For example, a multi-tier architecture may be designed to maintain a controller registry of local controllers and workers. The introduction of such an architecture can streamline the integration of services within a hybrid multi-cloud environment. This can be beneficial in modern digital environments where a versatile and robust architecture is often required for efficient management and operation. For instance, microservice infrastructure instances such as Kubernetes or pods may be launched on any of the clouds involved in a multi-cloud hybrid infrastructure. In such cases, the current technological landscape may lack orchestration requirements, which can hinder management and communication interfaces between the stakeholders involved. Users of a multi-tier architecture can enable the infrastructure to be effectively integrated and managed according to application specifications and target requirements.
[0049] The exemplary embodiments include a multi-tier architecture implemented within a hybrid multi-cloud environment. In some embodiments, the multi-tier architecture may include one or more supercontrollers, one or more local controllers, and one or more workers. For example, in some embodiments, a local controller, which may maintain its own control plane, may fit into a three-tier structure including a top tier containing supercontrollers, a middle tier containing local controllers, and a bottom tier containing workers. This structured hierarchy can result in enhanced control and improved orchestration in a multi-cloud environment, improving both efficiency and consistency across the various cloud platforms involved.
[0050] In some embodiments, the local controller may be a computer control node configured to manage resources associated with a cloud environment, including workers, among multiple cloud environments. As used herein, “computer control node” may refer to a computer processing system or device within a cloud environment that is responsible for management. It can oversee and control operations and ensure optimal performance and stability. This process may include monitoring available resources, coordinating tasks, load balancing, and managing worker activity within the cloud environment.
[0051] In some embodiments, a worker may be a computer execution node configured to perform tasks using resources associated with a cloud environment. As used herein, “computer execution node” may refer to a component in the cloud environment that directly handles the execution of tasks. It may be assigned computation jobs by a control node, such as a local controller or supercontroller, and it may use its processing power to perform tasks. The worker may perform actual computational operations that meet the objectives of cloud-based applications and services.
[0052] One possible scenario is having a single source controller that monitors all workers within a domain. In one non-exclusive example, there may be three controllers because three clouds are involved. In a scenario with one controller and two workers communicating with that controller, a problem can exist where direct information exchange is only possible between two of these (e.g., the controller and one of those workers), which can hinder worker sharing across the cloud infrastructure. Such scalability limitations can occur, for example, in a two-tier architecture. On the other hand, in a three-tier architecture, a single global controller (hereinafter referred to as the "supercontroller") may control local controllers and workers. In this three-tier architecture, workers are distributed across the architecture, potentially providing an improved and scalable solution for managing multi-cloud hybrid infrastructure.
[0053] In some embodiments, a supercontroller may be configured to manage resources associated with multiple cloud environments. This role may include the supercontroller orchestrating tasks, distributing resources, or otherwise managing operations across multiple cloud platforms by, for example, delegating tasks to local controllers or workers within the cloud environments. This process can ensure optimal resource utilization, reduce redundancy, and enable efficient load balancing. The broad influence and control capabilities of the supercontroller may provide an integrated and efficient approach to managing diverse cloud environments, which can be advantageous in multi-cloud architectures.
[0054] In some embodiments, cloud environments within a multi-cloud environment may include different computer hardware or software. For example, one cloud may run an Intel Skylake processor, which may be far more powerful than another cloud running an older x86 machine. Another example is that multiple different cloud environments may maintain their own Kubernetes and controller layers. Each of these cloud environments may have its own Kubernetes or extended VMs that orchestrate across pods. For example, each cloud environment may have its own control plane. In another case, each individual cloud may maintain its own unique Kubernetes.
[0055] An exemplary embodiment includes detecting inter-cloud service negotiations between multiple cloud environments. As used herein, “inter-cloud service negotiation” (also known as “satellite handshake”) may refer to the process of establishing communication and cooperation protocols between multiple different cloud environments. In some embodiments, inter-cloud service negotiations may represent interactions between multiple cloud environments. For example, when two distinctly different cloud systems initiate a process to share resources or information, they may perform inter-cloud service negotiations to establish communication standards and security protocols.
[0056] An exemplary embodiment involves identifying multiple local controllers across multiple cloud environments. Identifying multiple local controllers may involve recognizing and tracking local controllers in multiple different cloud environments within a hybrid or multi-cloud architecture. For example, a supercontroller may identify local controllers in IBM Cloud, Google Cloud, and AWS and maintain records of them for orchestration purposes. In some embodiments, local controllers may be tracked using a controller repository to store information related to components across multiple cloud environments.
[0057] In some embodiments, one of several local controllers may manage one or more workers. Managing workers may include controlling worker nodes in a cloud environment that are responsible for executing tasks or services. For example, a controller node in a Kubernetes environment may manage worker nodes by assigning tasks and monitoring their execution. These local controllers are defined controllers in the cloud and may maintain essential functions for discovering and managing services in their respective planes. Both local controllers and supercontrollers may share pre-established methods for discovering and managing services in the planes. This process may facilitate seamless interaction and management within a hybrid multi-cloud system, thereby contributing to the overall efficiency and resilience of the infrastructure. However, a controller may function as both a controller and a worker.
[0058] In some embodiments, workers may be distributed across inter-cloud environments. In such environments, workers may originate from any of the clouds involved. As a non-limiting example, workers may belong to the same cloud where the supercontroller resides, or to different clouds. In such cases, a single control plane may span various clouds, while local controllers can remain accessible from their corresponding workers. This configuration ensures smooth information exchange and maintains the control and management functions of local controllers within their respective clouds. As another non-limiting example, workers may belong to a different cloud than the local controller, requiring communication via inter-cloud transport layer security (TLS). This configuration ensures secure data transmission between multiple different clouds and maintains the integrity and confidentiality of the information exchanged.
[0059] An exemplary embodiment includes selecting a local controller from among several local controllers. Selecting a local controller may include choosing a specific local controller from among several local controllers for a particular task or role, for example, for designation as a supercontroller. This may be based on one or more performance factors, such as resource availability, geographical location, load balancing considerations, or any other relevant factors.
[0060] For example, performance factors may include computing capacity, which refers to the processing power of the local controller, including factors such as the number of cores and processing speed. Memory availability, which relates to the RAM available for task execution, can also be a significant performance factor, as it can affect the performance of the local controller's cloud environment. Additionally, storage capacity, including the total available storage space and the type of storage (e.g., SSD or HDD), and network bandwidth, which indicates the speed and latency of the local controller's network connection, may be considered.
[0061] Other performance factors may include task queue length, which reflects the number of tasks currently assigned to the local controller, and power efficiency, which takes into account the energy consumption of the local controller in operation. Historical performance, based on past records of the local controller's efficiency and reliability, may also be considered, along with uptime / downtime records, which measure the reliability and availability of the local controller.
[0062] Furthermore, the level of security measures and protocols present in the local controller, particularly compliance with relevant regulations regarding data handling and privacy, and the integration capabilities, which refer to the local controller's ability to integrate with other systems or software, may be considered in the selection process.
[0063] Furthermore, cost-effectiveness (the operating cost of the local controller relative to its performance), scalability (the capacity of the local controller to handle increasing workloads), redundancy (assessing the resilience and backup capabilities of the local controller in the event of a failure), and software compatibility (the local controller's compatibility with specific software or applications required to perform tasks) may also be considered.
[0064] For example, in some embodiments, a local controller may be selected based on the workload. As used herein, “workload” may mean the total number of computing tasks or processes imposed on a system or part of a system. For example, tasks running on a worker node in a cloud environment constitute that workload. As another example, in some embodiments, a local controller may be selected based on processing power. As used herein, “processing power” may mean the computing power or resources of a system or part of a system. For example, the processing power of a worker node may be determined by factors such as its CPU power, memory capacity, and network bandwidth. As yet another example, in some embodiments, a local controller may be selected based on service accessibility. As used herein, “service accessibility” may mean the state in which a particular service or resource within a system can be accessed and used. For example, service accessibility in a cloud environment may be determined by factors such as network connectivity, authorization, and the operational status of the service.
[0065] An exemplary embodiment includes designating a local controller as a supercontroller. Designating a local controller as a supercontroller may involve assigning it the highest level of control and orchestration responsibility, thus designating it as the “supercontroller.” For example, in a multi-cloud architecture, a local controller may be designated as a supercontroller to manage and coordinate other local controllers in the system. The supercontroller’s high position in the hierarchy may allow it to oversee and regulate the interactions and exchanges between various components of a hybrid multi-cloud system, thereby ensuring smooth and efficient operation.
[0066] In some embodiments, a supercontroller may manage one or more other local controllers among a plurality of local controllers. Managing local controllers may include controlling, coordinating, or orchestrating the operation of multiple local controllers within the system. For example, a supercontroller may manage other local controllers by overseeing their operation, coordinating inter-cloud communications, or distributing workloads among them.
[0067] In some embodiments, the supercontroller may be initialized dynamically or statically. For example, in some embodiments, the supercontroller may be launched from any preferred cloud location involved in satellite communications within a multi-cloud system. The supercontroller's location may be dynamically selected depending on the provisioning of current workloads in each cloud involved. Additionally or alternatively, the supercontroller may be determined by a static configuration triggered at the start of the satellite handshake.
[0068] In some embodiments, a supercontroller may be designated when inter-cloud service negotiations between multiple cloud environments are detected. For example, when a satellite handshake begins, a local controller may take over control of the multi-cloud environment, thereby promoting itself to a supercontroller. The supercontroller may be initialized from any preferred cloud location among the available multi-clouds involved in satellite communications. In one non-limiting example, the supercontroller's location may be dynamically selected based on the provisioning of current workloads in each involved cloud. Additionally or alternatively, a static configuration may be triggered during the initiation of the satellite handshake.
[0069] An exemplary embodiment involves a supercontroller managing multiple local controllers in multiple cloud environments. For example, in some embodiments, local controllers may reside under a supercontroller, where the local controllers in a defined cloud may have pre-established mechanisms for discovering and managing workers within their own control plane. For example, workers may be distributed across multiple clouds. Workers may originate from any of the involved clouds, including the same cloud where the supercontroller resides, or from different clouds. In such cases, one supercontroller control plane may span the clouds, while the local controllers continue to manage their own local workers. Additionally or alternatively, workers may reside in other clouds, requiring communication via inter-cloud TLS for secure data migration and interaction.
[0070] Exemplary embodiments include performing service discovery across multiple cloud environments. As used herein, “service discovery” may refer to the process of locating or identifying a service or resource within a distributed or cloud-based system. For example, in a Kubernetes environment, service discovery may be performed to identify the IP address and port of a pod running a particular service. In some embodiments, performing service discovery may be used to identify multiple local controllers and multiple workers within the aforementioned multiple cloud environments. Performing service discovery to identify local controllers and workers may involve using a service discovery mechanism to locate and identify multiple control nodes (local controllers) and compute nodes (workers) within a system. For example, a supercontroller may use service discovery to identify all local controllers and workers within a multi-cloud environment.
[0071] In some embodiments, service discovery may occur when the service is started. In this case, the local cloud may first provide a controller and then configure workers attached to the local controller. In another scenario, workers may already exist and be discovered by the supercontroller by being attached to the local controller. The supercontroller may then create a controller repository that is orchestrated across all involved clouds, facilitating improved inter-cloud communication and management.
[0072] An exemplary embodiment includes updating a controller repository. As used herein, “controller repository” may mean a database or storage system containing information about a multicloud environment. For example, a controller repository may contain details about the location, status, and capabilities of each local controller and / or worker in the multicloud environment. Updating a controller repository may include correcting the data stored in the controller repository to reflect the current state of the system. For example, if a new local controller is added to the multicloud environment or the status of a local controller changes, the supercontroller may update the controller repository to include this new information. This update ensures that the controller repository always provides an accurate snapshot of the current configuration and state of the system. In some embodiments, updating a controller repository may be based on the results of service discovery. For example, if service discovery identifies a new local controller or a change in the status of an existing local controller, the controller repository may be updated to reflect this change.
[0073] In some embodiments, once the supercontroller is initialized, instructions in the discovery and operation control plane may proceed as usual. In these scenarios, the local cloud may first provision the controller. Following this provisioning, the local controller may configure workers attached to it, facilitating effective resource integration and promoting overall network efficiency. For example, in some embodiments, workers may already exist and be attached to the local controller. In such scenarios, the workers may be discovered by the supercontroller, ensuring that the system is aware of all operational nodes and their current state. Upon discovery, the supercontroller may create a controller discovery record. Controller discovery records can facilitate efficient resource utilization and seamless service integration across multiple, entirely different cloud platforms.
[0074] An exemplary embodiment includes selecting one of several local controllers in response to receiving a service request requesting resource allocation. As used herein, “service request” may mean a request sent by a service or application requesting the allocation of a particular resource to it. For example, an application may send a service request requesting the allocation of more CPU power or memory to meet increased demand. For example, a service request may result from a user interacting with a computing device linked to a cloud environment and requesting resources to perform an operation associated with the user request.
[0075] An exemplary embodiment includes transmitting an allocation request to a selected local controller to request the distribution of resources. This process may include the supercontroller sending an allocation request to a selected local controller. For example, if the supercontroller determines that a particular service requires more resources, it may send an allocation request to the local controller instructing it to distribute those resources. In some embodiments, the supercontroller may query the satellite backbone to identify which local controller corresponds to a particular cloud ID. This query may ensure efficient routing of tasks and requests within the network, reduce communication overhead, and improve overall network efficiency.
[0076] In some embodiments, a supercontroller may intelligently route requests to specific local controllers. For example, in certain embodiments, a supercontroller may use artificial intelligence to learn from its interactions with other components of the network. For instance, it may learn from its requests to local controllers, for example, by recognizing which microservices are managed by a particular controller, and then act upon that particular local controller with a specific request. By including a supercontroller hierarchy that orchestrates across clouds in the architecture, services can be directly extended to another cloud outside the domain of the local controllers.
[0077] An exemplary embodiment includes selecting a worker from among several workers in response to receiving a service request for resource allocation. This process may include the supercontroller selecting a specific worker to allocate resources to in response to the service request. For example, the supercontroller may select the worker based on factors such as the worker's current workload, location, or available resources.
[0078] An exemplary embodiment includes transmitting an allocation request to a selected worker to request the distribution of resources. This process may include the supercontroller sending the allocation request to the selected worker through any preferred channel. For example, this step may occur after the supercontroller has determined that the worker is the most suitable choice to handle the requested resource distribution.
[0079] In some embodiments, workers may be concentrated in local controllers, and the supercontroller may be relegated to a passive role. In such scenarios, discovery and management operations may be performed by local controllers, and the role hierarchy may be simplified. This approach can decentralize control, spread management responsibilities across local controllers, and enhance the system's resilience and redundancy.
[0080] An exemplary embodiment includes a worker performing an action associated with an instruction. Performing an action associated with an instruction may include the worker performing a specific task or operation in response to an incoming command. For example, if a worker receives an instruction from a local controller or supercontroller to deploy a container, the worker may perform the operations necessary to fulfill that instruction. In some embodiments, the worker may be a local controller.
[0081] The exemplary embodiment includes selecting a second local controller from among several local controllers. Selecting a second local controller may include choosing another local controller from a group of local controllers in a multi-cloud environment. For example, if a more suitable local controller than the current supercontroller is identified in multiple cloud environments, that more suitable local controller may be selected. As another example, if the current supercontroller fails or needs to be replaced, a second local controller may be selected to take over its responsibilities.
[0082] An exemplary embodiment includes designating a selected second local controller as a second supercontroller. Designating a selected second local controller as a second supercontroller may include assigning the role of supercontroller to the selected second local controller. For example, if a more suitable supercontroller location is identified, or if a supercontroller fails, the selected second local controller may be promoted to supercontroller status.
[0083] The exemplary embodiment includes de-designating a supercontroller as a supercontroller. De-designating a supercontroller as a supercontroller may include removing the supercontroller role from the current supercontroller. For example, this may be part of a process to replace the current supercontroller with a new one.
[0084] An exemplary embodiment includes updating a controller repository in response to identifying a second supercontroller in multiple cloud environments. Updating the controller repository may include modifying the controller repository to include information about the newly identified second supercontroller. For example, if a second supercontroller is recognized in a multi-cloud environment, the controller repository may be updated to include information about this new supercontroller and / or information discovered by the original or the new supercontroller (e.g., as a result of performing service discovery), thereby enhancing overall system understanding and management.
[0085] For clarity of explanation, the exemplary embodiments are described using several exemplary configurations without implying any limitation. From this disclosure, those skilled in the art will be able to recognize many changes, adaptations, and modifications of the described configurations to achieve the described objectives, which are intended to be within the scope of the exemplary embodiments.
[0086] Furthermore, a simplified diagram of the data processing environment is used in the figures and illustrative embodiments. In actual computing environments, additional structures or components not shown or described herein, or structures or components different from those shown but for similar functions to those described herein, may exist without departing from the scope of the illustrative embodiments.
[0087] Furthermore, the exemplary embodiments are described merely as examples with respect to specific actual or hypothetical components. Any particular mention of these and other similar artifacts is not intended to limit the invention. Any preferred mention of these and other similar artifacts can be selected within the scope of the exemplary embodiments.
[0088] The examples in this disclosure are for illustrative purposes only and are not limited to illustrative embodiments. Any advantages listed herein are for illustrative purposes only and are not intended to limit the exemplary embodiments. Additional or different advantages may be realized by specific exemplary embodiments. Furthermore, specific exemplary embodiments may include some or all of the advantages listed above, or none of them.
[0089] Furthermore, the exemplary embodiments may be implemented with respect to any type of data, data source, or access to a data source via a data network. Any type of data storage device may, within the scope of the invention, provide data to embodiments of the invention locally in a data processing system or via a data network. If an embodiment is described using a mobile device, any type of data storage device suitable for use with a mobile device may, within the scope of the exemplary embodiments, provide data to such embodiments locally in the mobile device or via a data network.
[0090] The exemplary embodiments are described using specific code, computer-readable storage media, high-level features, designs, architectures, protocols, layouts, diagrams, and tools merely as examples, and are not limited to the exemplary embodiments. Furthermore, for clarity of explanation, the exemplary embodiments are described using specific software, tools, and data processing environments merely as examples. The exemplary embodiments may be used in conjunction with other equivalent or similar structures, systems, applications, or architectures. For example, other equivalent mobile devices, structures, systems, applications, or architectures may be used in conjunction with such embodiments of the present invention within the scope of the present invention. The exemplary embodiments may be implemented in hardware, software, or a combination thereof.
[0091] The examples in this disclosure are for illustrative purposes only and are not limited to illustrative embodiments. Additional data, behaviors, actions, tasks, activities, and operations may be recognized in this disclosure and are contemplated within the scope of the illustrative embodiments.
[0092] Various aspects of this disclosure are described by explanatory text, flowcharts, block diagrams of computer systems and / or block diagrams of mechanical logic included in computer program product (CPP) embodiments. With respect to any flowchart, depending on the technology involved, operations may be performed in a different order than those shown in a given flowchart. For example, again, depending on the technology involved, two operations shown in consecutive flowchart blocks may be performed in reverse order, as a single integrated step, simultaneously, or with at least partial time overlap.
[0093] Embodiments of a computer program product ("CPP Embodiments" or "CPP") are terms used in this disclosure to describe any set of one or more storage media (also called "mediums") that collectively comprise a set of one or more storage devices that collectively comprise machine-readable code corresponding to instructions and / or data for performing computer operations defined in a given CPP claim. "Storage device" is any tangible device capable of holding and storing instructions used by a computer processor. Computer-readable storage media may, but are not limited to, electronic storage media, magnetic storage media, optical storage media, electromagnetic storage media, semiconductor storage media, mechanical storage media, or any preferred combination thereof. Some known types of storage devices, including these media, include diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), compact disc read-only memory (CD-ROM), digital versatile disk (DVD), memory sticks, floppy disks, mechanically encoded devices (such as pits / lands formed on the main surface of a punch card or disk), or any suitable combination of the foregoing. Computer-readable storage media, when used in this disclosure, shall not be construed as storage in its own form of transient signals, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through waveguides, optical pulses passing through optical fiber cables, electrical signals communicated through wires, and / or other transmission media.As will be understood by those skilled in the art, data is typically moved at several intermittent points during the normal operation of a storage device, such as during access, defragmentation, or garbage collection; however, data is not temporary while it is stored, and therefore the storage device is not considered temporary.
[0094] Process software, including multi-tier hybrid multi-cloud orchestration software, enables coexistence between the process software and application, operating system, and network operating system software. It is then integrated into the client, server, and network environment by installing the process software on clients and servers within the environment in which the process software will function.
[0095] This integration process identifies any software on clients and servers that is required by or works in conjunction with the process software, including the network operating system on which the process software will be deployed. This includes software within the network operating system that enhances the underlying operating system by adding networking features. Software applications and version numbers are identified and compared against a list of software applications and version numbers that have been tested to work with the process software. Any missing software applications or those that do not match the correct version will be updated to have the correct version number. Program instructions that pass parameters from the process software to software applications will be checked to ensure that the parameter list matches the parameter list required by the process software. Conversely, parameters passed by software applications to the process software will be checked to ensure that those parameters match the parameters required by the process software. Client and server operating systems, including the network operating system, are identified and compared against a list of operating systems, version numbers, and network software that have been tested to work with the process software. Any operating systems, version numbers, and network software that do not match the list of tested operating systems and version numbers will be updated on clients and servers to meet the required level.
[0096] Integration is completed by installing the process software on the client and server after ensuring that the software to be deployed is at the correct version level that has been tested to work with the process software.
[0097] Referring to Figure 1, this figure shows a block diagram of the computing environment 100. The computing environment 100 includes an example of an environment for executing at least a portion of the computer code involved in performing the methods of the present invention, such as a multi-cloud service manager 200 for establishing a hierarchical architecture and orchestrating workloads across multiple cloud environments. In addition to block 200, the computing environment 100 includes, for example, a computer 101, a wide area network (WAN) 102, an end-user device (EUD) 103, a remote server 104, a public cloud 105, and a private cloud 106. In this embodiment, the computer 101 includes a processor set 110 (including a processing circuit configuration 120 and a cache 121), a communication fabric 111, volatile memory 112, persistent storage 113 (including an operating system 122 and block 200 as shown above), a peripheral device set 114 (including a user interface (UI) device set 123, storage 124, and an Internet of Things (IoT) sensor set 125), and a network module 115. The remote server 104 includes the remote database 130. The public cloud 105 includes the gateway 140, the cloud orchestration module 141, the host physical machine set 142, the virtual machine set 143, and the container set 144.
[0098] Computer 101 may take the form of a desktop computer, laptop computer, tablet computer, smartphone, smartwatch or other wearable computer, mainframe computer, quantum computer, or any other form of computer or mobile device currently known or to be developed in the future that is capable of running programs, accessing networks, or querying databases such as remote database 130. As is well understood in the field of computer technology, and depending on the technology, the execution of a computer implementation method can be distributed among multiple computers and / or multiple locations. On the other hand, in this presentation of computing environment 100, in order to keep the presentation as concise as possible, the detailed discussion focuses on a single computer, specifically computer 101. Computer 101 may be located in the cloud, even if it is not shown in the cloud in Figure 1. On the other hand, computer 101 does not need to be located in the cloud, except in any extent that can be definitively shown.
[0099] The processor set 110 includes one or more computer processors of any type currently known or to be developed in the future. The processing circuit configuration 120 may be distributed across multiple packages, e.g., multiple coordinated integrated circuit chips. The processing circuit configuration 120 may implement multiple processor threads and / or multiple processor cores. The cache 121 is memory located within the processor chip package and is typically used for data or code that should be available for high-speed access by threads or cores running on the processor set 110. The cache memory is typically organized into multiple levels depending on its relative proximity to the processing circuit configuration. Alternatively, some or all of the cache for the processor set may be located "off-chip". In some computing environments, the processor set 110 may be designed to operate in qubits and perform quantum computing.
[0100] Computer-readable program instructions typically cause the processor set 110 of computer 101 to execute a series of operational steps, thereby loading them onto computer 101 to implement a computer implementation method. As a result, the instructions thus executed instantiate the methods defined in the flowcharts and / or descriptions of the computer implementation methods contained herein (collectively referred to as the "Methods of the Invention"). These computer-readable program instructions are stored in various types of computer-readable storage media, such as the cache 121 and other storage media described later. The program instructions and associated data are accessed by the processor set 110 to control and direct the execution of the Methods of the Invention. In the computing environment 100, at least some of the instructions for executing the Methods of the Invention may be stored in block 200 of persistent storage 113.
[0101] The communication fabric 111 is a signal conduction path that enables various components of the computer 101 to communicate with one another. Typically, this fabric is made up of switches and conductive paths, such as buses, bridges, physical input / output ports, and similar components. Other types of signal communication paths, such as optical fiber communication paths and / or wireless communication paths, may be used.
[0102] The volatile memory 112 is any type of volatile memory currently known or to be developed in the future. Examples include dynamic type random access memory (RAM) or static type RAM. Typically, the volatile memory 112 is characterized by random access, but this is not required unless explicitly stated. In computer 101, the volatile memory 112 is located in a single package and is internal to computer 101, but alternatively or additionally, the volatile memory may be distributed across multiple packages and / or located externally to computer 101.
[0103] The persistent storage 113 is any form of non-volatile storage for a computer, currently known or to be developed in the future. The non-volatility of this storage means that the stored data is maintained whether or not power is directly supplied to the computer 101 and / or the persistent storage 113. The persistent storage 113 may be read-only memory (ROM), but typically at least a portion of the persistent storage allows for writing, deleting, and rewriting of data. Some well-known forms of persistent storage include magnetic disks and solid-state storage devices. The operating system 122 may take several forms, such as various known proprietary operating systems or open-source portable operating system interface (CSI) type operating systems employing a kernel. The code contained in block 200 typically includes at least a portion of computer code involved in performing the method of the present invention.
[0104] The peripheral device set 114 includes a set of peripheral devices for the computer 101. Data communication connections between the computer 101's peripheral devices and other components may be implemented in various ways, such as Bluetooth connections, Near-Field Communication (NFC) connections, connections made by cables (e.g., universal serial bus (USB) type cables), insert-type connections (e.g., secure digital (SD) cards), connections made through local area communication networks, and even connections made through wide area networks such as the internet. In various embodiments, the UI device set 123 may include components such as a display screen, speakers, microphones, wearable devices (e.g., goggles and smartwatches), keyboards, mice, printers, touchpads, game controllers, and haptic devices. Storage 124 is external storage such as an external hard drive, or insertable storage such as an SD card. Storage 124 may be persistent and / or volatile. In some embodiments, storage 124 may take the form of a quantum computing memory device for storing data in the form of qubits. In embodiments where computer 101 needs to have a large amount of storage (for example, computer 101 locally stores and manages a large database), this storage may consequently be provided by peripheral storage devices designed to store very large amounts of data, such as a storage area network (SAN) shared by multiple geographically distributed computers. The IoT sensor set 125 consists of sensors that can be used for Internet of Things applications. For example, one sensor could be a thermometer and another could be a motion detector.
[0105] The network module 115 is a collection of computer software, hardware, and firmware that enables computer 101 to communicate with other computers via the WAN 102. The network module 115 may include hardware such as a modem or Wi-Fi signal transceiver, software for packetizing and / or depacketizing data for communication network transmission, and / or web browser software for communicating data over the Internet. In some embodiments, the network control and network forwarding functions of the network module 115 are performed on the same physical hardware device. In other embodiments (e.g., embodiments utilizing software-defined networking (SDN)), the control and forwarding functions of the network module 115 are performed on physically separate devices, such that the control function manages several different network hardware devices. Computer-readable program instructions for performing the method of the present invention can typically be downloaded from an external computer or external storage device to computer 101 via a network adapter card or network interface included in the network module 115.
[0106] WAN102 is any wide area network (e.g., the Internet) capable of transmitting computer data over non-local distances by any currently known or future-developed technology for transmitting computer data. In some embodiments, WAN102 may be replaced and / or complemented by a local area network (LAN), such as a Wi-Fi network, designed to transmit data between devices located in a local area. WANs and / or LANs typically include computer hardware such as copper transmission cables, optical transmission fibers, wireless transmissions, routers, firewalls, switches, gateway computers, and edge servers.
[0107] The end-user device (EUD) 103 is any computer system used and controlled by an end-user (e.g., a customer of the company operating computer 101) and can take any of the forms described above in relation to computer 101. Typically, EUD 103 receives useful and beneficial data from the operation of computer 101. For example, in a hypothetical case where computer 101 is designed to provide recommendations to an end-user, these recommendations would typically be communicated from the network module 115 of computer 101 to EUD 103 via WAN 102. In this way, EUD 103 can display or otherwise present the recommendations to the end-user. In some embodiments, EUD 103 may be a client device such as a thin client, heavy client, mainframe computer, or desktop computer.
[0108] The remote server 104 is any computer system that provides at least some data and / or functionality to computer 101. The remote server 104 may be controlled and used by the same entity that operates computer 101. The remote server 104 represents a machine that collects and stores useful and beneficial data for use by other computers, such as computer 101. For example, in a hypothetical case where computer 101 is designed and programmed to provide recommendations based on historical data, this historical data may consequently be provided to computer 101 from a remote database 130 of the remote server 104.
[0109] The public cloud 105 is any computer system available for use by multiple entities, providing on-demand availability of computer system resources and / or other computing capabilities, particularly data storage (cloud storage) and computing power, without direct active management by the user. Cloud computing typically leverages resource sharing to achieve coherence and economies of scale. Direct active management of the computing resources of the public cloud 105 is performed by the computer hardware and / or software of the cloud orchestration module 141. The computing resources provided by the public cloud 105 are typically implemented by virtual computing environments running on various computers that make up the computers of the host physical machine set 142, which is the universe of physical computers available in and / or to the public cloud 105. The virtual computing environment (VCE) typically takes the form of virtual machines from the virtual machine set 143 and / or containers from the container set 144. These VCEs may be stored as images and it is understood that they may be migrated either as images or after instantiation of the VCEs, in and between various physical machine hosts. The cloud orchestration module 141 manages image migration and storage, deploys new VCE instances, and manages active instances of the VCE deployment. The gateway 140 is a collection of computer software, hardware, and firmware that enables the public cloud 105 to communicate over the WAN 102.
[0110] Here, some further explanation of virtualized computing environments (VCEs) is provided. A VCE can be stored as an "image." From this image, a new active instance of the VCE can be instantiated. Two well-known types of VCEs are virtual machines and containers. A container is a VCE that uses operating system-level virtualization. This refers to an operating system feature in which the kernel allows for the existence of multiple isolated user-space instances called containers. These isolated user-space instances typically behave like actual computers in terms of the programs running within them. Computer programs running on a normal operating system can utilize all of that computer's resources, such as connected devices, files and folders, network shares, CPU power, and quantifiable hardware capabilities. However, programs running inside a container can only use the contents of the container and the devices allocated to the container; this feature is known as containerization.
[0111] The private cloud 106 is similar to the public cloud 105, except that its computing resources are available for use by a single enterprise only. Although the private cloud 106 is shown as communicating with the WAN 102, in other embodiments the private cloud may be completely isolated from the internet and accessible only through a local / private network. A hybrid cloud is a configuration of multiple clouds of different types (e.g., private, community, or public cloud types), often implemented by different vendors. Each of the multiple clouds remains a separate discrete entity, but the larger hybrid cloud architecture is coupled by standardized or proprietary technologies that enable orchestration, management, and / or data / application portability between the multiple configuration clouds. In this embodiment, both the public cloud 105 and the private cloud 106 are part of a larger hybrid cloud.
[0112] Measured Services: Cloud systems automatically control and optimize resource usage by leveraging metric capabilities at a level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, reported, and billed, providing transparency to both service providers and consumers.
[0113] Referring to Figure 2, this figure shows a block diagram of an exemplary software integration process 200, which can be implemented in various exemplary embodiments. Step 220 initiates the integration of the process software. The first step is to determine if there is a process software program that will run on one or more servers (221). If not, the integration proceeds to 227. If there is, the server addresses are identified (222). The servers are checked to verify whether the servers contain software including operating systems (OS), applications, and network operating systems (NOS), along with their version numbers tested with the process software (223). The servers are also checked to determine if there is any missing software required for the process software (223).
[0114] The version number is checked to see if it matches the version numbers of the OS, applications, and NOS that were tested along with the process software (224). If all versions match and no necessary software is missing, the integration proceeds (227).
[0115] If one or more of these version numbers do not match, the mismatched versions will be updated to the correct versions on one or more servers as a result (225). Additionally, if any required software is missing, it will be updated on one or more servers as a result (225). Server integration is completed by installing the process software (226).
[0116] Step 227 (following 221, 224, or 226) determines whether there are any process software programs that will run on the client. If there are no process software programs that will run on the client, the integration proceeds to 230 and terminates. Otherwise, the client address is identified as a result (228).
[0117] The client is checked to verify whether the software, including the operating system (OS), applications, and network operating system (NOS), is included in the client along with their version numbers, which have been tested together with the process software (229). The client is also checked to determine if there is any missing software required by the process software (229).
[0118] The system determines (231) whether the version number matches the version numbers of the OS, applications, and NOS tested with the process software. If all versions match and no necessary software is missing, the integration proceeds to 230 and finishes.
[0119] If one or more of these version numbers do not match, the mismatched versions will be updated to the correct versions on the client (232). In addition, if any necessary software is missing, it will be updated on the client (232). The client integration is completed by installing the process software on the client (233). The integration proceeds to 230 and is completed.
[0120] Referring to Figure 3, this figure shows an exemplary hybrid multi-cloud environment 300. As shown in Figure 3, the hybrid multi-cloud environment may include one or more public cloud services, such as public cloud services 302 and 306. As used herein, a public cloud service may refer to a type of computing service that provides scalable computing resources over the internet that are available to the general public. The service provider may own and operate the resources, including servers and networking equipment, and customers may access these services and manage their own accounts via a web browser. Examples of public cloud providers may include Amazon Web Services (AWS), Google Cloud Platform (GCP), Microsoft Azure, and IBM Cloud.
[0121] Additionally or alternatively, as shown in Figure 3, a hybrid multi-cloud environment may include one or more private cloud services, such as private cloud services 304 and 308. As used herein, “private cloud service” may refer to a computing service model that provides similar functionality to a public cloud but delivers it through a dedicated architecture tailored to a single organization. In a private cloud, services and infrastructure are maintained on a private network, and enhanced control and privacy may be possible. This model may be utilized by businesses with large-scale computing and storage requirements, or those with stringent data, control, and security needs. Examples of private cloud implementations may include a company setting up its own data center with cloud infrastructure, or using services such as IBM Cloud Private, AWS Outposts, Azure Stack, or Google Anthos. It should be understood that a hybrid multi-cloud environment may include a combination of public and private cloud services, or may include only public cloud services or only private cloud services.
[0122] As further illustrated in Figure 3, two cloud environments may be connected by an intermediate cloud, for example, via a satellite cloud 310. The satellite cloud can act as a facilitator of inter-cloud communication and cooperation, enabling the sharing, access, and management of resources and data across multiple different cloud environments. Thus, the satellite cloud can facilitate hybrid or multi-cloud setups and provide a way to leverage the advantages of multiple cloud services, whether public or private. This may include a combination of on-premises, private clouds, and third-party public cloud services, with orchestration between these platforms. In some embodiments, the satellite cloud 310 may implement the multi-cloud service manager 200 shown in Figure 1 to perform the functions described herein.
[0123] Referring to Figure 4, this figure shows an exemplary multi-cloud environment 400 according to an exemplary embodiment. As shown in Figure 4, the multi-cloud environment may include multiple cloud environments such as Cloud A 402a and Cloud B 402b. As further shown, the cloud environment may incorporate various components that contribute to its functionality and versatility. This may include one or more operating systems (indicated as "OS"), each operating system providing a crucial framework for software and hardware interaction within the cloud system. Furthermore, the cloud environment may house multiple virtual machines (indicated as "VMs") that function as emulated computing systems. These VMs may allow users to run applications as if they were on separate, dedicated hardware, thereby promoting increased flexibility and efficiency. Another component may be a data storage system (indicated as "ETCD") that can securely store data in a distributed key-value store. It should be understood that the cloud environment may include some, all, or none of these components, along with any other desired elements.
[0124] As further illustrated in Figure 4, cloud computing may include one or more controller nodes, such as controllers 404a and 404b, or “local controllers.” Controller nodes can function as control elements within a particular cloud, responsible for managing the overall state of the cloud environment. They can, for example, handle scheduling, resource allocation, and coordination of system tasks, ensuring the efficient operation and stability of the cloud infrastructure.
[0125] Each controller node may contain one or more components. For example, a controller node may include a scheduler. The scheduler may be responsible for distributing work or tasks across various worker nodes. It can ensure optimal resource utilization and maintain workload distribution across the cloud, taking into account resource availability, workload demand, and any user-specified constraints.
[0126] Furthermore, the controller node may also include an API server. The API server acts as a liaison and can provide a communication hub for components within the cloud environment. Among its many tasks, it may perform tasks such as exposing Kubernetes APIs, processing and validating REST operations, and updating corresponding objects within ETCD.
[0127] In addition, controller nodes may include a cloud controller manager. The cloud controller manager interfaces with the underlying cloud provider and may perform various tasks, including managing interactions and ensuring interoperability, handling functionalities such as node lifecycle operations, and managing volumes and IP addresses.
[0128] Furthermore, a controller node may include a Kubernetes controller manager. The Kubernetes controller manager may encapsulate the Kubernetes-standard core control loops that govern the state of the system. These control loops may continuously compare the desired state of the cloud system with the actual state, for example, as defined in the controller node, and make any necessary adjustments to harmonize the two. The controller node may include different or additional components, as will be understood by those skilled in the art upon review of this disclosure.
[0129] As further illustrated in Figure 4, cloud computing may include one or more worker nodes, such as worker nodes 406a, 406b, 408a, and 408d. These worker nodes may be tasked with running workloads and returning reports to the controller node.
[0130] Each worker node may contain one or more components. For example, a worker node may contain a Kubernetes proxy. A Kubernetes proxy is a network proxy that runs on each node and can maintain network rules and perform connection forwarding. It can also enable Kubernetes services to communicate with each other and with other network sessions. Therefore, it can ensure seamless networking between various components within and across nodes.
[0131] A worker node may also include a container advisor, or "cAdvisor." cAdvisor can be an open-source agent integrated into a Kubelet binary that monitors the resource usage and performance characteristics of running containers. For example, it can collect, process, and export critical information about running containers, providing precise, real-time data on the system's state. This information can help understand the performance characteristics of an application and tune it to optimal performance.
[0132] Furthermore, each worker node may contain a Kubelet. A Kubelet can be an agent running on a node in the cluster that ensures containers are running within pods. For example, it might retrieve a set of PodSpecs, which are descriptions of pods, and ensure that the containers listed in those PodSpecs are running and healthy. A Kubelet can also handle communication between the controller and the workers on which it runs.
[0133] Furthermore, a worker node may host a pod, which has one or more containers inside. A pod may be the smallest and simplest unit that can be created or deployed within the Kubernetes object model. A pod may represent a single instance of a running process in a cluster and may contain one or more containers. Containers within a pod may share an IP address, a port space, and a shared context. A worker node may include different or additional components, as will be understood by those skilled in the art when reviewing this disclosure.
[0134] As further shown in Figure 4, two cloud environments may be connected by an intermediate cloud, for example, via a satellite cloud 410. As previously mentioned, the satellite cloud can act as a facilitator of inter-cloud communication and cooperation, enabling the sharing, access, and management of resources and data across multiple different cloud environments. In some embodiments, the satellite cloud 410 may implement the multi-cloud service manager 200 shown in Figure 1 to perform the functions described herein.
[0135] Additionally or alternatively, as shown in Figure 4, two cloud systems may be logically connected, for example, through a logical connection 4512. Establishing a logical connection, such as logical connection 412, may involve creating connections between various components of the cloud environment. This may include components such as operating systems or virtual machines within these environments. For example, an operating system may enable the management of hardware and software resources on a server, while also providing various services for running software applications. When logically connected across multiple different cloud systems, it can facilitate interoperability of applications and processes across those environments. Similarly, virtual machines may also be involved in logical connections. A virtual machine may emulate the software of a computer system. It may run on a host machine managed by a hypervisor and can run applications like a separate computer in a separate cloud environment. Logically linking virtual machines in different cloud systems can facilitate workload migration, improve resource management, and enhance scalability. In some embodiments, logical connection 412 may implement the multi-cloud service manager 200 shown in Figure 1 to perform the functions described herein.
[0136] Referring to Figure 5, this figure shows an exemplary diagram of a supercontroller 500 according to one exemplary embodiment. The supercontroller may be responsible for overseeing and managing a set of local controllers and / or workers across various cloud environments. Essentially, the supercontroller can be thought of as a "controller of controllers," capable of controlling and coordinating the operation of the local controllers and / or workers under its jurisdiction.
[0137] For example, in a hybrid multi-cloud context, a supercontroller may determine which local controller should handle a particular workload based on considerations such as processing power, service accessibility, and current load. It may also participate in cross-cloud service negotiations, manage resource allocation, and perform service discovery across cloud environments. By maintaining an updated controller repository, the supercontroller can enable effective resource utilization and smooth orchestration across various cloud systems.
[0138] As shown, the supercontroller 500 may include multiple components. For example, in some embodiments, one component of the supercontroller may be a loader 502. This component may function as a configuration management tool and ensure that the configuration of the supercontroller and associated systems is correctly loaded and applied. It may handle the initial load of the supercontroller and manage any subsequent configuration changes. It may also support the dynamic nature of cloud computing, enabling easy adaptation of the configuration in response to changing system requirements, thereby achieving flexibility and efficiency.
[0139] Another component within the supercontroller 500 may be the controller repository 504. The controller repository can form a central store for data and information related to the operation of the supercontroller. It can maintain details about system state, configuration settings, worker status, and other data, thereby functioning as an information hub. The controller repository can contribute to the efficient management and coordination of the cloud environment, facilitating informed decision-making and timely responses to changing circumstances.
[0140] Furthermore, the supercontroller 500 may include a service discovery engine 506. The service discovery engine can facilitate the identification and location of services across multi-tier, hybrid, and multi-cloud architectures. With the complexity of modern cloud environments, services may be distributed across numerous nodes and tiers, thus requiring a mechanism for discovering and cataloging these services. A multi-level service discovery engine can meet this requirement and continuously scan the environment to discover and register available services.
[0141] Furthermore, the supercontroller 500 may include a connector infrastructure 508. The connector infrastructure may provide the necessary interfaces and protocols for connection and communication with various entities within the cloud environment, such as local controllers, workers, and other supercontrollers. It may function as the communication backbone for the supercontroller, enabling data exchange and command propagation across the entire cloud architecture. This capability can be used to maintain synchronization, ensure effective command execution, and facilitate seamless coordination across multi-tiered, multi-cloud environments.
[0142] Referring to Figure 6, this figure shows an exemplary diagram of a multi-tier hybrid multi-cloud service management architecture 600 according to one exemplary embodiment.
[0143] As shown in Figure 6, the multi-tier hybrid multi-cloud service management architecture may include a three-tier architecture, as shown by the supercontroller 602, local controllers 604a, 604b, and 604c, and workers 606a, 606b, and 606c.
[0144] The top tier represented by the Super Controller 602 can signify the highest level of authority within its architecture. The Super Controller can manage overall orchestration and workload distribution across multiple cloud environments. It may be invoked from any preferred cloud location within the involved multi-cloud environment and may be dynamically selected depending on the current state of each involved cloud. The Super Controller's role extends beyond a single cloud, effectively coordinating local controllers across diverse cloud environments and ensuring integrated operations across hybrid multi-cloud architectures.
[0145] The middle layer consists of local controllers 604a, 604b, and 604c, representing authority within individual cloud environments. These local controllers have the ability to manage resources within their own specific cloud and can maintain essential control planes within their defined environments. They are the immediate contact point for workers within their cloud and can be responsible for managing these worker nodes based on instructions received from the supercontroller.
[0146] The lowest tier is occupied by workers represented by 606a, 606b, and 606c. These workers form the execution units of the architecture and can run applications and workloads assigned to them by their respective local controllers. They can be spread across multiple clouds, possibly belonging to the same cloud where the supercontroller resides, or to different clouds.
[0147] As further shown in Figure 6, supercontrollers in separate cloud environments can interact with each other, as shown by the interaction between supercontroller 602 and supercontroller 608. These interactions between supercontrollers, and the top-level authority in their respective corresponding cloud environments, enable the coordination of workload distribution and resource management across multiple entirely different cloud environments, achieving integrated and interconnected operations across the entire multi-cloud infrastructure.
[0148] Supercontroller 602 might manage a public cloud environment, while supercontroller 608 might orchestrate a private cloud or another public cloud environment. Their interaction could create an interconnected, seamless hybrid multi-cloud network. This communication layer could not only help efficiently distribute computing tasks based on resource availability and workload requirements, but could also enable high-level strategic decisions regarding overall system health, load balancing, and disaster recovery across multiple cloud environments.
[0149] As further illustrated in Figure 6, the supercontroller can directly interact with workers in a cloud environment. These interactions can occur regardless of whether a local controller is included in a particular environment. This direct involvement between the supercontroller and workers is illustrated by the interaction between supercontroller 608 and worker 610, the latter incorporating an abstract CPU (core) layer 612, a P9 processor 614, and a Skylake processor 616. However, workers may include other components, and it should be understood that what is shown is for illustrative purposes only.
[0150] The abstract CPU (core) layer 612, the P9 processor 614, and the Skylake processor 616 represent different computing resources within the worker 610. The supercontroller 608's direct interaction with these resources can improve flexibility and efficiency in managing tasks across varying computing capacities and capabilities. For example, the high-performance computing resource, the Skylake processor 616, may be used for computationally intensive tasks, while the P9 processor 614 can handle all routine tasks under the control and direction of the supercontroller 608 (or local controller).
[0151] Referring to Figure 7, this figure shows an exemplary diagram of a multi-tier hybrid multi-cloud service management architecture 700 according to one exemplary embodiment. As shown, the multi-tier hybrid multi-cloud service management architecture may include satellite clouds such as satellite cloud 710, and multiple cloud environments such as cloud environments 720, 730, 740, and 750.
[0152] As shown, the satellite cloud 710 may include a supercontroller loader, controller repository, service discovery engine, and connector infrastructure. The supercontroller loader may be used to initialize and configure the supercontroller. As part of its role, it may load the necessary configuration and operational parameters to guide the supercontroller's actions when orchestrating various tasks across local controllers and worker nodes in multiple cloud environments.
[0153] Another component within Satellite Cloud 710 could be the controller repository. The controller repository could be a database maintaining records of supercontrollers, local controllers, and workers across the connected cloud environment. It could track details such as their current status, processing capacity, and workload. By updating this repository, the system can ensure optimal resource and workload distribution between local controllers and workers.
[0154] The service discovery engine could be another component of Satellite Cloud 710. The service discovery engine could be responsible for discovering and tracking various resources and services running within the cloud environment. For example, it could identify local controllers and workers within the cloud environment. Another example is that it could identify which local controllers and workers manage specific microservices, thus enabling the supercontroller to efficiently orchestrate tasks and guide workloads to the most optimal location.
[0155] Furthermore, the satellite cloud 710 may include connector infrastructure. This connector infrastructure may provide the necessary framework for establishing and maintaining communication links between multiple different cloud environments. In some embodiments, a supercontroller may utilize the connector infrastructure to transmit resource allocation requests to local controllers and workers. By facilitating secure and efficient inter-cloud connectivity, the connector infrastructure may enable the supercontroller to effectively scale services and allocate resources across various clouds.
[0156] As further illustrated in Figure 7, the cloud environments within a multi-tiered multi-cloud architecture may include a supercontroller, one or more local controllers, and one or more workers, as shown by cloud environment 720. As previously mentioned, the supercontroller acts as the overall authority for the architecture and can manage and orchestrate tasks across multiple cloud platforms. It can oversee and direct the local controllers and worker nodes, optimizing resource allocation and workload distribution based on the current status and processing capacity of these components.
[0157] In addition to the supercontroller, the 720 cloud environment incorporates one or more local controllers. These local controllers may operate under the direction of the supercontroller and may be responsible for managing tasks within their own specific cloud environment. They may manage sets of worker nodes and the services running on them.
[0158] The Cloud Environment 720 includes one or more worker nodes. These workers can perform specific tasks assigned to them by the local controller or supercontroller. They can host and manage various microservices and contribute to the broad capabilities provided by the Cloud Environment.
[0159] Furthermore, a cloud environment within a multi-tiered multi-cloud architecture may include one or more local controllers and one or more workers, without including a supercontroller within the cloud environment, as shown in Cloud Environment 730. This scenario may occur, for example, when a local controller within the cloud environment is not selected as a supercontroller. In such a case, the cloud environment, due to its status of not having a supercontroller, may be placed under the direction of a supercontroller.
[0160] Additionally, a cloud environment within a multi-tiered, multi-cloud architecture may contain one or more workers without including a local controller or supercontroller within that cloud environment, as illustrated by Cloud Environment 740. This configuration may be used in environments where workers are designed to operate independently or are managed by a supercontroller residing in a different cloud environment.
[0161] Furthermore, the cloud environment within a multi-tiered multi-cloud architecture may include computing resources such as one or more abstract CPU (core) layers, including one or more computing processors (e.g., P9 processors or Skylake processors), as illustrated by Cloud Environment 750. These components may provide the raw processing power that drives services and operations within the cloud environment.
[0162] As further illustrated in Figure 7, the supercontroller of cloud environment 720 may interact with other cloud environments through satellite cloud 710. This interaction may represent the interoperability of a multi-tiered multi-cloud architecture, where the supercontroller can orchestrate tasks and resources not only within its own cloud environment but also across multiple different cloud environments. This supercontroller interaction demonstrates the architecture's ability to distribute tasks and utilize resources across multiple cloud platforms, thereby maximizing efficiency and productivity. However, as will be understood by those skilled in the art upon reviewing this disclosure, other methods may also be employed for communication between the supercontroller and local controllers or workers.
[0163] Referring to Figure 8, this figure shows a block diagram of an exemplary process 800 for managing a multi-tiered multi-cloud architecture according to one exemplary embodiment. The exemplary block diagram in Figure 8 can be implemented using the multi-cloud service manager 200 of Figure 1.
[0164] In the exemplary embodiments, block 802 is where the process detects inter-cloud service negotiations between multiple cloud environments. In some embodiments, the inter-cloud service negotiations represent interactions between multiple cloud environments. In block 804, the process identifies multiple local controllers within the multiple cloud environments. In some embodiments, one of the multiple local controllers manages the workers. In block 806, the process selects a local controller from among the multiple local controllers. In block 808, the process designates the selected local controller as the supercontroller. In some embodiments, the supercontroller manages one or more other local controllers. It should be understood that steps may be omitted, modified, or repeated in the exemplary embodiments. Also, the order of the blocks shown is not intended to mean that the blocks must be executed in the order shown or in any specific order.
[0165] Referring to Figure 9, this figure shows a block diagram of an exemplary process 900 for managing a multi-tiered multi-cloud architecture according to one exemplary embodiment. The exemplary block diagram in Figure 9 can be implemented using the multi-cloud service manager 200 of Figure 1.
[0166] In the exemplary embodiment, in block 902, the process performs service discovery with the supercontrollers of multiple cloud environments to identify multiple local controllers and multiple workers within those cloud environments. In block 904, in response to receiving a service request for resource allocation, the process has the supercontroller select one of the multiple local controllers. In block 906, the process has the supercontroller transmit the allocation request for resource allocation to the selected local controller. It should be understood that steps may be omitted, modified, or repeated in the exemplary embodiment. Also, the order of the blocks shown is not intended to mean that the blocks must be executed in the order shown or in any specific order.
[0167] The following definitions and abbreviations are used for the interpretation of the claims and specification. When used herein, the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having,” “contains,” or “containing,” or any other variation thereof, are intended to cover non-exclusive inclusion. For example, a component, mixture, process, method, article, or apparatus containing a list of elements is not necessarily limited to those elements alone, and may include other elements not expressly listed or that are inherent to such component, mixture, process, method, article, or apparatus.
[0168] Additionally, the term “exemplary” is used herein to mean “serving as an example, case, or illustration.” Any embodiment or design described herein as “exemplary” should not necessarily be construed as being preferable or advantageous to other embodiments or designs. The terms “at least one” and “one or more” are understood to include any integer greater than or equal to 1, i.e., 1, 2, 3, 4, etc. The term “multiple” is understood to include any integer greater than or equal to 2, i.e., 2, 3, 4, 5, etc. The term “connection” may include indirect “connection” and direct “connection.”
[0169] References in this specification such as “one embodiment,” “a certain embodiment,” and “exemplary embodiment” indicate that the embodiments described may include certain features, structures, or characteristics, but not all embodiments may include or may not include such features, structures, or characteristics. Furthermore, such phrases do not necessarily refer to the same embodiment. Moreover, if certain features, structures, or characteristics are described in relation to a certain embodiment, it is considered within the knowledge of those skilled in the art that such features, structures, or characteristics may be affected in relation to other embodiments, whether or not they are explicitly described.
[0170] The terms “about,” “substantially,” and “approximately,” and their variations, are intended to include the degree of error associated with the measurement of a particular quantity based on the equipment available at the time of filing this application. For example, “about” may include a range of ±8%, 5%, or 2% of a given value.
[0171] The descriptions of various embodiments of the present invention are presented for illustrative purposes only and are not intended to be exhaustive or to limit oneself to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope of the embodiments described. The terminology used herein has been selected to best describe the principles of the embodiments, their practical applications or technical improvements to the technology found in the market, or to enable other persons skilled in the art to understand the embodiments described herein.
[0172] The descriptions of various embodiments of the present invention are presented for illustrative purposes only and are not intended to be exhaustive or to limit oneself to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope of the embodiments described. The terminology used herein has been selected to best describe the principles of the embodiments, their practical applications, or the technical improvements to the technology available on the market, or to enable other persons skilled in the art to understand the embodiments described herein.
[0173] Therefore, computer implementations, systems, or devices and computer program products are provided in exemplary embodiments for managing engagement with online communities and for other related features, functions, or operations. Where a certain embodiment or part thereof is described in relation to a certain type of device, the computer implementation, system, or device, computer program product, or part thereof is adapted or configured for use with a preferred and equivalent indication of that type of device.
[0174] Where a certain embodiment is described as being implemented in an application, the delivery of the application in a Software-as-a-Service (SaaS) model is intended to be within the scope of the exemplary embodiment. In a SaaS model, the capabilities of an application implementing a certain embodiment are provided to the user by running the application on a cloud infrastructure. The user can access the application using a variety of client devices through a thin client interface such as a web browser (e.g., web-based email) or other lightweight client applications. The user does not manage or control the underlying cloud infrastructure, including the network, servers, operating system, or storage of the cloud infrastructure. In some cases, the user may not need to manage or control the capabilities of the SaaS application. In some other cases, the SaaS implementation of the application may allow possible exceptions for limited user-specific application configuration settings.
[0175] The present invention may be a system, method, and / or computer program product at any possible level of technical detail of integration. The computer program product may include a computer-readable storage medium (or multiple mediums) having computer-readable program instructions that cause a processor to execute aspects of the present invention.
[0176] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to each computing / processing device, or to an external computer or external storage device via a network, such as the Internet, a local area network, a wide area network, and / or a wireless network. The network may include copper transmission cables, optical transmission fibers, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface within each computing / processing device receives computer-readable program instructions from the network and transfers the computer-readable program instructions for storage in the computer-readable storage medium within each computing / processing device.
[0177] The computer-readable program instructions that perform the operation of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state-setting data, configuration data for integrated circuit configuration, or source code or object code written in any combination of one or more programming languages, the one or more programming languages including object-oriented programming languages such as Smalltalk, C++, or similar, and procedural programming languages such as the "C" programming language or similar. The computer-readable program instructions may be executed as a whole on the user's computer, partially on the user's computer, as a standalone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or this connection may be to an external computer (for example, through the Internet using an Internet service provider). In some embodiments, for example, an electronic circuit configuration including a programmable logic circuit configuration, a field-programmable gate array (FPGA), or a programmable logic array (PLA) may be personalized by executing computer-readable program instructions using state information of computer-readable program instructions in order to perform aspects of the present invention.
[0178] 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 in 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.
[0179] By providing these computer-readable program instructions to the processor of a general-purpose computer, a dedicated computer, or other programmable data processing device, a machine may be generated such that instructions executed via the processor of the computer or other programmable data processing device create means for implementing functions / actions defined in one or more blocks of a flowchart and / or block diagram. These computer-readable program instructions may also be stored in a computer-readable storage medium that can instruct a computer, a programmable data processing device, and / or other device to function in a particular manner, and as a result, the computer-readable storage medium in which the instructions are stored has a product containing instructions that implements modes of functions / actions defined in one or more blocks of a flowchart and / or block diagram.
[0180] Computer-readable program instructions may also be loaded into a computer, another programmable data processing device, or another device, and a series of operational steps may be executed on the computer, the other programmable device, or the other device to generate a computer implementation process, the instruction executed on the computer, the other programmable device, or the other device, which implements a function / action defined in one or more blocks of a flowchart and / or block diagram.
[0181] The flowcharts and block diagrams in the figures 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 containing one or more executable instructions for implementing a defined logical function. In some alternative implementations, the functions described in the blocks may occur in an order different from the order shown in the figures. For example, two blocks shown consecutively may actually be executed substantially simultaneously, or blocks may be executed in reverse order depending on the functionality involved. It should also be noted that each block in the block diagram and / or flowchart, and combinations of blocks in the block diagram and / or flowchart, may be implemented by a dedicated hardware-based system that performs a defined function or action, or a combination of dedicated hardware and computer instructions.
[0182] Embodiments of the present invention may be supplied as part of a service engagement with a client corporation, non-profit organization, government agency, internal organizational structure, or similar entity. Aspects of these embodiments may include configuring a computer system for execution and deploying software, hardware, and web services that implement some or all of the methods described herein. Aspects of these embodiments may also include analyzing client behavior, generating recommendations in response to the analysis, building a system that implements a portion of such recommendations, integrating the system into existing processes and infrastructure, measuring system usage, allocating costs to system users, and billing for system usage. While each of the above embodiments of the present invention has been described by stating its own individual advantages, the present invention is not limited to any particular combination thereof. Conversely, such embodiments may be combined in any way and number according to the intended development of the present invention without losing their own advantageous effects.
Claims
1. The multi-cloud service manager detects inter-cloud service negotiations between multiple cloud environments, and these inter-cloud service negotiations represent interactions between the multiple cloud environments; The multi-cloud service manager identifies multiple local controllers within the multiple cloud environments, one of the multiple local controllers is a computer control node configured to manage resources associated with a cloud environment, including workers, and the workers are computer execution nodes configured to perform tasks using the resources associated with the cloud environment; The multi-cloud service manager selects a local controller from among the multiple local controllers based on the performance measurement criteria of the local controllers; and In the step where the multi-cloud service manager designates the selected local controller as a supercontroller, the supercontroller is configured to manage resources associated with the multiple cloud environments, including the multiple local controllers. A computer implementation method comprising the following:
2. The computer implementation method according to claim 1, wherein the performance measurement criteria include at least one of workload, processing power, and service accessibility.
3. The computer implementation method according to claim 1 or 2, further comprising the step of performing service discovery within the multiple cloud environments using the multi-cloud service manager.
4. The computer implementation method according to claim 3, wherein the step of performing service discovery includes the step of identifying multiple local controllers and multiple workers in the multiple cloud environments.
5. The computer implementation method according to claim 3 or 4, further comprising the step of updating a controller repository in response to the step of performing the service discovery by the multi-cloud service manager.
6. The computer implementation method according to any of the above claims, further comprising the step of the multicloud service manager transmitting an allocation request to the second local controller among the plurality of local controllers in response to the supercontroller selecting a second local controller for resource allocation.
7. The computer implementation method according to any of the above claims, further comprising the step of the multi-cloud service manager transmitting an allocation request to the second worker in the multiple cloud environments in response to the supercontroller selecting a second worker for resource allocation.
8. The multi-cloud service manager selects a second local controller from among the multiple local controllers; The multi-cloud service manager then designates the selected second local controller as the second supercontroller; The multi-cloud service manager removes the supercontroller from its designation as a supercontroller; and The aforementioned multi-cloud service manager updates the controller repository. A computer implementation method according to any of the preceding claims, further comprising:
9. The computer implementation method according to claim 8, wherein the step of updating the controller repository includes the step of fusing a first service discovery record associated with a supercontroller that has been removed from the designation and a second service discovery record associated with a second supercontroller.
10. The system comprises one or more computer-readable storage media, and program instructions collectively stored on the one or more computer-readable storage media, wherein the program instructions are executable by a processor, and the processor, A multi-cloud service manager provides a procedure for detecting inter-cloud service negotiations between multiple cloud environments, where the inter-cloud service negotiations represent interactions between the multiple cloud environments; The multi-cloud service manager provides a procedure for identifying multiple local controllers within the multiple cloud environments, where one of the multiple local controllers is a computer control node configured to manage resources associated with a cloud environment, including workers, and the workers are computer execution nodes configured to perform tasks using the resources associated with the cloud environment; A procedure for selecting a local controller from among the multiple local controllers based on the performance measurement criteria of the local controllers using the multi-cloud service manager; and The procedure involves the multi-cloud service manager designating the selected local controller as a supercontroller, and the supercontroller being configured to manage resources associated with the multiple cloud environments, including the multiple local controllers. A computer program product that causes a user to perform a procedure that includes the following steps.
11. The computer program product according to claim 10, wherein the performance measurement criteria include at least one of workload, processing power, and service accessibility.
12. The computer program product according to claim 10 or 11, further comprising the multi-cloud service manager transmitting an allocation request to the second local controller among the plurality of local controllers in response to the supercontroller selecting a second local controller for resource allocation.
13. The computer program product according to any one of claims 10 to 12, further comprising the multi-cloud service manager transmitting an allocation request to the second worker in the plurality of cloud environments in response to the supercontroller selecting a second worker for resource allocation.
14. A processor, one or more computer-readable storage media, and program instructions collectively stored on the one or more computer-readable storage media, wherein the program instructions are executable by the processor, and the processor A multi-cloud service manager provides a procedure for detecting inter-cloud service negotiations between multiple cloud environments, where the inter-cloud service negotiations represent interactions between the multiple cloud environments; The multi-cloud service manager provides a procedure for identifying multiple local controllers within the multiple cloud environments, where one of the multiple local controllers is a computer control node configured to manage resources associated with a cloud environment, including workers, and the workers are computer execution nodes configured to perform tasks using the resources associated with the cloud environment; A procedure for selecting a local controller from among the multiple local controllers based on the performance measurement criteria of the local controllers using the multi-cloud service manager; and The procedure involves the multi-cloud service manager designating the selected local controller as a supercontroller, and the supercontroller being configured to manage resources associated with the multiple cloud environments, including the multiple local controllers. A computer system that performs a procedure that includes the following steps.
15. The computer system according to claim 14, wherein the performance measurement criteria include at least one of workload, processing power, and service accessibility.
16. The computer system according to claim 14 or 15, further comprising the multi-cloud service manager transmitting an allocation request to the second local controller among the plurality of local controllers in response to the supercontroller selecting a second local controller for resource allocation.
17. The computer system according to any one of claims 14 to 16, further comprising the multi-cloud service manager transmitting an allocation request to the second worker in the plurality of cloud environments in response to the supercontroller selecting a second worker for resource allocation.
18. A shared pool of configurable computing resources; The configurable computing resources include at least one data processing system, the at least one data processing system having a processor unit and a data storage unit; A service delivery model that provides on-demand access to the shared pool of resources; Measurement capability for measuring services supplied through the aforementioned service supply model; and Program instructions collectively stored on one or more computer-readable storage media, the program instructions being executable by the processor unit, the processor unit A multi-cloud service manager provides a procedure for detecting inter-cloud service negotiations between multiple cloud environments, where the inter-cloud service negotiations represent interactions between the multiple cloud environments; The multi-cloud service manager provides a procedure for identifying multiple local controllers within the multiple cloud environments, where one of the multiple local controllers is a computer control node configured to manage resources associated with a cloud environment, including workers, and the workers are computer execution nodes configured to perform tasks using the resources associated with the cloud environment; A procedure for selecting a local controller from among the multiple local controllers based on the performance measurement criteria of the local controllers using the multi-cloud service manager; and The procedure involves the multi-cloud service manager designating the selected local controller as a supercontroller, and the supercontroller being configured to manage resources associated with the multiple cloud environments, including the multiple local controllers. Perform the steps that include A computing environment equipped with these features.
19. The computing environment according to claim 18, wherein the performance measurement criteria include at least one of workload, processing power, and service accessibility.
20. The computing environment according to claim 18 or 19, further comprising the multi-cloud service manager transmitting an allocation request to the second local controller among the plurality of local controllers in response to the supercontroller selecting a second local controller for resource allocation.
21. The computing environment according to any one of claims 18 to 20, further comprising the multi-cloud service manager transmitting an allocation request to the second worker in the plurality of cloud environments in response to the supercontroller selecting a second worker for resource allocation.
22. A shared pool of configurable computing resources; At least one data processing system included in the shared pool of configurable computing resources, the at least one data processing system having a processor unit and a data storage unit; At least one data networking component configured to enable data communication with the aforementioned at least one data processing system; An application control mechanism for executing a software application deployed to run using the at least one data processing system; and The program instructions for the software application, wherein the program instructions are executable by the processor unit, and the processor unit, A multi-cloud service manager provides a procedure for detecting inter-cloud service negotiations between multiple cloud environments, where the inter-cloud service negotiations represent interactions between the multiple cloud environments; The multi-cloud service manager provides a procedure for identifying multiple local controllers within the multiple cloud environments, where one of the multiple local controllers is a computer control node configured to manage resources associated with a cloud environment, including workers, and the workers are computer execution nodes configured to perform tasks using the resources associated with the cloud environment; A procedure for selecting a local controller from among the multiple local controllers based on the performance measurement criteria of the local controllers using the multi-cloud service manager; and The procedure involves the multi-cloud service manager designating the selected local controller as a supercontroller, and the supercontroller being configured to manage resources associated with the multiple cloud environments, including the multiple local controllers. Perform the steps that include A software service delivery architecture that includes the following features.
23. The software service supply according to claim 22, wherein the performance measurement criteria include at least one of workload, processing capacity, and service accessibility.
24. The software service delivery according to claim 22 or 23, further comprising the multi-cloud service manager transmitting an allocation request to the second worker in the plurality of cloud environments in response to the supercontroller selecting a second worker for resource allocation.
25. The multi-cloud service manager selects a second local controller from among the multiple local controllers. The multi-cloud service manager designates the selected second local controller as the second supercontroller. The Multi-Cloud Service Manager removes the supercontroller from its designation as a supercontroller; and The aforementioned multi-cloud service manager updates the controller repository. A software service supply according to any one of claims 22 to 24, further comprising: