Execução e gerenciamento de scripts operacionais

Contexto e Declaração do Problema

Ao longo da operação da Amplimed, surgem demandas recorrentes para:

  • Geração de relatórios pontuais (ex.: CSV)
  • Execução de comandos de correção em produção
  • Scripts de uso único (one-off)
  • Execuções emergenciais motivadas por incidentes em produção

Historicamente, não existia um local padronizado para esse tipo de necessidade. Como consequência:

  • Scripts e relatórios eram criados em APIs que não tinham relação direta com o propósito da execução
  • Muitas vezes eram escolhidas APIs com menor uso, apenas para evitar impacto
  • Não havia previsibilidade nem padronização de onde procurar ou registrar essas execuções

Além disso, a execução desses scripts ficava centralizada em poucas pessoas, normalmente exigindo acesso direto ao ambiente e execução manual via terminal.

Esse cenário gerava um segundo problema relevante:

  • Execuções manuais em produção, frequentemente realizadas fora do horário comercial (entre 20h e 00h)
  • Dependência direta do Tech Lead ou de quem detém os acessos
  • Risco operacional e desgaste humano desnecessário

Pergunta central:

Como centralizar, padronizar e operacionalizar a execução de scripts e relatórios de forma segura, auditável e menos dependente de execuções manuais em produção?

Mapeamento dos Problemas Relacionados a esta ADR

Os principais cenários afetados por esse problema eram:

  • Relatórios pontuais solicitados por analistas
  • Correções emergenciais em produção
  • Scripts de migração ou ajuste de dados de uso único
  • Necessidade de envio manual de arquivos (ex.: CSV) após execução local
  • Execuções críticas dependentes de uma única pessoa com acesso ao ambiente

Direcionadores da Decisão

  • Padronização: definir um local único e conhecido para scripts e relatórios operacionais
  • Segurança operacional: reduzir execuções manuais diretas em produção
  • Descentralização controlada: evitar dependência exclusiva do Tech Lead
  • Auditabilidade: registrar quem solicitou, quando e o que foi executado
  • Automação: permitir agendamento e execução imediata quando necessário
  • Escalabilidade organizacional: solução reutilizável para demandas futuras

Opções Consideradas

  • Opção 1: Criar uma API dedicada para scripts operacionais e relatórios

Decisão

Opção escolhida: Opção 1 – Criar uma API dedicada para scripts operacionais e relatórios (amplimed_scripts).

Foi decidido criar a amplimed_scripts, uma API responsável exclusivamente por:

  • Execução de comandos sob demanda
  • Agendamento de execuções
  • Geração de relatórios (ex.: CSV)
  • Envio automático de resultados via e-mail
  • Registro e controle das execuções realizadas

Essa solução resolve de forma estrutural os dois principais problemas identificados:

  1. Onde colocar scripts e relatórios
  2. Como executá-los sem depender de acesso manual ao ambiente

A API já foi desenvolvida e encontra-se em produção, atendendo às necessidades operacionais atuais.

Consequências

Positivas

  • Centralização e padronização de scripts operacionais
  • Redução significativa de execuções manuais em produção
  • Menor dependência do Tech Lead para tarefas operacionais
  • Possibilidade de agendamento e execução imediata
  • Envio automático de relatórios sem necessidade de execução local

Negativas

  • Criação e manutenção de uma nova API
  • Necessidade de governança para evitar uso indevido
  • Curva inicial de adoção pelos times

Neutras

  • Não altera regras de negócio das APIs existentes
  • Não substitui pipelines ou processos de deploy
  • Atua exclusivamente como ferramenta operacional

Confirmação e Validação

A aderência a este ADR é validada por meio de:

  • Uso recorrente da amplimed_scripts para demandas operacionais
  • Revisões de pull requests garantindo que scripts pontuais sejam criados nela
  • Monitoramento de execuções e falhas
  • Auditoria das execuções realizadas (quem, quando e o quê)

Prós e Contras das Opções

Opção 1 – amplimed_scripts (opção escolhida)

  • Positivo: solução estrutural, segura e reutilizável
  • Neutro: exige governança
  • Negativo: custo inicial de desenvolvimento e manutenção