Diagramas como Código

Las representaciones visuales de infraestructura en la nube son fundamentales para comprender y comunicar decisiones de diseño, especialmente cuando se trata de arquitecturas complejas.

HERRAMIENTAS Y RECURSOSDESARROLLO Y DISEÑOINNOVACIÓN EN FOCOFUTURO Y PROSPECTIVA

2/2/20253 min read

white concrete building
white concrete building

Diagramas como Código: Creando Diagramas de Infraestructura Azure con la Biblioteca Python Diagrams

Introducción

Las representaciones visuales de infraestructura en la nube son fundamentales para comprender y comunicar decisiones de diseño, especialmente cuando se trata de arquitecturas complejas. Si trabajas con Microsoft Azure, la capacidad de automatizar y crear estos diagramas mediante programación puede ahorrarte tiempo significativo y asegurar que tus visualizaciones reflejen la arquitectura más reciente.

Aquí es donde entra en juego la biblioteca `diagrams`, una herramienta de Python que te permite crear, actualizar y gestionar diagramas de infraestructura en la nube usando código. Aunque la biblioteca es compatible con múltiples proveedores de nube, este artículo se centra en Azure, demostrando cómo puedes aprovechar esta biblioteca para documentar tu arquitectura con una precisión y flexibilidad que las herramientas tradicionales de diagramación no pueden ofrecer.

¿Qué es la Biblioteca Diagrams?

La biblioteca `diagrams` es un paquete de Python que permite a los desarrolladores representar visualmente infraestructuras en la nube utilizando código Python. Utiliza Graphviz, un software popular de dibujo de grafos, para convertir descripciones de arquitectura en diagramas detallados. Con esta herramienta, puedes crear diagramas de alta calidad, personalizables y fácilmente modificables, perfectos para documentar entornos Azure.

Configuración del Entorno para Diagramas Azure

1. Instalación de Python y Dependencias

  • Asegúrate de tener Python 3.6 o posterior instalado

  • Descárgalo desde el sitio web oficial de Python si es necesario

2. Instalación de Graphviz

  • Para sistemas Ubuntu/Debian:

    sudo apt-get install graphviz

  • Para macOS (usando Homebrew):

    brew install graphviz

  • Para Windows, descarga el instalador desde el sitio web de Graphviz.

3. Instalación de la Biblioteca Diagrams

  • pip install diagrams

    Para verificar la instalación:

    python

    import diagrams

Servicios Esenciales de Azure en la Biblioteca Diagrams

Servicios de Cómputo

  • Azure Virtual Machines (VMs): Instancias virtualizadas escalables

  • Azure Functions: Servicio de cómputo serverless

  • Azure App Service: Plataforma para aplicaciones web

Servicios de Almacenamiento

  • Azure Blob Storage: Almacenamiento de objetos para datos no estructurados

  • Azure Disks: Almacenamiento persistente para VMs

Servicios de Base de Datos

  • Azure SQL Database: Servicio de base de datos relacional administrado

  • Cosmos DB: Base de datos distribuida globalmente

Servicios de Red

  • Azure Virtual Network (VNet): Espacio de red aislado

  • Azure Load Balancer: Distribución de tráfico

  • Azure DNS: Gestión de nombres de dominio

    Servicios de Seguridad

  • Azure Active Directory (AD): Gestión de identidad y acceso

  • Azure Key Vault: Almacenamiento seguro de secretos

    Ejemplos Prácticos de Diagramas

Ejemplo 1: Arquitectura de Aplicación Web Simple

python

  • from diagrams import Diagram

    from diagrams.azure.compute import VM

    from diagrams.azure.database import SQLDatabases

    from diagrams.azure.network import LoadBalancers, DNSZones

    with Diagram("Arquitectura Simple de App Web Azure", show=False):

    dns = DNSZones("DNS")

    lb = LoadBalancers("Balanceador de Carga")

    web_server = VM("Servidor Web")

    database = SQLDatabases("Base de Datos SQL")

    dns >> lb >> web_server

    web_server >> database

Ejemplo 2: Arquitectura Serverless con Azure Functions y Front Door

python

  • from diagrams import Diagram

    from diagrams.azure.compute import FunctionApps

    from diagrams.azure.network import FrontDoors

    from diagrams.azure.storage import BlobStorage

    from diagrams.azure.devops import ApplicationInsights

    with Diagram("Arquitectura Serverless con Front Door", show=False):

    frontdoor = FrontDoors("Azure Front Door")

    function = FunctionApps("Azure Function")

    storage = BlobStorage("Blob Storage")

    insights = ApplicationInsights("Application Insights")

    frontdoor >> function >> storage

    function >> insights

Ejemplo 3: Aplicación Web de Alta Disponibilidad

python

  • from diagrams import Diagram

    from diagrams.azure.compute import VMScaleSet

    from diagrams.azure.network import LoadBalancers

    from diagrams.azure.database import SQLDatabases

    from diagrams.azure.devops import ApplicationInsights

    with Diagram("App Web de Alta Disponibilidad", show=False):

    lb = LoadBalancers("Balanceador de Carga")

    scale_set = VMScaleSet("Conjunto de Escalado VM")

    db = SQLDatabases("Base de Datos SQL")

    insights = ApplicationInsights("Application Insights")

    lb >> scale_set >> db

    scale_set >> insights

Ejemplo 4: Arquitectura de Microservicios con AKS

python

  • from diagrams import Diagram

    from diagrams.azure.compute import KubernetesServices

    from diagrams.azure.network import ApplicationGateway

    from diagrams.azure.database import CosmosDb

    from diagrams.azure.storage import BlobStorage

    with Diagram("Arquitectura de Microservicios", show=False):

    app_gw = ApplicationGateway("API Management")

    aks = KubernetesServices("Azure Kubernetes Service")

    db = CosmosDb("Cosmos DB")

    storage = BlobStorage("Blob Storage")

    app_gw >> aks >> db

    aks >> storage

Conclusión

En esta guía, hemos explorado cómo crear diagramas para infraestructuras en la nube de Azure utilizando la biblioteca `diagrams` de Python. Con un enfoque basado en código, puedes generar rápidamente diagramas precisos y escalables que se adaptan a cualquier cambio en tu entorno en la nube, convirtiendo esta herramienta en un elemento transformador para arquitectos y desarrolladores.

Ya sea que estés visualizando arquitecturas simples o sistemas complejos de microservicios, este enfoque proporciona un alto grado de flexibilidad y precisión, permitiéndote mantener tu documentación técnica actualizada y precisa de manera eficiente.

Recursos Adicionales