Voici un exemple concret de script Python qui génère un diagramme (sous forme d’image) en utilisant la bibliothèque Diagrams. L’architecture illustrée ci-dessous représente un scénario AWS « microservices » avec :
- Un Load Balancer (ELB) en entrée
- Un cluster de plusieurs serveurs EC2 (microservices) en auto-scaling
- Une base de données RDS
- Un cache ElastiCache
- Une file de messages SQS
1. Installer les dépendances
Assurez-vous d’avoir installé :
- Graphviz
- Sur Ubuntu/Debian :
sudo apt-get install graphviz
- Sur Windows : téléchargez depuis graphviz.org/download et installez-le.
- Sur Mac : via Homebrew,
brew install graphviz
.
- Sur Ubuntu/Debian :
- La bibliothèque Diagrams :
pip install diagrams
2. Script Python pour générer le diagramme
Créez un fichier nommé par exemple microservices_diagram.py
et copiez-y le code suivant :
from diagrams import Diagram, Cluster
from diagrams.aws.compute import EC2
from diagrams.aws.network import ELB
from diagrams.aws.database import RDS
from diagrams.aws.integration import SQS
from diagrams.aws.database import ElastiCache
with Diagram("Architecture Microservices AWS", show=False, filename="architecture_microservices_aws"):
lb = ELB("Load Balancer")
with Cluster("Auto Scaling Group"):
services = [EC2(f"Service {i}") for i in range(1,4)]
db = RDS("Database")
cache = ElastiCache("Cache")
queue = SQS("Queue")
lb >> services
services >> db
services >> queue
services >> cache
Explication du code
Diagram("Architecture Microservices AWS", show=False, filename="architecture_microservices_aws")
: crée un diagramme nommé « Architecture Microservices AWS », sans l’afficher automatiquement (show=False
) et en générant un fichierarchitecture_microservices_aws.png
(ou.svg
).with Cluster("Auto Scaling Group"):
: permet de regrouper plusieurs serveurs (EC2) dans un même « cluster ».lb >> services
: dessine une flèche (connexion) du load balancer vers chaque EC2.services >> db
/services >> queue
/services >> cache
: indique que les microservices communiquent avec la base de données RDS, la file SQS et le cache ElastiCache.
3. Exécuter le script et obtenir le diagramme
- Lancez simplement la commande :
python microservices_diagram.py
- Vous obtiendrez un fichier
architecture_microservices_aws.png
(par défaut) dans le même dossier. - Ouvrez l’image pour visualiser le schéma.
Vous devriez voir un diagramme présentant un load balancer pointant vers un groupe de trois EC2, eux-mêmes connectés à un RDS (Base de données), à un SQS (Queue) et à un ElastiCache (Cache).
4. Personnaliser le diagramme
- Changer le nom du diagramme :
Modifiez la chaîne"Architecture Microservices AWS"
pour donner un autre titre. - Modifier le style ou la disposition :
- Ajoutez plus de clusters (ex. un cluster
Front-End
et un clusterBack-End
). - Reliez certains composants différemment (flèche bidirectionnelle
<->
ou autre).
- Ajoutez plus de clusters (ex. un cluster
- Ajouter d’autres services (AWS, Azure, GCP, Kubernetes…) :
- Parcourez la documentation des icônes disponibles pour trouver d’autres éléments.
- Par exemple,
from diagrams.aws.compute import Lambda
pour ajouter des fonctions Lambda, etc.
Exemple : ajouter un bucket S3
Si vous voulez, par exemple, rajouter du stockage statique avec un bucket S3 :
from diagrams.aws.storage import S3
s3_bucket = S3("Static Assets")
services >> s3_bucket
Cela ajoutera le bucket au diagramme et dessinera une flèche des microservices vers S3.
Conclusion
Avec ce script, vous avez un diagramme généré automatiquement grâce à Python et la bibliothèque Diagrams. Pour aller plus loin, vous pouvez demander à ChatGPT d’adapter ou d’étendre cet exemple en fonction de votre architecture cible, puis exécuter simplement le code généré pour obtenir un nouveau diagramme.