
# 调研应用关联关系
在应用迁移上云时，除了调研企业内部的业务关联关系，还需要考虑外部关联关系。内部关联关系主要用于迁移批次规划和制定切换方案，外部关联关系主要用于评估业务影响，选择合适的停机窗口和制定切换方案。
图1关联关系调研图   
![](https://support.huaweicloud.com/usermanual-caf/zh-cn_image_0000002177562289.png "点击放大")
#### 调研内部关联关系
关联关系分析是批次规划和切换方案的重要输入，也是上云迁移的难点，影响上云迁移的关联关系主要有三种，如下图：
图2三种关联关系   
![](https://support.huaweicloud.com/usermanual-caf/zh-cn_image_0000002177520681.png "点击放大")
关联分析有如下4种方法，上云迁移过程中，企业可以根据自身的实际情况选择合适的分析方法：
图3关联关系分析法   
![](https://support.huaweicloud.com/usermanual-caf/zh-cn_image_0000002142203202.png "点击放大")
- **CMDB法** ：适用于客户有CMDB系统，CMDB系统中通常有应用间的通信依赖，应用与数据库的依赖，应用与中间件的依赖等，可直接通过CMDB获取依赖关系。
  图4CMDB法   
  ![](https://support.huaweicloud.com/usermanual-caf/zh-cn_image_0000002181130025.png "点击放大")
  图5CMDB法示例   
  ![](https://support.huaweicloud.com/usermanual-caf/zh-cn_image_0000002181827393.png "点击放大")
  
  

- **关联分析工具法** ：可以通过专门的关联分析工具进行关联分析，比如华为云的[MgC](https://support.huaweicloud.com/mgc/index.html)工具，也可以采用业界的一些关联分析工具。
  表1关联分析工具表 
  | 软件名称                              | 是否商用 | 说明                                                                                                                                                  |
  |:---|:---|:---|
  | Dynatrace                         | 商用   | Dynatrace平台包括出色的应用程序性能管理工具，能够提供自动的应用程序依赖关系映射。它可以发现和监控微服务和应用程序，甚至是那些在容器内运行的微服务和应用程序。它收集性能数据和通信时间数据，并突出显示性能不佳的服务和应用程序。                                |
  | 网络空间测绘                            | 商用   | 网络空间测绘是一个应用和服务器发现工具。支持无代理自动发现，广泛支持MS和LINUX/Unix、云供应商、管理程序，硬件、虚拟和应用层；可用于多数据中心的远程收集。                                                                  |
  | Device42                          | 商用   | Device42是一个发现和映射工具，用于收集和组织整个IT环境上的数据。它包括设备发现和资产管理，以及专用的应用程序映射和管理功能。 它还可以检测网络设备，如交换机和负载均衡设备，以及电源和环境设备，包括PDU、UPS和CRAC设备。 |
  | 艾联科iSRG动态智能系统                     | 商用   | 艾联科iSRG动态智能系统资源图谱软件，提供传统网络/云/微服务/容器/虚拟系统的资源动态管理能力。包含资源的发现与采集，模板管理、资源管理、视图编辑等功能。                                                                     |
  | ManageEngine Applications Manager | 商用   | ManageEngine是一个应用程序管理器的工具。这是一个通用服务器和应用程序监控工具，它支持对服务器和数据库、虚拟机、应用程序、Web服务和其他组件的监控。                                                                    |
  | Datadog                           | 商用   | Datadog是一款具有应用程序监控和映射功能的性能监控工具。它可以在整个基础架构中收集信息，包括匹配特定客户、端点或错误代码的跟踪，它自动映射数据流，并可以按依赖关系组织服务。                                                           |
  | Pinpoint                          | 开源   | Pinpoint可以跟踪分布式应用程序之间的事务，以检查整体结构和运行状况。Pinpoint可以实时监控应用程序，并清晰快速地了解应用程序拓扑。                                                                            |
     
  

- **Workshop头脑风暴法** ：可以通过组织专题会议，引导熟悉业务系统的骨干人员梳理关联关系。
  图6WorkShop法   
  ![](https://support.huaweicloud.com/usermanual-caf/zh-cn_image_0000002146548116.png "点击放大") 

- **配置分析法** ：配置分析法是一种通过分析应用系统的配置文件来探索关联关系的方法，它可以帮助我们了解应用之间的相互调用关系、应用与数据库之间的连接以及其它关联关系。以下是配置分析法的基本步骤：
  - **收集配置文件：**首先需要收集和获取与目标应用系统相关的配置文件。这可能包括DNS配置、ELB配置、NAT配置以及Nginx.conf等。
  
  - **解析配置文件：**对于每个配置文件，需要编写脚本或使用现有工具来解析其内容，脚本可以根据文件格式和语法规则，提取出关键信息并进行处理。
  
  - **提取关联信息：**在解析配置文件时，需要识别出与其他组件或资源相关的信息，例如，可以查找应用之间的相互调用关系，比如从一个应用到另一个应用的URL或API调用；还可以查找应用与数据库之间的连接信息，如数据库地址、用户名和密码等。
  
  - **构建关联图谱：**将提取到的关联信息组织成图谱或关系模型，这可以是有向图、无向图或其他合适的数据结构，用于表示应用间的关系和依赖。
  
  - **分析关联关系：**对于构建的关联图谱，可以使用图论算法或其他分析方法来探索关联关系，这可以帮助我们发现隐藏的依赖。
   
通过配置分析法，我们可以深入了解应用系统内部的关联关系，从而更好地理解整体架构和运行方式，这对系统迁移等方面具有重要的价值，然而，需要注意的是，配置文件可能会受到变更和更新的影响，因此在进行关联分析时需要及时更新和验证配置信息的准确性。
#### 调研外部关联关系
以下一些常见的外部关联关系，需要在应用迁移前进行调研和评估。确保全面理解应用的外部依赖，并采取适当的措施，以确保迁移后外部业务正常运行，不受影响。
- **第三方应用程序依赖关系**
  调研与目标应用有关的第三方应用或服务，包括其版本和集成方式。确定是否需要对这些依赖项进行调整或重新配置。
  

- **外部数据源和 API 依赖关系**
  分析和记录目标应用所依赖的外部数据源和 API，例如外部数据库、文件系统、消息队列或第三方服务。确保这些依赖关系在迁移后能够正确访问和使用。
  

- **授权和安全关联关系**
  确定与目标应用有关的授权和安全关联关系。包括涉及身份验证、访问控制、令牌管理、IP白名单等方面的外部服务和机制。
  

- **合作伙伴和供应商关联关系**
  如果目标应用涉及与合作伙伴或供应商的集成，需要调研这些关系，并确保在迁移后能够继续正常工作。
  

- **SLA（Service Level Agreement）和供应商支持关系**
  检查既有的 SLA 和供应商支持协议，并评估迁移到云平台后对这些关系的影响。确保在云环境中依然能够满足业务需要并获得期望的支持和服务。
  

- **网络和连接依赖关系**
  调研目标应用所需的网络连接和传输协议。确定上云后是否需要进行网络配置和访问控制，以确保应用程序可以与相关的外部系统正常通信。
  外部关联关系主要靠如下方式去做调研，可以多种方式结合，以提高调研效率和结果完整度：
  

- **文档和现存资料**
  阅读现有的文档和技术资料，包括应用程序的架构图、部署说明和运维手册等。这些资料可以识别出应用程序的关键依赖和集成点。
  

- **与开发团队和运维团队沟通**
  与应用程序的开发团队和运维团队进行沟通，了解他们对系统依赖关系的认识和理解。他们可能提供有关应用程序的详细信息、依赖关系的描述以及与其他系统的集成情况。
  

- **代码分析**
  仔细检查应用程序的源代码，特别是配置文件和代码中涉及的外部依赖关系。因为有些依赖关系可能由代码直接指定。
  

- **系统扫描和监控**
  借助系统监控工具和网络扫描工具，扫描整个系统并识别出与应用程序相关的依赖关系。
  

- **与相关团队交流**
  与其他部门或团队进行交流，了解应用程序与其他公司、供应商或合作伙伴之间的集成关系。这些关系可能包括数据共享、接口调用、权限控制等。
  

- **服务提供商和文档**
  如果应用程序依赖于外部服务提供商，查阅其提供的文档、API 参考和支持资源，以获取关于依赖关系的详细信息。
  
 
