Kris Nóva owns and operates a Mastodon microblogging service at Hachyderm.io
Nóva provides insight into the architecture and operation of the site at her blog
This repository is an aggregation of the hachyderm architecture details that Nóva provides and observation of operations from the perspective of a user @hachyderm.io.
Feedback is requested, if you are inclined.
Whenever I need a diagram of a system I prefer to build a model as a side effect. As more diagrams are required, the details of the system accumulate within the model.
Over the years I have tried a variety of tools and methods for modeling/diagramming. At the moment I rely on Archimate and PlantUML for most architecture/design.
For me, the purpose of an architecture model is to answer any and all legitimate questions about the system for anyone acting in a role associated with it. The more maintainable the model, the quicker I can respond with answers.
Here is an incomplete list, in no particular order:
- You accumulate template objects as you go. They can be used in the next diagram
- The architecture file is plain text. I can apply source control, grep, and other tools.
- The editor is free. This makes it accessible to colleagues
- Looking out for N+1. The next architect can pick up where I left off using a documented standard.
- Maintainability. Big changes to the architecture lead to small changes in the architecture model.
- A variety of views. One model can yield conceptual, baseline, target, transitional, details, technical, data, application, business or other diagrams.
- Simplicity. No sifting through template libraries looking for the right stencil. Archimate identifies architecture elements generically. Your metadata explains from there.
- Objects, not pictures. Change an object's relationship in one view, and the other views are updated. You can check the changes by looking at the analysis view, which gives you a list of views the element is used in.
- Association graphs. Find out what parts of your architecture depend on a library, piece of hardware, business process, etc.