NTP: o assunto que sempre surge relacionado ao horário de verão

Duas vezes por ano passamos pela mudança relacionada ao horário de verão e, todo ano, tem sempre um curioso que atribui o NTP como causa ou solução para os possíveis problemas na mudança.

Quem nunca ouviu: “Se estiver usando NTP só precisa se preocupar com a mudança de horário no servidor NTP, no resto vai atualizar sozinho!” ?

Sincronizar a hora com um servidor NTP, assegura que a hora esteja correta em um sistema ?

Não. Mas por incrível que pareça, assegura que os minutos sim (hilário, não ?).

Neste artigo vamos tentar explicar de forma clara que um não tem ligação com o outro.

Eu até entendo que, por inexperiência, um analista novato se confunda um pouco com isso em seu 1o ano de trabalho. O que não entendo é gente que questiona o mesmo problema todos os anos e continua sem entender como a coisa funciona.

Um pouco de conhecimento geral

Precisamos entender como funciona a hora e o que são os fusos.

Digamos que a humanidade tivesse tido duas opções:

1) Usar uma hora universal, e seria a mesma hora em todos os lugares do mundo;

2) Usar um padrão de horários de forma a refletir, em diferentes lugares, a mesma experiência em relação ao sol e à lua.

Embora quem seja de TI entenda os benefícios da 1a opção, concordemos que a 2a opção é a “melhor experiência pro usuário”.
A segunda opção torna possível que uma pessoa no Brasil diga: “O sol de meio dia é brabo né ?”, e outra pessoa na maioria dos lugares do mundo responda: “É mesmo !”, porque é uma convenção de que, quando o sol está a pino (90 graus na linha do equador), é meio dia.

Também é possível dizer: “10 da noite é escuro” e estará certo na maior parte do mundo. Ou seja, para que os usuários tenham uma experiência parecida onde estiverem, a mesma “hora” deve refletir situação similar em todos os lugares.

Pra isso, obviamente, é necessário um ajuste em relação à hora mundial.
Hora mundial ? Mas não adotamos a 2a opção em vez da 1a ??

Entenda: o tempo (pense em chronos, não em clima) não é diferente na austrália e aqui… apenas a posição do Sol e da Lua. Se fosse, alguem durante o dia no Japão ligaria pra você no Brasil e seu telefone só tocaria quando fosse dia no Brasil.

Então não é.

Com isso, entendemos que o instante no tempo é o mesmo em qualquer lugar do planeta, e que pra termos a mesma experiência, criamos os ajustes em função de uma hora mundial. Estes ajustes são os fusos.

Imagine um lugar chamado Greenwich. Suponha que neste momento em Greenwich seja meio dia.

Greenwich fica à leste do Brasil, o que significa que, pelo sentido de rotação da terra, no Brasil ainda é antes de meio dia. Pulando a parte de cálculo dos meridianos e questões políticas nas definições das áreas geográficas dos fusos, no geral, o sol estará à pino no Brasil 3 horas depois que em Greenwich.

Logo, quando em Greenwich é meio dia, no Brasil (Brasília) são 09:00 da manhã, e 3 horas depois será meio dia. Por isso, o horário de Brasília (BRT) é referenciado como GMT-3, ou seja, Greenwich Mean Time, menos 3.

E o horário de verão ?

Horário de verão é quando o Brasil passa a usar GMT-2, e em vez de BRT passa a se chamar BRST (S de Summer). Apenas isso.

É uma mudança em nossa experiência apenas, mas nada muda em relação à hora mundial. A prova de que nada muda é que o sol passa a aparecer mais cedo ou mais tarde dependendo se colocamos o S ou tiramos o S do BRT. Se não sentíssemos nenhuma mudança, teríamos alterado o tempo mundial apenas ajustando nossos relógios, o que talvez nem com o gerador de improbabilidade infinita fosse possível.

Até aqui não teve nada de TI, apenas conhecimento popular.

E onde entra o NTP ?

Pois é, não entra.

NTP é apenas um protocolo (RFC958) para que os computadores tenham sincronismo de hora, pois pra computação isso é extremamente importante.

Mas quando muda de BRT pra BRST, o servidor NTP não muda a hora ?

Claro que não, muda o fuso. Em vez de exibir a hora como GMT-3 passa a exibir como GMT-2 (se o servidor usar UTC, nem isso), mas lembra que o tempo mundial é único ?

 

Quando em Greenwich for 10:00 da manhã, um servidor em GMT-3 marcará a hora como 07:00, e é a mesma hora que em Greenwich: 07:00 em GMT-3 = 10:00 em GMT.

Dá problema misturar servidores com fuso GMT-3 (America/Sao_Paulo, Brazil/East etc) com servidores com UTC (GMT) ?

Claro que não, desde que estejam com a horra correta ! E é pra isso, apenas pra isso, que serve o NTP 🙂

Em outro artigo escreverei sobre porque gosto de utilizar UTC em servidores.

 

Curiosidade

Uma vez vi algo inusitado. Era uma daquelas mudanças de horário de verão que, pelas datas não serem padronizadas na época, tinha que atualizar o arquivo de timezone nos sistemas.

Um sysadmin windows tinha suas máquinas ligadas em meu servidor NTP. Elas exibiam a hora “errada” e ele colocava a culpa no servidor NTP.

Sempre muito criativo, em algumas máquinas ele alterou manualmente o fuso para outro lugar que era GMT-2 e manteve ligada ao NTP e em outras ele retirou o NTP e alterou a hora manualmente do sistema para exibir a hora “certa” mesmo continuando em GMT-3.