arc42.tooling/src/arc42/chapters/adr/0003-use-structurizr-for-c4-diagrams.adoc

44 lines
1.9 KiB
Text

=== Use Structurizr for C4 diagrams
Date: 2025-05-08
==== Status
Accepted
==== Decision makers
* Eric Förster
* Stephan Weißenberger
* Ralf Hägele
* Marius Kort
* Andre Harms
==== Context
We currently use D2 (https://d2lang.com/) to generate C4 architecture diagrams. While D2 provides a concise DSL for general diagrams, it lacks built-in C4 abstractions (e.g. Software system, Container, Component, etc.). We need a tool that:
* Directly supports the C4 model
* Allows reuse of the same architecture definitions across views
==== Decision
We have decided to adopt the open-source version of Structurizr (using the DSL and Structurizr Lite) for authoring and maintaining C4 architecture diagrams. This decision was based on the following factors:
* **Native C4 Support:** Structurizr is specifically designed for the C4 model, providing built-in abstractions and validation.
* **Model-Driven Approach:** Structurizr uses a model-driven approach, allowing us to define the architecture once and generate multiple views from the same model.
* **Extensibility:** Structurizr is extensible, allowing us to customize the diagrams and integrate with other tools.
* **Community Support:** Structurizr has an active community and comprehensive documentation.
==== Consequences
* **Positive:**
** **Improved Diagram Accuracy:** C4 model validation will help ensure the diagrams accurately represent the architecture.
** **Reduced Maintenance Overhead:** The model-driven approach and code-as-configuration will simplify diagram maintenance.
** **Increased Consistency:** Reusing architectural definitions across views will ensure consistency.
* **Negative:**
** **Learning Curve:** Team members will need to learn the Structurizr DSL.
** **Migration Effort:** We will need to migrate existing D2 diagrams to Structurizr.
** **Potential Lock-in:** Adopting Structurizr may create a dependency on the tool.