Introducing SIDML: A Software, Infrastructure, and Data Modelling Language
Every system — no matter how complex — is ultimately composed of three fundamental elements: software, infrastructure, and data.
If we could describe these three elements in a single, unified model, we could start to represent entire systems holistically — from cloud infrastructure to code and beyond.
That’s the motivation behind SIDML: Software, Infrastructure, and Data Modeling Language.
Why Model Systems as Graphs?
At their core, systems are made up of “things” that relate to other “things.”
A database stores data for a service.
A function runs on a container.
An API calls another API.
That’s a graph.
- Nodes represent the things — services, data stores, APIs, buckets, etc.
- Edges represent the relationships — runs on, calls, writes to, depends on, and so forth.
This gives us a simple, flexible, and universal structure to describe complex systems.
A Simple Example
Here’s a minimal JSON-based SIDML representation of a small system:
{
"version": "0.1",
"nodes": [
{
"id": "n1",
"type": "service",
"name": "Customer API",
"properties": {
"language": "python",
"framework": "fastapi"
}
},
{
"id": "n2",
"type": "database",
"name": "Customer database",
"properties": {
"engine": "postgres",
"region": "eu-west-2"
}
}
],
"edges": [
{
"from": "n1",
"to": "n2",
"relationship": "writes"
}
]
}
This describes a simple two-node system — a FastAPI service writing to a Postgres database — yet the structure can scale to describe any system, from a small script to an enterprise-scale architecture.
Benefits of Modelling with SIDML
A SIDML model opens up powerful possibilities:
- Unified System Definition: Represent software, infrastructure, and data in a single, consistent model.
- Generate Views Automatically: Transform a SIDML graph into any visual representation — C4 diagrams, UML, or custom stakeholder views
- Round-Trip Engineering: Keep diagrams and code in sync
- Update the diagram → regenerate code
- Update the code → regenerate the diagram
- Transform Systems Flexibly - Convert models between frameworks or platforms (e.g. Flask → FastAPI, AWS → Azure).
- Enhanced Communication - SIDML helps teams reason about systems visually, structurally, and programmatically — all from one source of truth.
The Vision
SIDML is more than a modelling format — it’s the foundation for RunViz, a visual modeling and deployment platform.
The idea is simple:
Model systems once, visualise them dynamically, and generate deployable systems directly from those models.
By keeping the underlying structure graph-based and view-agnostic, we can generate any kind of representation — for developers, architects, or even non-technical stakeholders — without changing the core model.
Join the Discussion
This concept is in its early stages, and feedback is welcome.
You can join the discussion and help shape SIDML here:
