Muy buenas, soy Luis y aquí les traigo este tutorial.
Si trabaja con infraestructura, sin duda está aprovechando infraestructura como código, ¿Correcto? Seguro espero eso. De lo contrario, comience ahora. Estaré esperando.
Una evolución natural podría estar creando una representación gráfica de su infraestructura. Diagramas como código por así decirlo. No es una idea nueva.
Esta técnica apareció en el radar tecnológico en 2015
. Puede remontarse a ese período en el que la gente pensaba que generar código de diagramas UML
fue una idea sensata.
¡Olvidemos que alguna vez sucedió! En su lugar, pensemos en el uso de la visualización para comprender arquitecturas complejas. Y manteniendo esos artefactos actualizados mientras estamos en eso.
Índice
¿Qué son los diagramas?
Una herramienta con un nombre muy genérico, eso es seguro. Si consulta su sitio web, se describe como:
Los diagramas le permiten dibujar la arquitectura del sistema en la nube en código Python.
Muy claro. La instalación es de una sola línea.
pip3 install diagrams
Vamos a crear diagramas de infraestructura con Python. Confirmaremos tanto la imagen como el código que se usó para generarlos para que todos en el equipo puedan realizar cambios. Vamos a codificar, err
dibujando. Tengo dos ejemplos para ti.
Flujo de trabajo de alerta
Supongamos que tiene un flujo de trabajo en el que publica alarmas en un Tema de SNS
. Ese tema es procesado por una función lambda, que transforma los datos y los vuelve a escribir en Cloudwatch.
A través de una regla de evento, las alertas correctas llegan a nuestro bus de eventos.
Tanto texto para algo tan pequeño. Me sorprende que sigas prestando atención. Déjame darte un diagrama elegante.
Si revisa el código, notará lo simple que es. Hay tres elementos.
- Los nodos, que son componentes individuales. Tiene un icono y un nombre reconocibles.
- Los bordes, que son las conexiones entre componentes. Pueden ser dirigidos o no dirigidos.
- Los racimos, que agrupa los nodos de forma lógica.
Y no hay mucho más. El diagrama está construido con este fragmento.
Observe lo rápido que puede obtener una descripción general decente de su sistema con un poco de Python.
Diagramas de red
La creación de redes parece ser especialmente adecuada para este enfoque. Mientras investigaba Puntos finales de VPC
, Me di cuenta de que un dibujo claro ayuda a comprender significativamente.
Digamos que nos estamos conectando a un Kubernetes cluster porque eso es lo que hacemos todos estos días. Estamos enrutando varios dominios diferentes a un punto final de VPC
.
El clúster reside en una cuenta diferente, por lo que usamos un servicio de punto final para que esté disponible.
Agregue algunas rutas más y todo se convertirá en un lío enredado, muy parecido a la pila de cables detrás de su escritorio. Eso es hasta que vea este diagrama.
Mejor, ¿no? ¿Qué pasa con el código utilizado para generarlo?
from diagrams import Cluster, Diagram from diagrams.aws.network import VPC, PublicSubnet, PrivateSubnet, Endpoint, ELB, Route53 from diagrams.aws.compute import EKS with Diagram("Connecting two accounts", show=True): with Cluster("Account 1"): with Cluster("Hosted Zone\nmain.io"): star = Route53("*.test.main.io") subdomain = Route53("test.main.io") with Cluster("Hosted Zone\nalt.dev"): alt = Route53("other.alt.dev") with Cluster("VPC"): VPC() with Cluster(""): PrivateSubnet() endpoint = Endpoint("VPC Endpoint") [star, subdomain, alt] >> endpoint with Cluster("Account 2"): with Cluster("VPC"): VPC() with Cluster(""): PrivateSubnet() service = ELB("VPC\nEndpoint Service") cluster = EKS("Kubernetes\nCluster") endpoint >> service >> cluster
La cantidad de código utilizado para representarlo ha crecido en comparación con el ejemplo anterior. Afortunadamente, usar Python nos da acceso a funciones, comprensiones y otras herramientas para manejar esta complejidad.
El curioso caso del diagrama que no se pudo actualizar
Así es como se usan los diagramas. ¿Es realmente valioso? Ciertamente me gustan los bonitos iconos. Aparte de eso, brilla al permitir que la documentación visual evolucione.
Intenté digitalizar diagramas técnicos antes. Realmente lo intenté. Bosquejo, tablero de dibujo, o incluso simplemente tomando una foto de un diagrama dibujado a mano.
Funciona hasta que necesita actualizarlo y no tiene la fuente. Quizás lo hizo otra persona, que prefirió una herramienta completamente diferente.
A menudo he visto que la documentación de un proyecto se vuelve cada vez más desactualizada porque nadie puede actualizar los malditos diagramas. Si es solo código fuente, sus posibilidades son mucho mejores.
Conclusión
Diagrams es una herramienta ordenada, aunque limitada. No puedes agregar mucho más de lo que he mostrado. Si bien eso es restrictivo, puede protegerte de ti mismo.
Los diagramas demasiado complicados hacen más daño que bien. Si representa el sistema en su totalidad, ¿por qué no verifica el código directamente? El objetivo de la abstracción es simplificar la comprensión omitiendo algunos de los detalles.
En resumen, es una forma conveniente de aportar claridad a sus impenetrables READMES
, y podrá actualizar las imágenes a medida que evolucione su código.
Gracias por leer este tutorial.
Añadir comentario