如何跟踪系统依赖关系?

问题描述:

介绍如何跟踪系统依赖关系?

在我目前的组织,我们有很多的桌面和Web应用程序都送入对方在某一点。当照顾旧的应用程序或创建新的应用程序时,试图记住哪个系统依赖于其他系统来工作是非常困难的。我不是在谈论软件依赖性像DLL的和图像,我说的是依赖于人力资源系统的整个系统就像一个财务系统等

我的问题

这是对一个最好的方法跟踪整个系统如何依赖于另一个系统?

答案可以建议采取上述方法,软件包或文档技术。

在我的具体情况,许多指超过20家网络和桌面应用程序超过一打的服务器。

+3

让我想起我在上一份工作中对彼此说的话 - 如果任何人都能得到我们产品的海盗副本,他们应该得到它! – Benjol 2010-02-01 14:14:02

我想说清楚,在你的架构设计文档。有一些像Enterprise Architect这样的好工具。此工具允许您使用UML标准以清晰直观的方式创建用于描述这些依赖关系的图。

最好的信息来源通常在配置文件中找到。这通常有连接字符串,网络服务的URL等,这将提供一个关于外部依赖关系的好主意。

另一种技术是通过使用分析或跟踪和应用过滤器,我们可以轻松跟踪任何外部呼叫。大多数情况下,依赖关系位于数据库层,检查链接服务器并跟踪其依赖关系可以发现大量信息。

我不确定是否有任何自动获取此信息的方式,特别是如果系统位于多个平台上。很多手工工作将涉及到所有这些。

听起来就像企业发现的工作,尽可能自动化。根据您的组织和环境的大小,有不同的解决方案。对于大风景,无论如何您都需要一个CMDB(配置管理数据库)。诸如HP Universal CMDB之类的产品可以发现并跟踪大规模环境中的依赖关系。

例如它可以发现SAP系统及其相关数据库与分布式系统运行的主机之间的关系,并向您显示相关性。更重要的是,它可以警告你,以防未经授权对实际环境进行更改。

所以答案取决于你认为的“很多”。

+0

在我的特殊情况下,许多意味着超过20个网络和桌面应用程序在十几台服务器上。 – GateKiller 2008-09-30 15:18:38

+0

那么,在这种情况下,Universal CMDB对你来说太贵了。 – Yaba 2008-10-01 12:29:39

这是一个很好的问题 - 我们每次都在努力,看来。

我们已经尝试做在过去一年左右的时间是被“无情”两件事情:

  1. 自动化 - 如果你是自动化和构建/部署的时候,那么自动化过程在大多数时候(配置设置等)都会使事情变得正确

  2. 维基,wiki,维基 - 我们试图成为保持团队和项目维基最新的核心。

好奇看到其他答复。

这是我们在Tideway Systems生产的这种应用程序,以及许多大型组织仅用于此目的。您可以使用该产品发现您的资产,并使用建模功能来描述您的业务应用程序(通常由多个软件和跨度服务器组成)。

这听起来像你有资格使用基金会的免费社区版,你可以使用多达30台服务器 - 只需download它并检查出来。那就让我们知道你的想法吧!

声明:我在Tideway运行开发组。该产品是非常酷IMO,虽然我没有写任何的它自己直接:)

+0

那么这个软件是否会实质上扫描我的源代码并决定应用程序依赖于哪个系统? – GateKiller 2008-10-01 09:55:27

关闭每台机器一个接一个,看看有什么突破..,P

虽然严重,有没有简单的回答这个问题。有了系统集合,你可以创建一个图表来显示基本的依赖关系,但是除非你知道依赖关系是什么,否则它不会有很大的意义。通常,您的目标是确定在更换其他系统时需要“重新验证”的内容,而不是随机关闭哪些机器。但是这种信息需要大量的细节,并且很难积累起来。

所有这些最终都会在系统超越自动化的情况下结束。你永远不会找到一个跟上来的缩小自动化工具。另一方面,如果有足够的细节,那么任何能够处理一半甚至三分之一工作量的东西都将是有价值的。

系统依赖映射是一回事。 真正的挑战在于,真正的环境设置,用户界面,密码,模拟设置,数据库名称以及其他从开发到qa转换为ua到生产的数据。

谁储存/记住他们?

开发人员不知道他的应用程序将驻留在哪个生产服务器上。 他只记录他的开发数据库,​​uid's,pwd's的名称并描述他的数据库表,conn字符串等。

一旦将其签入代码存储库并迁移到QA环境,谁是数据需要用适当的值更新这些配置文件?

再次迁移到QA和UAT时,谁?

谁负责通知下一个迁移组需要更改哪些内容?

在我的公司里,这是最让我们头痛的原因。在获得内部变更控制流程的批准并创建迁移请求以将应用程序迁移到生产环境中时,只需要一个配置设置就会被遗忘,从而毁掉整个实施,并且它始终发生,明确的责任线没有绘制(在我的观点中)。

超越责任我认为这是一个*信息库。

即。存储所有项目/应用程序的所有配置设置的系统,并且根据您的“角色”,您可以/看不到实际值。

开发人员完成构建,并在“系统”中创建迁移请求。 质量检查人员收到构建###的通知已准备就绪。 QA人员登录到“系统”并检索迁移说明。 现在他们清楚地知道需要做什么,并且他们正在努力完成代码检查和迁移过程。

重复UAT并最终产生。

当有人建立这个迁移系统让我知道,因为这将有助于很多人。

也许我会自己构建它......谁愿意承包我?

两类问题涉及:

一)对于那些谁想要知道如何确定每个组件

b)对于那些谁想要跟踪的相互依赖关系及其优先顺序的依赖。一个组件系统。 (例如,哪个组件被安装到测试环境中等等)

如果您拥有的是一系列组件,您知道每个组件的依赖关系,并且您希望整个列表的依赖性顺序的组件,您可能会发现一个名为Algorithm :: Dependency :: Ordered的Perl模块具有一定的价值。还有其他相关模块可以处理组件的数据库记录等,甚至简单的文件记录。但一个警告:我有问题得到这个工作。

或者,绘图工具可能是有价值的。

这是“配置管理”组的功能。要开始,您必须与贵公司的“专家”交谈,并创建应用程序的地图/图表。使用graphviz/dot生成一个图,它不会很漂亮,但它会给你一个可视化的依赖关系表示。

下面是一个例子:

digraph g { 
rankdir=LR; 
app1->app2->db1; 
app1->app3; 
} 

希望这有助于

我是新来工作,并建议作为第一任务,我去识别系统的依赖。事实证明,我的老板的意思是与人交谈 - 这样我就会知道谁是谁。我以为我的老板想让我写一个计算机程序来做到这一点。所以我做到了。 我的假设是,如果一个程序是另一个程序(服务或服务器)的客户端,那么netstat -pantnetstat -panu那么grep for ESTABLISHED会给你。您可以通过输出LISTENING来确定服务。

这只是一个部分的解决方案。是的,它会告诉你哪些应用程序与哪些应用程序对话,但是还有其他的依赖关系。因此,例如,某些应用程序使用DNS查找其服务器,而其他应用程序则使用硬编码或配置文件。任何使用TCP或UDP的东西都依赖于IP。在大多数地方,IP依赖于ARP和以太网或WiFi。依赖于另一个LAN上的服务的任何事情至少取决于一个路由器。

如果您有负载平衡器或某种群集,则问题会变得更加有趣。如果我从负载平衡器发出的服务,并且防火墙后面的“真实”服务器出现故障,则该服务会降级但仍然处于运行状态。

它变得更加有趣,因为服务(程序)依赖于服务器(硬件)。服务器又取决于电源和空调。所以当我的想法失去控制时,事情变得更加复杂,我想创建一个领域特定语言(DSL)来捕获所有这些依赖关系。我认为,例如,server_1,server_3和server_5正在通电阶段1; server_2,server_4和server_6正在通电阶段2. Server_1,Server_3和server_5都在大约同一时间失败:可能阶段1失败。我还没有弄明白这一点。显然,情况可以用有向图来表示,我只是没有弄清细节。