Non classé

Générer des diagrammes avec ChatGPT

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é :

  1. 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.
  2. 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 fichier architecture_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

  1. Changer le nom du diagramme :
    Modifiez la chaîne "Architecture Microservices AWS" pour donner un autre titre.
  2. Modifier le style ou la disposition :
    • Ajoutez plus de clusters (ex. un cluster Front-End et un cluster Back-End).
    • Reliez certains composants différemment (flèche bidirectionnelle <-> ou autre).
  3. Ajouter d’autres services (AWS, Azure, GCP, Kubernetes…) :

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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.