软件依赖是高效的、基于组件的编程的关键部分。同时,它们可能会成为快节奏的敏捷开发团队的障碍,因为它们会使部署、更新和迁移软件应用程序变得更加困难。许多应用程序有几十个或几百个依赖项,每个依赖项都有自己的传递依赖项,使问题变得更糟。
依赖项是提供主要组件所依赖的所需功能的组件。可以使用 npm 或 Maven 等包管理器、GitHub 等基于 Git 的代码存储库和Docker Hub等容器镜像注册表将它们合并到代码中。
为什么应用程序依赖关系映射对于云迁移至关重要
软件依赖是高效的、基于组件的编程的关键部分。同时,它们可能会成为快节奏的敏捷开发团队的障碍,因为它们会使部署、更新和迁移软件应用程序变得更加困难。许多应用程序有几十个或几百个依赖项,每个依赖项都有自己的传递依赖项,使问题变得更糟。
依赖项是提供主要组件所依赖的所需功能的组件。可以使用 npm 或 Maven 等包管理器、GitHub 等基于 Git 的代码存储库和Docker Hub等容器镜像注册表将它们合并到代码中。
应用程序依赖关系映射涉及发现和识别应用程序组件、它们的依赖关系和底层基础设施之间的依赖关系和交互。创建应用程序依赖关系图是了解复杂应用程序结构和了解在不同环境中部署它们的影响的重要部分。
为什么应用程序依赖关系对云迁移至关重要
应用程序依赖关系映射可确保您已确定必须迁移到云的所有组件。您可能不需要将所有组件迁移到云中,但您确实需要确保所有依赖项都被识别并一起迁移。否则,您的应用程序可能会遇到性能问题,因为重要的依赖关系仍然存在于本地。
例如,如果您将应用服务器移动到云端,但将应用程序的数据库保留在本地,您的应用程序将经历严重的性能下降,并且还可能导致相关应用程序失败。一旦依赖关系被破坏,所有相关的应用程序都会受到影响。因此,在将应用程序迁移到云时,您必须包括所有关联的依赖项。
应用程序依赖映射工具如何提供帮助
应用程序依赖关系映射可以帮助您避免应用程序性能不佳和服务中断。它是迁移过程的关键组成部分,但如果没有自动化工具也很困难。应用程序依赖映射工具检查应用程序并提供以下帮助:
- 建模所有服务器间关系
- 识别入站和出站连接延迟
- 确定必要的 TCP 端口
- 检测正在运行的进程
- 随时间推移的应用程序性能监控
云供应商提供为其环境开发的特定应用程序依赖关系映射工具。例如,亚马逊网络服务 (AWS)、谷歌云和微软 Azure 提供专有工具来帮助管理这个过程。但是,这些工具与每个提供商相关联,这意味着您应该使用与您选择的目标云环境相匹配的供应商工具。
或者,您可以使用提供类似服务但与供应商无关的开源工具。如果您想要的评估并非特定于单个云供应商环境,请使用这些工具。
映射应用程序依赖项以准备云迁移
应用程序由依赖API和工具的层次结构组成。层次结构从应用程序的接口开始,然后通过平台工具向下延伸。依赖关系管理有助于识别相关版本的组合,并确保开发团队在发生更改时识别新的应用程序依赖关系。
版本控制应用程序组件
此过程的第一步涉及对应用程序组件进行版本控制。如果你打算独立部署一个特定的软件组件,你需要为每个修订分配一个版本号,然后跟踪这个版本的依赖链。
此技术可确保您了解与每个应用程序版本关联的特定平台工具版本。如果您需要回滚,您知道需要回滚哪些附加组件以确保版本兼容性。
更改平台组件
这种技术需要更改一些平台组件,例如中间件,这也需要同步每个应用程序的平台版本。您应该从应用程序依赖链的顶部开始。
每个应用程序都设计为使用特定的操作系统和中间件功能,需要工具的“版本 Y 或更高版本”。因此,您必须针对工具的依赖项验证具有指定版本的每个工具,并继续验证这些依赖项中的每一个,直到到达依赖项链的底部。
但是,某些应用程序依赖项并不像其他应用程序依赖项那样明显和明确。如果您希望在不同来源的管理程序平台上的虚拟机 (VM) 中运行来宾操作系统,您可能会遇到问题。
如果云堆栈版本(如 OpenStack)需要特定的脚本语言版本,您也可能会遇到问题。您可以通过针对标准中间件和操作系统组合测试每个依赖项链来缓解此问题,确保识别所有依赖项。
重建依赖树
准备好迁移到云后,您需要补充应用程序的依赖关系树,并包含对云提供商 API 和功能的所有引用。确保确定提供者如何通知工具和 API 的更改,并准备验证这些更改可能创建的新依赖项。
对于多云或混合部署,您必须比较计划迁移到云平台边界之外的所有组件和应用程序的云依赖关系树。请注意,对于每个提供程序具有不同的依赖关系树可能会导致在提供程序平台之间进行扩展或故障转移时出现问题。您可以通过提前同步组件来避免这种情况。
每当您更改软件平台组件时,您还应该重建您的依赖关系树。基本更新可以撤消您所做的所有映射和工作,并且您可以轻松忽略对小型中间件组件的更改。您可以通过设置生命周期管理流程来缓解这种情况,以确保在引入不兼容的元素时不会出现依赖性问题。
结论
在本文中,我解释了应用程序依赖映射的基础知识,并展示了应用程序依赖工具如何使云迁移更安全、更容易:
- 版本控制应用程序组件——了解您的应用程序期望所有依赖组件的版本。
- 更改平台组件——确定切换某些平台组件的影响。
- 重建依赖关系树- 使用现有依赖关系树的映射在云环境中重建匹配的依赖关系树。
我希望这将帮助您评估依赖映射的使用并使您的下一次迁移成功。