1. Technical Field
The present invention generally relates to techniques for dynamically discovering and adapting resource and relationship information in computing environments and in particular to techniques for dynamically discovering and adapting resource and relationship information in virtualized computing environments.
2. Description of the Related Art
In general, cloud computing refers to Internet-based computing where shared resources, software, and information are provided to users of computer systems and other electronic devices (e.g., mobile phones) on demand, similar to the electricity grid. Adoption of cloud computing has been aided by the widespread utilization of virtualization, which is the creation of a virtual (rather than actual) version of something, e.g., an operating system, a server, a storage device, network resources, etc. A virtual machine (VM) is a software implementation of a physical machine (e.g., a computer system) that executes instructions like a physical machine. VMs are usually categorized as system VMs or process VMs. A system VM provides a complete system platform that supports the execution of a complete operating system (OS). In contrast, a process VM is usually designed to run a single program and support a single process. A VM characteristic is that application software running on the VM is limited to the resources and abstractions provided by the VM. System VMs (also referred to as hardware VMs) allow the sharing of the underlying physical machine resources between different VMs, each of which executes its own OS. The software that provides the virtualization and controls the VMs is typically referred to as a VM monitor (VMM) or hypervisor. A hypervisor may run on bare hardware (Type 1 or native VMM) or on top of an operating system (Type 2 or hosted VMM).
Cloud computing provides a consumption and delivery model for information technology (IT) services based on the Internet and involves over-the-Internet provisioning of dynamically scalable and usually virtualized resources. Cloud computing is facilitated by ease-of-access to remote computing websites (e.g., via the Internet or a private corporate network) and frequently takes the form of web-based tools or applications that a cloud consumer can access and use through a web browser, as if the tools or applications were a local program installed on a computer system of the cloud consumer. Commercial cloud implementations are generally expected to meet quality of service (QoS) requirements of consumers and typically include service level agreements (SLAs). Cloud consumers avoid capital expenditures by renting usage from a cloud vendor (i.e., a third-party provider). In a typical cloud implementation, cloud consumers consume resources as a service and pay only for resources used.
Conventional ‘discovery’ technologies have, for example, been configured to discover various information (e.g., physical servers, operating systems (OSs), application instances, associated databases, and application servers) about a computing environment. Conventionally, discovery technologies have employed ‘network crawlers’ or ‘resource analyzers’ to ascertain resources utilized by an application and the relationships of the application to other resources in a computing environment. The discovered information has then been associated with, for example, an associated service to determine the impact of events, e.g., failures and planned outages, on the service.
In conventional application hosting environments, applications have been installed on a physical machine. Through discovery technologies, resource information associated with an application running on a physical machine in a computing environment and relationship information of the application to other components in the computing environment has been determined. The discovered information (i.e., the resource information and the relationship information for the application) has been stored in persistent storage and has occasionally been updated to reflect changes. Due to the relatively static nature of conventional computing environments, an occasional update to the discovered information has usually been acceptable to meet customer requirements. For example, in conventional computing environments, physical servers have usually hosted an application continuously for months or years. In this case, discovered information is valid for a relatively long time period. In general, conventional discovery technologies have provided acceptable accuracy when employed in conventional computing environments that have exhibited relatively static natures with respect to underlying physical infrastructures.