8

I'm looking for a tool that will let me draw out a map of dependencies for applications, servers, etc. We have a lot of servers and a lot of databases, and no way of tracking what depends on what. Note that I'm not talking about code or class dependencies within a project, but rather dependencies on servers, databases, and so on.

When I sat down to create a sample map, I ended up with something like this:

bad map

Now, the problem I have with doing this on paper or in MS Paint is that the layout is not adjustable. For example, if I took a node in the above example and moved it, I want the other lines and nodes to adjust to the new position of the one I just moved.

I checked out some "mind mapping" applications, like FreeMind, and found it to be too restrictive. For example, in that application, you can't just freely draw stuff and connect it, you have to specify nodes and their relationships (child, parent, sibling). Also, there was no ability to comment on anything. For example in the above image, I'd like to be able to include comments for each thing in the map, but have them be hidden until that object is clicked. In this way, I can write a lot of text regarding the relationship and it's history, without muddling up the map.

At the most basic level, all I want is a super simple application that will just let me draw squares, insert text (and hidden comments) in, and connect them with arrows, and then allow me to move the squares around and have the surrounding squares and arrows adjust automatically.

CptSupermrkt
  • 6,844
  • 12
  • 56
  • 87
  • 2
    Off topic? FAQ says questions regarding software used by programmers is acceptable. This is about software, that I as a programmer, am in need of to better organize stuff, so that when I am writing code, I can easily look at the bigger picture regarding my choices of resources. – CptSupermrkt Nov 12 '12 at 02:59
  • I agree with OP's comment, this one seems sufficiently on-topic to me. I suppose one could pick nits and claim that the subject of the diagrams is more within the domain of sys admins than programmers, but not everyone works in an organisation where the roles are clearly delineated. I bet I'm not the only programmer who's had to design development and deployment system configurations. – High Performance Mark Nov 12 '12 at 10:06
  • Have you tried draw.io for a simple free tool to draw diagrams? – beny23 Jul 29 '15 at 22:42
  • This is a "real world" problem and not that easy to solve. Looking for a tool based solution could help everyone! – aronadaal Jan 21 '19 at 16:57

1 Answers1

6

A good tool for making general diagrams of this sort is GraphViz. You specify the input as a .dot file, containing instructions similar to (for your example):

digraph G {
    web_app -> server1
    web_app -> sql_database
    web_app -> repository
    server1 -> esx_server1
    ...
}

(There are many formatting directives, such as proper labels you would use on the vertexes, rather than the short names I've used above.)

Then run a command line tool to lay out the graph as an image. There are many layout algorithms, so often you will use trial and error to find one which works best for your graph.

GraphViz can do a reasonably good layout job on many graphs. But the great thing about it is the text-based input; it's easy to autogenerate the input from a program, or keep it in version control, etc.

Edmund
  • 10,533
  • 3
  • 39
  • 57