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):
- Compilar localmente via
/advpl-compileou TDS-VSCode - RPO Token de customizacao tem suas proprias funcoes — usuarios continuam usando as antigas em sessoes abertas
- Novas chamadas pegam a versao nova automaticamente
- 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:
- Avisar usuarios 1-2 dias antes (email, popup no login do Protheus)
- Janela curta (15-30 min), tipicamente fora do horario comercial
- Pausar JOBs: editar appserver.ini com
ENABLED=0 - Desconectar usuarios: via Configurador > Monitor > Kill All
- Backup do RPO atual (caso precise rollback rapido)
- Aplicar patch (.ptm) ou compilar fontes
- Validar:
/advpl-validatenos fontes, smoke test manual - Religar JOBs + abrir login
Estrategia 3: Blue-green (baixo risco, alto custo)
Pra ambientes criticos com SLA 99.9%:
- Manter 2 AppServers identicos: Blue (ativo) e Green (standby)
- Apontamento via proxy reverso (nginx, HAProxy) ou DNS
- Aplicar atualizacao no Green (offline pros usuarios)
- Validar Green com bateria de testes
- Switch instantaneo: proxy passa a apontar pro Green
- Blue vira novo standby
- Em caso de problema, switch de volta em segundos
Pegadinhas de cada estrategia
| Estrategia | Pegadinha |
|---|---|
| Hot deploy | Cache de classe estatica pode segurar versao antiga ate restart |
| Manutencao | Job interrompido no meio pode deixar estado inconsistente |
| Blue-green | Banco e compartilhado — schema change exige cuidado extra |
Pre-deploy checklist
- [ ] Fontes commitados em git
- [ ] Backup do RPO atual
- [ ] Backup do banco (especialmente se schema mudou)
- [ ] Smoke test em homolog validou
- [ ] Rollback procedure documentado
- [ ] Comunicacao com usuarios feita
- [ ] Janela aprovada com stakeholders