Dans cet article, je vous guiderai étape par étape pour créer une documentation visuelle dynamique et interactive à l'aide d'outils de diagramme en tant que code. Au lieu d'images statiques, nous générerons des diagrammes par programme, en veillant à ce qu'ils soient toujours à jour et faciles à entretenir.
? Diagramme comme code
Diagramme en tant que code est une approche qui vous permet de créer des diagrammes via du code au lieu d'outils graphiques traditionnels. Au lieu de créer manuellement des diagrammes, vous pouvez écrire du code dans un fichier texte pour définir la structure, les composants et les connexions de vos diagrammes.
Ce code est ensuite traduit en images graphiques, ce qui facilite l'intégration et le document dans les projets logiciels, où il est particulièrement utile pour créer et mettre à jour les diagrammes architecturaux et de flux par programme.
Qu'est-ce que les diagrammes?
Diagrams est une bibliothèque qui implémente le diagramme en tant qu'approche de code, vous permettant de créer des diagrammes d'infrastructure architecturaux et d'autres types de diagrammes via le code. Avec des diagrammes, vous pouvez facilement définir des composants d'infrastructure cloud (tels que AWS, Azure et GCP), des éléments de réseau, des services logiciels, etc., le tout avec seulement quelques lignes de code.
? Avantages du diagramme en tant que code
? - Représentation des diagrammes en tant que code : Créer et mettre à jour les diagrammes directement à partir du code, assurant la maintenabilité dans les projets agiles.
? - Documentation automatisée : générer des visuels à partir du code, en gardant des diagrammes alignés avec l'architecture actuelle.
? - Modifier le contrôle : suivre les modifications du diagramme dans le temps.
? - Clarity améliorée : Améliorez la compréhension des systèmes complexes avec des visuels clairs et partagés.
✏️ - personnalisable : représenter les infrastructures cloud, les workflows ou les pipelines de données avec des visuels flexibles et personnalisés.
Tutoriel
? Installation de la bibliothèque
J'utilisais actuellement la version '0.23.4' pour ce tutoriel.
! Pip Install Diagrams == '0.23.4'
!pip install diagrams=='0.23.4'
? Diagrammes: nœuds
La bibliothèque vous permet de créer des diagrammes architecturaux par programme, en utilisant des nœuds pour représenter différents composants et services d'infrastructure.
Types de nœuds
Les nœuds dans les diagrammes représentent des composants de différents fournisseurs de services cloud ainsi que d'autres éléments architecturaux. Voici les principales catégories de nœuds disponibles:
☁️ - fournisseurs de cloud : aws (Amazon Web Services), Azure, GCP, IBM Cloud, Alibaba Cloud, Oracle Cloud, DigitalOcean, entre autres.
? - sur site : représente l'infrastructure physiquement située dans les locaux de l'entreprise.
? - kubernetes (k8s) : système d'orchestration de conteneur pour automatiser le déploiement, la mise à l'échelle et la gestion des applications conteneurisées (représentées par la roue d'un navire, symbolisant le contrôle et la navigation).
? ️ - openStack : plate-forme logicielle open-source pour créer et gérer des nuages publics et privés.
? - générique : nœuds génériques qui peuvent représenter tout composant non spécifiquement couvert par des nœuds spécifiques au fournisseur (outils croisés, représentant différents outils dans une catégorie).
☁️ - SaaS (logiciel en tant que service) : représente les applications fournies en tant que service sur Internet, comme Snowflake, les services de chat (Slack, Teams, Telegram, entre autres), la sécurité (par exemple, Okta ), ou réseaux sociaux (téléphone et cloud pour le concept SaaS).
? - personnalisé : permet aux utilisateurs de personnaliser leurs diagrammes à l'aide d'icônes PNG stockées dans un dossier spécifique. Ceci est utile pour représenter des composants d'infrastructure non couverts par les nœuds par défaut (outils personnalisés interrompus).
? Langues de programmation
La bibliothèque
des diagrammes vous permet d'utiliser différents nœuds pour représenter divers langages de programmation. Ces nœuds sont utiles pour indiquer dans vos diagrammes si une partie de votre architecture utilise des scripts ou des composants développés dans un langage de programmation spécifique.
ci-dessous, nous présenterons toutes les langues disponibles dans la bibliothèque. Si une langue manque, vous pouvez ajouter des nœuds personnalisés en téléchargeant le logo correspondant dans un dossier spécifique.
# Créez l'objet diagramme
avec schémas.diagram ("Langages de programmation", show = false, filename = "langues"):
# Obtenez toutes les langues disponibles dans cette bibliothèque
languess = [item pour item dans dir (diagrams.programming.language) si item [0]! = '_']
# Divisez la représentation en deux lignes
mid_index = len (langues) // 2
first_line = langues [: mid_index]
second_line = langues [mid_index:]
# Ajouter des nœuds dans la première ligne
prev_node = aucun
pour la langue dans First_line:
current_node = evale
Si prev_node n'est pas aucun:
prev_node >> current_node
prev_node = current_node
# Ajouter des nœuds dans la deuxième rangée
prev_node = aucun
pour la langue dans second_line:
current_node = evale
Si prev_node n'est pas aucun:
prev_node >> current_node
prev_node = current_node
Image ("langues.png")
!pip install diagrams=='0.23.4'
☁️ AWS (Amazon Web Services)
Nous pouvons utiliser les nœuds Amazon, qui sont organisés en plusieurs catégories, telles que:
- analytique et affaires : aws.analytics, aws.business
- calculer et stocker : aws.compute, aws.storage, aws.cost
- base de données et devtools : aws.database, aws.devtools
- Intégration et gestion : aws.integration, aws.Management
- Apprentissage automatique et mobile : aws.ml, aws.mobile
- Réseautage et sécurité : aws.network, aws.Security
- Autres : aws.blockchain, aws.enduser, aws.engagement, aws.game, aws.general, aws.iot, aws.media, aws.migration, aws.quantum, aws.Robotics, aws. satellite
Ensuite, nous représenterons l'une de ces catégories pour visualiser les nœuds disponibles dans aws.database.
à partir des diagrammes d'importation diagramme
à partir de l'image d'importation ipython.
Importer des diagrammes.aws.database comme AWS_DATABASE
database_components = []
Pour l'élément dans dir (aws_database):
Si item [0]! = '_':
Si ce n'est pas (comp.startswith (item) ou item.startswith (comp) pour comp dans database_components):
database_components.append (item)
Avec Diagram ("AWS Database", show = false, filename = "aws_database"):
mid_index = len (database_components) // 2
first_line = database_components [: mid_index]
second_line = database_components [mid_index:]
prev_node = aucun
pour item_database dans first_line:
current_node = eval (f "aws_database. {item_database} (item_database)")
Si prev_node n'est pas aucun:
prev_node >> current_node
prev_node = current_node
prev_node = aucun
pour item_database dans second_line:
current_node = eval (f "aws_database. {item_database} (item_database)")
Si prev_node n'est pas aucun:
prev_node >> current_node
prev_node = current_node
Image ("aws_database.png")
!pip install diagrams=='0.23.4'
☁️ Cas d'utilisation
Maintenant, créons un plan simple qui correspond à l'importation d'un ensemble de données et à la formation d'un modèle d'apprentissage automatique sur
aws .
à partir des diagrammes d'importation diagramme, cluster
à partir de diagrammes.AWS.Storage Import S3
De diagrammes.AWS.Analytics Import Glue, Athena
Diagrammes d'importation.AWS.ML comme ML
à partir de diagrammes.AWS.Integration Import Step-fonctions
De diagrams.aws.compute import Lambda
à partir de diagrammes.wetwork import apigateway
à partir de l'image d'importation ipython.
avec Diagramme ("AWS Data Processingline", Show = False):
lambda_raw = Lambda ('Get Raw Data')
# Bodets de S3
avec cluster ("Data Lake"):
S3_RAWDATA = S3 ("RAW_DATA")
s3_stage = s3 ("staging_data")
s3_data_capture = s3 ("data_capture")
Athena = Athena ("Athena")
S3_RAWDATA >> ATHENA
s3_stage >> Athena
s3_data_capture >> Athena
# Pipeline des fonctions étapes
avec cluster ("pipeline de traitement des données"):
Step_Functions = StepFunctions ("Pipeline")
# Collues travail dans les fonctions d'étape
avec Cluster ("Colle Jobs"):
data_quality = Glue ("job_data_quality")
transform = Glue ("job_data_transform")
DataSet_Preparation = GLUE ("JOB_DATASET_MODEL")
# Définir les fonctions de fonctions d'étape
Step_Functions >> data_quality >> transform >> dataSet_preparation
s3_rawdata >> data_quality
# Sagemaker pour la formation et le déploiement du modèle
avec cluster ("déploiement du modèle Sagemaker"):
Train_Model = ML.SageMakerTrainingJob ("Job_Train_Model")
EVAL_MODEL = ML.SageMakergroundTruth ("Job_evaluate_Model")
Endpoint = Ml.SageMakerModel ("Model_enpoint")
# API Gateway et Lambda pour le point final
api_gateway = apigateway ("api_gateway")
lambda_fn = lambda ("invoke_endpoint")
# Connexion
lambda_raw >> s3_rawdata
S3_STAGE >> TRAMME_MODEL >> EVAL_MODEL >> Point de terminaison
Point de terminaison >> lambda_fn >> api_gateway
Point de terminaison >> S3_DATA_CAPTURE
DataSet_Preparation >> Train_model
Image ("aws_data_processing_pipeline.png")
!pip install diagrams=='0.23.4'
Dépôt
Voici le lien vers tout le code, si vous le trouvez utile, vous pouvez laisser une étoile ⭐️ et me suivre pour recevoir des notifications de nouveaux articles. Cela m'aidera à grandir dans la communauté technologique et à créer plus de contenu.
R0MYMENDEZ
/ /
diagramme en tant que code
Un tutoriel sur la façon de créer un projet de documentation en utilisant la méthodologie «Doc as Diagramme»
? Diagramme en tant que code: création de documentation dynamique et interactive pour le contenu visuel
Diagramme en tant que code est une approche qui vous permet de créer des diagrammes via du code au lieu d'outils graphiques traditionnels. Au lieu de créer manuellement des diagrammes, vous pouvez écrire du code dans un fichier texte pour définir la structure, les composants et les connexions de vos diagrammes.
Ce code est ensuite traduit en images graphiques, ce qui facilite l'intégration et le document dans les projets logiciels, où il est particulièrement utile pour créer et mettre à jour les diagrammes architecturaux et de flux par programme.
Qu'est-ce que les diagrammes?
Diagrams est une bibliothèque qui implémente le diagramme en tant qu'approche de code, vous permettant de créer des diagrammes d'infrastructure architecturaux et d'autres types de diagrammes via le code. Avec des diagrammes, vous pouvez facilement définir des composants d'infrastructure cloud (tels que AWS, Azure et GCP), des éléments de réseau, des services logiciels, etc., le tout avec seulement quelques lignes de code.
? Avantages du diagramme en tant que code
?…
Afficher sur github
Si vous souhaitez voir comment implémenter un site de documentation à l'aide de ce pipeline, vous pouvez lire l'article que j'ai publié dans le lien suivant
? Références
Diagrams: - https://diagrams.mingrammer.com/