Confiabilidade: Falhas, Rate Limiting e Observabilidade
Não se preocupe se essas palavras parecerem assustadoras — vamos explicar cada uma ao longo do caminho. Nesta lição, vamos aprender a falar em uma entrevista sobre formas de manter um sistema estável mesmo quando algo dá errado: timeouts (desistir de esperar uma resposta depois de um tempo definido,
System Design (planear como construir softwares grandes que atendem muitas pessoas) é como planear uma cidade: ruas, armazenamento, semáforos e equipas de manutenção, para que a cidade continue funcionando bem mesmo no horário de pico, quando todo mundo está na rua ao mesmo tempo.
- Confiabilidade e observabilidade
- A ideia central desta lição: como mantemos o sistema confiável (continuando a funcionar) e conseguimos ver o que está a acontecer dentro dele. Isso inclui: quando parar de esperar (timeouts), quando tentar novamente (retries), quando bloquear temporariamente para evitar uma queda (circuit breakers), como limitar quantas requisições são permitidas (rate limits), e como acompanhar o que está a acontecer usando metrics, logs e tracing (acompanhar uma requisição).
- Trade-off
- Trade-off — uma escolha consciente em que você ganha uma coisa e paga por ela com outra, como escolher fast food em vez de uma refeição caseira: você economiza tempo, mas perde um pouco de qualidade. Em uma entrevista, você explica o que ganhou e o que custou.
- Métrica operacional
- Uma métrica operacional — um número que mostra se a decisão realmente funciona quando o sistema está no ar e a atender utilizadores reais (isso é chamado de produção). Por exemplo: latência (quanto tempo leva para obter uma resposta), taxa de erro (a proporção de requisições que falham), atraso de fila (quantas tarefas estão a esperar na fila), taxa de acerto do cache (quantas vezes encontramos a resposta na memória rápida), entre outros.