Relatório de Intervenção — Ambiente de Qualidade (Azure)#
Resumo
Limpeza completa replicada em Qualidade (Azure SQL S2). Base de dados reduzida de 6.5 GB para 2.0 GB (−69%), consultas representativas 198× mais rápidas (179 s → 0.9 s). Ficheiros de media copiados de Produção para Qualidade (4 073 ficheiros). Validação automatizada percorrendo 552 páginas confirma zero regressões funcionais.
1. Resumo Executivo#
| Métrica | Estado Inicial | Estado Final | Variação |
|---|---|---|---|
| Tamanho da base de dados | 6 505 MB | 2 047 MB | −68.5% |
| Registo de URLs (linhas) | 8 156 835 | 1 907 | −99.98% |
| Propriedades de conteúdos | 1 221 476 | 62 647 | −94.9% |
| Versões de conteúdos | 78 017 | 10 218 | −86.9% |
| Pré-cálculo de versões publicadas | 69 218 | 7 156 | −89.7% |
| Logs aplicacionais | 1 979 595 | 123 703 | −93.8% |
| Tempo médio de consultas (Azure SQL S2) | 179 079 ms | 904 ms | −99.5% (198×) |
O essencial — esta fase mostra o impacto real
No ambiente local, a base de dados não era o factor limitador do desempenho (consultas em 4.4 s reduziram para 0.78 s — diferença pouco visível para o utilizador). Em Azure SQL com a mesma escala de Produção, as consultas demoravam 3 minutos. Após a limpeza, a mesma consulta corre em 0.9 segundos. Esta é a melhoria que os utilizadores em Produção vão sentir — passagem de tempos de espera de minutos para segundos.
2. Sequência de Operações Executadas#
- Cópia de segurança da base de dados de Qualidade original
- Importação de cópia fresca de Produção como nova base de dados de Qualidade
- Captura de métricas no estado inicial
- Execução das duas fases de limpeza
- Captura de métricas no estado final
- Reinício do App Service de Qualidade
- Cópia dos ficheiros de media de Produção para Qualidade
- Validação automatizada de 552 páginas
Produção permaneceu 100% intocada durante todo o processo. As únicas operações que envolveram Produção foram operações de leitura (cópia de dados para Qualidade), não escreveram nada em Produção.
3. Detalhe das Fases de Limpeza (Azure SQL S2)#
| # | Operação | Registos eliminados |
|---|---|---|
| 1 | Eliminar logs de URLs inexistentes | 8 154 921 |
| 2 | Eliminar propriedades de versões antigas | 1 103 016 |
| 3 | Eliminar pré-cálculos de versões antigas | 58 744 |
| 4 | Manter apenas as 2 versões mais recentes por conteúdo | 59 383 |
| 5 | Eliminar logs aplicacionais com mais de 3 meses | 1 931 861 |
| 6 | Reconstrução de índices (Fase 1) | — |
| 7 | Esvaziar reciclagem de conteúdos | 3 626 |
| 8 | Esvaziar reciclagem de media | 544 |
| 9 | Eliminar conteúdos nunca publicados com >1 ano | 378 |
| 10 | Eliminar landing pages que servem apenas redireccionamento | 0 (lista a refinar pela equipa UNICEF) |
| 11 | Eliminar ficheiros de media sem qualquer referência | — |
| 12 | Reconstrução final de índices | — |
| Total | 11 312 473 |
Estratégia para Produção
A abordagem aprovada é executar toda a limpeza em Qualidade (já validada) e depois substituir a base de dados de Produção pela base de dados já limpa de Qualidade — operação atómica de restauro, sem necessidade de executar scripts em Produção, minimizando o tempo de indisponibilidade.
4. Tempo Médio de Consultas (Azure SQL S2)#
5 execuções consecutivas. Em Azure SQL não é possível limpar a cache da base de dados antes de cada execução (limitação do serviço), pelo que as medições reflectem condições de cache normais — a comparação é válida porque o estado é o mesmo antes e depois.
| Execução | Estado Inicial | Estado Final |
|---|---|---|
| 1 | 182 174 ms | 800 ms |
| 2 | 180 723 ms | 851 ms |
| 3 | 177 482 ms | 975 ms |
| 4 | 177 588 ms | 941 ms |
| 5 | 177 429 ms | 954 ms |
| Média | 179 079 ms | 904 ms |
| Variação | −99.5% |
Estes números são a prova mais forte do valor da limpeza. Cada utilizador que execute uma operação no backoffice (carregar a árvore de conteúdos, abrir um conteúdo, pesquisar) experiencia esta latência multiplicada várias vezes por página.
5. Cópia de Ficheiros de Media#
Para que o ambiente de Qualidade reflicta fielmente o conteúdo de Produção, foi feita uma cópia dos ficheiros de media (imagens, PDFs, vídeos) do Storage Account de Produção para o de Qualidade.
| Métrica | Antes | Depois |
|---|---|---|
| Ficheiros no Storage de Qualidade | 1 442 | 4 073 |
| Adicionados | — | 2 631 ficheiros |
A operação foi executada directamente no Azure (sem trânsito de dados pela máquina local), em modo apenas-leitura sobre Produção.
6. Validação Automatizada de Páginas#
A mesma validação foi executada em ambos os ambientes para permitir comparação directa.
| Categoria | Qualidade (após limpeza) | Produção (estado actual) |
|---|---|---|
| Páginas validadas | 552 | 552 |
| URLs únicos com problema | 17 | 479 |
| Páginas com erro de servidor (500) | 1 | mais de 250 |
| Imagens em falta | 3 | 0 |
Detalhe completo das URLs identificadas em Validação de URLs.
A maior validação do valor da limpeza
A grande maioria dos 479 erros em Produção são 500 Internal Server Error na API que serve o conteúdo das páginas (/umbraco/Api/ContentApi/GetData). Estes erros não acontecem para um único utilizador (o pedido manual a qualquer página retorna 200 OK normalmente), mas surgem sob carga moderada — quando o crawler fez 552 pedidos sequenciais em poucos minutos, a base de dados de Produção (sobrecarregada com 8 milhões de registos no registo de URLs) não conseguiu responder.
O que isto significa para os utilizadores reais: quando vários utilizadores visitam o site simultaneamente, a base de dados pode falhar pedidos de alguns deles. Após a limpeza (validada em Qualidade, onde apenas 1 página apresentou erro), a Produção passará a responder de forma estável mesmo sob carga.
Esta comparação é a prova mais clara do impacto: o mesmo conjunto de testes executado em Qualidade limpa retorna 96% menos erros que em Produção sobrecarregada.
Zero regressões funcionais em Qualidade — nenhuma página que respondia correctamente antes da limpeza deixou de responder após a limpeza.
7. Renovação de SSL em Qualidade#
Durante a validação detectou-se que o certificado SSL de www.qual.unicef.pt deixou de ser válido. A causa é uma falha na auto-renovação do certificado — situação pré-existente, não relacionada com esta intervenção: as alterações realizadas (limpeza de base de dados, cópia de media, reinício do App Service) não tocam em configurações de SSL.
Acção necessária#
Para reactivar o SSL é necessária uma alteração de DNS pelo gestor do domínio (PT Empresas), delegando o subdomínio qual.unicef.pt para Azure DNS através de 4 registos NS:
qual.unicef.pt NS ns1-02.azure-dns.com.
qual.unicef.pt NS ns2-02.azure-dns.net.
qual.unicef.pt NS ns3-02.azure-dns.org.
qual.unicef.pt NS ns4-02.azure-dns.info.
Esta delegação afecta exclusivamente o subdomínio qual.unicef.pt. O domínio principal unicef.pt e www.unicef.pt (Produção) permanecem totalmente intocados, continuando geridos em PT Empresas.
Após a propagação DNS (1-2 horas), o certificado é emitido automaticamente e a auto-renovação fica garantida no futuro.
Contexto: gestão de SSL e domínio em Produção#
Para enquadramento, foi feito um levantamento da situação actual em Produção (sem qualquer alteração):
| Item | Estado |
|---|---|
Certificado SSL www.unicef.pt |
DigiCert (GeoTrust TLS RSA CA G1), expira 14 de Agosto de 2026 |
Certificado SSL unicef.pt |
DigiCert (GeoTrust TLS RSA CA G1), expira 6 de Agosto de 2026 |
| Tipo de certificado | Pago, renovação manual (não é managed certificate) |
Domínio unicef.pt |
Registado a 29/12/1997, expira 2 de Novembro de 2026 |
| Titular do domínio | Comité Português para a UNICEF |
| Registrar | MEO – Serviços de Comunicações e Multimédia, S.A. (gestao.dominios@meo.pt) |
| Nameservers | ns1/ns2/ns10 ptempresas.pt (PT Empresas, do grupo MEO) |
Acção recomendada à UNICEF: confirmar internamente o processo de renovação manual dos certificados DigiCert antes de Agosto de 2026 (3 meses), e do domínio antes de Novembro de 2026 (6 meses). Caso a renovação dos certificados Produção venha a falhar, a Produção fica na mesma situação que Qualidade está actualmente.
8. Próximos Passos para Produção#
A abordagem aprovada evita executar scripts em Produção. Em vez disso, replica-se a Qualidade (já limpa e validada) para Produção via restauro de cópia de segurança.
| # | Item | Quem |
|---|---|---|
| 1 | Delegar subdomínio qual.unicef.pt para Azure DNS (4 registos NS) |
UNICEF |
| 2 | Reactivar certificados SSL em Qualidade | Double Shore |
| 3 | Período de observação (24-48 h) em https://www.qual.unicef.pt/ |
Double Shore + UNICEF |
| 4 | Validação funcional manual no backoffice de Qualidade | UNICEF |
| 5 | Aprovação para avançar com Produção | UNICEF |
| 6 | Congelamento de conteúdos durante a janela de manutenção (sem alterações editoriais) | UNICEF |
| 7 | Refrescar Qualidade com cópia fresca de Produção e re-executar limpeza | Double Shore |
| 8 | Cópia de segurança completa de Produção (cópia automática Azure + cópia adicional de segurança) | Double Shore |
| 9 | Substituir base de dados de Produção pela base de dados já limpa de Qualidade (operação atómica) | Double Shore |
| 10 | Reinício do App Service de Produção + validação funcional + monitorização 72 h | Double Shore + UNICEF |
Vantagens desta abordagem#
- Zero scripts em Produção — apenas restauro de cópia já validada
- Tempo de indisponibilidade mínimo
- Sem risco de execução parcial — operação atómica, ou completa com sucesso ou é totalmente revertida automaticamente
- Plano de recuperação preparado — em caso de qualquer problema, a base de dados pode ser restaurada ao seu estado em qualquer momento dos últimos 14 dias