20

I'm planning to draw some UML structure diagrams that illustrate the place of Docker images (or containers, in deployment diagrams) in the overall structure of the software I am architecting. I'm interested in illustrating the contents of containers, the mapping of network ports and other interfaces and the way multiple containers inter-operate.

My problem space is that of distributed, event-based systems (DEBS), so I expect that most of my containers will have message queues coming in and going out. Another part of my architecture involves the use of an in-memory data grid, which will span across many containers across multiple nodes in a cluster.

How can this be modeled with UML ? If it can't, is there anything planned in UML to address such distribution issues ?

Christophe
  • 68,716
  • 7
  • 72
  • 138
Bert Hooyman
  • 201
  • 2
  • 3
  • 1
    http://www.uml-diagrams.org/component-diagrams.html – qwerty_so Jul 08 '16 at 16:19
  • Can you please clarify if you are looking for tools to assist your jor ("UML efforts") or if your question is more about how to represent your distributed grid ? – Christophe Jul 09 '16 at 16:53
  • Hi @Christophe, it's the latter. How to represent. – Bert Hooyman Jul 11 '16 at 05:54
  • 1
    Thanks @Thomas, component diagrams are indeed an option - although Docker containers themselves are not code, they are more deployment artifacts (deployment diagram?). But thanks for your reference - I was not aware of that site. – Bert Hooyman Jul 11 '16 at 05:56
  • A container (in your case a Docker - sorry I'm not familiar with that tool) IS a piece of software even if you have no access to it's code. Moreover it offers you some interfaces that you use. You present the container as a node stereotyped with <> (note that a node can be nested in another node that is e.g. application server). However on deployment diagram you only present a logic of deployment, not the provided functionalities. To present that you should use component diagram as suggested by @ThomasKilian . – Ister Jul 12 '16 at 20:28
  • Thanks @Thomas. It is appreciated. – Bert Hooyman Jul 14 '16 at 06:49
  • I guess you meant @Ister :-) – qwerty_so Jul 14 '16 at 07:28
  • I edited the question to take into account OP's comments, so to clarify that it's not opinion based nor a search for tools. The number of upvotes clearly show that it's a valuable question. I suggest to **reopen** the question in case of other potential answers. – Christophe Feb 14 '18 at 20:04

1 Answers1

13

You want to represent docker containers and how they deploy your data grids. But you also want to show how this is related to your software architecture.

I think you should first have a look a deployment diagrams. These are best suited for representing the execution of your system across hardware and software environments:

The component architecture could then be described in a component diagram, as pointed out by Thomas Kilian in his comment. For the sake of completeness: see here or here.

Finally, you could explain the relationship between your high-level independent components and your detailed classes by using the composite structure diagram.

Community
  • 1
  • 1
Christophe
  • 68,716
  • 7
  • 72
  • 138