Diagrama as code com ChatGPT
Não teve uma empresa que eu tenha passado que a atividade de fazer o diagramas de arquitetura não fosse um problema, que não fosse uma atividade preterida lá para o fim do projeto e se possível não fazer. Sem a menor sombra de dúvida essa é uma atividade que é sempre deixada para depois. Mas eu vou contar um segredo, não ter o desenho é um erro imenso para qualquer time de infraestrutura, eu te explico porque:
Ter um diagrama de arquitetura de um produto é fundamental por várias razões, a primeira delas é saber o que tipo de infraestrutura vai ser construída, não se pode sair correndo igual a um louco sem direção. Um diagrama fornece uma representação visual da estrutura e dos componentes do sistema, facilitando a comunicação entre diferentes partes interessadas, como desenvolvedores, gerentes de projeto, time DevOps e partes não técnicas.
Além do lado técnico ter um diagrama de arquitetura permite identificar potenciais pontos de falha e gargalos antes que o sistema esteja em produção, ajuda a identificar dependências entre os componentes do sistema, e, possibilita a implementação de estratégias de escalabilidade além de da suporte aos times de Governança e Compliance.
O Estagiário de luxo
Espero ter te convencido que ter diagramas de arquitetura é importante por que “Seus problemas acabaram!!!”. Hoje temos um estagiário de luxo, chamado de ChatGPT (Generative Pre-trained Transformer) pode nos dar uma mãozinha para ajudar muito, mas muito mesmo com essa atividade que é bem importante para quem constroem infraestruturas.
Espero ter te convencido que ter diagramas de arquitetura é importante por que “Seus problemas acabaram!!!”. Hoje temos um estagiário de luxo, o ChatGPT pode nos dar uma mãozinha para ajudar muito com essa atividade que é bem importante para quem constroem infraestruturas. Veja o que é possível fazer com ele te ajudar a tornar a sua vida fácil, extremamente fácil, veja:
Infraestrutura simples
Prompt 1
Eu tenho uma arquitetura com o kubernetes para executar os micro serviços,
que se conectam a um banco de dados MySql e filas para enviar mensagens.
Utilizando a biblioteca Diagram do Python faça o diagrama.
Resultado 1
1#! /usr/bin/python3
2
3from diagrams import Diagram, Cluster
4from diagrams.k8s.compute import Pod
5from diagrams.k8s.network import Service
6from diagrams.onprem.database import MySQL
7from diagrams.onprem.queue import RabbitMQ
8
9with Diagram("Arquitetura com Kubernetes, MySQL e RabbitMQ", show=False):
10 with Cluster("Kubernetes Cluster"):
11 svc = Service("Service")
12 pod1 = Pod("Microserviço 1")
13 pod2 = Pod("Microserviço 2")
14 pod3 = Pod("Microserviço 3")
15 svc >> [pod1, pod2, pod3]
16
17 db = MySQL("Banco de Dados MySQL")
18 queue = RabbitMQ("Filas de Mensagens")
19
20 # Relacionamentos
21 [pod1, pod2, pod3] >> db
22 [pod1, pod2, pod3] >> queue
23
24
Diagrama 1
Infraestrutura um pouco mais complexa
Prompt 2
Eu tenho uma arquitetura com o kubernetes para micro executar os
micro serviços um banco de dados MySql e filas para enviar mensagem
pelo RabbitMQ. Os microserviços guardam artefatos num bucket S3. Os
micro serviços utilizam o Redis como cache.
Utilizando a biblioteca Diagram em Python faça o diagrama
Resultado 2
1#! /usr/bin/python3
2
3from diagrams import Diagram, Cluster
4from diagrams.k8s.compute import Pod, Deployment
5from diagrams.k8s.network import Service
6from diagrams.onprem.database import MySQL
7from diagrams.onprem.queue import RabbitMQ
8from diagrams.aws.storage import S3
9from diagrams.onprem.inmemory import Redis
10from diagrams.k8s.group import Namespace
11
12with Diagram("Arquitetura Kubernetes com MySQL, RabbitMQ, S3 e Redis", show=False):
13 with Cluster("Kubernetes Cluster"):
14 with Cluster("Namespace: Microservices"):
15 svc = Service("Service")
16 pod1 = Pod("Microserviço 1")
17 pod2 = Pod("Microserviço 2")
18 pod3 = Pod("Microserviço 3")
19 svc >> [pod1, pod2, pod3]
20
21 db = MySQL("Banco de Dados MySQL")
22 queue = RabbitMQ("Filas de Mensagens")
23 cache = Redis("Redis Cache")
24 storage = S3("Bucket S3")
25
26 # Relacionamentos
27 [pod1, pod2, pod3] >> db
28 [pod1, pod2, pod3] >> queue
29 [pod1, pod2, pod3] >> cache
30 [pod1, pod2, pod3] >> storage
31
32
Diagrama 2
Prompt 2.1
Pedi para utilizar os ícones da AWS.
Refaça o exemplo anterior utilizando o provider AWS
1#! /usr/bin/python3
2
3from diagrams import Diagram, Cluster
4from diagrams.aws.compute import EKS
5from diagrams.aws.database import RDS, ElasticacheRedis
6from diagrams.aws.integration import SQS
7from diagrams.aws.storage import S3
8from diagrams.aws.network import ELB
9
10with Diagram("Arquitetura AWS com EKS, RDS, SQS, S3 e Redis", show=False):
11 with Cluster("AWS Cloud"):
12 lb = ELB("Load Balancer")
13
14 with Cluster("EKS Cluster"):
15 svc = EKS("Service")
16 pod1 = EKS("Microservice 1")
17 pod2 = EKS("Microservice 2")
18 pod3 = EKS("Microservice 3")
19 svc >> [pod1, pod2, pod3]
20
21 db = RDS("MySQL (RDS)")
22 queue = SQS("RabbitMQ (Amazon MQ)")
23 cache = ElasticacheRedis("Redis (ElastiCache)")
24 storage = S3("S3 Bucket")
25
26 # Relacionamentos
27 lb >> svc
28 [pod1, pod2, pod3] >> db
29 [pod1, pod2, pod3] >> queue
30 [pod1, pod2, pod3] >> cache
31 [pod1, pod2, pod3] >> storage
32
33
Diagrama 2.1
Conclusão
Eu já tinha falado de diagrama-as-code num post passado, foi uma das primeiras postagens do blog, mas este post é bem diferente. A diferença do post antigo para este de agora, é que por meio de um prompt eu descrevo a arquitetura e peço para criar o código, no post passado eu falava como codificar cada caixa, cada linha uma a uma.
Saber descrever a arquitetura e ter o diagrama as code é uma vantagem incrível em termos de qualidade do trabalho, mas não é a coisa principal. Você vai precisar ser específico na pergunta para conseguir uma resposta melhor do ChatGPT, para fazer uma pergunta melhor, você vai precisar conhecer mais da infraestrutura. Você vai precisar estudar mais e mais para compreender a complexidade e o funcionamento dos sistemas, é nesse ponto que você vai ganhar conhecimento e melhorar como profissional. Os resultados do nosso estagiário de luxo são bem, bem, bem convincentes, em alguns momentos eu precisei ajustar uma ou duas linhas de código mas foi muito mais simples e mais rápido do que criar algo do zero.
Para fechar, não existe mais desculpas para deixar de fazer atividade de criação de diagramas, ela não precisam mais ser a última coisa a ser feita no projeto, e com as dicas dadas neste post ficou moleza ter um diagramazinho mesmo que simples, né?? 😉
Abraços!
Vida longa e próspera a todos!!
Referências
MENTORIA
Curtiu o blog? Quer trocar uma ideia comigo sobre algum post?
Marca Aqui! É um papo gratuito
oferecido para quem é leitor do blog, podemos falar de temas como: DevOps, SRE e carreira em TI.
Te convido a ver os outros posts do blog Infra-as-Code garanto que tem coisas legais lá!!
|