{"id":491,"date":"2021-10-17T19:03:11","date_gmt":"2021-10-17T18:03:11","guid":{"rendered":"https:\/\/www.netexpertise.eu\/es\/?p=491"},"modified":"2021-10-17T19:05:15","modified_gmt":"2021-10-17T18:05:15","slug":"crea-hermosos-diagramas-con-diagram-as-code","status":"publish","type":"post","link":"http:\/\/www.netexpertise.eu\/es\/codigo\/python\/crea-hermosos-diagramas-con-diagram-as-code.html","title":{"rendered":"Crea Hermosos Diagramas con Diagram as Code"},"content":{"rendered":"\n<p>El Diagram as Code es un tema muy presente en este momento que trae muchas ventajas. Entre los cuales:<br>&#8211; Mantener un registro de los cambios, qui\u00e9n y qu\u00e9<br>&#8211; Almacenar en un repositorio de c\u00f3digo como texto simple<br>&#8211; No es necesario realinear flechas o mover iconos al agregar elementos<br>&#8211; M\u00e1s r\u00e1pido una vez que domines<br>&#8211; Es c\u00f3digo, y sabe cu\u00e1nto a los desarrolladores les encanta hacer diagramas manuales<br>&#8211; El renderizado de los diagramas, todo est\u00e1 alineado correctamente<br>&#8211; <a href=\"\/es\/codigo\/python\/todos-los-iconos-disponibles-del-diagram-as-code.html\">Muchos iconos<\/a> disponibles<\/p>\n\n\n\n<p><br>La biblioteca de Diagram as Code est\u00e1 disponible en <a href=\"https:\/\/diagrams.mingrammer.com\/docs\/getting-started\/installation\" target=\"_blank\" rel=\"noreferrer noopener\">diagrams.mingrammer.com<\/a> en Python y Go. No describir\u00e9 los pasos de instalaci\u00f3n, est\u00e1 muy bien explicado en su documentaci\u00f3n. Tambi\u00e9n proporcionan diagramas de ejemplo muy buenos.<br>Intentar\u00e9 convertir un diagrama antiguo creado en Microsoft Visio hace mucho tiempo en un diagram as code. Esta imagen es de un art\u00edculo de replicaci\u00f3n Mysql.<br><br><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img src=\"\/images\/Replication.png\" alt=\"Microsoft Visio Diagram\"\/><\/figure><\/div>\n\n\n\n<h2><br>Ejemplo de Diagram as Code<\/h2>\n\n\n\n<p><br>Aqu\u00ed est\u00e1 el c\u00f3digo que escrib\u00ed para generar la imagen a continuaci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">from diagrams import Cluster, Diagram, Edge\nfrom diagrams.azure.compute import *\nfrom diagrams.azure.database import *\n \nwith Diagram(\"Replication\", show=\"False\", direction='TB'):\n \n  slaves = []\n  clients= []\n \n  master = SQLServers(\"Master\")\n  with Cluster(\"slaves\"):\n    for s in range(3):\n      slave = SQLDatabases(\"slave\"+str(s+1))\n      slaves.append(slave)\n \n  for c in range(3):\n    client = VM(\"client\"+str(c+1))\n    clients.append(client)\n    clients[c] &gt;&gt; Edge(color=\"darkgreen\",label=\"Reads\") &gt;&gt; slaves[c]\n    \n  clients &gt;&gt; Edge(color=\"red\",label=\"Writes\") &gt;&gt; master\n  master &gt;&gt; Edge(color=\"blue\",label=\"Replication\") &gt;&gt; slaves[1]<\/code><\/pre>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-gallery columns-1 is-cropped\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><img src=\"https:\/\/www.netexpertise.eu\/uploads\/Diagram_as_code_ReplicationAllReads.png\" alt=\"\" data-full-url=\"https:\/\/www.netexpertise.eu\/es\/wp-content\/uploads\/IMG_3089.jpg\" data-link=\"https:\/\/www.netexpertise.eu\/es\/?attachment_id=492\"\/><\/figure><\/li><\/ul><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-image size-large\"><img src=\"http:\/\/www.netexpertise.eu\/en\/wp-content\/uploads\/Diagram_as_code_Replication2Reads.png\" alt=\"\"\/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p>Menos de 20 l\u00edneas de c\u00f3digo, no m\u00e1s. Los \u00edconos son del directorio de Azure, pero podr\u00eda haber tomado otros. La segunda imagen es pr\u00e1cticamente la misma, pero elimin\u00e9 la direcci\u00f3n que se convierte de izquierda a derecha de forma predeterminada. Como puede ver, las etiquetas se manejan mejor en esta direcci\u00f3n, aunque todav\u00eda no es perfecto con varias flechas.<br>Tambi\u00e9n elimin\u00e9 la etiqueta \u00abRead\u00bb en el medio para una mejor alineaci\u00f3n al vincular objetos simples en lugar de matrices. Tambi\u00e9n reemplac\u00e9<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">clients[c] &gt;&gt; Edge(color=\"darkgreen\",label=\"Reads\") &gt;&gt; slaves[c]<\/code><\/pre>\n\n\n\n<p><br>por (fuera del bucle for):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">for i in [0,2]: clients[i] &gt;&gt; Edge(color=\"darkgreen\",label=\"Reads\") &gt;&gt; slaves[i]<\/code><\/pre>\n\n\n\n<h2><br>Dificultades encontradas<\/h2>\n\n\n\n<p>Puede resultar un poco complicado obtener exactamente lo que desea, especialmente con varios niveles conectados entre s\u00ed. Puede experimentar y cambiar el comportamiento jugando con agrupaciones por Cluster. Puede ser \u00fatil cuando desea agrupar los niveles 2 y 4, por ejemplo, pero tambi\u00e9n puede complicarse como en este cl\u00faster de Mysql:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" src=\"\/uploads\/Diagram_as_code_Replication_Mysql_Cluster-601x600.png\" alt=\"Mysql Replication Diagram as Code\" width=\"332\" height=\"331\"\/><\/figure><\/div>\n\n\n\n<p><br>En resumen, esta implementaci\u00f3n de Diagram as Code es poderosa y eficiente incluso si pierde el control sobre la ubicaci\u00f3n de los elementos. Un peque\u00f1o inconveniente para una librer\u00eda muy buena. Una vez que est\u00e9 familiarizado con todos estos peque\u00f1os consejos, puede crear hermosos diagramas. A continuaci\u00f3n, se muestra un ejemplo de una arquitectura b\u00e1sica de Kubernetes:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img src=\"\/uploads\/Diagram_as_code_Kubernetes-742x1024.png\" alt=\"Kubernetes Diagram as Code\"\/><\/figure><\/div>\n","protected":false},"excerpt":{"rendered":"<p>El Diagram as Code es un tema muy presente en este momento que trae muchas ventajas. Entre los cuales:&#8211; Mantener un registro de los cambios, qui\u00e9n y qu\u00e9&#8211; Almacenar en un repositorio de c\u00f3digo como texto simple&#8211; No es necesario realinear flechas o mover iconos al agregar elementos&#8211; M\u00e1s r\u00e1pido una vez que domines&#8211; Es [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false},"categories":[65],"tags":[108,66,59],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Netexpertise - Crea Hermosos Diagramas con Diagram as Code<\/title>\n<meta name=\"description\" content=\"Diagram as Code es el nuevo tema que le permite crear hermosos diagramas en lenguaje Python.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.netexpertise.eu\/es\/codigo\/python\/crea-hermosos-diagramas-con-diagram-as-code.html\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Netexpertise - Crea Hermosos Diagramas con Diagram as Code\" \/>\n<meta property=\"og:description\" content=\"Diagram as Code es el nuevo tema que le permite crear hermosos diagramas en lenguaje Python.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.netexpertise.eu\/es\/codigo\/python\/crea-hermosos-diagramas-con-diagram-as-code.html\" \/>\n<meta property=\"og:site_name\" content=\"Netexpertise\" \/>\n<meta property=\"article:published_time\" content=\"2021-10-17T18:03:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-10-17T18:05:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.netexpertise.eu\/uploads\/Diagram_as_code_ReplicationAllReads.png\" \/>\n<meta name=\"author\" content=\"dave\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@netexpertise\" \/>\n<meta name=\"twitter:site\" content=\"@netexpertise\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.netexpertise.eu\/es\/codigo\/python\/crea-hermosos-diagramas-con-diagram-as-code.html\",\"url\":\"https:\/\/www.netexpertise.eu\/es\/codigo\/python\/crea-hermosos-diagramas-con-diagram-as-code.html\",\"name\":\"Netexpertise - Crea Hermosos Diagramas con Diagram as Code\",\"isPartOf\":{\"@id\":\"https:\/\/www.netexpertise.eu\/es\/#website\"},\"datePublished\":\"2021-10-17T18:03:11+00:00\",\"dateModified\":\"2021-10-17T18:05:15+00:00\",\"author\":{\"@id\":\"https:\/\/www.netexpertise.eu\/es\/#\/schema\/person\/27ec923be6625ac4b4bb86c8f0b12abf\"},\"description\":\"Diagram as Code es el nuevo tema que le permite crear hermosos diagramas en lenguaje Python.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.netexpertise.eu\/es\/codigo\/python\/crea-hermosos-diagramas-con-diagram-as-code.html#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.netexpertise.eu\/es\/codigo\/python\/crea-hermosos-diagramas-con-diagram-as-code.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.netexpertise.eu\/es\/codigo\/python\/crea-hermosos-diagramas-con-diagram-as-code.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.netexpertise.eu\/es\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Crea Hermosos Diagramas con Diagram as Code\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.netexpertise.eu\/es\/#website\",\"url\":\"https:\/\/www.netexpertise.eu\/es\/\",\"name\":\"Netexpertise\",\"description\":\"Sistemas \/ Redes \/ DevOps\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.netexpertise.eu\/es\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.netexpertise.eu\/es\/#\/schema\/person\/27ec923be6625ac4b4bb86c8f0b12abf\",\"name\":\"dave\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.netexpertise.eu\/es\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/1.gravatar.com\/avatar\/1129916e1f4955bd632f27f836f64e55?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/1.gravatar.com\/avatar\/1129916e1f4955bd632f27f836f64e55?s=96&d=mm&r=g\",\"caption\":\"dave\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Netexpertise - Crea Hermosos Diagramas con Diagram as Code","description":"Diagram as Code es el nuevo tema que le permite crear hermosos diagramas en lenguaje Python.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.netexpertise.eu\/es\/codigo\/python\/crea-hermosos-diagramas-con-diagram-as-code.html","og_locale":"es_ES","og_type":"article","og_title":"Netexpertise - Crea Hermosos Diagramas con Diagram as Code","og_description":"Diagram as Code es el nuevo tema que le permite crear hermosos diagramas en lenguaje Python.","og_url":"https:\/\/www.netexpertise.eu\/es\/codigo\/python\/crea-hermosos-diagramas-con-diagram-as-code.html","og_site_name":"Netexpertise","article_published_time":"2021-10-17T18:03:11+00:00","article_modified_time":"2021-10-17T18:05:15+00:00","og_image":[{"url":"https:\/\/www.netexpertise.eu\/uploads\/Diagram_as_code_ReplicationAllReads.png"}],"author":"dave","twitter_card":"summary_large_image","twitter_creator":"@netexpertise","twitter_site":"@netexpertise","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.netexpertise.eu\/es\/codigo\/python\/crea-hermosos-diagramas-con-diagram-as-code.html","url":"https:\/\/www.netexpertise.eu\/es\/codigo\/python\/crea-hermosos-diagramas-con-diagram-as-code.html","name":"Netexpertise - Crea Hermosos Diagramas con Diagram as Code","isPartOf":{"@id":"https:\/\/www.netexpertise.eu\/es\/#website"},"datePublished":"2021-10-17T18:03:11+00:00","dateModified":"2021-10-17T18:05:15+00:00","author":{"@id":"https:\/\/www.netexpertise.eu\/es\/#\/schema\/person\/27ec923be6625ac4b4bb86c8f0b12abf"},"description":"Diagram as Code es el nuevo tema que le permite crear hermosos diagramas en lenguaje Python.","breadcrumb":{"@id":"https:\/\/www.netexpertise.eu\/es\/codigo\/python\/crea-hermosos-diagramas-con-diagram-as-code.html#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.netexpertise.eu\/es\/codigo\/python\/crea-hermosos-diagramas-con-diagram-as-code.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.netexpertise.eu\/es\/codigo\/python\/crea-hermosos-diagramas-con-diagram-as-code.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.netexpertise.eu\/es"},{"@type":"ListItem","position":2,"name":"Crea Hermosos Diagramas con Diagram as Code"}]},{"@type":"WebSite","@id":"https:\/\/www.netexpertise.eu\/es\/#website","url":"https:\/\/www.netexpertise.eu\/es\/","name":"Netexpertise","description":"Sistemas \/ Redes \/ DevOps","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.netexpertise.eu\/es\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.netexpertise.eu\/es\/#\/schema\/person\/27ec923be6625ac4b4bb86c8f0b12abf","name":"dave","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.netexpertise.eu\/es\/#\/schema\/person\/image\/","url":"http:\/\/1.gravatar.com\/avatar\/1129916e1f4955bd632f27f836f64e55?s=96&d=mm&r=g","contentUrl":"http:\/\/1.gravatar.com\/avatar\/1129916e1f4955bd632f27f836f64e55?s=96&d=mm&r=g","caption":"dave"}}]}},"_links":{"self":[{"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/posts\/491"}],"collection":[{"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/comments?post=491"}],"version-history":[{"count":6,"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/posts\/491\/revisions"}],"predecessor-version":[{"id":504,"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/posts\/491\/revisions\/504"}],"wp:attachment":[{"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/media?parent=491"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/categories?post=491"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.netexpertise.eu\/es\/wp-json\/wp\/v2\/tags?post=491"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}