=== 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.
