E aí, pessoal! Beleza? Hoje vou compartilhar com vocês uma parada que mexi um tempo atrás, um tal de “Mido Commander”. Não é nada de outro mundo, mas foi uma experiência daquelas que a gente guarda pra não repetir os mesmos vacilos, saca?

A Necessidade Inicial: Organizando a Bagunça
Lá no projeto que eu tava ralando, a gente tinha um monte de comandos soltos pra gerenciar as coisas. Era comando pra subir ambiente de teste, outro pra fazer build, um terceiro pra rodar uns scripts de migração de banco de dados… uma verdadeira salada de frutas. Toda vez que entrava alguém novo no time, era um parto explicar tudo, e vira e mexe alguém rodava o comando errado na hora errada. Um clássico, né?
Aí surgiu a ideia: “Bora criar uma ferramenta pra centralizar esses comandos todos, facilitar a vida e evitar cagada!”. E foi aí que começou a nascer o embrião do que a gente batizou carinhosamente (ou nem tanto) de Mido Commander.
Botando a Mão na Massa: Primeiros Passos
Primeira coisa que fiz foi listar todos os comandos que a gente usava no dia a dia. Coisa pra caramba! Depois, comecei a pensar em como estruturar isso. A ideia era ter um comando principal, tipo mido
, e depois subcomandos, tipo mido deploy staging
ou mido run migrations
. Bem intuitivo, né?
Optei por usar Python pra desenvolver, porque a maioria do time já tinha uma familiaridade e tem umas bibliotecas boas pra criar CLI (Command Line Interface), tipo o Click. Instalei o Click e comecei a rabiscar os primeiros comandos. Aqueles mais simples, pra pegar o jeito.
Por exemplo, um comando pra mostrar o status dos serviços:

mido status services
Por baixo dos panos, esse comando ia lá e rodava os scripts que a gente já tinha, mas de uma forma mais organizada e com uma saída padronizada. Parecia promissor!
Desenvolvendo e Refinando: O Corpo da Ferramenta
Aos poucos, fui adicionando mais e mais funcionalidades. Criei lógicas pra lidar com diferentes ambientes (desenvolvimento, staging, produção), pedindo confirmação pra comandos mais críticos, especialmente os de produção. Isso já deu uma segurança extra.
Uma parte que deu um certo trabalho foi integrar com as ferramentas de build e deploy que a gente usava. Tinha uns scripts em Bash, outros chamavam APIs… tive que fazer o Mido Commander “conversar” com tudo isso. Foi bastante tentativa e erro, testando cada comando novo exaustivamente.
Coloquei também um sistema de logs simples, pra gente conseguir rastrear o que tinha sido executado, quem executou e se deu algum erro. Isso ajudou bastante a debugar quando alguma coisa quebrava.

Lembro que teve uma funcionalidade específica, a de rollback de deploy, que foi um quebra-cabeça. A gente precisava garantir que, se algo desse muito errado no deploy, conseguiríamos voltar pra versão anterior de forma rápida e segura. Passei uns bons dias desenhando e testando essa parte, porque era crítica.
O Resultado: Mido Commander em Ação
Depois de um tempo de desenvolvimento e muitos testes (e alguns cafés a mais), o Mido Commander ficou pronto pra ser usado pelo time todo. A recepção inicial foi boa. A galera achou mais fácil de usar do que ter que lembrar de uma penca de comandos diferentes com parâmetros esquisitos.
Com o tempo, ele se tornou a nossa principal interface pra gerenciar as operações do dia a dia. Conseguimos reduzir bastante os erros causados por comando errado e o onboarding de gente nova ficou mais suave. Claro que não era perfeito, vira e mexe aparecia um bugzinho ou uma sugestão de melhoria, mas aí a gente ia lá e ajustava.
A maior vantagem, pra mim, foi a padronização. Todo mundo usava da mesma forma, os logs ficavam centralizados, e se precisasse mudar algum processo, a gente mudava no Mido Commander e todo mundo já passava a usar do jeito novo.
Então é isso, galera. Foi uma experiência bacana de construir uma ferramenta interna que realmente ajudou a organizar a casa. Deu trabalho, mas ver a coisa funcionando e facilitando a vida da equipe foi recompensador. Nem tudo são flores, teve seus perrengues, mas o saldo final foi positivo.

Até a próxima!