„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Diagramm-als-Code: Erstellen dynamischer und interaktiver Dokumentation für visuelle Inhalte

Diagramm-als-Code: Erstellen dynamischer und interaktiver Dokumentation für visuelle Inhalte

Veröffentlicht am 2025-01-26
Durchsuche:138

In diesem Artikel werde ich Ihnen Schritt für Schritt führen, um dynamische und interaktive visuelle Dokumentation mithilfe von Diagramm-As-Code-Tools zu erstellen. Anstelle von statischen Bildern werden wir programmgesteuert Diagramme erzeugen, um sicherzustellen, dass sie immer aktuell und leicht zu pflegen sind.

Diagram-as-Code: Creating Dynamic and Interactive Documentation for Visual Content


? Diagramm als Code

Diagramm als Code ist ein Ansatz, mit dem Sie Diagramme über Code anstelle von herkömmlichen grafischen Tools erstellen können. Anstatt die Diagramme manuell zu erstellen, können Sie Code in eine Textdatei schreiben, um die Struktur, Komponenten und Verbindungen Ihrer Diagramme zu definieren.

Dieser Code wird dann in grafische Bilder übersetzt, so


Was sind Diagramme?

diagrams ist a ? Mit Diagrammen können Sie Cloud -Infrastrukturkomponenten (wie AWS, Azure und GCP), Netzwerkelemente, Softwaredienste und mehr mit nur wenigen Codezeilen definieren. ? Vorteile von Diagramm-As-Code

?
    Darstellung von Diagrammen als Code
  • : Erstellen und Aktualisieren von Diagrammen direkt aus dem Code, um die Wartbarkeit in agilen Projekten zu gewährleisten. ?
  • Automatisierte Dokumentation
  • : Visuelle aus dem Code generieren und Diagramme mit der aktuellen Architektur in Einklang bringen. ?
  • ändern kontroll
  • : verfolgen Sie Diagrammänderungen im Laufe der Zeit. ?
  • Enhanced Clarity
  • : Verbesserung des Verständnisses komplexer Systeme mit klaren, gemeinsam genutzten Grafiken. ✏️
  • anpassbar
  • : Darstellung von Cloud -Infrastrukturen, Workflows oder Datenpipelines mit flexiblen und maßgeschneiderten Grafiken.
Tutorial

? Bibliotheksinstallation

Ich habe derzeit Version '0.23.4' für dieses Tutorial verwendet.


! PIP Installieren Sie Diagramme == '0.23.4'

!pip install diagrams=='0.23.4'
? Diagramme: Knoten

Die Bibliothek ermöglicht es Ihnen, programmgesteuert Architekturdiagramme zu erstellen, wobei Sie Knoten verwenden, um verschiedene Komponenten und Dienste für Infrastruktur darzustellen.

Knotentypen

Knoten in Diagrammen repräsentieren Komponenten aus verschiedenen Cloud -Dienstanbietern sowie andere architektonische Elemente. Hier sind die Hauptkategorien verfügbarer Knoten:

☁️
    Cloud -Providers
  • : AWS (Amazon Web Services), Azure, GCP, IBM Cloud, Alibaba Cloud, Oracle Cloud, Digitalocean, unter anderem. ?
  • On-Premise
  • : repräsentiert die Infrastruktur, die sich physisch auf den Räumlichkeiten des Unternehmens befindet. ?
  • kubernetes (k8s)
  • : Container -Orchestrierungssystem zur Automatisierung der Bereitstellung, Skalierung und Verwaltung von Anwendungen (dargestellt durch ein Schiffsrad, symbolisieren Kontrolle und Navigation). . ? Euen
  • openStack
  • : Open-Source-Softwareplattform zum Erstellen und Verwalten öffentlicher und privater Clouds. ?
  • generic
  • : generische Knoten, die jede Komponente darstellen, die nicht speziell von provider-spezifischen Knoten abgedeckt ist (gekreuzte Tools, die verschiedene Tools in einer Kategorie darstellen). . ☁️
  • saaS (Software als Dienst)
  • : Repräsentiert Anwendungen, die als Dienst über das Internet geliefert werden, wie Snowflake, Chat Services (Slack, Teams, Telegramm, unter anderem), Sicherheit (z. B. Okta, Okta ) oder soziale Netzwerke (überschritt Telefon und Cloud für das SaaS -Konzept). ?
  • benutzerdefinierte
  • : Ermöglicht Benutzern, ihre Diagramme mit PNG -Symbolen anzupassen, die in einem bestimmten Ordner gespeichert sind. Dies ist nützlich, um Infrastrukturkomponenten darzustellen, die nicht von den Standardknoten (gekreuzte benutzerdefinierte Tools) abgedeckt sind.
? Programmiersprachen

Die Bibliothek

Diagramme

ermöglicht es Ihnen, verschiedene Knoten zu verwenden, um verschiedene Programmiersprachen darzustellen. Diese Knoten sind hilfreich, um in Ihren Diagrammen anzuzeigen, wenn ein Teil Ihrer Architektur Skripte oder Komponenten verwendet, die in einer bestimmten Programmiersprache entwickelt wurden. unten präsentieren wir alle verfügbaren Sprachen in der Bibliothek. Wenn eine Sprache fehlt, können Sie benutzerdefinierte Knoten hinzufügen, indem Sie das entsprechende Logo in einen bestimmten Ordner hochladen.


# Erstellen Sie das Diagrammobjekt mit Diagrams.Diagram ("Programmiersprachen", Show = false, Dateiname = "Sprachen"): # Erhalten Sie alle Sprachen in dieser Bibliothek Sprachen = [Element für Element in DIR (Diagramme.programming.Language) Wenn Element [0]! = '_'] # Teilen Sie die Darstellung in zwei Zeilen auf Mid_index = len (Sprachen) // 2 First_line = Sprachen [: Mid_index] Second_line = Sprachen [Mid_index:] # Fügen Sie Knoten in der ersten Zeile hinzu PREV_NODE = NONE Für Sprache in First_line: current_node = eval (f "diagrams.programming.language. {Sprache} (Sprache)")) Wenn PREV_NODE nicht ist: PREV_NODE >> current_node PREV_NODE = Current_Node # Fügen Sie Knoten in der zweiten Zeile hinzu PREV_NODE = NONE Für Sprache in Second_line: current_node = eval (f "diagrams.programming.language. {Sprache} (Sprache)")) Wenn PREV_NODE nicht ist: PREV_NODE >> current_node PREV_NODE = Current_Node Bild ("Sprachen.png")

# Create the diagram object
with diagrams.Diagram("Programming Languages", show=False, filename="languages"):
    # Get all the languages available in this library
    languages = [item for item in dir(diagrams.programming.language) if item[0] != '_']

    # Divide the representation in two lines
    mid_index = len(languages) // 2
    first_line = languages[:mid_index]
    second_line = languages[mid_index:]

    # Add nodes in the first row
    prev_node = None

    for language in first_line:
        current_node = eval(f"diagrams.programming.language.{language}(language)")
        if prev_node is not None:
            prev_node >> current_node
        prev_node = current_node

    # Add nodes in the second row
    prev_node = None

    for language in second_line:
        current_node = eval(f"diagrams.programming.language.{language}(language)")
        if prev_node is not None:
            prev_node >> current_node
        prev_node = current_node

Image("languages.png")

Diagram-as-Code: Creating Dynamic and Interactive Documentation for Visual Content

☁️ AWS (Amazon Web Services)

Wir können Amazon -Knoten verwenden, die in verschiedene Kategorien organisiert sind, wie z. B.

    Analytics und Business
  • : Aws.analytics, Aws.business
  • rechnen und speichern
  • : aw.compute, aw.Storage, aw.cost
  • Datenbank und devtools
  • : aw.database, aw.devtools
  • Integration und Management
  • : Aws.integration, AWS.Management
  • maschinelles Lernen und Mobile
  • : aw.ml, aw.mobile
  • networking und security
  • : Aws.network, AWS.Security
  • Andere
  • : aw.blockchain, aw.enduser, aws.engagement, aw.game, aw.general, aw.iot, aw.media, aws.migration, aw.quantum, aws.robotics, aws. Satelliten
  • Als nächstes werden wir eine dieser Kategorien darstellen, um die verfügbaren Knoten in Aws.database zu visualisieren.


aus den Diagrammen -Importdiagramme von ipython.display importieren Diagramme importieren.aws.database als aws_database Database_Components = [] Für Element in DIR (AWS_DATABASE): Wenn Element [0]! = '_': wenn nicht irgendwelche (comp.Startswith (item) oder item.startswith (comp) für comp in database_components): Database_Components.Append (Artikel) Mit Diagramm ("AWS -Datenbank" show = false, Dateiname = "AWS_DATABase"): Mid_index = len (Database_Components) // 2 First_line = Database_Components [: Mid_index] Second_line = Database_Components [Mid_index:] PREV_NODE = NONE für item_database in First_line: current_node = eval (f "aws_database. {item_database} (item_database)")) Wenn PREV_NODE nicht ist: PREV_NODE >> current_node PREV_NODE = Current_Node PREV_NODE = NONE für item_database in Second_line: current_node = eval (f "aws_database. {item_database} (item_database)")) Wenn PREV_NODE nicht ist: PREV_NODE >> current_node PREV_NODE = Current_Node Image ("aws_database.png")

# Create the diagram object
with diagrams.Diagram("Programming Languages", show=False, filename="languages"):
    # Get all the languages available in this library
    languages = [item for item in dir(diagrams.programming.language) if item[0] != '_']

    # Divide the representation in two lines
    mid_index = len(languages) // 2
    first_line = languages[:mid_index]
    second_line = languages[mid_index:]

    # Add nodes in the first row
    prev_node = None

    for language in first_line:
        current_node = eval(f"diagrams.programming.language.{language}(language)")
        if prev_node is not None:
            prev_node >> current_node
        prev_node = current_node

    # Add nodes in the second row
    prev_node = None

    for language in second_line:
        current_node = eval(f"diagrams.programming.language.{language}(language)")
        if prev_node is not None:
            prev_node >> current_node
        prev_node = current_node

Image("languages.png")

Diagram-as-Code: Creating Dynamic and Interactive Documentation for Visual Content

☁️ Anwendungsfall

Erstellen wir nun einen einfachen Blaupause, der dem Importieren eines Datensatzes entspricht und ein maschinelles Lernmodell auf

aws

. erstellen. .

aus den Diagrammen importieren Diagramm, Cluster aus Diagrammen.Aws.Storage Import S3 Aus Diagrammen.Aws.Analytics Import Litue, Athena Diagramme importieren.aws.ml als ml aus Diagrammen.Aws.Integration Stieffunktionen importieren von Diagrams.aws.compute Import Lambda aus Diagrams.aws.network importieren Sie Apiateway von ipython.display importieren Mit Diagramm ("AWS -Datenverarbeitungspipeline", anzeigen = false): lambda_raw = lambda ('Rawdaten abrufen') # Buckets de S3 mit 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 für Stufenfunktionen mit Cluster ("Datenverarbeitungspipeline"): STEP_Functions = STEPFunctions ("Pipeline") # Jobs in Stieffunktionen Kleber kleben mit Cluster ("Kleberjob"): Data_Quality = Glue ("Job_data_Quality") Transformation = Glue ("Job_data_transform") dataset_preparation = glue ("Job_dataset_model") # Schrittfunktionen Definieren Sie Flüsse STEP_FUNKTIONS >> Data_Quality >> Transformation >> Dataset_Preparation s3_rawdata >> data_Quality # Sagemaker für Modelltraining und Bereitstellung mit Cluster ("Sagemaker -Modellbereitstellung"): train_model = ml.sAgemakerTrainingjob ("Job_train_model") eval_model = ml.sAgemakergroundTruth ("Job_evaluate_model") Endpoint = ml.sagemakermodel ("model_enpoint") # API Gateway und Lambda für den Endpunkt api_gateway = apiateway ("api_gateway") lambda_fn = lambda ("invoke_endpoint") # Verbindung lambda_raw >> s3_rawdata S3_Stage >> Train_model >> Eval_Model >> Endpunkt Endpunkt >> lambda_fn >> api_gateway Endpunkt >> S3_DATA_CAPTURE DataSet_Preparation >> train_model Image ("aws_data_processing_pipeline.png"))
from diagrams import Diagram, Cluster
from diagrams.aws.storage import S3
from diagrams.aws.analytics import Glue, Athena
import diagrams.aws.ml as ml
from diagrams.aws.integration import StepFunctions
from diagrams.aws.compute import Lambda
from diagrams.aws.network import APIGateway
from IPython.display import Image

with Diagram("AWS Data Processing Pipeline", show=False):

    lambda_raw = Lambda('Get Raw Data')
    # Buckets de S3
    with 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

    #  Step Functions Pipeline
    with Cluster("Data Processing Pipeline"):
        step_functions = StepFunctions("Pipeline")

        # Glue Jobs in Step Functions
        with Cluster("Glue Jobs"):
            data_quality = Glue("job_data_quality")
            transform = Glue("job_data_transform")
            dataset_preparation = Glue("job_dataset_model")

        # Define Step Functions Flows
        step_functions >> data_quality >> transform >> dataset_preparation
        s3_rawData >> data_quality

    # SageMaker for model training and deployment
    with Cluster("SageMaker Model Deployment"):
        train_model = ml.SagemakerTrainingJob("job_train_model")
        eval_model = ml.SagemakerGroundTruth("job_evaluate_model")
        endpoint = ml.SagemakerModel("model_enpoint")

    # API Gateway and Lambda for the endpoint
    api_gateway = APIGateway("API_gateway")
    lambda_fn = Lambda("invoke_endpoint")

    # Connection
    lambda_raw >> s3_rawData
    s3_stage >> train_model >> eval_model >> endpoint
    endpoint >> lambda_fn >> api_gateway
    endpoint >> s3_data_capture
    dataset_preparation >> train_model


Image("aws_data_processing_pipeline.png")

Diagram-as-Code: Creating Dynamic and Interactive Documentation for Visual Content


Repository

unten finden Sie den Link zu allen Code. Wenn Sie ihn nützlich finden, können Sie einen Stern hinterlassen und mir folgen, um Benachrichtigungen über neue Artikel zu erhalten. Dies wird mir helfen, in der Tech -Community zu wachsen und mehr Inhalte zu erstellen.

R0mymendez / Diagramm-As-Code Diagram-as-Code: Creating Dynamic and Interactive Documentation for Visual Content

Ein Tutorial zum Erstellen eines Dokumentationsprojekts mit der Methodik "DOC as Diagramm"

Diagram-as-Code: Creating Dynamic and Interactive Documentation for Visual Content


? Diagramm-As-Code: Erstellen dynamischer und interaktiver Dokumentation für visuelle Inhalte

Diagramm als Code ist ein Ansatz, mit dem Sie Diagramme über Code anstelle von herkömmlichen grafischen Tools erstellen können. Anstatt die Diagramme manuell zu erstellen, können Sie Code in eine Textdatei schreiben, um die Struktur, Komponenten und Verbindungen Ihrer Diagramme zu definieren.

Diagram-as-Code: Creating Dynamic and Interactive Documentation for Visual Content

Dieser Code wird dann in grafische Bilder übersetzt, so

Was sind Diagramme?

diagrams

ist a ? Mit Diagrammen können Sie Cloud -Infrastrukturkomponenten (wie AWS, Azure und GCP), Netzwerkelemente, Softwaredienste und mehr mit nur wenigen Codezeilen definieren. ? Vorteile von Diagramm-as-Code

?…

Ansicht auf github


Wenn Sie sehen möchten, wie Sie eine Dokumentationsseite mit dieser Pipeline implementieren möchten, können Sie den Artikel, den ich im folgenden Link veröffentlicht hat, lesen

? Referenzen

Diagramme:
    https://diagrams.mingrammer.com/
Freigabeerklärung Dieser Artikel ist in: https://dev.to/r0mymendez/diagram-as-creating-dynamic-an -nteractive-documentation-visual-content-2 p93 reproduziert?
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3