The embodiments described herein relate generally to configuration management databases (CMDBs) and, more particularly, to capturing and/or browsing novel relationships between various configuration items (CIs) and update sets stored in a CMDB.
Cloud computing relates to the sharing of computing resources that are generally accessed via the Internet. In particular, a cloud computing infrastructure allows users, such as individuals and/or enterprises, to access a shared pool of computing resources, such as servers, storage devices, networks, applications, and/or other computing based services. By doing so, users are able to access computing resources on demand that are located at remote locations, which resources may be used to perform a variety computing functions, e.g., storing and/or processing large quantities of computing data. For enterprise and other organization users, cloud computing provides flexibility in accessing cloud computing resources without accruing large up-front costs, such as purchasing expensive network equipment or investing large amounts of time in establishing a private network infrastructure. Instead, by utilizing cloud computing resources, users are able redirect their resources to focus on their enterprise's core functions.
In today's communication networks, examples of cloud computing services a user may utilize include so-called software as a service (SaaS) and platform as a service (PaaS) technologies. SaaS is a delivery model that provides software as a service rather than an end product. Instead of utilizing a local network or individual software installations, software is typically licensed on a subscription basis, hosted on a remote machine, and accessed by client customers as needed. For example, users are generally able to access a variety of enterprise and/or information technology (IT)-related software via a web browser. PaaS acts an extension of SaaS that goes beyond providing software services by offering customizability and expandability features to meet a user's needs. For example, PaaS can provide a cloud-based developmental platform for users to develop, modify, and/or customize applications and/or automating enterprise operations without maintaining network infrastructure and/or allocating computing resources normally associated with these functions.
Within the context of cloud computing solutions for CMDBs, users may be asked to deal with ever increasing amounts of data, e.g., with respect to the number of CIs (and such CIs' relevant metadata, such as manufacturer, vendor, location, etc.) stored in the CMDB, as well as the data defining the relationships between such CIs that is also stored in the CMDB. In fact, the amount of data collected and stored in today's cloud computing solutions, such as CMDBs, may be orders of magnitude greater than what was historically collected and stored. Users tasked with automating business, IT, and/or other organization-related functions (e.g., incident tracking and/or help desk-related functions) may be required to navigate ever increasing amounts of data to properly and efficiently perform their job functions. As a result, it can be difficult for users of such CMDBs to appreciate or understand how the various CIs within a CMDB (as well as the customizations made thereto) are related to one another. Thus, debugging times, root cause analysis, update set analysis, and the high-level organization of CMDB components continue to be potential areas of improvement for software developers and application vendors. The following embodiments address improvements to the presentation and traversal of CMDB components, such as CIs and update sets, to address at least these and other issues relating to the interdependencies and topologies of potentially large data sets to provide an enhanced user experience.
The following presents a simplified summary of the disclosed subject matter in order to provide a basic understanding of some aspects of the subject matter disclosed herein. This summary is not an exhaustive overview of the technology disclosed herein. It is not intended to identify key or critical elements of the invention or to delineate the scope of the invention. Its sole purpose is to present some concepts in a simplified form as a prelude to the more detailed description that is discussed later.
In one embodiment, a system that provides the ability to display and/or traverse the various components stored in a CMDB comprises a user interface, a non-transitory memory, and one or more hardware processors configured to read instructions from the non-transitory memory. When executed, the instructions can cause the one or more hardware processors to receive a plurality of items of metadata related to CIs stored in the CMDB, such as: business rules, triggers (or other logical components), script include files, database tables, user interface pages, and/or update sets. Update sets, as discussed herein, refer to a collection of customizations made to a customer instance of a CMDB that can be transferred to another instance, and thus are not, strictly speaking, CIs themselves. However, according to the embodiments described herein, update sets may likewise be stored in the same types of CMDB database table(s) as the other types of CI items enumerated above (e.g., business rules, triggers, script include files, database tables, user interface pages, etc.), thereby enabling the graph creation process described in further detail herein.
Once the plurality of items of metadata are received, the system may determine a plurality of nodes, wherein each item in the plurality of items of metadata is associated with a respective node of the plurality of nodes. Next, the system may determine a plurality of edges, wherein each edge in the plurality of edges is associated with a relationship between two or more of the plurality of nodes, and wherein each relationship has a relationship type (e.g., a “contains” relationship, a “contained by” relationship, a “uses” relationship, a “calls” relationship, or a “called by” relationship). Information describing the various items of metadata and the types of relationships therebetween may be stored (and, optionally, updated as changes are made to the items of metadata and/or the relationships therebetween) in one or more tables in the CMDB, e.g., existing tables or new tables extended from existing tables in the CMDB.
Finally, the system may create a graph of the determined plurality of nodes and the determined plurality of edges. In some embodiments, the system may also be configured to display the created graph via the user interface, e.g., in a “tree” format, illustrating how the various nodes are connected to one another via the various edges representing the relationships between the respective nodes they connect. In some embodiments, the displayed graph may also include an indication of the relationship type of one or more of the edges in the graph.
Various visual filtering options may also be presented to a user viewing the graph via the user interface, e.g., an option to filter the graph to indicate (e.g., via displaying) only the nodes of the graph that are related to a first node selected by a user by less than or equal to a first number of edges. For example, if the first number of edges is 2, then the graph may be filtered to show only those nodes that are related to the first node selected by the user by 2 or less relationship edges (and hiding the other nodes and relationship edges stored in the graph). This filtering function may aid a user in more quickly determining what part or parts of their system are the root causes of an error or other undesired functionality that they are facing, as well as determining what additional components in a system are likely to be affected by updates that are made to a particular component (e.g., based on their dependency upon the particular updated component).
In still other filtering options, the graph may allow a user to filter the graph to display only nodes for items of metadata that are related to each other by two or more update sets. This type of filtering may, e.g., allow a user to more quickly locate pieces of the system that multiple developers (or system users) have recently customized or changed in some way, which may also indicate such pieces of the system as likely causes of the error or other undesired functionality currently being experienced by the system.
In other embodiments, methods to perform the various CMDB component presentation and traversal techniques summarized above are disclosed. In still other embodiments, non-transitory program storage devices are disclosed, which are readable by programmable control devices and which store instructions configured to cause one or more programmable control devices to perform the various CMDB component presentation and traversal techniques summarized above.
For a more complete understanding of this disclosure, reference is now made to the following brief description, taken in connection with the accompanying drawings and detailed description, wherein like reference numerals represent like parts.
In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the embodiments disclosed herein. It will be apparent, however, to one skilled in the art that the disclosed embodiments may be practiced without these specific details. In other instances, structure and devices are shown in block diagram form in order to avoid obscuring the disclosed embodiments. References to numbers without subscripts or suffixes are understood to reference all instance of subscripts and suffixes corresponding to the referenced number. Moreover, the language used in this disclosure has been principally selected for readability and instructional purposes, and may not have been selected to delineate or circumscribe the inventive subject matter, resort to the claims being necessary to determine such inventive subject matter. Reference in the specification to “one embodiment” or to “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiments is included in at least one embodiment.
The terms “a,” “an,” and “the” are not intended to refer to a singular entity, unless explicitly so defined, but, rather, are intended to include the general class of which a specific example may be used for illustration. The use of the terms “a” or “an” may therefore mean any number that is at least one, including “one,” “one or more,” “at least one,” and “one or more than one.” The term “or” means any of the alternatives and any combination of the alternatives, including all of the alternatives, unless the alternatives are explicitly indicated as mutually exclusive. The phrase “at least one of” when combined with a list of items, means a single item from the list or any combination of items in the list. The phrase does not require all of the listed items unless explicitly so defined.
As used herein, the term “computing system” refers to a single electronic computing device that includes, but is not limited to a single computer, virtual machine, virtual container, host, server, laptop, and/or mobile device, or to a plurality of electronic computing devices working together to perform the function described as being performed on or by the computing system.
As used herein, the term “medium” refers to one or more non-transitory physical media that together store the contents described as being stored thereon. Embodiments may include non-volatile secondary storage, read-only memory (ROM), and/or random-access memory (RAM).
As used herein, the term “application” refers to one or more computing modules, programs, processes, workloads, threads and/or a set of computing instructions executed by a computing system. Example embodiments of an application include software modules, software objects, software instances and/or other types of executable code.
As used herein, the term “configuration item” refers to a record for any component (e.g., computer, device, piece of software, database table, script, webpage, piece of metadata, etc.) in an enterprise network, for which all relevant data, such as manufacturer, vendor, location, etc. is stored in a CMDB.
As used herein, the term “business rule” refers to is a piece of code, e.g., JavaScript, that is configured to run whenever a record is inserted, updated, or deleted, or when a table is queried. A business rule can be set to run before or after the database action has occurred. In the case of a query, the business rule should run before the database operation, so that the data returned to the user is appropriate to his or her system privileges (e.g., based on user role). For example, a typical business rule might execute a script after a user updates an incident or escalates the priority of a change request.
As used herein, the term “user interface page” refers to a web page or other structured or formatted document that may be presented to a user of a CMDB, which may allow the user to, e.g., run a query, review an alert, update CI metadata, etc.
As used herein, the term “script include” refers to a script written in a scripting language, e.g., JavaScript, which is created and which are executed on a server. In some instances, script includes may be called from other client scripts and may be run in a client browser, from a business rule (e.g., a database trigger), or other places within a system. Scripts may be run in various situations, e.g., when a form is loaded, when a form is submitted, when content on a form is edited, etc.
Various exemplary embodiments are disclosed herein that provide users of a cloud computing system with the ability to display and/or traverse the various components, e.g., CIs, stored in a CMDB. These embodiments allow the user to fluidly and seamlessly explore the components of a CMDB, as well as the relationships therebetween. The embodiments disclosed herein can visually display the types of relationships between various items stored in the CMDB, such as: business rules, triggers (or other logical components), script include files, database tables, user interface pages, and/or update sets. By seeing how the components of a CMDB are interrelated, users may more quickly and accurately understand how changes or customizations to one component of the system are likely to affect other components in the system. Likewise, having a thorough understanding of the interrelationships between the various types of components stored within the CMDB may also help users to more quickly troubleshoot issues, identify the root cause of problems occurring in their system, and/or identify the types of CIs that are the leading causes of problems occurring in their system.
Turning now to
In
To utilize computing resources within the developmental platform network 110, network operators may choose to configure the data centers 112 using a variety of computing infrastructures. In one embodiment, one or more of the data centers 112 are configured using a multi-tenant cloud architecture, such that a single server instance 114, which can also be referred to as an application instance, handles requests and serves multiple customers. In other words, data centers with multi-tenant cloud architecture commingle and store data from multiple customers, where multiple customer instances are assigned to a single server instance 114. In a multi-tenant cloud architecture, the single server instance 114 distinguishes between and segregates data and other information of the various customers. For example, a multi-tenant cloud architecture could assign a particular identifier for each customer in order to identify and segregate the data from each customer. Generally, implementing a multi-tenant cloud architecture may suffer from various drawbacks, such as a failure to single server instance 114 causing outages for all customers allocated to the single server instance 114.
In another embodiment, one or more of the data centers 112 are configured using a multi-instance cloud architecture to provide every customer its own unique customer instance. For example, a multi-instance cloud architecture could provide each customer instance with its own dedicated application server and dedicated database server. In other examples, the multi-instance cloud architecture could deploy a single server instance 114 and/or other combinations of server instances 114, such as one or more dedicated web server instances, one or more dedicated application server instances, and one or more database server instances, for each customer instance. In a multi-instance cloud architecture, multiple customer instances could be installed on a single physical hardware server, where each customer instance is allocated certain portions of the physical server resources, such as computing memory, storage, and processing power. By doing so, each customer instance has its own unique software stack that provides the benefit of data isolation, relatively less downtime for customers to access the developmental platform network 110, and customer-driven upgrade schedules. An example of implementing a customer instance within a multi-instance cloud architecture will be discussed in more detail below with reference to
In one embodiment, a customer instance may include one or more database tables designed for storing information describing one or more of the CIs stored in a CMDB and the various relationships (including the types of relationships) between such CIs. The system may also include one or more database listeners that can listen for changes (e.g., additions, deletions, updates, etc.) to various tables (e.g., metadata-extended tables, as will be described in further detail below) on client instances and update the one or more database tables based on any relevant changes that have taken place with the metadata describing the client's CIs and relationships. After characterizing the various relationships and relationship types between the CIs in a client's system, a tree-like data structure (i.e., consisting of one or more nodes and one or more edges connecting such nodes) may be generated to allow a user to visualize the interrelationships between the CIs in the system and browse the relevant relationship data for any given CI of interest.
To facilitate higher availability of the client instance 208, the application server instances 210a-210d and database server instances 212a and 212b are allocated to two different data centers 206a and 206b, where one of the data centers 206 acts as a backup data center. In reference to
As shown in
Although
Client device 315 may be configured to communicate through network 310 with client instance 305 that may be hosted on a remote server or a remote server instance in a cloud infrastructure, as described above. In this example, client device 315 may be configured to execute a web browser interface and receive a user indication of a search request 316 to be transmitted to client instance 305 and search engine 320 within that client instance 305 for processing. Search engine 320 may receive search request 316 and obtain informational settings 325 from within client instance 325 pertaining to the processing of search request 316 (e.g., the name of a piece of metadata or a particular table to search). Alternatively, settings may be embedded within search request 316 without the need to reference settings 325.
Once search engine 320 has obtained a sufficient amount of information pertaining to search request 316, the search process may be initiated as shown by interface lines 331, 341 to and from the various relevant CMDB tables storing CI metadata relationship information. As will be discussed in further detail with reference to
Each search request 316 may return a group of one or more CIs and/or update sets matching the search criteria from the aforementioned various relevant CMDB tables storing CI metadata relationship information. For example, a first search request may return a group of CIs, “CI group 1” (CI1) 330, as shown by interface line 332, which will contain all the relevant CI and update set information and metadata (including relationship type information) necessary for the client instance 305 to generate a tree data structure (or other desired data structure) allowing the user to view and/or traverse the results of the search request, as will be described in greater detail with reference to
Block diagram 300 illustrates an example of a portion of a service provider cloud infrastructure (e.g., network 110 of
Referring now to
As is further illustrated in
Also shown in
Referring now to
As may be understood, graph 500 may be displayed via a user interface using a variety of display options. For example, the graph may be displayed as a vertically-aligned tree, a horizontally-aligned tree, a radial graph, or any other desired configuration. Likewise, selecting any of the individual CIs (or update sets) in the graph (e.g., via the use of a keyboard, mouse, touch input, or other input mechanism), may highlight (e.g., by increasing the thickness or changing the color of) the various relationship edges emanating from the selected CI (or update set). According to some embodiments, a user may also be able to specify the “blast radius” from the selected CI (or update set) which he or she would like to see highlighted or displayed. For example, all CIs within one relationship edge from update set CI #8 (516), or all CIs within three relationship edges, etc. In some instances, knowing the most ‘related’ components in the CMDB to a CI that is causing an error may help a user to identify a root cause, find a solution to the error being experienced, or identify other components in the system likely to be impacted by any changes to the error-causing CI.
Referring now to
As mentioned above, the graph may be visually filtered (e.g., via highlighting or hiding particular edges or nodes) based on a selected blast radius from selected CI. These visual filtering techniques may be applied without running a new search query, so long as the relevant CIs and/or update sets were returned in the results of the initial search query executed by a user. However, if a user desired to greatly increase the scope of what was being visually displayed by the graph (e.g., a “blast radius” of 10 relationship edges), a new search query may have to be executed to return a CI group containing all the relevant CI and update set information and metadata necessary for the generation of the updated tree data structure, e.g., as described above with reference to
In still other embodiments, the graph may be filtered by showing only CIs that are related to greater than or equal to a first desired number of update sets. Such a type of search query/filtering may provide the user with insight into the CIs which multiple other users have recently updated or customized in some way, which may provide an indication of a part of the system that is a likely root cause of instability or errors observed in the system.
In still other embodiments, the graph may be filtered by showing only certain relationship types (e.g., only “contained by” relationships) or only certain CI types (e.g., only “script include” CIs). In still other embodiment, the graph may allow sequential filtering, e.g., filtering first by a particular update set, and then by a certain relationship type or CI type of the items in the selected update set. Other customizations of the visual interface are also possible, based on the desires of a given implementation and the types of information stored in the relevant CI system metadata tables.
Referring now to
Referring now to
At Step 610, the method may create a graph reflecting the identities of (and relationships between) one or more CIs or update sets stored in the CMDB. According to some embodiments, e.g., such as those described above with respect to
At Step 614, the method may employ a database change ‘listener’ program, wherein any changes, e.g., updates, insertions, or deletions, to a client's relevant database tables may be monitored and reported back to the CMDB, e.g., in a queue. Based on the monitored changes, the process may determine whether any metadata items or the relationships therebetween have been updated in a way that would cause the system to need to update its relevant CMDB CI System Metadata tables. If such an update has occurred (i.e., ‘YES’ at Step 614), the process may return to Step 604 to re-determine the existing relationships and relationship types between the relevant metadata items, updating the relevant CMDB CI System Metadata tables and updating (if necessary) and displaying the graph again to reflect and updates made to the various system components. In some embodiments, changes in the change queue may be processed in a so-called ‘First In, First Out’ (FIFO) fashion. If, instead, no relevant updates have occurred, e.g., after the passage of some threshold amount of time (i.e., ‘NO’ at Step 614), the process may end. Of course, in some embodiments, method 600 may be in a constant state of listening for changes to the client's enterprise information and updating the graphical representation of such information accordingly, as necessary.
Referring now to
Referring now to
Referring now to
The computing system 900 includes a processing element 902 that contains one or more hardware processors, where each hardware processor may have a single or multiple processor cores. In one embodiment, the processing element 902 may include at least one shared cache that stores data (e.g., computing instructions) that are utilized by one or more other components of processing element 902. For example, the shared cache may be locally cached data stored in a memory for faster access by components of the processing elements 902. In one or more embodiments, the shared cache may include one or more mid-level caches, such as level 2 (L2), level 3 (L3), level 4 (L4), or other levels of cache, a last level cache (LLC), or combinations thereof. Examples of processors include, but are not limited to a central processing unit (CPU) such as a microprocessor. Although not illustrated in
Persons of ordinary skill in the art are aware that software programs may be developed, encoded, and compiled in a variety computing languages for a variety software platforms and/or operating systems and subsequently loaded and executed by processing element 902. In one embodiment, the compiling process of the software program may transform program code written in a programming language to another computer language such that the processing element 902 is able to execute the programming code. For example, the compiling process of the software program may generate an executable program that provides encoded instructions (e.g., machine code instructions) for processor 902 to accomplish specific, non-generic, particular computing functions.
After the compiling process, the encoded instructions may then be loaded as computer executable instructions or process steps to processing element 902 from storage (e.g., memory 904) and/or embedded within the processing element 902 (e.g., cache). Processing element 902 can execute the stored instructions or process steps in order to perform instructions or process steps to transform the computing device into a non-generic, particular, specially programmed machine or apparatus. Stored data, e.g., data stored by a storage device, can be accessed by processing element 902 during the execution of computer executable instructions or process steps to instruct one or more components within the computing device 900.
A user interface 910 can include a display, positional input device (such as a mouse, touchpad, touchscreen, or the like), keyboard, or other forms of user input and output devices. The user interface 910 can be coupled to processor element 902. Other output devices that permit a user to program or otherwise use the computing device can be provided in addition to, or as an alternative to, network communication unit 908. When the output device is (or includes) a display, the display can be implemented in various ways, including by a liquid crystal display (LCD), a cathode-ray tube (CRT), or a light emitting diode (LED) display, such as an organic LED (OLED) display. Persons of ordinary skill in the art are aware that the computing device 900 may comprise other components well known in the art, such as sensors, powers sources, and/or analog-to-digital converters, not explicitly shown in
At least one embodiment is disclosed and variations, combinations, and/or modifications of the embodiment(s) and/or features of the embodiment(s) made by a person having ordinary skill in the art are within the scope of the disclosure. Alternative embodiments that result from combining, integrating, and/or omitting features of the embodiment(s) are also within the scope of the disclosure. Where numerical ranges or limitations are expressly stated, such express ranges or limitations may be understood to include iterative ranges or limitations of like magnitude falling within the expressly stated ranges or limitations (e.g., from about 1 to about 10 includes, 2, 3, 4, etc.; greater than 0.10 includes 0.11, 0.12, 0.13, etc.).
Use of the term “optionally” with respect to any element of a claim means that the element is required, or alternatively, the element is not required, both alternatives being within the scope of the claim. Use of broader terms such as comprises, includes, and having may be understood to provide support for narrower terms such as consisting of, consisting essentially of, and comprised substantially of. Accordingly, the scope of protection is not limited by the description set out above but is defined by the claims that follow, that scope including all equivalents of the subject matter of the claims. Each and every claim is incorporated as further disclosure into the specification and the claims are embodiment(s) of the present disclosure.
It is to be understood that the above description is intended to be illustrative, and not restrictive. For example, the above-described embodiments may be used in combination with each other. Many other embodiments will be apparent to those of skill in the art upon reviewing the above description. The scope of the invention therefore should be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled. It should be noted that the discussion of any reference is not an admission that it is prior art to the present invention, especially any reference that may have a publication date after the priority date of this application