Skip to content

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#

  1. Cópia de segurança da base de dados de Qualidade original
  2. Importação de cópia fresca de Produção como nova base de dados de Qualidade
  3. Captura de métricas no estado inicial
  4. Execução das duas fases de limpeza
  5. Captura de métricas no estado final
  6. Reinício do App Service de Qualidade
  7. Cópia dos ficheiros de media de Produção para Qualidade
  8. 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