Subir RPO em producao sem downtime

Tutorial: estrategias pra atualizar RPO em producao sem derrubar usuarios conectados. Hot deploy, blue-green, manutencao programada.

RPO atualizado em producao com usuarios online pode causar problemas: rotinas em execucao quebram, cache vira invalido, integracoes ficam meio caminho. Esse tutorial mostra 3 estrategias por nivel de risco.

Estrategia 1: Hot deploy (baixo risco)

Pra alteracoes pequenas e isoladas (1-2 User Functions, sem mexer em estrutura de tabela):

  1. Compilar localmente via /advpl-compile ou TDS-VSCode
  2. RPO Token de customizacao tem suas proprias funcoes — usuarios continuam usando as antigas em sessoes abertas
  3. Novas chamadas pegam a versao nova automaticamente
  4. Sem restart, sem downtime

Quando funciona: User Functions independentes, fixes de bug pontuais, novos PEs.

Quando NAO funciona: mudou estrutura de classe MVC, alterou Static Function compartilhada, adicionou campo na SX3.

Estrategia 2: Manutencao programada (medio risco)

Pra updates maiores que tocam framework, MVCs, gatilhos:

  1. Avisar usuarios 1-2 dias antes (email, popup no login do Protheus)
  2. Janela curta (15-30 min), tipicamente fora do horario comercial
  3. Pausar JOBs: editar appserver.ini com ENABLED=0
  4. Desconectar usuarios: via Configurador > Monitor > Kill All
  5. Backup do RPO atual (caso precise rollback rapido)
  6. Aplicar patch (.ptm) ou compilar fontes
  7. Validar: /advpl-validate nos fontes, smoke test manual
  8. Religar JOBs + abrir login

Estrategia 3: Blue-green (baixo risco, alto custo)

Pra ambientes criticos com SLA 99.9%:

  1. Manter 2 AppServers identicos: Blue (ativo) e Green (standby)
  2. Apontamento via proxy reverso (nginx, HAProxy) ou DNS
  3. Aplicar atualizacao no Green (offline pros usuarios)
  4. Validar Green com bateria de testes
  5. Switch instantaneo: proxy passa a apontar pro Green
  6. Blue vira novo standby
  7. Em caso de problema, switch de volta em segundos

Pegadinhas de cada estrategia

EstrategiaPegadinha
Hot deployCache de classe estatica pode segurar versao antiga ate restart
ManutencaoJob interrompido no meio pode deixar estado inconsistente
Blue-greenBanco e compartilhado — schema change exige cuidado extra

Pre-deploy checklist

Veja também