![]() |
Diagrams è una libreria Python open-source che consente di creare diagrammi di infrastruttura cloud in modo programmatico. Invece di disegnare manualmente architetture su strumenti come Lucidchart, Draw.io o Miro, con Diagrams puoi scrivere codice Python per generare automaticamente diagrammi visivi chiari, aggiornabili e versionabili via Git.
👉 Sito ufficiale: https://diagrams.mingrammer.com/
✅ Perché usare Diagrams
- Automatizzabile: Puoi generare diagrammi dinamicamente in base ai tuoi ambienti.
- Versionabile: I diagrammi sono creati da codice, quindi perfetti per Git.
- Supporto Multi-Cloud: AWS, Azure, GCP, Kubernetes, On-prem, SaaS e molto altro.
- Facile da usare: Sintassi leggibile e intuitiva.
- Perfetto per DevOps/SRE/Cloud Architects.
🚀 Installazione
# Installa Graphviz (Ubuntu/Debian)
sudo apt install graphviz
# Oppure su macOS
brew install graphviz
# Oppure su Windows tramite download dell'installer
https://graphviz.gitlab.io/download/
# Poi installa Diagrams
pip install diagrams
🛠️ Primo esempio: Diagramma AWS semplice
from diagrams import Diagram
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB
with Diagram("Web Service", show=True):
ELB("lb") >> EC2("web") >> RDS("userdb")
📌 Questo genererà un diagramma con un Load Balancer collegato a un'istanza EC2, a sua volta collegata a un database RDS.
| fonte https://diagrams.mingrammer.com/docs/getting-started/installation |
🌐 Esempi per Provider Cloud
🧱 Cluster e Gruppi
from diagrams import Cluster, Diagram
from diagrams.k8s.compute import Pod
from diagrams.k8s.network import Ingress
from diagrams.k8s.group import Namespace
with Diagram("Kubernetes Namespace", show=False):
ns = Namespace("Prod")
with Cluster("Ingress Controller"):
ingress = Ingress("nginx")
with Cluster("Namespace: Prod"):
pod1 = Pod("backend")
pod2 = Pod("frontend")
ingress >> [pod1, pod2]🟡 AWS Microservizi
from diagrams import Cluster, Diagram
from diagrams.aws.compute import ECS
from diagrams.aws.network import ELB
from diagrams.aws.database import Dynamodb
from diagrams.aws.general import Client
with Diagram("Microservizi AWS", show=False):
client = Client("utente")
with Cluster("VPC"):
lb = ELB("load balancer")
with Cluster("ECS Cluster"):
service1 = ECS("servizio 1")
service2 = ECS("servizio 2")
db = Dynamodb("dynamo")
client >> lb >> [service1, service2]
[service1, service2] >> db
🔵 GCP Data Pipeline
from diagrams import Diagram
from diagrams.gcp.analytics import BigQuery
from diagrams.gcp.storage import GCS
from diagrams.gcp.compute import Functions
with Diagram("Pipeline dati GCP", show=False):
storage = GCS("Raw Data")
fn = Functions("Processing")
bq = BigQuery("Data Warehouse")
storage >> fn >> bq
🟣 Azure Web App
from diagrams import Diagram
from diagrams.azure.compute import FunctionApps
from diagrams.azure.web import WebApps
from diagrams.azure.database import CosmosDb
with Diagram("Web App Azure", show=False):
web = WebApps("Web Frontend")
functions = FunctionApps("API")
db = CosmosDb("DB")
web >> functions >> db🎨 Personalizzazione & Opzioni Avanzate
show=False: Non apre automaticamente l'immagine.direction="LR": Cambia la direzione del diagramma (LR, TB, RL…).outformat="png": Specifica il formato di output.filename="nome_output": Imposta il nome del file.
with Diagram("Personalizzato", direction="LR", outformat="svg", filename="custom", show=False):
...
🧩 Ampio Supporto di Provider
Diagrams supporta tantissimi provider e servizi:
- AWS, Azure, GCP
- Kubernetes
- Alibaba Cloud
- On-prem (server, storage, router)
- SaaS (GitHub, Jenkins, Slack, etc.)
- Custom Icons (puoi usare immagini personalizzate!)
Consulta la lista completa:
👉 https://diagrams.mingrammer.com/docs/nodes
✨ Esempio con icone personalizzate
from diagrams import Diagram, Node
class CustomNode(Node):
_provider = "custom"
_icon_dir = "./custom_icons"
fontcolor = "#ffffff"
def __init__(self, label: str, icon: str):
super().__init__(label, icon)
with Diagram("Icone Personalizzate", show=False):
CustomNode("Tool", "mylogo.png")
🔁 Automazione
Puoi integrare Diagrams in:
- Script CI/CD per generare diagrammi aggiornati
- Documentazione tecnica automatica
- Pipeline GitHub Actions o Jenkins
📦 Struttura Progetto Consigliata
infra-diagrams/
├── diagrams/
│ ├── aws_arch.py
│ ├── gcp_data_pipeline.py
├── custom_icons/
│ └── mylogo.png
├── README.md
📝 Conclusione
Diagrams è uno strumento potente per chi lavora con infrastrutture cloud e vuole mantenere la documentazione allineata, chiara e automatica. È una delle soluzioni più eleganti per colmare il gap tra codice e rappresentazione visuale.
🔗 Risorse Utili
Follow me #techelopment
Official site: www.techelopment.it
facebook: Techelopment
instagram: @techelopment
X: techelopment
Bluesky: @techelopment
telegram: @techelopment_channel
whatsapp: Techelopment
youtube: @techelopment
