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 (planejar como construir softwares grandes que atendem muitas pessoas) é como planejar uma cidade: ruas, armazenamento, semáforos e equipes 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á acontecendo 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á acontecendo 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 atendendo usuários 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 esperando na fila), taxa de acerto do cache (quantas vezes encontramos a resposta na memória rápida), entre outros.