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 ?
There are a few UML diagrams that are used in most situations in software development or systems modeling, including IT infrastructure and business systems. The top three UML diagrams that you should get comfortable with include use case diagrams, class diagrams (if you are a programmer), and sequence diagrams.
Timing diagrams are very similar to sequence diagrams. They represent the behavior of objects in a given time frame. If it's only one object, the diagram is straightforward. But, if there is more than one object is involved, a Timing diagram is used to show interactions between objects during that time frame.
Importance of UML Diagram UML diagrams can be used as a way to visualize a project before it takes place or as documentation for a project afterward. But the overall goal of UML diagrams is to allow teams to visualize how a project is or will be working, and they can be used in any field, not just software engineering.
For everyday use, three types of UML diagrams are the most popular: Class diagram. Object diagram. Sequence diagram.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With