the fallacies of distributed computing
expressãoredesnuvemprogramação
As oito suposições que todo novato em sistemas distribuídos faz, começando por 'a rede é confiável', catalogadas na Sun nos anos 1990.
Peter Deutsch e colegas na Sun, com James Gosling acrescentando a última, listaram o que os recém-chegados supõem errado: a rede é confiável, a latência é zero, a banda é infinita, a rede é segura, a topologia não muda, há um único administrador, o custo de transporte é zero e a rede é homogênea. Cada bug de timeout, manada estrondosa e split-brain é uma das oito cobrando sua dívida. A lista é o território deste site condensado num parágrafo: redes falham, e sistemas honestos são projetados por quem acredita nisso.
As falácias da computação distribuída são uma lista, originada na Sun Microsystems, de suposições que quem constrói sistemas em rede faz sem perceber: a rede é confiável, a latência é zero, a banda é infinita, a rede é segura, a topologia não muda, há um único administrador, o custo de transporte é zero, a rede é homogênea.
Cada uma é falsa e cada uma é fácil de supor porque é verdadeira o bastante durante o desenvolvimento. Num notebook, uma chamada local e uma remota parecem idênticas no código, então a diferença só aparece sob condições que quem desenvolveu nunca viu: uma partição, um enlace lento, um middlebox reescrevendo algo, um administrador de outra empresa mudando uma rota. A abstração que faz chamadas remotas parecerem locais é conveniente e é exatamente o que esconde os modos de falha.
A resposta prática é projetar para as falhas em vez de ser surpreendido por elas. Tempos limite em toda chamada remota, novas tentativas idempotentes para que uma duplicata seja inofensiva, disjuntores para que uma dependência falha não o leve junto, e uma posição clara sobre o que seu sistema faz quando uma dependência está simplesmente inalcançável. A lista tem trinta anos e cada geração de tecnologia distribuída a redescobre.
Também conhecido como: the eight fallacies