0

Pitch: Me incomodava depender tanto da configuração de containers pra fazer o meu trabalho

Contexto

Ao longo de vários anos trabalhando como analista e desenvolvedor de sistemas (a divisão nunca é clara em empresas pequenas e médias), sempre mantive a mente inquieta para resolver problemas e fazer muito mais do que o "feijão com arroz". Isso trouxe alguns problemas, mas também a credibilidade e o respeito tanto das equipes e dos colegas quanto dos clientes que inevitavelmente tive/tenho que relacionar durante reuniões e projetos.

Sou das antigas, que estudou UML e que ainda se pergunta sobre metodologia ágil vs documentação mínima e de qualidade e não concorda com javascript no backend (mesmo nos tempos de IA). No lado técnico, sempre me destaquei por conseguir mostrar protótipos nas reuniões e avançar nas conversas por conseguir extrair mais do futuro "dono" do sistema. Ainda que tenha feito todas as ressalvas de que "eram somente telas", já dava para notar que as discussões fluiam mais e na minha cabeça eu juntava o que precisava para ir lapidando os requisitos técnicos e de negócio.

Com a IA, as entregas de código ficaram mais rápidas, mas ainda assim tenho um roteiro meu, que vem funcionando ao longo dos anos, mas precisava ser melhorado.

Desafio/Problema

Ainda que tenha feito cursos de infra, me incomodava ter que resolver conflitos de containers e perder muito tempo com problemas de ambientes. Além disso, ainda que as carreiras tenham evoluído para que o profissional de TI tenha um perfil de arquiteto/devops, havia projetos que eu só precisava criar/testar as coisas (integração com banco de dados, fila etc.) sem perder tanto tempo com ambientes docker.

Outra coisa: na minha cabeça, faz sentido eu já entregar o sistema validado minimamente, ou seja, ainda que a empresa tenha ambientes de homologação, se eu tiver permissão na máquina, eu mesmo testo e refino a qualidade e segurança do meu código. E tem casos em que a empresa não tem padrão de nada: ainda assim, eu ainda tenho uma reputação a zelar.

Pensando nisso, resolvi pensar em algo para melhorar o meu ambiente de trabalho local para deixá-lo mais robusto (não diria autossuficiente).

Solução: Primeira ideia

Criei scripts para:

  • Padronizar a criação/purge dos containers;
  • Criar logins únicos conhecidos para todos os containers (é para ambiente local);
  • Criar uma rede em que todos os containers nascem nela e possam se comunicar;
  • Organizar os scripts em perfis: análise/documentação, dev e infra transparente sustentando tudo; e
  • Integrar os containers de forma plug-and-play

Melhorias

Padronizei os scripts:


Scripts não foram aceitos no post

Uni os scripts e criei um menu interativo via console e ficou muito bom.

Versão terminal

No perfil infra, criei bancos de dados, filas, caixa de email (para testar o envio/recebimento), esteira jenkins + sonar, grafana etc.

Versão terminal infra

No perfil de app, tinha algumas opções estratégicas:

Versão terminal app

O melhor de tudo: bastava comandos simples para subir/usar/apagar. Usei assim por um tempo até me perder um pouco com o brilho de criar meu próprio ambiente de IA.

Falhas e Aprendizados

Passei um tempo tentando encaixar a IA no projeto, ou seja, criar um tipo de harness. Como termo da "moda", imaginei que precisasse de um também: NÃO PRECISO. No fim, percebi que a minha stack potencializa o tipo de profissional que sou: que é pago para resolver as coisas com ou sem IA. Ou seja, a IA também é ferramenta que pode ou não ser integrada na minha stack.

Refinamentos

Percebi que dava para fazer algumas melhorias:

Comandos específicos por tipo de tecnologia

Banco de dados


Scripts não foram aceitos no post

Serviços


Scripts não foram aceitos no post

Integração dos erros do SonarQube no vscode

Com a integração Jenkins + SonarQube funcionando, surgiu um pequeno entrave. Como ver dentro do vscode as falhas apontadas pelo SonarQube? Resposta: incluí no fim do processo de "Testar o Projeto no Jenkins" uma etapa para gerar o token que conecta o SonarQube com a extensão "SonarQube for IDE".

Máquinas com poucos recursos de memória e disco (~8 GB): doctor, eco, lite e sonar-scan

Certo dia, fui executar a stack em um computador com poucos recursos de memória e percebi que não era possível subir as imagens porque eram muito pesadas. Decidi então criar checagens automáticas para sanar problemas como se o docker está rodando, se o wsl está otimizado, se o parâmetro de memória está devidamente configurado para o sonarqube (uma das maiores imagens) etc


Scripts não foram aceitos no post

A lista é grande

Durante muito tempo ajustei itens que me incomodaram ou que poderiam ser melhor. Depois, percebi que precisava focar na forma de usar a stack que já estava pronta.

Evolução: A extensão vscode

Analisando o formato de execução dos scripts, pensei em melhorar a forma de usar e o próximo passo veio quase de forma natural: integrar com o vscode. Aí, analisei os requisitos e fiz uma extensão para ele.

O nome

Ela se chama "StackPronta" - em português mesmo. Inclusive, nessa parte muitos podem "torcer o nariz", mas sinceramente, estou mais preocupado sobre o que ela resolve na minha vida do que em vendê-la em mercados internacionais. Trabalho com o VsCode e demais IDEs em inglês e optei pelo nome em português apenas por conveniência e por imaginar que ajude nas buscas de um público que está começando.

Como ela se parece

Extensão

As principais coisas que ela faz hoje

A extensão faz muitas coisas, entre elas:

  1. subir containers bancos de dados, filas, email, esteira, observabilidade etc com 1 clique;
  2. subir containers de Admin UIs para casos específicos (ex: pgadmin, redis-commander etc);
  3. subir containers externos: basta digitar o nome da imagem do dockerhub, que o container já nasce na rede integrada;
  4. subir esteira (jenkins + sonarqube), permitir apontar rapidamente um projeto para ela e ver os resultados da análise com poucos cliques;
  5. subir observabilidade com base em perfis (modo rápido: some ao desligar ou modo retenção 48h com histórico persistido);
  6. permitir no modo analista, criar diversos tipos de diagramas (UML, BPMN, Gantt, ER, MER etc)
  7. permitir que, após a criação dos diagramas, seja usado um comando para criar um html com todos eles;
  8. permitir que se você criar arquivos .md de perguntas com o mesmo nome dos arquivos do diagrama, o html exiba as perguntas abaixo do respectivo diagrama: é muito útil para enviar como anexo em um e-mail para o chefe/cliente;
  9. abrir uma instância do excalidraw ou drawio e desenhar, inclusive sem internet;
  10. gerar o diagrama de um banco de dados real: você aponta para o banco e é gerada uma página html com todos os detalhes do banco de dados (tabelas, relacionamentos, índices etc);
  11. gerar protótipos de vários tipos, inclusive crud (.net e java por enquanto);
  12. permitir que os protótipos do tipo CRUD já nasçam conectados ao banco de dados: o seu trabalho é só abrir o navegador e cadastrar (por enquanto, campos código, nome e status);
  13. permitir adicionar um novo crud somente informando o nome da entidade e a stack já cria toda a estrutura no banco de dados, atualiza o html: basta só recarregar a página;
  14. permitir alterar o banco de dados no mesmo SGBD ou mudando para outro;
  15. etc.

Tem muitos recursos interessantes, mas um deles entendo que é muito útil: a esteira. Hoje em dia com tantos softwares nascendo da IA, se você tiver a chance de validar pelo menos o código já é um bom começo e você fica livre para focar nas regras de negócio e demais requisitos de um bom sistema.

Melhor ver na prática:

ESTEIRA CI/CD
Esteira

DIAGRAMAS
Diagramas

SITE: https://stackpronta.dev/

Documentação

Docs: https://stackpronta.dev/docs/

Como ela está disponível para os interessados

Pensei muito sobre essa parte. Também sou adepto da filosofia open-source e concordo que todos ganham com ela, mas a cada refinamento que tenho feito percebo que a stack é uma parte de mim e só foi possível pela bagagem que tenho acumulado ao longo do tempo, tanto de metodologia, organização, capacidade de entrega etc. Portanto, no fim das contas, resolvi oferecê-la de 2 modos:

  1. totalmente gratuita somente com os perfis de banco de dados; e
  2. com teste grátis durante 7 dias para todos os recursos (e não são poucos).

Onde estou

Ela é o meu "canivete suíço" atualmente: uso tanto em projetos pessoais como projetos da empresa. É transparente e só potencializa o que eu preciso fazer, seja com ou sem IA. Tenho me surpreendido positivamente com ela e consigo enumerar muitas vantagens de usá-la.

O que falta

Preciso da opinião sensata de pessoas que realmente colocam a mão na massa e usam o vscode. Há muitas questões que eu gostaria de uma segunda opinião, principalmente para deixá-la melhor.

Carregando publicação patrocinada...