Topology-based migration assessment

According to examples, an apparatus may include a processor that may generate a migration assessment for resources of a computer system. In particular, the apparatus may logically divide topological information to facilitate identification of a resource, components used by the resource, and dependencies. The system further enables users to specify user-defined migration parameters that specify the migration. For instance, the parameters may specify a cost associated with the migration of the component, a license model of the component, a security requirement of the component, a performance of the component, a customization of the component, or requirement of the component. Migration assessments and decisions may be stored to train machine-learned models. For instance, the model may assess whether a parameter will be satisfied by using a certain cloud service and whether substitutes have sufficiently satisfied dependencies based on observed migration assessments and actual migrations.

BACKGROUND

The decision of whether or not to migrate resources of a computer system to the cloud or other system is a manually intensive task due to the complexities and dependencies of modern computer networks. For instance, a resource such as an enterprise application may have components that operate over multiple topological layers, including an application layer (front end interfaces and processes), a platform layer (such as middleware like database services), and an infrastructure layer (such as services that operate on the backend). The migration decision is further complicated by the existence of diverse cloud systems each providing different levels of cost, service, performance, and available resources.

DETAILED DESCRIPTION

The disclosure relates to migrating resources of a computer system to another computer system such as a cloud computer system. In particular, the disclosure relates to apparatuses and methods that leverage topological information stored in configuration management databases (CMDB) to generate migration assessments. A resource may include an application, a service, or other functional process of the computer system. In operation, a resource may use components of the computer system. A component itself may include, among other things, applications, services, and/or other items of, or provided by, the computer system. The topological information may store information about each resource, including each component used, dependencies, configurations, operating systems, applications used, etc. A migration assessment may include a recommendation of whether or not to migrate a resource, which may depend on whether each component used by the resource may be migrated. Furthermore, the migration assessment may include a recommendation to migrate some components of a resource while keeping other components at the computer system.

The topological information may be used to generate assessments of whether a component should be or can be migrated to the cloud or other computer system. The assessments may be automatically generated and made available with the topological information. The topological information may be logically divided into topological layers to facilitate identification of a resource, components used by the resource, and dependencies (each of which is generally required by each component). For example, components in an application layer may have different types of dependencies than those in a platform layer. A component's dependencies may be used to assess whether or not the component may be or should be migrated to a cloud system based on whether or not that cloud system provides a component that satisfies the dependency. If not, appropriate substitute components that are available at the cloud system may be identified and use of the substitute components may be recommended or may different cloud systems that satisfy the dependency may be identified.

Reference is first made toFIG. 1, which shows a block diagram of an example apparatus100that generates a migration assessment based on topology information. It should be understood that the example apparatus100depicted inFIG. 1may include additional features and that some of the features described herein may be removed and/or modified without departing from any of the scopes of the example apparatus100.

The apparatus100shown inFIG. 1may be a computing device, a server, or the like. As shown inFIG. 1, the apparatus100may include a processor102that may control operations of the apparatus100. The processor102may be a semiconductor-based microprocessor, a central processing unit (CPU), an application specific integrated circuit (ASIC), a field-programmable gate array (FPGA), and/or other suitable hardware device. Although the apparatus100has been depicted as including a single processor102, it should be understood that the apparatus100may include multiple processors, multiple cores, or the like, without departing from the scopes of the apparatus100disclosed herein.

The apparatus100may include a memory110that may have stored thereon machine-readable instructions (which may also be termed computer readable instructions)112-118that the processor102may execute. The memory110may be an electronic, magnetic, optical, or other physical storage device that includes or stores executable instructions. The memory110may be, for example, Random Access memory (RAM), an Electrically Erasable Programmable Read-Only Memory (EEPROM), a storage device, an optical disc, and the like. The memory110may be a non-transitory machine-readable storage medium, where the term “non-transitory” does not encompass transitory propagating signals. Attention will now turn to operations at processor102to generate a migration recommendation based on topology information.

Referring toFIG. 1, the processor102may fetch, decode, and execute the instructions112to access a migration parameter. Examples of a migration parameter are discussed herein, for instance, with respect toFIG. 2.

The processor102may fetch, decode, and execute the instructions114to obtain topology information relating to a resource to be potentially migrated from a first computer system to a second computer system, in which the resource may use components of the first computer system.

The processor102may fetch, decode, and execute the instructions116to logically divide the topology information into a plurality of topological layers, in which each topological layer may be associated with a respective set of components of the first computer system used by the resource.

The processor102may fetch, decode, and execute the instructions118to, for each topological layer of the plurality of topological layers: identify each component from among the respective set of components; and for each of the identified components, generate an assessment of whether the identified component is to be migrated to the second computer system based on the migration parameter.

Reference will now be made to an example environment in which the apparatus100may operate, including further examples of details of such operation, with respect toFIG. 2.FIG. 2shows a block diagram of an example system data flow200for generating a migration assessment230based on topology information207. The topology information207may describe a target network201from which to potentially migrate a resource204to a candidate host network215. The candidate host network215may be off-premises relative to the target network201. The target network201will also be referred to interchangeably herein as “computer system.” In some examples, the candidate host network215may include a cloud-based network offered by a cloud service provider. In these examples, the host attributes213may include a cloud image that specifies available resources at the cloud-based network.

Components202, resources204, and topology information207will be described first, followed by a description of how the apparatus100may analyze the components, resources, and topology information to generate a migration assessment230.

The target network201may include a plurality of components202. A component202may be categorized according to a Configuration Item (CI) type that describes a type of the component202. The CI type for a component202may be included in the topology information207. CI types may include, without limitation, a physical hardware device or software installed at the target network201, a business element, a process record that records changes to a business, a monitor that handles metrics relating to a business, a location that describes a location of devices, people or services of a business, a party that describes an entity, a CI collection that includes a logical collection of CIs, and/or other types of components that make up, is provided by or relates to an entity, such as an entity that operates the target network201.

In some examples, each component202may be associated with an attribute that describes a feature of the component. An attribute may include an operating system (OS) type, an OS version, a security requirement, a level of customization (such as a deviation from an off-the-shelf state), a hardware requirement such as processor speed or storage requirement, and/or other types of features. Some attributes of the component202may be required for the component202to operate, either literally based on technical requirements (such as requiring a specific OS to execute) and/or compliance requirements (such as requiring a certain level of security or logging). An attribute may therefore specify a dependency of the component202. Put another way, to migrate a resource204to a candidate host network215, the dependencies (or requirements) of a component202used by the resource204and/or the component202itself must be available at the candidate host network.

The resource204(to be potentially migrated) may execute on or otherwise be provided by the target network201. For example, the resource204may include an enterprise application or service executing on or provided by the target network201. Other types of resources204that may be migrated from one computer network to another computer network may be analyzed as well. The decision of whether to migrate the resource204may be complex due to the way in which the resource204uses the target network201, technical performance reasons, business reasons, and/or other reasons. This may be particularly true for resources204that have a multi-tier architecture, although the decision of whether to migrate other types of resources204may be difficult as well. For instance, the resource204may use different types of components202, which may be distributed throughout the target network201. It should be noted that a resource204may include a specific type of component202. For example, a resource204may include a component202that is an enterprise application to be potentially migrated from the target network201to a candidate host network215. It is further noted that some types of components202such as applications may themselves be migrated. Other types of components202(such as hardware components) may not be migrated. For example, the enterprise application may use a particular hardware component. To assess whether the enterprise application may be migrated, the apparatus100may identify an attribute of the hardware component (such as memory requirement) that may be required by the enterprise application. The attribute may be used in making the migration assessment.

In examples, the topology information207may specify relationships between components202. For example, the topology information207may specify relationships between components that are hardware or software CI types. Such relationships may include parent/child relationships, dependency relationships, and/or other types of relationships. Dependency relationships may specify that a first component202requires a second component202. Thus, if a resource204to be potentially migrated uses the first component202, then the apparatus100may select a candidate host network215at which both the first and second components (or suitable replacements) are available.

The topology information207may be derived from a discovery engine203, which may discover the components202of the target network201to generate the topology information. Alternatively or additionally, the topology information207may be derived from a network deployment manager205that is used to deploy the component202to the target network201. In either example, the topology information207may be stored in a repository, such as the Configuration Management Database (CMDB)209. The CMDB209may provide the topology information207in various ways, such as via an extensible markup language (XML) format, which may be parsed by the apparatus100.

In examples, the apparatus100may access and logically divide the topology information207into a plurality of topology layers222(illustrated inFIG. 2as application layer222A (which is a topology layer222that includes an application layer), platform layer222B (which is a topology layer222that includes a platform layer), infrastructure layer222C (which is a topology layer222that includes a topology layer), and other layers222N) to generate logically divided topology information220. The topology layers222may include an application layer222A, a platform layer222B, an infrastructure layer222C, and/or other types of topology layers222N. When referring to a topology layer generally, the disclosure will refer to a “topology layer222.” When referring to examples of specific topology layers222, the disclosure will refer to the application layer222A, the platform layer222B, or the infrastructure layer222C. The apparatus100may identify a component202from the topology information207based on the CI type of the component202. In examples, the apparatus100may assign the component202to an appropriate topology layer222. Such assignment may be based on the CI type of the component202. For example, a component202having a CI type indicating the component is an application may be assigned to the application layer222A. A component202having a CI type indicating the component is a database platform component may be assigned to the platform layer222B. A component202having a CI type indicating the component is an infrastructure component may be assigned to the infrastructure layer222C.

Because a topology layer222may be associated with different types of components202than another topology layer222, logically dividing the topology information207facilitates discovery of dependencies of different types of components. For instance, a component202that is an application may have different relationships such as dependencies than another component202that is a database platform component. In particular, an application may have dependencies across different topological layers222. The application may require, for example, another application such as a particular front end interface or operating system in the application layer222A, a particular database platform in the platform layer222B, and a backend service like an authentication service in the infrastructure layer222C. A database platform component may, on the other hand, simply require a particular hardware configuration in the platform layer222B. As such, these components202may require a different analysis. By logically dividing the topology information207into different topology layers222, the apparatus100facilitates component discovery and analysis for migration assessments230.

Generating a Migration Assessment

In examples, the apparatus100may obtain a trigger to generate a migration assessment230. The trigger may include a request from a user (such as a system administrator of the target network201) to generate the migration assessment230, creation of or update to the topology information207, passage of a predefined amount of time, and/or other initiation to generate the migration assessment. The migration assessment230may relate to a specific resource204, a specific component202, a specific layer in which case the migration assessment may relate to all resources and/or components of a topology layer222, and/or other portions of the target network201. The migration assessment230may include an indication of whether a resource204is able to be migrated, a migration recommendation that indicates whether the resource should be migrated, attributes of such migration (such as a resulting fee, performance, etc.), identification of a candidate host network215to which migration should occur, a recommendation to use a component202using a “bring your own license” (BYOL) model, and/or other information pertaining to a migration.

The apparatus100may generate the migration assessment230based on a migration parameter211, a host attribute213, the logically divided topology information220, and/or other data.

A migration parameter211may specify a value that may be used to assess whether to migrate a resource104. For example, the migration parameter211may specify a fee or budget allocated for hosting the migrated resource (such as for examples in which a cloud service provider or others charge a fee for hosting the migrated resource), a license model (such as a “bring your own license” or BYOL) used by a resource or component to be migrated, security policy requirement, performance requirement, customization level, external factors such as government regulations, data privacy, and enterprise requirements, and/or other parameters. In particular, as one example, if an enterprise obtained a software license, then the licensed software may be used instead of software provided at a candidate host network215, such as a cloud-based network. In this example, if a component202or resource204is an application to be migrated, and that application is licensed from a third party, then the apparatus100may recommend that the licensed application be used instead of an application provided by the candidate host network215. In this manner, the migration assessment230may take into account licensing considerations in addition to or instead of strictly technical considerations. In some examples, the migration parameter211may be specified by a user (such as a system administrator).

A host attribute213may specify services provided by a corresponding candidate host network215. The host attribute213may include, for example, a fee for services (which may be specified as a rate or flat fee), performance of services, available applications, and/or other offerings of the candidate host network215. For example, CSPs may publish or otherwise make available cloud images that specify host attributes213for its cloud services. The apparatus100may access the host attribute213to generate the migration assessment230.

The apparatus100may identify a resource204to be potentially migrated. For instance, the apparatus100may identify an enterprise application for which to generate the migration assessment230. The resource204may be identified by a user (in which case the user wishes to obtain the migration assessment230), identified based on a review of all resources204, and/or other identification source. The apparatus100may logically divide the topology information207to generate the logically divided topology information220and/or access the logically divided topology information220that was previously generated and stored. In either example, the apparatus100may identify requirements for migrating the resource204. For instance, using the logically divided topology information220, the apparatus100may identify any components202(and any corresponding requirements of the component) used by the resource204at each topology layer222. In this way, requirements of the resource204may be identified across different topology layers222. For instance, continuing the enterprise application example, the enterprise application may use a front end web interface at an application layer222A, a database service at a platform layer222B, and backend services like user authentication at an infrastructure layer222C. The apparatus100may therefore identify the requirements of the enterprise application across the different topology layers222on which the enterprise application executes.

In examples, for each of the components202at each topology layer222, the apparatus100may identify all requirements and generate a migration assessment230. As previously noted, the migration assessment230may relate to a single component202, a single resource204, a single topology layer222, and/or other portion of the target network201. For example, the apparatus100may assess whether a component202used by the resource may be migrated to a candidate host network215based on the requirements of the component202and the host attributes213. Examples of topologies and how the apparatus100may generate the migration assessment230will now be described with reference toFIGS. 2-4.

Referring toFIG. 3, which shows a schematic diagram300of topology information207for a resource204, the resource204may use a plurality of components202. For instance, the resource204may include an enterprise application that uses a component202A of an application layer222A, a component202B of a platform layer222B, a component202C of an infrastructure layer222C, and/or other components202N at other layers222N. When the resource204has been identified for determining whether to migrate the resource, the apparatus100may logically divide the topology information207into the application layer222A, the platform layer222B, the infrastructure222C, and/or other layers222N and analyze each component202of each platform layer222. For example, the apparatus100may identify dependencies of each component202A-N. Such dependencies may be to another component202on the same topology layer222. For example, for component202A, the apparatus100may identify other applications used by the component202A. For component202B, the apparatus may identify all platform-related dependencies. For component202C, the apparatus100may identify all infrastructure-related dependencies, and so on. Alternatively or additionally, such dependencies may include other components on a different topology layer222(for instance, component202A may use and depend upon component202C as illustrated as a line connecting these components inFIG. 3).

Dependency analysis will now be described with reference toFIG. 4, which shows a schematic diagram400of comparing dependencies of a component202with available components at a candidate host network215. In examples, the apparatus100may identify dependencies of a component202. For example, component202A includes a dependency (A), a dependency (B), and a dependency (C). Dependencies (A)-(C) are shown as being in respective topology layers222. However, the dependencies of a component202may span different numbers (or single) topology layer222.

The apparatus100may access host instances415A-C to determine whether any one of these host instances satisfy the dependencies (A)-(C) and generate migration assessments230A-N accordingly. For example, host instance415A may satisfy dependencies (A) and (B) but not (C); host instance415B may satisfy dependencies (A), but not (B) and (C); host instance415C may satisfy dependencies (B) and (C), but not (A). In this example, the apparatus100may generate a migration assessment230A,230B,230N, and/or other migration assessments.

The migration assessment230A may include a recommendation to use host instance415A and migrate dependency (C). Thus, because component202A requires dependencies (A)-(C) and dependencies (A) and (B) are already available at host instance415A, the migration assessment230A may recommend migrating the necessary dependency (C) to the host instance415A so that the component202A may execute on host instance415A (with the newly migrated dependency (C)). In some instances, the user may be provided with an option to automatically migrate dependency (C) if the user accepts the recommendation provided in the migration assessment230A.

The migration assessment230B may include a recommendation to use host instance415B and415C together. For example, different cloud images (which may be provided by a single CSP) may make available different sets of services that are dependencies of a given component. The migration assessment230B may therefore, in these examples, make a recommendation that host instances415B and415C both be used because they together provide all the dependencies required by component202A.

The migration assessment230N may include a recommendation to use host instance415A and keep dependency (C) at the target network201. In other words, the migration assessment230N may include a recommendation to use host instance415A for dependencies (A) and (B) and not migrate dependency (C). Other combinations of recommended migration plans may be used as well. In some instances, if a dependency is not met, then the apparatus100may select and recommend a suitable potential replacement that is available at a selected one of the candidate host networks215.

In some examples, the apparatus100may make the determination of whether to migrate the component202or its dependencies A-C subject to a migration parameter211. For instance, if a migration parameter211specifies that a certain network performance is required (such as a specified maximum latency, minimum storage requirement, etc.), then the apparatus100may determine whether a candidate host network215will satisfy the requirement based on the host attribute(s)213. Other migration parameters211may be considered as well. The apparatus100may continue this process until all of the requirements of the resource204are analyzed across all of the topology layers222. It should be noted that some resources204may not have requirements across all topology layers222. It should be further noted that the apparatus100may recommend migrating some components202used by the resource204but not other components202used by the resource. Furthermore, the apparatus100may recommend migrating all components202from a particular topology layer222but not migrating any of the components202from another topology layer222.

Referring back toFIG. 2, in examples, the apparatus100may generate the migration assessment230based on a rule-based scheme using pre-stored rules217or based on a machine-learned scheme using a machine-learned (ML) model219. The rule217may predefine logic to generate the migration assessment230. For instance, a rule217may specify that certain migration parameters211be used (or not used) when making a migration assessment230. In some examples, a rule217may specify which combinations or potential replacements for components202may be used if a component202is unavailable at a candidate host network215. If some examples, a rule217may specify a permissible level of deviation from a value specified in a migration parameter211. For example, the rule217may specify that a maximum fee specified by a migration parameter211may be exceeded by a certain amount (for examples in which migrating to a candidate host network215such as a cloud-based network is associated with a fee), that minimum storage requirement may fall below a certain amount, and/or other deviation from a migration parameter211.

In examples, the apparatus100may generate the migration assessment230based on the ML model219. The ML model219may be trained based on previous migration results232correlated to various migration parameters211, components202, and resources204, For instance, the ML model219may correlate migration success/failures with other aspects of the migration result232, such as the resource204migrated, the candidate host network215to which the resource was migrated, any replacements used for dependencies of the resource204or components202used by the resource, and/or aspect of the migration. In this manner, the ML model219may learn which components202may be replaced successfully (or not successfully)—or put another way, which combination of components202may satisfy a requirement for migration, which candidate host network215successfully (or not successfully) hosted a migrated resource204, which migration parameters211were satisfied by the candidate host network215, and/or other observations that correlates migration outcomes with various aspects of the migration.

In examples, the apparatus100may automatically migrate the resource204. Such migration may use a “lift and shift” approach. The migration may be based on the migration assessment230. In some examples, the apparatus100may access or generate a migration result232. The migration result232may include an assessment by a human user of whether the migration was successful or may include an automated assessment that the migration was successful. The automated assessment may include the apparatus100testing that the migration succeeded, such as by passing a compilation test or other validation test.

In examples, the migration result232may include an indication of the resource204migrated, any component202used by the resource204that was migrated (or that was available at the candidate host network215for hardware or other components that cannot be migrated), the candidate host network215, host attributes213, and/or other aspect of the migration. The migration result232may be stored in a repository, such as migration database (DB)234. The ML model219may access the migration result232and/or other migration results from the migration DB234to be trained/retrained based on the migration result, as previously described.

It should be noted that the apparatus100depicted inFIG. 2is shown without further details such as the processor102and various stored instructions. However, the apparatus100depicted inFIG. 2may include various instructions that program the processor102that cause the processor to perform the various operations described with respect toFIG. 2. Furthermore, the discovery engine203and the network deployment manager205may each include its own processor, similar to processor102, and instructions for executing their respective functions described herein. In some examples, the functionality described with respect to the discovery engine203and/or the network deployment manager205may be integrated with the apparatus100. As such, the apparatus100may perform network discovery on the target network201and/or deploy a portion or all of the target network201.

Various manners in which the apparatus100may operate to generate migration assessments are discussed in greater detail with respect to the methods500A,500B, and600respectively depicted inFIGS. 5A, 5B, and 6. It should be understood that the method600may include additional operations and that some of the operations described therein may be removed and/or modified without departing from the scopes of the method600. The descriptions of the methods500A,500B, and600may be made with reference to the features depicted inFIGS. 1-3for purposes of illustration.

FIG. 5Adepicts a flow diagram of an example method500A for assessing migration of Platform as a Service (PaaS) components. Some or all of the operations set forth in the method500A may be included as utilities, programs, or subprograms, in any desired computer accessible medium. In addition, the method500A may be embodied by computer programs, which may exist in a variety of forms. For example, some operations of the method500A may exist as machine-readable instructions, including source code, object code, executable code or other formats. Any of the above may be embodied on a non-transitory computer readable storage medium. Examples of non-transitory computer readable storage media include computer system RAM, ROM, EPROM, EEPROM, and magnetic or optical disks or tapes. It is therefore to be understood that any electronic device capable of executing the above-described functions may perform those functions enumerated above.

At502, the processor102may identify a component, such as component202based on topology information.

At504, the processor102may identify requirements of the component such as a service having a CI type indicating the service is a PaaS service. Such PaaS service may include middleware components such as a database service, operating system service, and/or other types of services that may be provided on a candidate host platform, such as a cloud-based network offered by a CSP.

At506, the processor102may determine whether a custom license has been acquired for a PaaS service identified at504.

If a custom license has been acquired for the PaaS service, at508, the processor102may identify a host instance to host the PaaS service. At510, the processor102may recommend installing the PaaS service with the custom license on the host instance identified at510. If there are more PaaS services requirements (other than the custom-licensed service) to be analyzed, then processing may proceed to512, which is described below.

Returning to506, if no custom license has been acquired, at512, the processor102may access host attributes of the host instance.

At514, the processor102may determine whether the host instance provides the required PaaS services based on the host attributes.

If the host provides the required PaaS services, at516, the processor102may recommend using the host. At518, the processor102may migrate the component to the host instance and store the indication of the migration (including any PaaS combination at the host instance) for ML.

Returning to514, if the host instance does not provide the required PaaS services, then processing may proceed to method500B.

FIG. 5Bdepicts a flow diagram of an example method500B for assessing migration of Platform as a Service (PaaS) services.

At520, the processor102may remove one of the PaaS services from the required PaaS services. The processor102may do so in an attempt to find a host instance that provides the PaaS service combination without the removed one of the PaaS services.

At522, the processor102may determine whether any host instance provides the required PaaS services (less PaaS service removed at520).

If a host instance provides the required PaaS services, at524, the processor102may recommend using the host instance.

At526, the processor102may migrate the component to the host instance and store the combination of PaaS services and indication that the component was migrated for ML.

Returning to522, if no host instance provides the required combination, at528, the processor102may determine whether more PaaS services are in the PaaS combination. If more PaaS services are in the PaaS combination, the processor102may return to520, in which another PaaS service is removed from the PaaS combination and processing thereafter continues as before. If no more PaaS services are in the PaaS combination, at530, the processor102may determine there is no host instance that can host the component without migrating all of the PaaS services. As such, the processor102may generate a migration assessment indicating no host instance that can host the component without migrating all of the PaaS services and/or a recommendation to migrate the missing PaaS services.

FIG. 6depicts a flow diagram of an example method600for generating a migration recommendation based on component dependencies. Some or all of the operations set forth in the method600may be included as utilities, programs, or subprograms, in any desired computer accessible medium. In addition, the method600may be embodied by computer programs, which may exist in a variety of forms. For example, some operations of the method600may exist as machine-readable instructions, including source code, object code, executable code or other formats. Any of the above may be embodied on a non-transitory computer readable storage medium. Examples of non-transitory computer readable storage media include computer system RAM, ROM, EPROM, EEPROM, and magnetic or optical disks or tapes. It is therefore to be understood that any electronic device capable of executing the above-described functions may perform those functions enumerated above.

As shown inFIG. 6, at block602, the processor102may identify a component of the computer system. At block604, the processor102may determine a plurality of dependencies of the component based on a topology of the computer system. Each dependency includes another component, from the computer system, used by the first component.

At block606, the processor102may obtain a plurality of images each specifying available components provided at an instance of a cloud computer system, each cloud computer system operated by a respective cloud service provider. At block608, the processor102may generate a migration recommendation based on the plurality of dependencies and the plurality of images,

FIG. 7depicts a block diagram of an example non-transitory machine-readable storage medium700for generating and storing migration assessments in association with topology information. The non-transitory machine-readable storage medium700may be an electronic, magnetic, optical, or other physical storage device that includes or stores executable instructions. The non-transitory machine-readable storage medium700may be, for example, Random Access memory (RAM), an Electrically Erasable Programmable Read-Only Memory (EEPROM), a storage device, an optical disc, and the like. The non-transitory machine-readable storage medium500may have stored thereon machine-readable instructions702-710that a processor, such as the processor102, may execute.

The machine-readable instructions702may cause the processor to access a migration parameter.

The machine-readable instructions704may cause the processor to perform automated discovery on a first computer system.

The machine-readable instructions706may cause the processor to generate topology information relating to the first computer system based on the automated discovery.

The machine-readable instructions708may cause the processor to logically divide the topology information into a plurality of topological layers, Each topological layer may be associated with a respective set of components of the first computer system used by a resource to be potentially migrated from the first computer system to a cloud computer system

The machine-readable instructions710may cause the processor102to, for each topological layer of the plurality of topological layers, identify each component from among the respective set of components, and for each of the identified components, generate an assessment of whether the identified component should be migrated to the cloud computer system based on the migration parameter.

The machine-readable instructions710may cause the processor102to store the assessments for the plurality of topological layers in association with the topology information.